Complete composite
Closes and bills ONE occurrence of a composite (a distinct tag value). Required even for outcome-tagged occurrences.
Gated on every credit/outcome/unit the composite is restricted to having reported under the same value. Calling early isn't an error: it answers 422 but parks and completes itself once the rest lands.
Authorization
apiKey Organisation-scoped key from Settings → API Keys.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
composite is REQUIRED and is the whole point of the request — there is nothing to complete without it.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/signal/composite/complete" \ -H "Content-Type: application/json" \ -d '{ "customerId": "cus_abc123", "composite": { "voice_ai": "call_5f3a" } }'{ "statusCode": 200, "statusDetail": { "status": "SUCCESS", "message": "OK" }, "result": { "status": "COMPLETED", "composite": { "id": "pm_3d9x1c", "name": "Voice AI call", "refId": "voice_ai" }, "value": "call_5f3a", "rawId": "raw_4k8w2r" }}{ "statusCode": 202, "statusDetail": { "status": "SUCCESS", "message": "Signal accepted for processing." }, "result": { "queued": true, "messageId": "msg_2f4a1b8c", "rawId": "raw_4k8w2r" }}{ "statusCode": 400, "statusDetail": { "status": "ERROR", "message": "Request body must be valid JSON." }, "result": {}}{ "statusCode": 401, "statusDetail": { "status": "ERROR", "message": "Invalid API key." }, "result": {}}{ "statusCode": 404, "statusDetail": { "status": "ERROR", "message": "No customer with id \"cus_abc123\"." }, "result": {}}{ "statusCode": 409, "statusDetail": { "status": "ERROR", "message": "Customer \"cus_abc123\" is archived." }, "result": {}}{ "statusCode": 422, "statusDetail": { "status": "ERROR", "message": "\"Voice AI call\" is not ready to complete yet — still waiting on a signal for \"Transcription\" unit. Send it first, then complete again." }, "result": {}}{ "statusCode": 500, "statusDetail": { "status": "ERROR", "message": "Could not complete the request." }, "result": {}}