# AI fields Source: https://docs.claap.io/api-reference/ai_fields AI fields are the custom AI columns users define in Claap. An AI field is a prompt with a typed output, evaluated by AI against the underlying activity: the transcript of each recording, or the recordings and emails of each deal or company. Company activity covers the recordings and emails linked to the company itself as well as those of all its deals. Each domain has its own set of endpoints under `/v1/recordings/fields`, `/v1/deals/fields` and `/v1/companies/fields`. A created field joins the workspace AI field library and can be used as a view column: its `fieldId` matches the `fieldId` of the `AiSection` columns returned by the view listing endpoints and accepted by the view create and update endpoints. For recordings and deals, the generated values themselves are also available: the recording and deal retrieval endpoints return the value of each AI field when called with `returnAiFields`. Companies have no retrieval endpoint, so company AI field values cannot be read through the API. A field is evaluated as new activity comes in: values are generated for new recordings, and for deals and companies when their activity changes. Creating or updating a field does not generate values for existing recordings, deals or companies. Creating, updating and archiving AI fields requires a workspace plan that includes them; on other plans these endpoints fail with a `forbidden` error. Listing and retrieving AI fields is available on all plans. ## Output types The `outputType` attribute defines the type of value the AI produces. In create and update requests it is nested with the other prompt attributes (`prompt`, `coloredSelectOptions`, `hasTimecodes`, `ratingScale`) under the `prompt` object; in the returned `AiField` object, these attributes appear at the top level. | Output type | Output | | ------------- | ------------------------------------------------------------- | | `ActionList` | A list of action items | | `Checkbox` | A yes/no value | | `Date` | A date | | `List` | A list of items, optionally linked to the recording timecodes | | `MultiSelect` | One or more options from `coloredSelectOptions` | | `Numeric` | A number | | `Paragraph` | A short text | | `Rating` | A rating between 1 and `ratingScale` (5 by default) | | `RichText` | A formatted text | | `Select` | A single option from `coloredSelectOptions` | The `Select` and `MultiSelect` output types require `coloredSelectOptions`, the list of options the AI can choose from. `hasTimecodes` only applies to the `List` output type, and `ratingScale` only applies to the `Rating` output type; they are ignored for other output types. A generated `Rating` value is more than the number: the Markdown answer starts with the rating (e.g. `4/5`) followed by a short justification with a **Proof** section (the decisive evidence for the rating) and a **Gap** section (what is missing to reach the next level, omitted when the rating is at its maximum). ## Creator Since API requests do not impersonate workspace users, creation endpoints require a `creatorEmail` attribute. It must be the email address of an active workspace member, who becomes the field author. When the workspace is configured so that only Admins can create AI fields, the creator must be a workspace Admin. ## CRM mapping Recording and deal AI fields can be mapped to a CRM property with the `crmField` attribute, so that generated values are pushed to the connected CRM. The property is identified by its entity and name, and is validated against the connected CRM: the property must exist, its type must be compatible with the output type, and for select properties the `coloredSelectOptions` values must match the CRM property options. Company AI fields cannot be mapped to a CRM property. ## Updates The update endpoints perform a full replace: always send the complete field definition, as an omitted `crmField` is cleared. ## Archiving AI fields cannot be deleted through the API, only archived. Archiving a field removes it from the views that use it as a column and sets its `archivedAt` attribute. Archived fields are excluded from the listing endpoints unless `includeArchived` is set. # Authentication Source: https://docs.claap.io/api-reference/authentication Start making requests to the Claap API # API Keys API keys are used to authenticate to the Claap platform. They are defined at workspace level and give access to the workspace resources. # HTTP Header: X-Claap-Key All requests must be authenticated by passing the key value in HTTP `X-Claap-Key` header: ``` X-Claap-Key: cla_xxxxx ``` If your API key is `cla_abcdefghijkl`, then the following header should be used: ``` X-Claap-Key: cla_abcdefghijkl ``` Unauthenticated requests will receive a `401 Unauthorized` error. # Admin automations Source: https://docs.claap.io/api-reference/automations Admin automations are the recording automations workspace Admins configure in the Claap workspace settings. An automation is defined by 3 key components: a priority, a set of filters, and a set of actions. The endpoints live under `/v1/admin-automations`. Managing admin automations requires a workspace plan that includes them; on other plans the endpoints fail with a `forbidden` error. ## Priority Automations are ordered: the first automation in the list has the highest priority. By default newly created automations are placed first. To control the position, set `beforeAdminAutomationId` when creating or updating an automation: it is inserted (or moved) right before the referenced automation. When the referenced automation does not exist, the request fails with a `validation_error`. When `beforeAdminAutomationId` is omitted on update, the automation keeps its current position. ## Filters Filters select which meetings an automation applies to. An automation without filters applies to all meetings. Each filter has a `type` (matching on the meeting type, organizer, participants, recording team, title, source or folder), can be negated with `not`, and combines with the other filters through `combineWith` (`And` or `Or`). When a filter does not define its own `combineWith`, the top-level `combineWith` value of the request (`Or` by default) is used. Filters can be grouped with the `Group` filter type, but groups cannot be nested. Some combinations are rejected: for instance the `autoRecord` action cannot be combined with a `FolderIs` filter, since the folder of a recording is only known after the meeting is recorded. ## Actions An automation automatically applies one or more of the following actions to the recordings matching its filters: * `autoRecord` records matching meetings (or prevents them from being recorded). * `autoShare` controls how matching recordings are shared: who they are shared with, how they are published in the workspace and whether a public link is enabled. * `moveToFolder` adds matching recordings to a folder (aka channel). * `updateOverview` personalizes the AI notes of matching recordings with the given summary sections. ## Enforcement By default automations are enforced (`disallowUserOverride: true`), meaning members cannot override them with their personal preferences. Set `disallowUserOverride` to `false` to let personal preferences win. ## Full replacement updates The update endpoint performs a full replacement, not a partial update: the automation becomes exactly what is sent, and omitted attributes are reset to their default values instead of being preserved. Always send the complete desired `actions`, `filters`, `combineWith` and `disallowUserOverride` values. ## Name generation The `name` attribute is optional when creating or updating an automation. When omitted, a name is generated from the actions and the first filter, for instance `Auto-record, Auto-share on internal meetings and other filters`. # Archive company AI field Source: https://docs.claap.io/api-reference/endpoint/archive_company_ai_field POST /v1/companies/fields/{fieldId}/archive Archive a company AI field. The field is removed from the company views that use it as a column. Archives a company AI field and removes it from the company views that use it as a column. # Archive deal AI field Source: https://docs.claap.io/api-reference/endpoint/archive_deal_ai_field POST /v1/deals/fields/{fieldId}/archive Archive a deal AI field. The field is removed from the deal views that use it as a column. Archives a deal AI field and removes it from the deal views that use it as a column. # Archive recording AI field Source: https://docs.claap.io/api-reference/endpoint/archive_recording_ai_field POST /v1/recordings/fields/{fieldId}/archive Archive a recording AI field. The field is removed from the recording views that use it as a column. Archives a recording AI field and removes it from the recording views that use it as a column. # Delete admin automation Source: https://docs.claap.io/api-reference/endpoint/delete_admin_automation DELETE /v1/admin-automations/{adminAutomationId} Permanently delete an admin automation. This action cannot be undone. Permanently deletes an admin automation. This action cannot be undone. # Delete company view Source: https://docs.claap.io/api-reference/endpoint/delete_company_view DELETE /v1/companies/views/{viewId} Permanently delete a company view. This action cannot be undone. Permanently deletes a company view. This action cannot be undone. Private views cannot be accessed through the API and are reported as not found. # Delete contact view Source: https://docs.claap.io/api-reference/endpoint/delete_contact_view DELETE /v1/contacts/views/{viewId} Permanently delete a contact view. This action cannot be undone. Permanently deletes a contact view. This action cannot be undone. Private views cannot be accessed through the API and are reported as not found. # Delete deal view Source: https://docs.claap.io/api-reference/endpoint/delete_deal_view DELETE /v1/deals/views/{viewId} Permanently delete a deal view. This action cannot be undone. Permanently deletes a deal view. This action cannot be undone. Private views cannot be accessed through the API and are reported as not found. # Delete recording Source: https://docs.claap.io/api-reference/endpoint/delete_recording DELETE /v1/recordings/{recordingId} Permanently delete a recording. This action cannot be undone. Permanently deletes a recording. This action cannot be undone. # Delete recording view Source: https://docs.claap.io/api-reference/endpoint/delete_recording_view DELETE /v1/recordings/views/{viewId} Permanently delete a recording view. This action cannot be undone. Permanently deletes a recording view. This action cannot be undone. Private views cannot be accessed through the API and are reported as not found. # Get admin automation Source: https://docs.claap.io/api-reference/endpoint/get_admin_automation GET /v1/admin-automations/{adminAutomationId} Retrieve a single admin automation. Retrieves a single admin automation. # Get company details Source: https://docs.claap.io/api-reference/endpoint/get_company GET /v1/companies/{companyId} Retrieve a company. If the company was merged into another company, the surviving company is returned. Retrieves a single company, including its CRM identifiers, domains and associated contacts and deals. If the company was merged into another company, the surviving company is returned. # Get company AI field Source: https://docs.claap.io/api-reference/endpoint/get_company_ai_field GET /v1/companies/fields/{fieldId} Retrieve a company AI field. Retrieves a company AI field. # Get company view details Source: https://docs.claap.io/api-reference/endpoint/get_company_view GET /v1/companies/views/{viewId} Retrieve a company view. Private views cannot be accessed through the API and are reported as not found. # Get contact details Source: https://docs.claap.io/api-reference/endpoint/get_contact GET /v1/contacts/{contactId} Retrieve a single contact. Retrieves a single contact, including its company identifier, its CRM URL and, when available, its AI-generated summary. # Get contact view details Source: https://docs.claap.io/api-reference/endpoint/get_contact_view GET /v1/contacts/views/{viewId} Retrieve a contact view. Private views cannot be accessed through the API and are reported as not found. # Get deal details Source: https://docs.claap.io/api-reference/endpoint/get_deal GET /v1/deals/{dealId} Retrieve a deal. Retrieves a single deal, including its CRM identifiers and, when available, its AI-generated summary. When `returnAiFields` is set, the response also includes the value of each AI field of the workspace for this deal; fields without a generated value have state `Missing`. # Get deal AI field Source: https://docs.claap.io/api-reference/endpoint/get_deal_ai_field GET /v1/deals/fields/{fieldId} Retrieve a deal AI field. Retrieves a deal AI field. # Get deal view details Source: https://docs.claap.io/api-reference/endpoint/get_deal_view GET /v1/deals/views/{viewId} Retrieve a deal view. Private views cannot be accessed through the API and are reported as not found. # Get recording details Source: https://docs.claap.io/api-reference/endpoint/get_recording GET /v1/recordings/{recordingId} Retrieve a recording. The shape of the response depends of the state of the recording: `Empty`, `Uploaded`, `Ready` or `Failed`. Set `returnAiFields` query parameter to `true` to retrieve the `aiFields` attribute containing the recording AI insights in a flat collection, instead of `insightTemplates` attribute containing insights grouped by AI templates. This parameter will become the default the 15th of June 2026, after which `insightTemplates` will be deprecated and omitted from all future payloads. # Get recording AI field Source: https://docs.claap.io/api-reference/endpoint/get_recording_ai_field GET /v1/recordings/fields/{fieldId} Retrieve a recording AI field. Retrieves a recording AI field. # Get recording transcript Source: https://docs.claap.io/api-reference/endpoint/get_recording_transcript GET /v1/recordings/{recordingId}/transcript Retrieve a recording transcript. # Get recording view details Source: https://docs.claap.io/api-reference/endpoint/get_recording_view GET /v1/recordings/views/{viewId} Retrieve a recording view. Private views cannot be accessed through the API and are reported as not found. # Get user details Source: https://docs.claap.io/api-reference/endpoint/get_user GET /v1/users/{userId} Retrieve a workspace user. Retrieves a single user of the workspace, including their license, role and state. # Get workspace information Source: https://docs.claap.io/api-reference/endpoint/get_workspace GET /v1/workspaces/mine Get workspace details. # List admin automations Source: https://docs.claap.io/api-reference/endpoint/list_admin_automations GET /v1/admin-automations List the admin automations of the workspace, in priority order: the first automation has the highest priority. Lists the admin automations of the workspace, in priority order (the first automation has the highest priority). # List companies Source: https://docs.claap.io/api-reference/endpoint/list_companies GET /v1/companies List companies, most recently created first by default. Lists the companies of the workspace, most recently created first by default. # List company AI fields Source: https://docs.claap.io/api-reference/endpoint/list_company_ai_fields GET /v1/companies/fields List the company AI fields of the workspace, sorted by title. Archived fields are excluded unless `includeArchived` is set. The endpoint is not paginated as the number of AI fields per workspace is capped. Lists the company AI fields of the workspace, sorted by title. Archived fields are excluded unless `includeArchived` is set. The endpoint is not paginated as the number of AI fields per workspace is capped. # List company views Source: https://docs.claap.io/api-reference/endpoint/list_company_views GET /v1/companies/views List the company views of the workspace. Only public views are returned; built-in default views are included after them, flagged with `isDefault`. Lists the company views of the workspace. Only public views are returned; built-in default views are included after them, flagged with `isDefault`. The endpoint is not paginated as the number of views per workspace is capped. # List contact views Source: https://docs.claap.io/api-reference/endpoint/list_contact_views GET /v1/contacts/views List the contact views of the workspace. Only public views are returned; built-in default views are included after them, flagged with `isDefault`. Lists the contact views of the workspace. Only public views are returned; built-in default views are included after them, flagged with `isDefault`. The endpoint is not paginated as the number of views per workspace is capped. # List contacts Source: https://docs.claap.io/api-reference/endpoint/list_contacts GET /v1/contacts List contacts, sorted by name ascending by default. Lists the contacts of the workspace, sorted by name ascending by default and paginated with a cursor. Contacts bound to a workspace user (`userId` set, `isExternal` false) are included but cannot be modified with the update endpoint. # List deal AI fields Source: https://docs.claap.io/api-reference/endpoint/list_deal_ai_fields GET /v1/deals/fields List the deal AI fields of the workspace, sorted by title. Archived fields are excluded unless `includeArchived` is set. The endpoint is not paginated as the number of AI fields per workspace is capped. Lists the deal AI fields of the workspace, sorted by title. Archived fields are excluded unless `includeArchived` is set. The endpoint is not paginated as the number of AI fields per workspace is capped. # List deal owners Source: https://docs.claap.io/api-reference/endpoint/list_deal_owners GET /v1/deals/owners List the deal owners of the CRM connected to the workspace (only Hubspot is supported), with their name and email. Lists the deal owners of the CRM connected to the workspace (only Hubspot is supported), with their name and email. Use it to discover the valid `ownerId` values accepted by the [update deal](/api-reference/endpoint/patch_deal) endpoint, or to find the owner id of a known email with the `email` filter. # List deal stages Source: https://docs.claap.io/api-reference/endpoint/list_deal_stages GET /v1/deals/stages List the deal stages of the CRM connected to the workspace (only Hubspot is supported), with the pipeline each stage belongs to. Lists the deal stages of the CRM connected to the workspace (only Hubspot is supported), with the pipeline each stage belongs to. Use it to discover the valid `stageId` values accepted by the [update deal](/api-reference/endpoint/patch_deal) endpoint, or to resolve the labels of the `stageId` and `pipelineId` returned by a deal. # List deal types Source: https://docs.claap.io/api-reference/endpoint/list_deal_types GET /v1/deals/types List the deal types of the CRM connected to the workspace (only Hubspot is supported). Lists the deal types of the CRM connected to the workspace (only Hubspot is supported). Use it to discover the valid `typeId` values accepted by the [update deal](/api-reference/endpoint/patch_deal) endpoint, or to resolve the label of the `typeId` returned by a deal. # List deal views Source: https://docs.claap.io/api-reference/endpoint/list_deal_views GET /v1/deals/views List the deal views of the workspace. Only public views are returned; built-in default views are included after them, flagged with `isDefault`. Lists the deal views of the workspace. Only public views are returned; built-in default views are included after them, flagged with `isDefault`. The endpoint is not paginated as the number of views per workspace is capped. # List deals Source: https://docs.claap.io/api-reference/endpoint/list_deals GET /v1/deals List deals, most recently opened first. Lists the deals of the workspace, most recently opened first. # List recording AI fields Source: https://docs.claap.io/api-reference/endpoint/list_recording_ai_fields GET /v1/recordings/fields List the recording AI fields of the workspace, sorted by title. Archived fields are excluded unless `includeArchived` is set. The endpoint is not paginated as the number of AI fields per workspace is capped. Lists the recording AI fields of the workspace, sorted by title. Archived fields are excluded unless `includeArchived` is set. The endpoint is not paginated as the number of AI fields per workspace is capped. # List recording views Source: https://docs.claap.io/api-reference/endpoint/list_recording_views GET /v1/recordings/views List the recording views of the workspace. Only public views are returned; built-in default views are included after them, flagged with `isDefault`. Lists the recording views of the workspace. Only public views are returned; built-in default views are included after them, flagged with `isDefault`. The endpoint is not paginated as the number of views per workspace is capped. # List recordings Source: https://docs.claap.io/api-reference/endpoint/list_recordings GET /v1/recordings List recordings. # List users Source: https://docs.claap.io/api-reference/endpoint/list_users GET /v1/users List the users of the workspace, whatever their state. Lists the users of the workspace with their license, role and state. Users are returned whatever their state (active, suspended, gone or deleted). Use the `email` query parameter to look up a single user by email; an unknown email returns an empty list. # Update company view Source: https://docs.claap.io/api-reference/endpoint/patch_company_view PATCH /v1/companies/views/{viewId} Update a company view. The update is partial: omitted attributes keep their current values. The update is partial: omitted attributes keep their current values. Private views cannot be accessed through the API and are reported as not found. Built-in default views cannot be updated. # Update contact Source: https://docs.claap.io/api-reference/endpoint/patch_contact PATCH /v1/contacts/{contactId} Update a contact. At least one of "email" or "name" must be provided; omitted fields keep their current values. The update is partial: omitted attributes keep their current values, and at least one of `email` or `name` must be provided. The `creatorEmail` must belong to an active workspace member, who is recorded as the author of this manual change. Some contacts cannot be updated: * Contacts bound to a workspace user (`userId` set) cannot be edited. * The email of a contact linked to a CRM entity must be changed in the CRM instead. * The new email cannot be already owned by another contact of the workspace. # Update contact view Source: https://docs.claap.io/api-reference/endpoint/patch_contact_view PATCH /v1/contacts/views/{viewId} Update a contact view. The update is partial: omitted attributes keep their current values. The update is partial: omitted attributes keep their current values. Private views cannot be accessed through the API and are reported as not found. Built-in default views cannot be updated. # Update deal Source: https://docs.claap.io/api-reference/endpoint/patch_deal PATCH /v1/deals/{dealId} Update a deal. The update is written to the connected CRM first, then mirrored in Claap. At least one field must be provided; omitted fields keep their current values. The update is partial: omitted attributes keep their current values, and at least one attribute must be provided. Use CRM ids when updating `ownerId`, `stageId` and `typeId`: the valid ids can be discovered with the [list deal owners](/api-reference/endpoint/list_deal_owners), [list deal stages](/api-reference/endpoint/list_deal_stages) and [list deal types](/api-reference/endpoint/list_deal_types) endpoints, or read from an existing deal. # Update deal view Source: https://docs.claap.io/api-reference/endpoint/patch_deal_view PATCH /v1/deals/views/{viewId} Update a deal view. The update is partial: omitted attributes keep their current values. The update is partial: omitted attributes keep their current values. Private views cannot be accessed through the API and are reported as not found. Built-in default views cannot be updated. # Update recording view Source: https://docs.claap.io/api-reference/endpoint/patch_recording_view PATCH /v1/recordings/views/{viewId} Update a recording view. The update is partial: omitted attributes keep their current values. The update is partial: omitted attributes keep their current values. Private views cannot be accessed through the API and are reported as not found. Built-in default views cannot be updated. # Create admin automation Source: https://docs.claap.io/api-reference/endpoint/post_admin_automation POST /v1/admin-automations Create an admin automation. By default the new automation is placed first in the list, giving it the highest priority over existing automations; set `beforeAdminAutomationId` to insert it right before another automation instead. Creates an admin automation. By default the new automation is placed first in the list, giving it the highest priority; set `beforeAdminAutomationId` to insert it right before another automation instead. At least one action (`autoRecord`, `autoShare`, `moveToFolder` or `updateOverview`) is required; when `name` is omitted, a name is generated from the actions and filters. # Create company AI field Source: https://docs.claap.io/api-reference/endpoint/post_company_ai_field POST /v1/companies/fields Create a company AI field, evaluated by AI against the activity of each company: the recordings and emails linked to the company itself and to all its deals. The field is owned by the workspace member identified by `creatorEmail`. The field is evaluated for companies as new activity comes in; no values are generated for companies whose activity does not change. Creates a company AI field, evaluated by AI against the activity of each company: the recordings and emails linked to the company itself and to all its deals. `creatorEmail` must belong to an active workspace member, who becomes the field author. The field is evaluated for companies as new activity comes in; no values are generated for companies whose activity does not change. # Create company view Source: https://docs.claap.io/api-reference/endpoint/post_company_view POST /v1/companies/views Create a company view. The view is public and owned by the workspace member identified by `creatorEmail`. Creates a company view. `creatorEmail` must belong to an active workspace member, who becomes the view owner. Only public views can be created through the API. # Create contact Source: https://docs.claap.io/api-reference/endpoint/post_contact POST /v1/contacts Create a contact. If a contact already exists for this email address, its name is updated instead. Creates a contact with the same fields as the manual creation flow of the app: a name and an email address. If a contact already exists for this email — email matching is case-insensitive — its name is updated instead, and the response reports `created` as `false`. The `creatorEmail` must belong to an active workspace member, who is recorded as the author of this manual change. # Create contact view Source: https://docs.claap.io/api-reference/endpoint/post_contact_view POST /v1/contacts/views Create a contact view. The view is public and owned by the workspace member identified by `creatorEmail`. Creates a contact view. `creatorEmail` must belong to an active workspace member, who becomes the view owner. Only public views can be created through the API. # Create deal AI field Source: https://docs.claap.io/api-reference/endpoint/post_deal_ai_field POST /v1/deals/fields Create a deal AI field, evaluated by AI against all the activity of each deal (recordings and emails). The field is owned by the workspace member identified by `creatorEmail`. The field is evaluated for deals as new activity comes in; no values are generated for deals whose activity does not change. Creates a deal AI field, evaluated by AI against all the activity of each deal (recordings and emails). `creatorEmail` must belong to an active workspace member, who becomes the field author. The field is evaluated for deals as new activity comes in; no values are generated for deals whose activity does not change. # Create deal view Source: https://docs.claap.io/api-reference/endpoint/post_deal_view POST /v1/deals/views Create a deal view. The view is public and owned by the workspace member identified by `creatorEmail`. Creates a deal view. `creatorEmail` must belong to an active workspace member, who becomes the view owner. Only public views can be created through the API. # Create recording Source: https://docs.claap.io/api-reference/endpoint/post_recording POST /v1/recordings Create a recording. Create a recording in an empty state. The video or audio payload can be supplied either by an HTTP PUT request on the `upload.url` or by pointing the input `downloadUrl` to a location publicly accessible with an HTTP GET request, returning less than 2 GiB of data within 5 minutes. The recording is created on behalf of specified author and related quotas apply. At most 50 recordings can be created in a 30 days window period. Once the payload is received, `state` will change to `Uploaded` then either to `Ready` or `Failed`. Payload formats are the same available to manual uploads: * aac * avi * mp3 * mp4 * wav * webm * wmv To provide a transcript in addition to the video, set the `transcript` attribute to `{ "type": "upload" }`. The response will then define the `upload.metaUrl` attribute. Use it to send the JSON payload with an HTTP PUT request, in the following format: ```typescript theme={null} { transcript: { // The 2-letters language code of the transcript, if any langIso2?: string segments: { // Segment start timecode in seconds start: number // Segment end timecode in seconds end: number // Segment speaker identifier, can reference an item in the speakers // collection speakerId: string // Segment transcript text: string }[] speakers?: { email?: string // Set isRecorder to true if the speaker is the meeting recorder isRecorder?: boolean name: string speakerId: string }[] } } ``` For instance: ```json theme={null} { "transcript": { "langIso2": "fr", "segments": [ { "speakerId": "1", "start": 0.5, "end": 1.5, "text": "Bonjour !" }, { "speakerId": "2", "start": 2.1, "end": 2.9, "text": "Hello" } ], "speakers": [ { "email": "eric@claap.io", "name": "Éric", "speakerId": "1" }, { "email": "marc@claap.io", "name": "Marc", "speakerId": "2" } ] } } ``` **NOTE**: if the `transcript` attribute was set, the recording creation will only proceed once both the video and the transcript payloads have been sent. # Create recording AI field Source: https://docs.claap.io/api-reference/endpoint/post_recording_ai_field POST /v1/recordings/fields Create a recording AI field, evaluated by AI against each recording transcript. The field is owned by the workspace member identified by `creatorEmail`. The field is evaluated for new recordings going forward; no values are generated for existing recordings. Creates a recording AI field, evaluated by AI against each recording transcript. `creatorEmail` must belong to an active workspace member, who becomes the field author. The field is evaluated for new recordings going forward; no values are generated for existing recordings. # Create recording view Source: https://docs.claap.io/api-reference/endpoint/post_recording_view POST /v1/recordings/views Create a recording view. The view is public and owned by the workspace member identified by `creatorEmail`. Creates a recording view. `creatorEmail` must belong to an active workspace member, who becomes the view owner. Only public views can be created through the API. # Update admin automation Source: https://docs.claap.io/api-reference/endpoint/put_admin_automation PUT /v1/admin-automations/{adminAutomationId} Replace an admin automation. This is a full replacement, not a partial update: the automation becomes exactly what is sent, and omitted attributes are reset to their default values instead of being preserved. Replaces an admin automation. This is a full replacement: always send the complete desired `actions`, `filters`, `combineWith` and `disallowUserOverride` values, as omitted attributes are reset to their defaults rather than preserved. Set `beforeAdminAutomationId` to move the automation right before another one; when omitted, its position is unchanged. # Update company AI field Source: https://docs.claap.io/api-reference/endpoint/put_company_ai_field PUT /v1/companies/fields/{fieldId} Update a company AI field. The update is a full replace: always send the complete field definition, as omitted optional attributes are cleared. Updating a field does not regenerate the values already produced; the new definition applies to companies as new activity comes in. The update is a full replace: always send the complete field definition. Company AI fields cannot be mapped to a CRM property. Updating a field does not regenerate the values already produced; the new definition applies to companies as new activity comes in. # Update deal AI field Source: https://docs.claap.io/api-reference/endpoint/put_deal_ai_field PUT /v1/deals/fields/{fieldId} Update a deal AI field. The update is a full replace: always send the complete field definition, as omitted optional attributes are cleared. Updating a field does not regenerate the values already produced; the new definition applies to deals as new activity comes in. The update is a full replace: always send the complete field definition, as an omitted `crmField` is cleared. Updating a field does not regenerate the values already produced; the new definition applies to deals as new activity comes in. # Update recording AI field Source: https://docs.claap.io/api-reference/endpoint/put_recording_ai_field PUT /v1/recordings/fields/{fieldId} Update a recording AI field. The update is a full replace: always send the complete field definition, as omitted optional attributes are cleared. Updating a field does not regenerate values for existing recordings; the new definition applies to new recordings going forward. The update is a full replace: always send the complete field definition, as an omitted `crmField` is cleared. Updating a field does not regenerate values for existing recordings; the new definition applies to new recordings going forward. # Trigger webhook Source: https://docs.claap.io/api-reference/endpoint/trigger_webhook POST /v1/webhooks/{webhookId}/trigger Trigger webhook. # Responses & Errors Source: https://docs.claap.io/api-reference/errors # API Responses Unless specified otherwise, the API returns JSON payloads both on success and errors. A successful response looks like: ```json theme={null} { "result": { ... actual payload goes here... } } ``` An error payload is structured like: ```json theme={null} { "error": { "type": "not_found", "message": "Recording was not found" } } ``` Some kind of errors may carry additional information. For instance `validation_error` may define the location of the element failing the check in `path` attribute. ```json theme={null} { "error": { "type": "validation_error", "message": "Value is not a valid integer", "path": "limit" } } ``` ## Dates Request dates can be sent in ISO format variants: ``` 2025-02-25T13:00:44.602Z 2025-02-25T13:00:44Z 2025-02-25T13:00Z 2025-02-25T13:00 2025-02-25 ``` Response dates are in ISO format, UTC. ``` "createdAt": "2025-02-25T13:00:44.602Z" ``` # API Error Codes Claap API uses the following error codes: | Code | Description | | ---- | ------------------------------------------------------------------------------------------------- | | 200 | OK, everything worked as expected | | 400 | There was something wrong with your request. Check the response body for a detailed error message | | 401 | Unauthorized, API key was not supplied or is not valid | | 404 | Not found, requested resource cannot be retrieved | | 429 | Too many requests. Check the response headers for information about the state of rate limiting | | 500 | Internal error. Contact us if the error persists. | # Quotas and Limits Source: https://docs.claap.io/api-reference/rate_limiting # Rate Limiting Rate limiting is enforced at workspace level. Different keys belonging to the same workspace will share the same quotas. By default, each endpoint has a limit of 3 calls per second, with some allowance for burstiness. A global limit of 3000 calls per day is enforced at workspace level. When one of these limits is reached, the request will fail with a `429 Too many requests` error. Information about the current quotas can be retrieved from the response headers: ``` X-RateLimit-Limit: 3 X-RateLimit-Remaining: 20 X-RateLimit-Daily-Remaining: 1561 ``` * **X-RateLimit-Limit**: The sustained request rate for this endpoint, in requests per second. This is how quickly your rate limit quota refills. * **X-RateLimit-Remaining**: The number of requests you can make immediately before being rate-limited. This value can exceed X-RateLimit-Limit because the API allows short bursts of requests. Once depleted, it refills at the rate shown in X-RateLimit-Limit. * **X-RateLimit-Daily-Remaining**: The number of API calls remaining for your workspace within a rolling 24-hour window. Requests made more than 24 hours ago no longer count against this limit. # Recordings Visibility Source: https://docs.claap.io/api-reference/recordings In Claap application, the ability to access a recording depends on a lot of factors: is the user assigned to the recording, are they part of a team giving them access, is the recording public, etc. Since API requests do not impersonate workspace users, the rules are a bit different. A recording can be retrieved by the API if: * The recording can be accessed by workspace members and is visible in global search. * The recording folder (aka channel) can be accessed by workspace members and is visible in global search. # Views Source: https://docs.claap.io/api-reference/views Views are saved configurations of the recordings, deals, companies and contacts tables in Claap. A view defines which columns are displayed, which filters are applied and how rows are sorted. The API exposes the same views users create and share in the Claap application. Each domain has its own set of endpoints under `/v1/recordings/views`, `/v1/deals/views`, `/v1/companies/views` and `/v1/contacts/views`, since the available columns, filters and sort fields differ between domains. ## Visibility Views in Claap are either public (shared with the workspace) or private to their owner. Since API requests do not impersonate workspace users, only public views are accessible through the API: * Listing endpoints only return public views. * Retrieving, updating or deleting a private view fails as if the view did not exist. * Created views are always public. ## Default views Built-in default views (for example "All deals" or "My Meetings") are returned by the listing endpoints after saved views, and can be retrieved by their `viewId`. They carry `isDefault: true` and cannot be updated or deleted. ## Listing records within a view The record listing endpoints — `GET /v1/recordings`, `GET /v1/deals`, `GET /v1/companies` and `GET /v1/contacts` — accept an optional `viewId` query parameter. When set, the endpoint returns the records of that view: the view's filters and sorting are applied. The response keeps its usual shape and does not include the view's columns; use the view endpoints under `/v1//views` for column values. Other query parameters narrow the results down within the view rather than replacing its filters. For recordings, filters such as `channelId`, `labels`, `recorderId`, `recorderEmail`, `createdAfter` and `createdBefore` intersect with the view — a value that contradicts the view yields an empty page. Where a `sort` parameter is available, it overrides the view's own sorting. An unknown or inaccessible `viewId` returns a `404` error, following the same visibility rules as the view endpoints: private views are reported as not found. ## Ownership Creating a view requires a `creatorEmail` attribute. It must be the email address of an active workspace member, who becomes the owner of the view, as if they had created it in the Claap application. ## Partial updates Update endpoints accept partial payloads: omitted attributes keep their current values. Sending an attribute replaces its value entirely — for instance, sending `columns` replaces the whole column list, not just the entries it contains. A few internal filter attributes are not exposed through the API and always keep their stored values on update. ## The `Me` filter type Some filters (for example the recording author or the deal owner) accept a special entry of type `Me` in addition to explicit users or email addresses. `Me` is resolved dynamically to whoever is viewing the table in the Claap application, which allows a single shared view like "My deals" to show different rows to each user. Since API requests are not made on behalf of a workspace user, `Me` is resolved against the whole workspace when listing records with a `viewId`: a view filter that includes `Me` matches records of any workspace member, and a view that excludes `Me` returns an empty page. # Recording added webhook Source: https://docs.claap.io/api-reference/webhook/recording_added webhook recording_added The `recording_added` event type is emitted when a new recording, from a clip or a meeting, is made available to workspace members. Private recordings are excluded. A recording is available once it is transcoded, transcribed and analyzed. Its payload includes recording metadata, an outline, insights, as well as links to various recording-specific resources (transcripts, video file). When the recording is a meeting recording, the payload will also contain, if relevant, information about participants, deal, and company. # Recording updated webhook Source: https://docs.claap.io/api-reference/webhook/recording_updated webhook recording_updated The `recording_updated` event type is emitted when some properties of a recording are updated. Whenever one of the following properties in a recording changes, this event will be fired: * Folder (aka channel) * Insights template * Label * Attached Deal * Attached Company Private recordings are excluded. The payload includes the complete `Recording` entity, similar to the payload sent for a `recording_added` event. # Requests & Payloads Source: https://docs.claap.io/api-reference/webhooks Be notified on workspace data changes Webhook are registered in workspaces and are triggered on specific events, see each webhook description for more details. When one of these events takes place, the client endpoint receives the payload as a POST HTTPS request, in JSON format. The client is expected to answer with a `200` status code within 5 seconds. Failing to do that, the payload will be sent again immediately, then 1 minute and 5 minutes later, before being discarded. The following headers are set: * `X-Claap-Webhook-Id`: the webhook identifier. * `X-Claap-Webhook-Secret`: a secret key bound to the webhook, which can be used to check the request comes from Claap. # Event structure Webhook payloads are structured as JSON objects like: ```json theme={null} { "eventId": "eeghaiCh8Chaikusa5che", "event": { "type": "recording_added", "recording": { ... payload } } } ``` Where `event.type` identifies the kind of event being received and `eventId` this particular instance of webhook invocation. `eventId` is shared by all retries of a same invocation. # Moving from Insight Templates to AI Fields Starting the 15th of June 2026, recording `insightTemplates` attribute will no longer be filled and will be replaced by `aiFields` attribute. `aiFields` will contain the recording insights in a flat collection. To migrate to the new output format before the 15th of June 2026, update your webhook configuration to enable the new `aiFields` attribute.