Add a brand document
POST/api/v1/sms/brands/{id}/documents
POST /sms/brands/{id}/documents
curl -X POST 'https://www.unitpost.com/api/v1/sms/brands/sms_123/documents' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'User-Agent: my-app/1.0' \
-H 'Content-Type: application/json' \
-d '{ }'Response · 201
{
"object": "sms_brand_document",
"id": "id_123",
"brand_id": "brand_123",
"kind": "registration_certificate",
"carrier": "string",
"country": "string",
"label": "string",
"input": "file",
"filename": "string",
"content_type": "string",
"size_bytes": 1,
"text_value": "string",
"created_at": "2026-01-01T00:00:00.000Z"
}Add a document to the brand's library: a file kind takes file_id (Create a file, purpose sms_document), business_number takes text. A document in an occupied slot replaces the current one (kept only while a registration under review sent it). country makes it one country's own version of a shared document. The same checks as the dashboard (the slot's own file rule, a brand that isn't archived). Send an Idempotency-Key so a retry adds one document. Requires the sms:manage capability.
Parameters2 fields
| Field | Type | Description |
|---|---|---|
idrequired | string · path | — |
Idempotency-Key | string · header | Any unique string (1–256 characters, e.g. a UUID). Retrying with the same key and the same body within 24 hours returns the first result instead of sending again; the same key with a different body is `409 invalid_idempotent_request`, and one still in flight is `409 concurrent_idempotent_requests`. |
Request body5 fields
| Field | Type | Description |
|---|---|---|
kindrequired | enumregistration_certificate | letter_of_authorization | proof_of_sender_id_connection | signatory_id | emirates_id | signatory_passport | establishment_card | power_of_attorney | business_license | tax_document | regulatory_license | carrier_registration_form | opt_in_screenshot | business_number | The document slot. File kinds: `registration_certificate`, `letter_of_authorization`, `proof_of_sender_id_connection`, `signatory_id`, `emirates_id`, `signatory_passport`, `establishment_card`, `power_of_attorney`, `business_license`, `tax_document`, `regulatory_license`, `carrier_registration_form`, `opt_in_screenshot`. Text kinds: `business_number`. A document in an occupied slot replaces the current one (the old one is kept only while a registration under review pinned it). |
carrier | string | The slot's variant, for documents addressed to one carrier (a letter of authorization for `ooredoo`). A Sender ID refusal names it. |
country | string | Make this one country's own version of a shared document (ADR-0115): it goes to that country only. Refused for a slot only one country reads. |
file_id | string | A file kind: a file made with `POST /files`, purpose `sms_document` (PDF, PNG or JPEG, up to 3 MB; a slot can take less, e.g. Singapore's letter is a PNG up to 400 KB) or `sms_opt_in_evidence` for `opt_in_screenshot`. |
text | string | A text kind (`business_number`). |
Response · 201 fields13 fields
| Field | Type | Description |
|---|---|---|
objectrequired | string | — |
idrequired | string | — |
brand_idrequired | string | — |
kindrequired | enumregistration_certificate | letter_of_authorization | proof_of_sender_id_connection | signatory_id | emirates_id | signatory_passport | establishment_card | power_of_attorney | business_license | tax_document | regulatory_license | carrier_registration_form | opt_in_screenshot | business_number | — |
carrierrequired | string | null | The slot's variant: which carrier or form a letter is addressed to (e.g. `ooredoo`), or null. |
countryrequired | string | null | Set when this is one country's own version of a shared document (ADR-0115): it goes to that country only, in place of the shared file. Null for the shared file. |
labelrequired | string | What the document is, in words: "Letter of authorization — Ooredoo (Qatar)". |
inputrequired | enumfile | text | — |
filenamerequired | string | null | — |
content_typerequired | string | null | — |
size_bytesrequired | integer | null | — |
text_valuerequired | string | null | `business_number` only. |
created_atrequired | string | — |
201400401403404409413415422429