Browse the docs

Add organization verification documents (multipart)

POST /v2/api-gateway/organizations/{id}/verification-documents

Uploads one verification document for the organization to the KYB provider. A KYB session is started automatically when the organization has none yet. Returns the provider's document response. Follow with POST /organizations/{id}/check to submit the documents for review, or use the hosted flow (POST /organizations/{id}/kyb-link) instead.

Request

Authentication: your API key in the x-api-key header.

Path parameters

FieldTypeDescription
id requiredstring, uuidOrganization id (id from GET /organizations). Must be your organization or one of its children.

Body

FieldTypeDescription
filestring, binaryDocument to upload.
metadatastringJSON-encoded document metadata.

Example request

cURL

curl --request POST \
     --url 'https://api.themooncard.com/v2/api-gateway/organizations/8d2cd518-5ef2-4280-91e8-63b1a0e672e7/verification-documents' \
     --header 'x-api-key: YOUR_API_KEY'

Responses

200 Success

Document accepted; the body is the verification provider's receipt for it.

JSON

{
  "document_type": "PASSPORT",
  "country": "US",
  "uploaded_at": "2026-08-16T17:51:01.000Z",
  "warnings": []
}
400 Error

Validation failed, or the organization has no KYB session that can accept documents (KYB_NOT_INITIATED, APPLICANT_NOT_FOUND).

The body is the standard error object: see Errors.

401 Error

Missing or invalid credentials, e.g. { "message": "Invalid API Key", "code": "UNAUTHORIZED" }.

The body is the standard error object: see Errors.

404 Error

Organization not found or not owned by this organization.

The body is the standard error object: see Errors.

500 Error

Unexpected server error. Body is { message: "Internal server error", code: "INTERNAL_SERVER_ERROR" }.

The body is the standard error object: see Errors.

Last updated June 5, 2026