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
| Field | Type | Description |
|---|---|---|
id required | string, uuid | Organization id (id from GET /organizations). Must be your organization or one of its children. |
Body
| Field | Type | Description |
|---|---|---|
file | string, binary | Document to upload. |
metadata | string | JSON-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_, APPLICANT_).
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_.
The body is the standard error object: see Errors.
Last updated June 5, 2026