API reference
Outcomes
1 operations. Base URL: https://api.ringura.com/api/v1. Authenticate with a bearer token that carries the scope named on each operation.
POST /api/v1/outcomes
Record deposits and conversions (up to 500). Each is attributed to the agent, campaign, channel and WhatsApp template that last touched the contact inside the attribution window. externalRef makes each idempotent: a repeat is counted once. Items that do not fit are reported in problems and skipped.
Parameters
| Name | In | Type | Required | Constraints |
|---|---|---|---|---|
Idempotency-Key | header | string | No | matches ^[A-Za-z0-9_.:-]{8,100}$ |
Request body
JSON (Content-Type: application/json).
| Field | Type | Required | Constraints |
|---|---|---|---|
outcomes | array of object | Yes | at least 1 items at most 500 items |
outcomes[].externalRef | string | Yes | 1-200 characters |
outcomes[].kind | string | Yes | one of "deposit", "conversion" |
outcomes[].amountMinor | integer or string | No | |
outcomes[].currency | string | Yes | matches ^[A-Z]{3}$ |
outcomes[].occurredAt | string (date-time) | Yes | |
outcomes[].contactId | string (uuid) | No | |
outcomes[].phone | string | No | at most 32 characters |
outcomes[].email | string | No | at most 320 characters |
Response
201 JSON with these fields.
| Field | Type | Required | Constraints |
|---|---|---|---|
created | integer | Yes | |
duplicates | integer | Yes | |
problems | array of string | Yes |
Errors
400, 401, 403, 404, 409, 422, 429. What each status means
Example request
curl -X POST 'https://api.ringura.com/api/v1/outcomes' \
-H "Authorization: Bearer $CC_TOKEN" \
-H 'Idempotency-Key: order-2027-0001' \
-H 'Content-Type: application/json' \
-d '{
"outcomes": [
{
"externalRef": "ext-0001",
"kind": "deposit",
"currency": "EUR",
"occurredAt": "2027-01-04T09:00:00Z"
}
]
}'