Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/clarify:clarify-records-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Clarify Records API
description: The Clarify API OpenAPI documentation
version: '0.1'
contact: {}
servers:
- url: https://api.clarify.ai/v1
security:
- apiKey: []
tags:
- name: Records
paths:
/workspaces/{workspace}/objects/{object}/records/{id}:
get:
description: Returns a single record as a JSON:API resource. Use `include` to embed related records under `relationships`.
operationId: getRecord
parameters:
- name: workspace
required: true
in: path
description: The workspace slug — the `{slug}` segment of your Clarify workspace URL.
schema:
type: string
- name: object
required: true
in: path
description: 'The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).'
schema:
type: string
- name: id
required: true
in: path
description: The unique ID of the record.
schema:
type: string
- name: include
required: false
in: query
description: Comma-separated list of relationship names to resolve and embed under `relationships`, e.g. `include=companies,deals`.
schema:
type: string
responses:
'200':
description: The requested record.
content:
application/json:
schema:
$ref: '#/components/schemas/RecordResponse'
example:
data:
type: person
id: 5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71
attributes:
_id: 5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71
name:
first_name: Jane
last_name: Doe
email_addresses:
items:
- jane@acme.com
job_title: VP of Marketing
company_id: c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88
_created_at: '2026-01-15T09:30:00.000Z'
_updated_at: '2026-02-01T17:45:00.000Z'
summary: Get a record
tags:
- Records
patch:
description: 'Applies a partial update to a record: only the fields present in `attributes` are changed, all other fields keep their current values.'
operationId: updateRecord
parameters:
- name: workspace
required: true
in: path
description: The workspace slug — the `{slug}` segment of your Clarify workspace URL.
schema:
type: string
- name: object
required: true
in: path
description: 'The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).'
schema:
type: string
- name: id
required: true
in: path
description: The unique ID of the record.
schema:
type: string
- name: silent
in: query
required: false
schema:
type: boolean
description: When true, suppresses in-app and Slack notifications for this mutation.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateRecordDto'
examples:
update:
summary: Change a person’s job title
value:
data:
type: person
id: 5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71
attributes:
job_title: CMO
responses:
'200':
description: The updated record.
content:
application/json:
schema:
$ref: '#/components/schemas/RecordResponse'
example:
data:
type: person
id: 5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71
attributes:
_id: 5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71
name:
first_name: Jane
last_name: Doe
email_addresses:
items:
- jane@acme.com
job_title: VP of Marketing
company_id: c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88
_created_at: '2026-01-15T09:30:00.000Z'
_updated_at: '2026-02-01T17:45:00.000Z'
summary: Update a record
tags:
- Records
delete:
description: Permanently deletes a record. This cannot be undone.
operationId: deleteRecord
parameters:
- name: workspace
required: true
in: path
description: The workspace slug — the `{slug}` segment of your Clarify workspace URL.
schema:
type: string
- name: object
required: true
in: path
description: 'The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).'
schema:
type: string
- name: id
required: true
in: path
description: The unique ID of the record.
schema:
type: string
- name: silent
in: query
required: false
schema:
type: boolean
description: When true, suppresses in-app and Slack notifications for this mutation.
responses:
'200':
description: The record was deleted. The response body is empty.
content:
application/json:
example: {}
summary: Delete a record
tags:
- Records
/workspaces/{workspace}/objects/{object}/records:
post:
description: 'Creates a record of the given object type. Pass `match_on` with the name of a unique field to upsert: when an incoming value matches exactly one existing record, that record is updated instead of a new one being created.'
operationId: createRecord
parameters:
- name: workspace
required: true
in: path
description: The workspace slug — the `{slug}` segment of your Clarify workspace URL.
schema:
type: string
- name: object
required: true
in: path
description: 'The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).'
schema:
type: string
- name: silent
in: query
required: false
schema:
type: boolean
description: When true, suppresses in-app and Slack notifications for this mutation.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateRecordDto'
examples:
create:
summary: Create a person
value:
data:
type: person
attributes:
name:
first_name: Jane
last_name: Doe
email_addresses:
items:
- jane@acme.com
job_title: VP of Marketing
company_id: c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88
upsert:
summary: Upsert a person by email
value:
data:
type: person
attributes:
name:
first_name: Jane
last_name: Doe
email_addresses:
items:
- jane@acme.com
job_title: VP of Marketing
company_id: c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88
match_on: email_addresses
responses:
'201':
description: The created (or matched and updated) record.
content:
application/json:
schema:
$ref: '#/components/schemas/CreateRecordResponse'
example:
data:
type: person
id: 5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71
attributes:
_id: 5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71
name:
first_name: Jane
last_name: Doe
email_addresses:
items:
- jane@acme.com
job_title: VP of Marketing
company_id: c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88
_created_at: '2026-01-15T09:30:00.000Z'
_updated_at: '2026-02-01T17:45:00.000Z'
summary: Create a record
tags:
- Records
patch:
description: Applies partial updates to multiple records in one request. Each entry names the record by `id` and lists only the fields to change.
operationId: updateRecords
parameters:
- name: workspace
required: true
in: path
description: The workspace slug — the `{slug}` segment of your Clarify workspace URL.
schema:
type: string
- name: object
required: true
in: path
description: 'The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).'
schema:
type: string
- name: silent
in: query
required: false
schema:
type: boolean
description: When true, suppresses in-app and Slack notifications for this mutation.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateRecordsDto'
examples:
bulk:
summary: Update one person
value:
data:
- type: person
id: 5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71
attributes:
job_title: CMO
responses:
'200':
description: The updated records.
content:
application/json:
schema:
$ref: '#/components/schemas/RecordResponse'
example:
links:
next: null
prev: null
meta:
total_records: 1
total_pages: 1
offset: 0
limit: 500
data:
- type: person
id: 5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71
attributes:
_id: 5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71
name:
first_name: Jane
last_name: Doe
email_addresses:
items:
- jane@acme.com
job_title: VP of Marketing
company_id: c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88
_created_at: '2026-01-15T09:30:00.000Z'
_updated_at: '2026-02-01T17:45:00.000Z'
summary: Update records in bulk
tags:
- Records
delete:
description: Permanently deletes the records listed in `items`. This cannot be undone.
operationId: deleteRecords
parameters:
- name: workspace
required: true
in: path
description: The workspace slug — the `{slug}` segment of your Clarify workspace URL.
schema:
type: string
- name: object
required: true
in: path
description: 'The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).'
schema:
type: string
- name: silent
in: query
required: false
schema:
type: boolean
description: When true, suppresses in-app and Slack notifications for this mutation.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteRecordsDto'
examples:
bulk:
summary: Delete one person
value:
items:
- 5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71
responses:
'200':
description: The records were deleted. The response body is empty.
content:
application/json:
example: {}
summary: Delete records in bulk
tags:
- Records
/workspaces/{workspace}/objects/{object}/records/bulk:
post:
description: 'Creates multiple records of the given object type in one request. The request is validated as a whole: if any record fails validation, none are created. Pass `match_on` with the name of a unique field to upsert matching records instead of creating duplicates. The response lists one record per input, in input order.'
operationId: createBulkRecords
parameters:
- name: workspace
required: true
in: path
description: The workspace slug — the `{slug}` segment of your Clarify workspace URL.
schema:
type: string
- name: object
required: true
in: path
description: 'The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).'
schema:
type: string
- name: silent
in: query
required: false
schema:
type: boolean
description: When true, suppresses in-app and Slack notifications for this mutation.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateBulkRecordDto'
examples:
bulk:
summary: Create two people
value:
data:
- type: person
attributes:
name:
first_name: Jane
last_name: Doe
email_addresses:
items:
- jane@acme.com
job_title: VP of Marketing
company_id: c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88
- type: person
attributes:
name:
first_name: John
last_name: Smith
email_addresses:
items:
- john@acme.com
company_id: c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88
responses:
'201':
description: The created (or matched and updated) records, one per input in input order. Inputs that `match_on` resolves to the same record repeat that record.
content:
application/json:
schema:
$ref: '#/components/schemas/CreateBulkRecordResponse'
example:
links:
next: null
prev: null
meta:
total_records: 1
total_pages: 1
offset: 0
limit: 500
data:
- type: person
id: 5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71
attributes:
_id: 5f8b7d2e-9c4a-4e1b-8f3d-2a6c9e0b4d71
name:
first_name: Jane
last_name: Doe
email_addresses:
items:
- jane@acme.com
job_title: VP of Marketing
company_id: c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88
_created_at: '2026-01-15T09:30:00.000Z'
_updated_at: '2026-02-01T17:45:00.000Z'
summary: Create records in bulk
tags:
- Records
/workspaces/{workspace}/objects/{object}/records/{record}/merges:
post:
description: Merges the source records listed in `sources` into the target record. Field values and relationships are combined onto the target, and the source records are deleted. This cannot be undone.
operationId: mergeRecords
parameters:
- name: workspace
required: true
in: path
description: The workspace slug — the `{slug}` segment of your Clarify workspace URL.
schema:
type: string
- name: object
required: true
in: path
description: 'The object type: a built-in entity (`person`, `company`, `deal`, …) or a custom object (`c_*`).'
schema:
type: string
- name: record
required: true
in: path
description: The unique ID of the record.
schema:
type: string
- name: silent
in: query
required: false
schema:
type: boolean
description: When true, suppresses in-app and Slack notifications for this mutation.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MergeRecordsDto'
examples:
merge:
summary: Merge a duplicate company
value:
data:
type: company
attributes:
sources:
- c0a80121-7ac0-4b1c-8b6d-3e5f9a2d4c88
responses:
'204':
description: The records were merged. The response body is empty.
summary: Merge records
tags:
- Records
components:
schemas:
UpdateRecordsDto:
type: object
properties:
data:
type: array
items:
type: object
properties:
type:
type: string
description: The resource type; matches the `object` path parameter.
id:
type: string
description: The unique ID of the resource to update.
attributes:
description: The field values to change, keyed by field name; omitted fields keep their current values. System fields (prefixed with a single `_`) cannot be set.
type: object
properties: {}
additionalProperties: true
required:
- type
- id
- attributes
additionalProperties: false
description: The per-resource changes to apply.
meta:
type: object
additionalProperties:
type: object
properties:
collection:
type: string
enum:
- append
- remove
- replace
description: 'How to apply the update to a collection field: `append` adds items, `remove` deletes items, `replace` overwrites the collection (the default).'
array:
type: string
enum:
- append
description: 'How to apply the update to an array field: `append` adds items rather than replacing the array.'
object:
type: string
enum:
- merge
description: 'How to apply the update to an object field: `merge` combines keys rather than replacing the object.'
description: Per-field write strategies, keyed by field name; controls how array, collection, and object values are merged instead of replaced.
required:
- data
additionalProperties: false
MergeRecordsDto:
type: object
properties:
data:
type: object
properties:
type:
type: string
description: The resource type; matches the `object` path parameter.
attributes:
description: Field values keyed by field name; available fields depend on the object’s schema. System fields (prefixed with a single `_`) cannot be set.
type: object
properties:
sources:
type: array
items:
type: string
minItems: 1
description: The IDs of the source records to merge into the target record; source records are deleted after the merge.
required:
- sources
additionalProperties: true
required:
- type
- attributes
additionalProperties: false
description: The resource to create.
required:
- data
CreateRecordResponse:
type: object
properties:
data:
type: object
properties:
type:
type: string
enum:
- record
description: The resource type; matches the `object` path parameter.
id:
type: string
description: The unique ID of the resource.
attributes:
type: object
properties: {}
description: Field values keyed by field name; available fields depend on the object’s schema.
relationships:
type: object
properties: {}
description: Related resources keyed by relationship name, present when requested via `include`.
required:
- type
- id
- attributes
description: The resource.
required:
- data
CreateBulkRecordResponse:
type: object
properties:
links:
type: object
properties:
next:
type: string
nullable: true
description: URL of the next page, or `null` on the last page.
prev:
type: string
nullable: true
description: URL of the previous page, or `null` on the first page.
required:
- next
- prev
description: Pagination links.
meta:
type: object
properties:
total_records:
type: number
description: Total number of records across all pages.
total_pages:
type: number
description: Total number of pages at the current page size.
required:
- total_records
- total_pages
description: Pagination metadata.
data:
type: array
items:
type: object
properties:
type:
type: string
enum:
- record
description: The resource type; matches the `object` path parameter.
id:
type: string
description: The unique ID of the resource.
attributes:
type: object
properties: {}
description: Field values keyed by field name; available fields depend on the object’s schema.
relationships:
type: object
properties: {}
description: Related resources keyed by relationship name, present when requested via `include`.
required:
- type
- id
- attributes
description: The page of resources.
required:
- links
- meta
- data
DeleteRecordsDto:
type: object
properties:
items:
type: array
items:
type: string
minItems: 1
description: The IDs of the records to delete.
required:
- items
UpdateRecordDto:
type: object
properties:
data:
type: object
properties:
type:
type: string
description: The resource type; matches the `object` path parameter.
id:
type: string
description: The unique ID of the resource to update.
attributes:
description: The field values to change, keyed by field name; omitted fields keep their current values. System fields (prefixed with a single `_`) cannot be set.
type: object
properties: {}
additionalProperties: true
required:
- type
- id
- attributes
additionalProperties: false
description: The changes to apply.
meta:
type: object
additionalProperties:
type: object
properties:
collection:
type: string
enum:
- append
- remove
- replace
description: 'How to apply the update to a collection field: `append` adds items, `remove` deletes items, `replace` overwrites the collection (the default).'
array:
type: string
enum:
- append
description: 'How to apply the update to an array field: `append` adds items rather than replacing the array.'
object:
type: string
enum:
- merge
description: 'How to apply the update to an object field: `merge` combines keys rather than replacing the object.'
description: Per-field write strategies, keyed by field name; controls how array, collection, and object values are merged instead of replaced.
required:
- data
CreateRecordDto:
type: object
properties:
data:
type: object
properties:
type:
type: string
description: The resource type; matches the `object` path parameter.
attributes:
description: Field values keyed by field name; available fields depend on the object’s schema. System fields (prefixed with a single `_`) cannot be set.
type: object
properties: {}
additionalProperties: true
required:
- type
- attributes
additionalProperties: false
description: The resource to create.
match_on:
type: string
minLength: 1
description: 'Enables upsert mode: the name of a unique field (marked unique in the schema, e.g. "domains" for companies, "email_addresses" for people) to match incoming records against existing ones. When a value matches exactly one existing record, the attributes are merged into it and its ID is returned instead of inserting a new row; a value that matches multiple existing records errors. Scalar unique fields match exactly; collection fields match case-insensitively. Non-unique fields are rejected.'
required:
- data
RecordResponse:
type: object
properties:
data:
type: object
properties:
type:
type: string
enum:
- record
description: The resource type; matches the `object` path parameter.
id:
type: string
description: The unique ID of the resource.
attributes:
type: object
properties: {}
description: Field values keyed by field name; available fields depend on the object’s schema.
relationships:
type: object
properties: {}
description: Related resources keyed by relationship name, present when requested via `include`.
meta:
type: object
properties:
effective_access_level:
type: string
enum:
- owner
- edit
- view
- none
description: The requesting user's effective access to this record (`owner`, `edit`, `view`, or `none`).
description: Per-request metadata about the resource.
required:
- type
- id
- attributes
description: The resource.
required:
- data
CreateBulkRecordDto:
type: object
properties:
data:
type: array
items:
type: object
properties:
type:
type: string
description: The resource type; matches the `object` path parameter.
attributes:
description: Field values keyed by field name; available fields depend on the object’s schema. System fields (prefixed with a single `_`) cannot be set.
type: object
properties: {}
additionalProperties: true
required:
- type
- attributes
additionalProperties: false
description: The resources to create.
match_on:
type: string
minLength: 1
description: 'Enables upsert mode: the name of a unique field (marked unique in the schema, e.g. "domains" for companies, "email_addresses" for people) to match incoming records against existing ones. When a value matches exactly one existing record, the attributes are merged into it and its ID is returned instead of inserting a new row; a value that matches multiple existing records errors. Scalar unique fields match exactly; collection fields match case-insensitively. Non-unique fields are rejected.'
required:
- data
securitySchemes:
apiKey:
type: apiKey
in: header
name: Authorization
description: 'API key authentication. Send your key in the Authorization header as: `api-key <your-api-key>`.'
bearer:
type: http
scheme: bearer
description: 'User access token authentication for endpoints that act across workspaces. Send a WorkOS access token in the Authorization header as: `Bearer <token>`.'