Attio Records API

Individual records within an object, with CRUD, query, and upsert.

Documentation

Specifications

Other Resources

OpenAPI Specification

attio-com-records-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Attio REST Attributes Records API
  description: 'The Attio REST API exposes the Attio CRM''s object/attribute/record data model over HTTPS. Attio is an AI-native CRM built on flexible objects (people, companies, deals, users, workspaces, and custom objects), typed attributes, records, and lists. This specification covers the core data-model, activity, collaboration, and platform endpoints: objects, records, attributes, lists, list entries, notes, tasks, comments, threads, webhooks, workspace members, and token identification. All requests are authenticated with a Bearer access token (API key or OAuth) and scoped by granular permissions. Endpoints marked modeled in the repository review were derived from Attio''s published endpoint reference and follow Attio''s documented /v2 path conventions.'
  version: '2.0'
  contact:
    name: Attio
    url: https://attio.com
  license:
    name: Proprietary
    url: https://attio.com/legal
servers:
- url: https://api.attio.com/v2
  description: Attio REST API v2
security:
- bearerAuth: []
tags:
- name: Records
  description: Individual records within an object, with CRUD, query, and upsert.
paths:
  /objects/{object}/records/query:
    parameters:
    - $ref: '#/components/parameters/Object'
    post:
      operationId: listRecords
      tags:
      - Records
      summary: List records
      description: Lists people, company, or other records, with the option to filter and sort results. Confirmed endpoint - POST /v2/objects/{object}/records/query.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                filter:
                  type: object
                sorts:
                  type: array
                  items:
                    type: object
                limit:
                  type: integer
                offset:
                  type: integer
      responses:
        '200':
          description: A page of matching records.
  /objects/{object}/records:
    parameters:
    - $ref: '#/components/parameters/Object'
    post:
      operationId: createRecord
      tags:
      - Records
      summary: Create a record
      description: Creates a new person, company, or other record.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: The created record.
    put:
      operationId: assertRecord
      tags:
      - Records
      summary: Assert a record
      description: Creates or updates (upserts) a record using a matching attribute to determine whether a record already exists.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: The asserted (created or updated) record.
  /objects/{object}/records/{record_id}:
    parameters:
    - $ref: '#/components/parameters/Object'
    - $ref: '#/components/parameters/RecordId'
    get:
      operationId: getRecord
      tags:
      - Records
      summary: Get a record
      description: Gets a single record by its record_id.
      responses:
        '200':
          description: The requested record.
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateRecordAppend
      tags:
      - Records
      summary: Update a record (append multiselect values)
      description: Updates a record, appending values to multiselect attributes.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: The updated record.
    put:
      operationId: updateRecordOverwrite
      tags:
      - Records
      summary: Update a record (overwrite multiselect values)
      description: Updates a record, overwriting values on multiselect attributes.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: The updated record.
    delete:
      operationId: deleteRecord
      tags:
      - Records
      summary: Delete a record
      description: Deletes a record by its record_id.
      responses:
        '200':
          description: The record was deleted.
  /objects/{object}/records/{record_id}/attributes/{attribute}/values:
    parameters:
    - $ref: '#/components/parameters/Object'
    - $ref: '#/components/parameters/RecordId'
    - $ref: '#/components/parameters/Attribute'
    get:
      operationId: listRecordAttributeValues
      tags:
      - Records
      summary: List record attribute values
      description: Lists all values, including historic values, for a given attribute on a record.
      responses:
        '200':
          description: A list of attribute values.
  /objects/{object}/records/{record_id}/entries:
    parameters:
    - $ref: '#/components/parameters/Object'
    - $ref: '#/components/parameters/RecordId'
    get:
      operationId: listRecordEntries
      tags:
      - Records
      summary: List record entries
      description: Lists all entries, across all lists, for which this record is the parent.
      responses:
        '200':
          description: A list of list entries.
components:
  responses:
    NotFound:
      description: The requested resource was not found.
  parameters:
    RecordId:
      name: record_id
      in: path
      required: true
      schema:
        type: string
    Object:
      name: object
      in: path
      required: true
      description: The object ID or slug (for example people, companies, deals, or a custom object).
      schema:
        type: string
    Attribute:
      name: attribute
      in: path
      required: true
      description: The attribute ID or slug.
      schema:
        type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Attio access token (API key or OAuth 2.0 bearer token) with the required scopes.
Where this information came from

This is an independent, third-party profile of Attio Records API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.