Skip to content

Upload a verification document​

POST
/org-admin/{slug}/documents

Uploads a document for platform review as base64 JSON. It is stored privately and enters the review queue as pending. Uploading a doc_type the organization already has pending or approved marks the older one superseded. Approval of both ein_letter and 501c3_determination is what verifies the organization.

Size limit: 10 MB decoded by default, but the JSON body itself is capped at 10 MB, so in practice a file must stay under about 7.5 MB to fit once base64-encoded — larger bodies get 413 before the handler runs.

Requires permission: org.upload_documents

Authorizations​

BearerAuth

In the browser, authentication rides on the httpOnly session cookies set by /cognito/signin or the Google / Apple sign-in at /cognito/oauth/{provider}. For scripts and for Swagger UI testing, paste an API key (fh_live_…, created with POST /api-keys); a Cognito JWT is accepted too. Sign-in does not return a token in its body.

Type
HTTP (bearer)

Parameters​

Path Parameters

slug*

The organization's slug (not its UUID).

Type
string
Required
Example"local-food-bank-a1b2c3"
Pattern
"^[a-z0-9][a-z0-9-]{0,254}$"

Request Body​

application/json
JSON
{
"doc_type": "string",
"content_type": "string",
"original_filename": "string",
"file_base64": "string"
}

Responses​

Document uploaded

application/json
JSON
{
"data": {
"id": "string",
"org_id": "string",
"doc_type": "string",
"original_filename": "string",
"content_type": "string",
"size_bytes": 0,
"verification_status": "pending",
"uploaded_by_user_id": "string",
"created_at": "string",
"updated_at": "string"
}
}

Playground​

Server
Authorization
Variables
Key
Value
Body

Samples​

Powered by VitePress OpenAPI

Built with VitePress