POST
/api/v2/mor/public/companiesProvision a MoR child company and its admin using a company's API key with MoR enabled.
Company scope comes exclusively from the current API key. MOR success and business-error properties use camelCase. Validation may return application/problem+json; authentication may return plain text. The existing sensitive-operation 429 body uses Message, Code and Status. 429 means the configured request limit was exceeded; honor Retry-After when present.
Authentication
Send your API key in the x-api-key header on every request.
Parameters
| Field | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key (header) | string | No | Optional for existing clients; strongly recommended for every mutation. Use a unique key per company/business operation and reuse it with the identical method, path, query, content type and body on retry. Completed requests replay the original status/body, including 207 and errors. A different request returns 409 IDEMPOTENCY_KEY_CONFLICT. A running/interrupted request returns 409 IDEMPOTENCY_OUTCOME_PENDING; reconcile, never switch keys to bypass it. Records have no automatic expiry. No key means legacy behavior without replay protection. LabelPrefix is not a deduplication key. |
Request body
application/json
| Field | Type | Required | Description |
|---|---|---|---|
| CompanyName | string | Yes | |
| LegalName | string | Yes | |
| RegistrationNumber | string | No | |
| Country | string | No | |
| AdminEmail | string | Yes | |
| AdminFirstName | string | Yes | |
| AdminLastName | string | Yes | |
| AdminPassword | string | Yes | |
| TierId | unknown | No |
Responses
201 — Created
| Field | Type | Required | Description |
|---|---|---|---|
| companyId | unknown | No | |
| adminUserId | unknown | No | |
| adminEmail | string | No |
400 — Bad Request
| Field | Type | Required | Description |
|---|---|---|---|
| message | string | No | |
| code | string | No |
401 — Unauthorized
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | No | |
| title | string | No | |
| status | unknown | No | |
| detail | string | No | |
| instance | string | No |
403 — Forbidden
| Field | Type | Required | Description |
|---|---|---|---|
| message | string | No | |
| code | string | No |
404 — Not Found
| Field | Type | Required | Description |
|---|---|---|---|
| message | string | No | |
| code | string | No |
409 — Conflict
| Field | Type | Required | Description |
|---|---|---|---|
| message | string | No | |
| code | string | No |
429 — Too Many Requests
| Field | Type | Required | Description |
|---|---|---|---|
| type | string | No | |
| title | string | No | |
| status | unknown | No | |
| detail | string | No | |
| instance | string | No |
500 — Internal Server Error
| Field | Type | Required | Description |
|---|---|---|---|
| message | string | No | |
| code | string | No |
503 — Service Unavailable
| Field | Type | Required | Description |
|---|---|---|---|
| message | string | No | |
| code | string | No |
Example request
curl -X POST "https://{base_url}/api/v2/mor/public/companies" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"CompanyName":"…","LegalName":"…","AdminEmail":"…","AdminFirstName":"…"}'This page is generated from the live OpenAPI specification and always matches the current API.