---
title: "Record event"
method: POST
path: "/api/v1/cdp/events"
tags: ["CDP Events"]
---

# Record event

`POST /api/v1/cdp/events`

Record one behavioral event for a person and/or custom object. This is the real-time path — it triggers journey enrollment. Unknown subjects still ingest and are linked later.

## Request body

- object
  - `name` string, required — Event name, e.g. "checkout_completed". Letters, numbers, underscores only.
  - `externalId` string, required — Your stable id for this event (idempotency key). Re-recording returns created: false.
  - `timestamp` string, date-time — When the event occurred, ISO 8601. Defaults to now if omitted.
  - `personExternalId` string — Subject: the person externalId this event is about.
  - `customObjectType` string — Subject: the custom-object type name. Must be paired with customObjectExternalId.
  - `customObjectExternalId` string — Subject: the custom-object externalId. Must be paired with customObjectType.
  - `properties` object — Free-form event payload.

## Response `200`

Success

- object
  - `created` boolean, required — false when the externalId was already recorded (idempotent).
  - `eventId` string
  - `personId` string
  - `personExternalId` string
  - `customObjectType` string
  - `customObjectExternalId` string

## Other responses

- `400` — Validation failed or the request cannot proceed.
- `401` — Missing, malformed, or revoked API key.
- `404` — The resource does not exist in this organization.
- `409` — Conflicts with the current state (duplicates, wrong lifecycle state).
- `422` — The request is well-formed but semantically invalid.
- `429` — Rate limit exceeded — retry after `Retry-After`.
- `500` — Internal server error.
- `503` — Transient error — retry with a narrower request.

---

[API](https://skmtc.net/useboom/apis/boom-api.md) · [All operations](https://skmtc.net/useboom/apis/boom-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/useboom/boom-api/revisions/00f873e07076/schema)
