---
title: "Enrich a company for a Clay column"
method: POST
path: "/v1/clay/enrich"
---

# Enrich a company for a Clay column

`POST /v1/clay/enrich`

## Request

- Base URL: `https://api.reqbeat.com`
- URL: `https://api.reqbeat.com/v1/clay/enrich`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Clay HTTP-provider hiring-motion enrichment column -- entity-resolves
`domain`/`name` to a company via the local plane cache, then composes
company enrichment and hiring pulse into a flat, Clay-column-shaped
response: no field beyond this declared model ever leaks, every field
is LinkedIn-excluded (ATS tenants plus public job boards and aggregators) and provenance-backed by its own primitive. Metered to the
presented (Clay account) key.

A miss is a 200, not a 404: a 404 blanks the Clay cell, which the
customer reads as "not hiring". It carries `coverage_status`, a
`message`, a `checked_at` -- and NULL motion fields, never zeros. The
call still meters.

Requires the `read` scope.

## Headers

- `Idempotency-Key` string, nullable

## Request body

- ClayEnrichRequest
  - `domain` string, nullable
  - `name` string, nullable

## Response `200`

Successful Response

- ClayEnrichResponse
  - `company_id` integer, nullable, required
  - `name` string, nullable, required
  - `domain` string, nullable, required
  - `hq_country` string, nullable, required
  - `boards` string[], required
  - `is_hiring` boolean, nullable, required
  - `open_req_count` integer, nullable, required
  - `new_roles_30d` integer, nullable, required
  - `velocity` number, nullable, required
  - `direction` string, nullable, required
  - `is_surge` boolean, nullable, required
  - `coverage_status` 'ats_direct_hit' | 'board_hit' | 'no_ats_signal' | 'unsupported_ats', required
  - `message` string, nullable, required
  - `checked_at` string, date-time, required
  - `enrichment_as_of` string, date-time, nullable, required
  - `motion_as_of` string, date-time, nullable, required
  - `hq_country_code` string, nullable, required: The company's HQ country as an ISO-3166-1 alpha-2 code, uppercase (`DE`, `US`), derived from `hq_country` and never stored. `null` when `hq_country` is absent or is not a country this corpus names — never a guess.

## Other responses

- `401`: No API key was sent.
- `402`: The key is over its plan's rolling call quota, or the account is past its spend cap. `upgrade_url` and `purchase_url` are the ways out.
- `403`: The presented key is invalid or revoked, or (see `x-required-scope` on this operation) it does not carry the scope this operation requires.
- `422`: Validation Error
- `429`: Too many calls in the current 60-second window. The limit is per API key, set by the key's plan, and shared by every metered REST route and MCP tool; the shared demo key is limited per IP address instead. Wait `Retry-After` seconds and retry. The `RateLimit-*` headers are absent when `reason` is `key_throttled`.

---

[API](https://skmtc.dev/reqbeat/apis/reqbeat-api.md) · [All operations](https://skmtc.dev/reqbeat/apis/reqbeat-api/llms.txt) · [OpenAPI document](https://skmtc.dev/reqbeat/apis/reqbeat-api/revisions/4758e5957e8c?raw)
