Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.kaireonai.com/llms.txt

Use this file to discover all available pages before exploring further.

POST /api/v1/capture

Legacy alias for the Respond API. All requests are forwarded directly to POST /api/v1/respond with identical behavior. The Capture endpoint exists for backward compatibility. Rate limit: 500 requests/min.

Request Body

The request body is identical to the Respond API. Key fields:
FieldTypeRequiredDescription
customerIdstringYesCustomer identifier
outcomestringYes*Outcome type key (e.g., "impression", "click", "convert")
interactionTypestringYes*Alias for outcome (provide one or the other)
creativeIdstringConditionalCreative ID (or provide recommendationId + rank)
recommendationIdstringConditionalRecommendation to attribute to (used with rank)
rankintegerConditionalWhich offer from the recommendation (1-based)
offerIdstringNoOffer ID (auto-resolved from creative if omitted)
channelIdstringNoChannel ID
idempotencyKeystringYesRequired for all outcomes to prevent double-counting
conversionValuenumberNoMonetary value of the conversion
contextobjectNoAdditional context data
outcomeDetailsobjectNoAdditional outcome data
timestampstringNoISO 8601 timestamp (defaults to now)

Example

curl -X POST https://playground.kaireonai.com/api/v1/capture \
  -H "Content-Type: application/json" \
  -H "X-Tenant-Id: my-tenant" \
  -d '{
    "customerId": "C-1234",
    "creativeId": "creative_001",
    "outcome": "impression",
    "idempotencyKey": "imp-C1234-001"
  }'

Response

Same as the Respond API response:
{
  "interactionId": "int_abc123",
  "recommendationId": null,
  "customerId": "C-1234",
  "outcome": "impression",
  "classification": "neutral",
  "rank": null,
  "offerName": "Premium Card",
  "creativeName": "Email Hero V1",
  "channelName": "Email",
  "categoryName": "Credit Cards",
  "status": "recorded",
  "timestamp": "2026-03-10T12:00:00.000Z"
}
The Capture endpoint is a legacy alias. New integrations should use the Respond API directly. Both endpoints accept the same request body and return the same response.