Create a customer case
`title` and `categoryKey` are required. Every referenced record (contact, company, topic, assignee, tags, `links`) must belong to your organisation; an unknown one is a 422 naming the field, never a hint that it exists elsewhere. `companyId` needs an organisation that keeps companies (else 404 `TENANT_MODULE_UNAVAILABLE`). The number is allocated atomically; the case's `source` is `API`. Available to organisations with customer cases switched on: an organisation whose business type has no cases gets 404 `TENANT_MODULE_UNAVAILABLE`, one where cases are not switched on yet gets 403 `FEATURE_NOT_AVAILABLE`. Required scope: `cases.write`.
/casesAuthorization
ApiKeyAuth An external API key, sent as Authorization: Bearer mflo_…. Scopes are checked per route; see each operation’s description.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/cases" \ -H "Content-Type: application/json" \ -d '{ "title": "string", "categoryKey": "string" }'{ "data": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "number": 0, "title": "string", "status": "NEW", "priority": "LOW", "categoryKey": "string", "statusChangedAt": "2019-08-24T14:15:22Z", "dueAt": "2019-08-24T14:15:22Z", "resolvedAt": "2019-08-24T14:15:22Z", "closedAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "assignedToUser": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "firstName": "string", "lastName": "string" }, "contact": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "firstName": "string", "lastName": "string" }, "company": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "topic": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string" }, "tags": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "color": "string" } ], "description": "string", "reporterName": "string", "reporterPhone": "string", "locationText": "string", "externalSystem": "string", "externalRef": "string", "externalUrl": "string", "source": "PORTAL", "sourceIdentifier": "string", "customFields": { "property1": "string", "property2": "string" }, "firstResponseAt": "2019-08-24T14:15:22Z", "createdByUser": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "firstName": "string", "lastName": "string" }, "links": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "resourceType": "TELEPHONY_CALL", "resourceId": "026d60bb-63a8-407e-bf67-01dcfc6022e6", "createdAt": "2019-08-24T14:15:22Z" } ], "tasks": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "title": "string", "status": "string", "priority": "string", "dueDate": "2019-08-24T14:15:22Z", "assignedToUser": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "firstName": "string", "lastName": "string" } } ] }}Link a call or conversation to a case POST
The record must belong to your organisation. Linking the same record again answers 200 with the existing link, so a retry is safe. Available to organisations with customer cases switched on: an organisation whose business type has no cases gets 404 `TENANT_MODULE_UNAVAILABLE`, one where cases are not switched on yet gets 403 `FEATURE_NOT_AVAILABLE`. Required scope: `cases.write`.
Delete a knowledge source DELETE
Soft delete — the row is retained and the index is rebuilt without it. Required scope: `knowledge.write`.