> ## Documentation Index
> Fetch the complete documentation index at: https://docs.useboom.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Customer Data Platform

> The REST API for getting customer data into Boom — people, custom objects, events, and the relationships between them.

The Boom CDP is how you get customer data **into** the platform: the people you
serve, the typed records that describe your business (orders, loans, …), the
things those people do, and the relationships between them. Once the data is in,
you act on it with the [REST API](/api-reference/overview). Every endpoint here
is also an [MCP tool](/use-mcp) with the same name and schema.

## Base URL

All CDP endpoints live under `/api/v1/cdp`:

```
https://www.useboom.ai/api/v1/cdp
```

<Info>
  Every request is authenticated with an **organization API key** sent as a
  Bearer token — the organization is derived from the key. See
  [Authentication](/authentication).
</Info>

## Building blocks

<CardGroup cols={2}>
  <Card title="People" icon="user">
    Individuals, keyed by your own `externalId`, with optional `firstName`,
    `lastName`, `email`, and `phoneNumber` (E.164), plus a free-form
    `attributes` object.
  </Card>

  <Card title="Custom objects" icon="boxes">
    Typed records (an `order`, a `loan`, …) keyed by `(type, externalId)`.
    Types are defined per organization.
  </Card>

  <Card title="Attributes" icon="tags">
    Free-form key/value data on people and objects. New keys are auto-registered
    in your attribute catalog, so they show up as filters in Segments.
  </Card>

  <Card title="Events" icon="bolt">
    Append-only behavioral records (a `payment_made`, a `checkout_started`)
    tied to a person or object. Record one at a time or in bulk.
  </Card>

  <Card title="Relationships" icon="link">
    Links between a person and an object, or between two objects — a customer
    who `placed` an order, an order that `has_line_item`.
  </Card>

  <Card title="Types" icon="shapes">
    The catalogs behind the data: custom-object types and relationship types.
    Register these to get the ids you reference elsewhere.
  </Card>
</CardGroup>

## Common use cases

* **Identify a person.** Upsert a person by your own `externalId` with their
  contact fields and attributes — the same call updates rather than duplicates.
* **Record behavior.** Send events as they happen, one at a time or via the
  `/batch` endpoint (up to 1000).
* **Model your domain.** Register custom-object and relationship types, upsert
  objects, and link them to people.
* **Bulk import.** Backfill history through the `/batch` endpoints instead of
  one request per record.

## Conventions

* **Writes are upserts.** The same `externalId` twice updates rather than
  duplicates. `attributes` are **fully replaced** on update — always send the
  complete set.
* **One record or many.** The `/batch` variants accept up to 1000 records.
* **Errors.** `{ "error": { "code", "message" } }` + HTTP status. See
  [Rate limits & errors](/rate-limits-and-errors).

## Learn more

<CardGroup cols={2}>
  <Card title="Events" icon="bolt" href="/events">
    How events are shaped, recorded, and read back.
  </Card>

  <Card title="Relationship types" icon="shapes" href="/relationship-types">
    The catalog of allowed link shapes and how to register one.
  </Card>

  <Card title="Connect your database" icon="database" href="/connect-your-database">
    Sync people and objects straight from PostgreSQL or MySQL — no API
    integration.
  </Card>
</CardGroup>
