Create a registration submission
Changed onSubmits every answer at once. Because submissions have no multi-call draft, send a complete set; anything missing or malformed comes back named field by field.
Each answer is then reviewed on its own. Submitting again for a registration that already has one returns a 409. Use POST /v1/compliance/submissions/{submission_id}/resupply to replace rejected, expired, or missing answers, and read the submission ID from the requirements for that registration. Accepted answers normally cannot be changed. During an open verifier correction and before its deadline, you can replace selected accepted answers. Unchanged entries are ignored; at least one answer must change. Other answers remain unchanged. A closed number or SMS sender submission must be reopened by Bird before you can submit an updated form.
An identity submission registers your business itself. Its subject is the party: send the cid_ id of a party your workspace holds as subject_id, with program business and country_code ZZ, the international coordinate: your business registers once, not per country. When subject_kind is identity, send neither identity_id nor identity, because the subject already names the party.
The answers are a legal representation under the name of the business they describe. Accepted dossiers can be registered with the carrier or regulator after compliance review. For SMS sender registrations with an unpaid setup fee, your wallet must cover setup and the first recurring charge. This submission charges the setup fee; insufficient funds return 402.
Request
- Base URL: https://us1.platform.bird.com
- URL: https://us1.platform.bird.com/v1/compliance/submissions
- Auth: one of:
- HTTP bearer
- API key in cookie bird_session
Headers
Client-supplied key. On operations supporting request deduplication, a retained response is replayed for duplicate requests with the same key within the idempotency window (3 hours by default). This protection requires a workspace, organization, or staff-account scope. User-only and unscoped unauthenticated operations, streams, and operations with a separate replay contract do not use this response replay.
On a supported operation, if idempotency protection is unavailable before execution, the API returns 503 IdempotencyUnavailable (E01033) without executing this attempt. Retry with backoff using the same key and request. An operation that takes effect before its response is retained can still execute again on retry.
Two distinct 409 errors signal misuse:
- request_in_progress (E01004): The same key is currently being processed by a concurrent request. Wait briefly and retry. The lock expires within 30 seconds.
- idempotency_key_reuse (E01005): The same key has already completed against a different request body or method. Generate a new key.
Recommended key format is <event-type>/<entity-id> (for example welcome-user/usr_abc123).
Workspace context for the request. Required for dashboard authentication and master keys. Workspace keys and access tokens already identify their workspace; send that workspace or omit the header. A different one is rejected.
Organization context for the request. Required for dashboard authentication. An API key or access token carries its own organization, so send either that organization or no header at all; a different one is rejected.
Request body
Example request
{
"subject_id": "scr_01krdgeqcxet5s7t44vh8rt9mg",
"country_code": "US",
"identity_id": "cid_01krdgeqcxet5s7t44vh8rt9mg",
"identity": {
"name": "Goldcrest Communications SAS"
},
"answers": [
{
"key": "business_registration_number",
"value": "90012768",
"attachment_id": "tca_01krdgeqcxet5s7t44vh8rt9mg",
"attachment_ids": [
"tca_01krdgeqcxet5s7t44vh8rt9mg"
]
}
]
}Response
The new submission, with every answer on it.
Example response
{
"id": "csb_01krdgeqcxet5s7t44vh8rt9mg",
"subject_id": "scr_01krdgeqcxet5s7t44vh8rt9mg",
"country_code": "US",
"identity_id": "cid_01krdgeqcxet5s7t44vh8rt9mg",
"items": [
{
"id": "cit_01krdgeqcxet5s7t44vh8rt9mg",
"attachment_id": "tca_01krdgeqcxet5s7t44vh8rt9mg",
"attachment_ids": [
"tca_01krdgeqcxet5s7t44vh8rt9mg"
]
}
]
}Changes
- info
endpoint added
- info
- breaking
api path removed without deprecation
- breaking