Skip to content

Record an interaction

POST
/audience/management/v1/individuals/{id}/interactions
curl --request POST \
--url https://api.ebitex.io/audience/management/v1/individuals/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/interactions \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "kind": "example", "sourceEventId": "example", "occurredAt": "2026-04-15T12:00:00Z", "data": "example", "text": "example" }'

Appends one fact about a person: { "kind", "sourceEventId", "occurredAt", "data" }. kind is lower-case, at most 64 characters, and yours to choose, prefixed with your system’s name (crm.signup); it is never interpreted. data is JSON of at most 16 KiB and 8 levels.

Idempotent. Send a sourceEventId and the same event sent again answers 200 with the interaction already recorded and writes nothing, so a retry is safe. Page views are not stored: kind page-view is refused.

Key: an Audience management key with audience.management.write (write also needs read; erase needs both).

id
required
string format: uuid
Media typeapplication/json
object
kind
required
null | string
sourceEventId
null | string
occurredAt
null | string format: date-time
data
text
null | string
Examplegenerated
{
"kind": "example",
"sourceEventId": "example",
"occurredAt": "2026-04-15T12:00:00Z",
"data": "example",
"text": "example"
}

The interaction as stored. 201 when it was new, 200 when sourceEventId had already been recorded.

validation_failed: the kind, data or event id is invalid. kind_not_accepted: page views are not accepted.

missing_api_key or invalid_api_key: no key was sent, or it is unknown, revoked or expired, or it was not created from the Audience settings page.

payment_required: the organization’s subscription needs attention.

scope_denied: the key lacks this route’s scope. ip_denied: the caller’s address is outside the key’s allowed ranges. app_not_available: Audience is not enabled for the organization.

individual_not_found: no such person in this organization.

not_found: no such route.

rate_limited: the key spent its requests-per-minute budget; Retry-After says how long to wait. too_many_failed_authentications: too many bad keys from this address.