Core

Account Management

Manage your CamelPay account: KYC verification and profile basics.

Account Overview

Your CamelPay account holds your developer profile and KYC status. Account endpoints require JWT authentication (obtained via registration + OTP or login).

bash
curl -X GET https://api.camelpay.in/v1/students/me \
  -H "Authorization: Bearer <your_jwt_token>"

KYC Verification

KYC is required before your account can create money-collecting payment pages or send payouts (pages:write / payouts:write). It requires three images—ID front, ID back, and selfie—followed by manual review; there is no instant approval.

1. Get a presigned upload URL, per document

bash
curl -X POST https://api.camelpay.in/v1/storage/presign \
  -H "Authorization: Bearer <your_jwt_token>" \
  -H "Content-Type: application/json" \
  -d '{"filename": "id-front.jpg", "content_type": "image/jpeg", "purpose": "kyc_front"}'

# Repeat with purpose=kyc_back and purpose=selfie. Only JPEG/PNG is accepted.

2. Upload the file directly to the returned upload_url

PUT {upload_url}
Content-Type: image/jpeg
Body: <binary file data>

3. Submit the three document URLs (ID front, ID back, selfie)

bash
curl -X POST https://api.camelpay.in/v1/students/me/documents \
  -H "Authorization: Bearer <your_jwt_token>" \
  -H "Content-Type: application/json" \
  -d '{
    "id_document_front_url": "https://storage.camelpay.in/kyc-docs/<student-id>/kyc_front/id-front.jpg",
    "id_document_back_url": "https://storage.camelpay.in/kyc-docs/<student-id>/kyc_back/id-back.jpg",
    "selfie_url": "https://storage.camelpay.in/kyc-docs/<student-id>/selfie/selfie.jpg"
  }'

Check verification status

There's no separate status endpoint — it's a field on your own profile:

bash
curl -X GET https://api.camelpay.in/v1/students/me \
  -H "Authorization: Bearer <your_jwt_token>"

# → { ..., "verification_status": "pending" | "verified" | "rejected", "verification_reason": "..." }
unverified → pending (after all three documents pass validation) → verified or rejected (after manual review). A rejection includes verification_reason and rejected students may correct and resubmit; verified students cannot replace their approved KYC through this endpoint.
Self-service profile editing and account deletion aren't available as separate API endpoints yet. To get a new OTP, call POST /v1/students/auth/otp/request again — each request invalidates the previous code.