Attio

App · CRM Systems · 20 actions

Read and write the Attio CRM: find, create, update and delete records on any object, file them onto lists, and keep notes and tasks against them.

Actions

ActionWhat it does
Add record to listPut an existing record onto a list, optionally setting the list's own attributes for it at the same time - a stage, an owner, a value.
Create noteWrite a note onto a record - a call summary, a piece of research, anything worth keeping against the person or company.
Create or update recordUpdate the record whose matching attribute already holds this value, or create it if there isn't one - the usual way to sync people in by email address or companies by domain.
Create recordAdd a record to an object - a new person, company, deal or anything else the workspace tracks.
Create taskCreate a task, optionally due on a date, about a record and assigned to someone.
Delete notePermanently delete a note.
Delete recordPermanently delete a record.
Delete taskPermanently delete a task.
Get noteRead one note in full - its title, the record it is on, and its body in both plain text and markdown.
Get recordRead one record and every attribute value on it.
List attributesList the attributes defined on one object or list - the field names a record's values are keyed by.
List list entriesRead the entries on a list - which records are on it, and the list's own attributes for each of them, such as a stage or an owner.
List listsList every list in the workspace - the pipelines and working sets records get filed into.
List notesRead notes, either across the whole workspace or just the ones on one record.
List objectsList every object in the Attio workspace - People, Companies and Deals, plus any object the workspace has added of its own.
List recordsSearch one object's records - every person, company, deal or whatever else the object holds - filtered and sorted however you like.
List tasksRead tasks, narrowed to one record, one assignee or one state.
Remove record from listTake an entry off a list.
Update recordChange attribute values on a record.
Update taskChange a task's deadline, tick it off, or change what it is about and who it is for.

Add record to list

Put an existing record onto a list, optionally setting the list's own attributes for it at the same time - a stage, an owner, a value. Returns the new entry's ID.

Inputs

ListlisttextRequired
Which list to work with. Pick from the list; the value sent is the list's API slug.
Record's objectparent_objecttextRequired
Which object the record being added belongs to.
Record IDparent_record_idtextRequired
The record to add. Paste its app.attio.com link or its ID.
List attribute valuesentry_valuesobject
The list's own attributes to set on this entry, keyed by API slug. Run "List attributes" with the target set to a list to see them. Leave empty to add the record with nothing else set.

Outputs

entryobject
The new entry
entry_idtext
Its ID
entry_valuesobject
The list attributes set on the entry
listtext
The list it is on
list_idtext
That list's ID
parent_objecttext
The record's object
parent_record_idtext
The record that was added
Example output
{
  "entry": {
    "created_at": "2026-08-14T09:13:01.000000000Z",
    "entry_values": {},
    "id": {
      "entry_id": "2e6e29ea-c4e0-4f44-842c-3fbdc4dcd0e1",
      "list_id": "33ebdbe9-e529-47c9-b894-0ba25e9c15c0",
      "workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c"
    },
    "parent_object": "people",
    "parent_record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d"
  },
  "entry_id": "2e6e29ea-c4e0-4f44-842c-3fbdc4dcd0e1",
  "entry_values": {},
  "list": "sales_pipeline",
  "list_id": "33ebdbe9-e529-47c9-b894-0ba25e9c15c0",
  "parent_object": "people",
  "parent_record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d"
}

Create note

Write a note onto a record - a call summary, a piece of research, anything worth keeping against the person or company. The body can be plain text or markdown.

Inputs

Record's objectparent_objecttextRequired
Which object the record being noted belongs to.
Record IDparent_record_idtextRequired
The record to attach the note to. Paste its app.attio.com link or its ID.
TitletitletextRequired
The note's title. Plain text, with no formatting.
ContentcontenttextRequired
The body of the note.
Content formatformattext
How to read the body. Markdown supports headings, lists, styling and links - but not images.One of: plaintext (Plain text), markdown. Default: plaintext.
Backdate tocreated_atdate and time
Record the note as having been written at this time, for migrating history in from somewhere else. Leave empty to stamp it with now.

Outputs

content_markdowntext
The body as markdown
content_plaintexttext
The body as plain text
noteobject
The new note
note_idtext
Its ID
parent_objecttext
The record's object
parent_record_idtext
The record it is on
titletext
Its title
Example output
{
  "content_markdown": "Walked through the pilot. **Follow up in a week.**",
  "content_plaintext": "Walked through the pilot. Follow up in a week.",
  "note": {
    "content_markdown": "Walked through the pilot. **Follow up in a week.**",
    "content_plaintext": "Walked through the pilot. Follow up in a week.",
    "created_at": "2026-08-14T09:14:20.000000000Z",
    "created_by_actor": {
      "id": null,
      "type": "api-token"
    },
    "id": {
      "note_id": "d1b9a1a1-8b0e-4f0c-9a5f-6f43a24e6a70",
      "workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c"
    },
    "meeting_id": null,
    "parent_object": "people",
    "parent_record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d",
    "tags": [],
    "title": "Intro call"
  },
  "note_id": "d1b9a1a1-8b0e-4f0c-9a5f-6f43a24e6a70",
  "parent_object": "people",
  "parent_record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d",
  "title": "Intro call"
}

Create or update record

Update the record whose matching attribute already holds this value, or create it if there isn't one - the usual way to sync people in by email address or companies by domain. The matching attribute has to be one Attio marks unique, and its value has to be among the values you send.

Inputs

ObjectobjecttextRequired
Which kind of record to work with - People, Companies, Deals, or any object this workspace has added. Pick from the list; the value sent is the object's API slug.
Match on attributematching_attributetextRequired
The API slug of the attribute used to find an existing record - 'email_addresses' for people, 'domains' for companies. It must be an attribute Attio marks unique; "List attributes" shows which ones are.
Attribute valuesvaluesobjectRequired
The attributes to set, keyed by their API slug - for example {"name": "Lovelace, Ada", "email_addresses": "ada@example.com", "job_title": "Analyst"}. Run "List attributes" against this object to see the slugs it has. A personal name given as plain text must be written "Last, First": text without a comma is stored as a first name only.

Outputs

matching_attributetext
The attribute matched on
objecttext
The object it is on
object_idtext
Its object's ID
recordobject
The record created or updated
record_idtext
Its ID
valuesobject
Its attribute values, keyed by API slug
web_urltext
Where to open it in Attio
Example output
{
  "matching_attribute": "email_addresses",
  "object": "people",
  "object_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
  "record": {
    "created_at": "2026-08-14T09:12:33.481000000Z",
    "id": {
      "object_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
      "record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d",
      "workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c"
    },
    "values": {
      "email_addresses": [
        {
          "active_from": "2026-08-14T09:12:33.481000000Z",
          "active_until": null,
          "attribute_type": "email-address",
          "created_by_actor": {
            "id": null,
            "type": "api-token"
          },
          "email_address": "ada@example.com"
        }
      ],
      "job_title": [
        {
          "active_from": "2026-08-14T09:12:33.481000000Z",
          "active_until": null,
          "attribute_type": "text",
          "created_by_actor": {
            "id": null,
            "type": "api-token"
          },
          "value": "Analyst"
        }
      ],
      "name": [
        {
          "active_from": "2026-08-14T09:12:33.481000000Z",
          "active_until": null,
          "attribute_type": "personal-name",
          "created_by_actor": {
            "id": null,
            "type": "api-token"
          },
          "first_name": "Ada",
          "full_name": "Ada Lovelace",
          "last_name": "Lovelace"
        }
      ]
    },
    "web_url": "https://app.attio.com/lodol/person/891dcbfc-9141-415d-9b2a-2238a6cc012d"
  },
  "record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d",
  "values": {
    "email_addresses": [
      {
        "active_from": "2026-08-14T09:12:33.481000000Z",
        "active_until": null,
        "attribute_type": "email-address",
        "created_by_actor": {
          "id": null,
          "type": "api-token"
        },
        "email_address": "ada@example.com"
      }
    ],
    "job_title": [
      {
        "active_from": "2026-08-14T09:12:33.481000000Z",
        "active_until": null,
        "attribute_type": "text",
        "created_by_actor": {
          "id": null,
          "type": "api-token"
        },
        "value": "Analyst"
      }
    ],
    "name": [
      {
        "active_from": "2026-08-14T09:12:33.481000000Z",
        "active_until": null,
        "attribute_type": "personal-name",
        "created_by_actor": {
          "id": null,
          "type": "api-token"
        },
        "first_name": "Ada",
        "full_name": "Ada Lovelace",
        "last_name": "Lovelace"
      }
    ]
  },
  "web_url": "https://app.attio.com/lodol/person/891dcbfc-9141-415d-9b2a-2238a6cc012d"
}

Create record

Add a record to an object - a new person, company, deal or anything else the workspace tracks. Set whichever attributes you have, keyed by their API slug. Returns the new record with its ID and its Attio link.

Inputs

ObjectobjecttextRequired
Which kind of record to work with - People, Companies, Deals, or any object this workspace has added. Pick from the list; the value sent is the object's API slug.
Attribute valuesvaluesobjectRequired
The attributes to set, keyed by their API slug - for example {"name": "Lovelace, Ada", "email_addresses": "ada@example.com", "job_title": "Analyst"}. Run "List attributes" against this object to see the slugs it has. A personal name given as plain text must be written "Last, First": text without a comma is stored as a first name only.

Outputs

objecttext
The object it is on
object_idtext
Its object's ID
recordobject
The new record
record_idtext
Its ID
valuesobject
Its attribute values, keyed by API slug
web_urltext
Where to open it in Attio
Example output
{
  "object": "people",
  "object_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
  "record": {
    "created_at": "2026-08-14T09:12:33.481000000Z",
    "id": {
      "object_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
      "record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d",
      "workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c"
    },
    "values": {
      "email_addresses": [
        {
          "active_from": "2026-08-14T09:12:33.481000000Z",
          "active_until": null,
          "attribute_type": "email-address",
          "created_by_actor": {
            "id": null,
            "type": "api-token"
          },
          "email_address": "ada@example.com"
        }
      ],
      "job_title": [
        {
          "active_from": "2026-08-14T09:12:33.481000000Z",
          "active_until": null,
          "attribute_type": "text",
          "created_by_actor": {
            "id": null,
            "type": "api-token"
          },
          "value": "Analyst"
        }
      ],
      "name": [
        {
          "active_from": "2026-08-14T09:12:33.481000000Z",
          "active_until": null,
          "attribute_type": "personal-name",
          "created_by_actor": {
            "id": null,
            "type": "api-token"
          },
          "first_name": "Ada",
          "full_name": "Ada Lovelace",
          "last_name": "Lovelace"
        }
      ]
    },
    "web_url": "https://app.attio.com/lodol/person/891dcbfc-9141-415d-9b2a-2238a6cc012d"
  },
  "record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d",
  "values": {
    "email_addresses": [
      {
        "active_from": "2026-08-14T09:12:33.481000000Z",
        "active_until": null,
        "attribute_type": "email-address",
        "created_by_actor": {
          "id": null,
          "type": "api-token"
        },
        "email_address": "ada@example.com"
      }
    ],
    "job_title": [
      {
        "active_from": "2026-08-14T09:12:33.481000000Z",
        "active_until": null,
        "attribute_type": "text",
        "created_by_actor": {
          "id": null,
          "type": "api-token"
        },
        "value": "Analyst"
      }
    ],
    "name": [
      {
        "active_from": "2026-08-14T09:12:33.481000000Z",
        "active_until": null,
        "attribute_type": "personal-name",
        "created_by_actor": {
          "id": null,
          "type": "api-token"
        },
        "first_name": "Ada",
        "full_name": "Ada Lovelace",
        "last_name": "Lovelace"
      }
    ]
  },
  "web_url": "https://app.attio.com/lodol/person/891dcbfc-9141-415d-9b2a-2238a6cc012d"
}

Create task

Create a task, optionally due on a date, about a record and assigned to someone. The text is plain only - Attio supports no formatting, links or @-mentions in a task - and cannot be changed once the task exists.

Inputs

TaskcontenttextRequired
What needs doing. Plain text, up to 2000 characters. This cannot be edited afterwards.
Duedeadline_atdate and time
When the task is due. Leave empty for no deadline.
Already doneis_completedtrue/false
Create the task already ticked off. Usually left off.Default: false.
Linked record's objectlinked_objecttext
Which object the linked record belongs to. Required whenever a linked record ID is given.
Linked record IDlinked_record_idtext
The record the task is about. Paste its app.attio.com link or its ID.
Assigneesassigneeslist
Who the task is for. Only workspace members can be assigned a task.

Outputs

assigneeslist
Who it is for
content_plaintexttext
The task's text
deadline_attext
When it is due, if it is
is_completedtrue/false
Whether it is done
linked_recordslist
The records it is about
taskobject
The new task
task_idtext
Its ID
Example output
{
  "assignees": [
    {
      "referenced_actor_id": "50cf242c-7fa3-4cad-87d0-75b1af71c57b",
      "referenced_actor_type": "workspace-member"
    }
  ],
  "content_plaintext": "Follow up on the pilot",
  "deadline_at": "2026-09-01T15:00:00.000000000Z",
  "is_completed": false,
  "linked_records": [
    {
      "target_object_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
      "target_record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d"
    }
  ],
  "task": {
    "assignees": [
      {
        "referenced_actor_id": "50cf242c-7fa3-4cad-87d0-75b1af71c57b",
        "referenced_actor_type": "workspace-member"
      }
    ],
    "completed_at": null,
    "content_plaintext": "Follow up on the pilot",
    "created_at": "2026-08-14T09:15:44.000000000Z",
    "created_by_actor": {
      "id": null,
      "type": "api-token"
    },
    "deadline_at": "2026-09-01T15:00:00.000000000Z",
    "id": {
      "task_id": "5f2b0d9c-6a44-4d51-9d1c-96b6f2b64a11",
      "workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c"
    },
    "is_completed": false,
    "linked_records": [
      {
        "target_object_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
        "target_record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d"
      }
    ]
  },
  "task_id": "5f2b0d9c-6a44-4d51-9d1c-96b6f2b64a11"
}

Delete note

Permanently delete a note. The record it was on is untouched.

Inputs

Note IDnote_idtextRequired
The note to delete.

Outputs

deletedtrue/false
True once Attio has deleted it
note_idtext
The note that was deleted
Example output
{
  "deleted": true,
  "note_id": "d1b9a1a1-8b0e-4f0c-9a5f-6f43a24e6a70"
}

Delete record

Permanently delete a record. This cannot be undone, and it takes the record's notes, tasks and list entries with it.

Inputs

ObjectobjecttextRequired
Which kind of record to work with - People, Companies, Deals, or any object this workspace has added. Pick from the list; the value sent is the object's API slug.
Record IDrecord_idtextRequired
The record's ID. Paste the record's app.attio.com link if that is what you have - the ID is read out of it. 'List records' returns these in 'record_ids'.

Outputs

deletedtrue/false
True once Attio has deleted it
objecttext
The object it was on
record_idtext
The record that was deleted
Example output
{
  "deleted": true,
  "object": "people",
  "record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d"
}

Delete task

Permanently delete a task. The record it was about is untouched.

Inputs

Task IDtask_idtextRequired
The task to delete.

Outputs

deletedtrue/false
True once Attio has deleted it
task_idtext
The task that was deleted
Example output
{
  "deleted": true,
  "task_id": "5f2b0d9c-6a44-4d51-9d1c-96b6f2b64a11"
}

Get note

Read one note in full - its title, the record it is on, and its body in both plain text and markdown.

Inputs

Note IDnote_idtextRequired
The note to read. "List notes" returns these in 'note_ids'.

Outputs

content_markdowntext
The body as markdown
content_plaintexttext
The body as plain text
noteobject
The note
note_idtext
Its ID
parent_objecttext
The record's object
parent_record_idtext
The record it is on
titletext
Its title
Example output
{
  "content_markdown": "Walked through the pilot. **Follow up in a week.**",
  "content_plaintext": "Walked through the pilot. Follow up in a week.",
  "note": {
    "content_markdown": "Walked through the pilot. **Follow up in a week.**",
    "content_plaintext": "Walked through the pilot. Follow up in a week.",
    "created_at": "2026-08-14T09:14:20.000000000Z",
    "created_by_actor": {
      "id": null,
      "type": "api-token"
    },
    "id": {
      "note_id": "d1b9a1a1-8b0e-4f0c-9a5f-6f43a24e6a70",
      "workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c"
    },
    "meeting_id": null,
    "parent_object": "people",
    "parent_record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d",
    "tags": [],
    "title": "Intro call"
  },
  "note_id": "d1b9a1a1-8b0e-4f0c-9a5f-6f43a24e6a70",
  "parent_object": "people",
  "parent_record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d",
  "title": "Intro call"
}

Get record

Read one record and every attribute value on it. Accepts the record's ID or the app.attio.com link it was copied from.

Inputs

ObjectobjecttextRequired
Which kind of record to work with - People, Companies, Deals, or any object this workspace has added. Pick from the list; the value sent is the object's API slug.
Record IDrecord_idtextRequired
The record's ID. Paste the record's app.attio.com link if that is what you have - the ID is read out of it. 'List records' returns these in 'record_ids'.

Outputs

objecttext
The object it is on
object_idtext
Its object's ID
recordobject
The record itself
record_idtext
Its ID
valuesobject
Its attribute values, keyed by API slug
web_urltext
Where to open it in Attio
Example output
{
  "object": "people",
  "object_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
  "record": {
    "created_at": "2026-08-14T09:12:33.481000000Z",
    "id": {
      "object_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
      "record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d",
      "workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c"
    },
    "values": {
      "email_addresses": [
        {
          "active_from": "2026-08-14T09:12:33.481000000Z",
          "active_until": null,
          "attribute_type": "email-address",
          "created_by_actor": {
            "id": null,
            "type": "api-token"
          },
          "email_address": "ada@example.com"
        }
      ],
      "job_title": [
        {
          "active_from": "2026-08-14T09:12:33.481000000Z",
          "active_until": null,
          "attribute_type": "text",
          "created_by_actor": {
            "id": null,
            "type": "api-token"
          },
          "value": "Analyst"
        }
      ],
      "name": [
        {
          "active_from": "2026-08-14T09:12:33.481000000Z",
          "active_until": null,
          "attribute_type": "personal-name",
          "created_by_actor": {
            "id": null,
            "type": "api-token"
          },
          "first_name": "Ada",
          "full_name": "Ada Lovelace",
          "last_name": "Lovelace"
        }
      ]
    },
    "web_url": "https://app.attio.com/lodol/person/891dcbfc-9141-415d-9b2a-2238a6cc012d"
  },
  "record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d",
  "values": {
    "email_addresses": [
      {
        "active_from": "2026-08-14T09:12:33.481000000Z",
        "active_until": null,
        "attribute_type": "email-address",
        "created_by_actor": {
          "id": null,
          "type": "api-token"
        },
        "email_address": "ada@example.com"
      }
    ],
    "job_title": [
      {
        "active_from": "2026-08-14T09:12:33.481000000Z",
        "active_until": null,
        "attribute_type": "text",
        "created_by_actor": {
          "id": null,
          "type": "api-token"
        },
        "value": "Analyst"
      }
    ],
    "name": [
      {
        "active_from": "2026-08-14T09:12:33.481000000Z",
        "active_until": null,
        "attribute_type": "personal-name",
        "created_by_actor": {
          "id": null,
          "type": "api-token"
        },
        "first_name": "Ada",
        "full_name": "Ada Lovelace",
        "last_name": "Lovelace"
      }
    ]
  },
  "web_url": "https://app.attio.com/lodol/person/891dcbfc-9141-415d-9b2a-2238a6cc012d"
}

List attributes

List the attributes defined on one object or list - the field names a record's values are keyed by. Returns each attribute's API slug, title, type, and whether it is writable, required, unique or holds several values. Run this first when you don't know what to put in an 'Attribute values' field.

Inputs

Attributes oftargettextRequired
Whether to read an object's attributes or a list's. A list has its own attributes on top of the record's.One of: objects (An object (people, companies, ...)), lists (A list). Default: objects.
Object or listidentifiertextRequired
Which object or list to read the attributes of. The choices follow the target chosen above.
Limitlimitnumber
How many results to return, 1-500. Defaults to 50.From 1 to 500. Default: 50.
Offsetoffsetnumber
How many results to skip before returning. Feed the 'next_offset' from a previous run back in here to read the next page.From 0 to 100000. Default: 0.
Include archived attributesshow_archivedtrue/false
Include attributes that have been archived. Off by default, since an archived attribute cannot be written.Default: false.

Outputs

attributeslist
The attributes defined on this object or list
countnumber
Results on this page
has_moretrue/false
Whether a page follows
identifiertext
The object or list read
limitnumber
Page size used
next_offsetnumber
The 'offset' that reads the next page, or empty at the end
offsetnumber
How many were skipped
targettext
'objects' or 'lists'
Example output
{
  "attributes": [
    {
      "api_slug": "email_addresses",
      "created_at": "2026-01-05T11:02:10.000000000Z",
      "description": null,
      "id": {
        "attribute_id": "41252299-f8c7-4b5e-99c9-4ff8321d2f96",
        "object_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
        "workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c"
      },
      "is_archived": false,
      "is_multiselect": true,
      "is_required": false,
      "is_system_attribute": true,
      "is_unique": true,
      "is_writable": true,
      "title": "Email addresses",
      "type": "email-address"
    }
  ],
  "count": 1,
  "has_more": false,
  "identifier": "people",
  "limit": 50,
  "next_offset": null,
  "offset": 0,
  "target": "objects"
}

List list entries

Read the entries on a list - which records are on it, and the list's own attributes for each of them, such as a stage or an owner. Filter and sort by any of those attributes.

Inputs

ListlisttextRequired
Which list to work with. Pick from the list; the value sent is the list's API slug.
Filterfilterobject
Narrow the results. The short form matches exactly - {"email_addresses": "ada@example.com"} - and Attio's $and/$or/$eq form works too for anything more involved. Leave empty for everything.
Sort by attributesort_attributetext
The API slug of the attribute to sort by, such as 'created_at' or 'name'. Leave empty for Attio's own ordering.
Sort directionsort_directiontext
Which way to sort. Only applies when an attribute is chosen.One of: asc (Ascending), desc (Descending). Default: asc.
Sort by sub-fieldsort_fieldtext
For an attribute made of several parts, which part to sort on - 'last_name' within a person's name, for example. Leave empty for the attribute as a whole.
Limitlimitnumber
How many results to return, 1-500. Defaults to 50.From 1 to 500. Default: 50.
Offsetoffsetnumber
How many results to skip before returning. Feed the 'next_offset' from a previous run back in here to read the next page.From 0 to 100000. Default: 0.

Outputs

countnumber
Results on this page
entrieslist
The matching entries
entry_idslist
Just the entry IDs, for chaining
has_moretrue/false
Whether a page follows
limitnumber
Page size used
listtext
The list read
next_offsetnumber
The 'offset' that reads the next page, or empty at the end
offsetnumber
How many were skipped
Example output
{
  "count": 1,
  "entries": [
    {
      "created_at": "2026-08-14T09:13:01.000000000Z",
      "entry_values": {},
      "id": {
        "entry_id": "2e6e29ea-c4e0-4f44-842c-3fbdc4dcd0e1",
        "list_id": "33ebdbe9-e529-47c9-b894-0ba25e9c15c0",
        "workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c"
      },
      "parent_object": "people",
      "parent_record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d"
    }
  ],
  "entry_ids": [
    "2e6e29ea-c4e0-4f44-842c-3fbdc4dcd0e1"
  ],
  "has_more": false,
  "limit": 50,
  "list": "sales_pipeline",
  "next_offset": null,
  "offset": 0
}

List lists

List every list in the workspace - the pipelines and working sets records get filed into. Returns each one's API slug, name, which objects it accepts, and who can see it.

Inputs

None.

Outputs

countnumber
How many there are
listslist
Every list the token can see
slugslist
Just the API slugs, for chaining
Example output
{
  "count": 1,
  "lists": [
    {
      "api_slug": "sales_pipeline",
      "created_at": "2026-02-11T14:40:02.000000000Z",
      "created_by_actor": {
        "id": "50cf242c-7fa3-4cad-87d0-75b1af71c57b",
        "type": "workspace-member"
      },
      "id": {
        "list_id": "33ebdbe9-e529-47c9-b894-0ba25e9c15c0",
        "workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c"
      },
      "name": "Sales pipeline",
      "parent_object": [
        "people"
      ],
      "workspace_access": "read-and-write",
      "workspace_member_access": []
    }
  ],
  "slugs": [
    "sales_pipeline"
  ]
}

List notes

Read notes, either across the whole workspace or just the ones on one record. Each note comes back with its title and its body in both plain text and markdown.

Inputs

Record's objectparent_objecttext
Narrow to notes on records of this object. Required if a record ID is given below.
Record IDparent_record_idtext
Narrow to notes on this one record. Leave both this and the object empty for every note in the workspace.
Limitlimitnumber
How many notes to return, 1-50. Attio caps this endpoint lower than the others. Defaults to 10.From 1 to 50. Default: 10.
Offsetoffsetnumber
How many results to skip before returning. Feed the 'next_offset' from a previous run back in here to read the next page.From 0 to 100000. Default: 0.

Outputs

countnumber
Results on this page
has_moretrue/false
Whether a page follows
limitnumber
Page size used
next_offsetnumber
The 'offset' that reads the next page, or empty at the end
note_idslist
Just the note IDs, for chaining
noteslist
The matching notes
offsetnumber
How many were skipped
Example output
{
  "count": 1,
  "has_more": false,
  "limit": 10,
  "next_offset": null,
  "note_ids": [
    "d1b9a1a1-8b0e-4f0c-9a5f-6f43a24e6a70"
  ],
  "notes": [
    {
      "content_markdown": "Walked through the pilot. **Follow up in a week.**",
      "content_plaintext": "Walked through the pilot. Follow up in a week.",
      "created_at": "2026-08-14T09:14:20.000000000Z",
      "created_by_actor": {
        "id": null,
        "type": "api-token"
      },
      "id": {
        "note_id": "d1b9a1a1-8b0e-4f0c-9a5f-6f43a24e6a70",
        "workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c"
      },
      "meeting_id": null,
      "parent_object": "people",
      "parent_record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d",
      "tags": [],
      "title": "Intro call"
    }
  ],
  "offset": 0
}

List objects

List every object in the Attio workspace - People, Companies and Deals, plus any object the workspace has added of its own. Returns each one's API slug, which is the value every other action's 'Object' field takes.

Inputs

None.

Outputs

countnumber
How many there are
objectslist
Every object in the workspace
slugslist
Just the API slugs, for chaining
Example output
{
  "count": 1,
  "objects": [
    {
      "api_slug": "people",
      "created_at": "2026-01-05T11:02:10.000000000Z",
      "id": {
        "object_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
        "workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c"
      },
      "plural_noun": "People",
      "singular_noun": "Person"
    }
  ],
  "slugs": [
    "people"
  ]
}

List records

Search one object's records - every person, company, deal or whatever else the object holds - filtered and sorted however you like. Returns each record with all of its attribute values, its Attio link, and its ID, and reports the offset that reads the next page. With no filter at all this is the whole object.

Inputs

ObjectobjecttextRequired
Which kind of record to work with - People, Companies, Deals, or any object this workspace has added. Pick from the list; the value sent is the object's API slug.
Filterfilterobject
Narrow the results. The short form matches exactly - {"email_addresses": "ada@example.com"} - and Attio's $and/$or/$eq form works too for anything more involved. Leave empty for everything.
Sort by attributesort_attributetext
The API slug of the attribute to sort by, such as 'created_at' or 'name'. Leave empty for Attio's own ordering.
Sort directionsort_directiontext
Which way to sort. Only applies when an attribute is chosen.One of: asc (Ascending), desc (Descending). Default: asc.
Sort by sub-fieldsort_fieldtext
For an attribute made of several parts, which part to sort on - 'last_name' within a person's name, for example. Leave empty for the attribute as a whole.
Limitlimitnumber
How many results to return, 1-500. Defaults to 50.From 1 to 500. Default: 50.
Offsetoffsetnumber
How many results to skip before returning. Feed the 'next_offset' from a previous run back in here to read the next page.From 0 to 100000. Default: 0.

Outputs

countnumber
Results on this page
has_moretrue/false
Whether a page follows
limitnumber
Page size used
next_offsetnumber
The 'offset' that reads the next page, or empty at the end
objecttext
The object searched
offsetnumber
How many were skipped
record_idslist
Just the record IDs, for chaining
recordslist
The matching records
Example output
{
  "count": 1,
  "has_more": false,
  "limit": 50,
  "next_offset": null,
  "object": "people",
  "offset": 0,
  "record_ids": [
    "891dcbfc-9141-415d-9b2a-2238a6cc012d"
  ],
  "records": [
    {
      "created_at": "2026-08-14T09:12:33.481000000Z",
      "id": {
        "object_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
        "record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d",
        "workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c"
      },
      "values": {
        "email_addresses": [
          {
            "active_from": "2026-08-14T09:12:33.481000000Z",
            "active_until": null,
            "attribute_type": "email-address",
            "created_by_actor": {
              "id": null,
              "type": "api-token"
            },
            "email_address": "ada@example.com"
          }
        ],
        "job_title": [
          {
            "active_from": "2026-08-14T09:12:33.481000000Z",
            "active_until": null,
            "attribute_type": "text",
            "created_by_actor": {
              "id": null,
              "type": "api-token"
            },
            "value": "Analyst"
          }
        ],
        "name": [
          {
            "active_from": "2026-08-14T09:12:33.481000000Z",
            "active_until": null,
            "attribute_type": "personal-name",
            "created_by_actor": {
              "id": null,
              "type": "api-token"
            },
            "first_name": "Ada",
            "full_name": "Ada Lovelace",
            "last_name": "Lovelace"
          }
        ]
      },
      "web_url": "https://app.attio.com/lodol/person/891dcbfc-9141-415d-9b2a-2238a6cc012d"
    }
  ]
}

List tasks

Read tasks, narrowed to one record, one assignee or one state. Each comes back with its text, its deadline, whether it is done, who it is for and what it is about.

Inputs

Limitlimitnumber
How many results to return, 1-500. Defaults to 50.From 1 to 500. Default: 50.
Offsetoffsetnumber
How many results to skip before returning. Feed the 'next_offset' from a previous run back in here to read the next page.From 0 to 100000. Default: 0.
Order bysorttext
What order to return the tasks in.One of: created_at:asc (Created, oldest first), created_at:desc (Created, newest first), completed_at:asc (Completed, oldest first), completed_at:desc (Completed, newest first). Default: created_at:asc.
Linked record's objectlinked_objecttext
Which object the linked record belongs to. Required whenever a linked record ID is given.
Linked record IDlinked_record_idtext
The record the task is about. Paste its app.attio.com link or its ID.
Assigned toassigneetext
Only tasks assigned to this workspace member. Leave empty for everyone's.
Completedis_completedtext
Whether to return open tasks, done ones, or both.One of: any (Both), false (Only tasks still open), true (Only completed tasks). Default: any.

Outputs

countnumber
Results on this page
has_moretrue/false
Whether a page follows
limitnumber
Page size used
next_offsetnumber
The 'offset' that reads the next page, or empty at the end
offsetnumber
How many were skipped
task_idslist
Just the task IDs, for chaining
taskslist
The matching tasks
Example output
{
  "count": 1,
  "has_more": false,
  "limit": 50,
  "next_offset": null,
  "offset": 0,
  "task_ids": [
    "5f2b0d9c-6a44-4d51-9d1c-96b6f2b64a11"
  ],
  "tasks": [
    {
      "assignees": [
        {
          "referenced_actor_id": "50cf242c-7fa3-4cad-87d0-75b1af71c57b",
          "referenced_actor_type": "workspace-member"
        }
      ],
      "completed_at": null,
      "content_plaintext": "Follow up on the pilot",
      "created_at": "2026-08-14T09:15:44.000000000Z",
      "created_by_actor": {
        "id": null,
        "type": "api-token"
      },
      "deadline_at": "2026-09-01T15:00:00.000000000Z",
      "id": {
        "task_id": "5f2b0d9c-6a44-4d51-9d1c-96b6f2b64a11",
        "workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c"
      },
      "is_completed": false,
      "linked_records": [
        {
          "target_object_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
          "target_record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d"
        }
      ]
    }
  ]
}

Remove record from list

Take an entry off a list. The record itself is untouched - it stays on its object with everything else that points at it; only its membership of this list ends.

Inputs

ListlisttextRequired
Which list to work with. Pick from the list; the value sent is the list's API slug.
Entry IDentry_idtextRequired
The entry to remove. "List list entries" returns these in 'entry_ids'.

Outputs

deletedtrue/false
True once Attio has removed it
entry_idtext
The entry that was removed
listtext
The list it was on
Example output
{
  "deleted": true,
  "entry_id": "2e6e29ea-c4e0-4f44-842c-3fbdc4dcd0e1",
  "list": "sales_pipeline"
}

Update record

Change attribute values on a record. Only the attributes you send are touched; the rest are left alone. For an attribute that holds several values at once, choose whether to replace them or add to them.

Inputs

ObjectobjecttextRequired
Which kind of record to work with - People, Companies, Deals, or any object this workspace has added. Pick from the list; the value sent is the object's API slug.
Record IDrecord_idtextRequired
The record's ID. Paste the record's app.attio.com link if that is what you have - the ID is read out of it. 'List records' returns these in 'record_ids'.
Attribute valuesvaluesobjectRequired
The attributes to set, keyed by their API slug - for example {"name": "Lovelace, Ada", "email_addresses": "ada@example.com", "job_title": "Analyst"}. Run "List attributes" against this object to see the slugs it has. A personal name given as plain text must be written "Last, First": text without a comma is stored as a first name only.
For attributes holding several valuesmultiselect_modetext
What to do with an attribute that already holds several values, such as a person's email addresses. Attributes holding one value are overwritten either way.One of: overwrite (Replace them with what I send), append (Add what I send, keeping the rest). Default: overwrite.

Outputs

multiselect_modetext
'overwrite' or 'append', as chosen
objecttext
The object it is on
object_idtext
Its object's ID
recordobject
The updated record
record_idtext
Its ID
valuesobject
Its attribute values, keyed by API slug
web_urltext
Where to open it in Attio
Example output
{
  "multiselect_mode": "overwrite",
  "object": "people",
  "object_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
  "record": {
    "created_at": "2026-08-14T09:12:33.481000000Z",
    "id": {
      "object_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
      "record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d",
      "workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c"
    },
    "values": {
      "email_addresses": [
        {
          "active_from": "2026-08-14T09:12:33.481000000Z",
          "active_until": null,
          "attribute_type": "email-address",
          "created_by_actor": {
            "id": null,
            "type": "api-token"
          },
          "email_address": "ada@example.com"
        }
      ],
      "job_title": [
        {
          "active_from": "2026-08-14T09:12:33.481000000Z",
          "active_until": null,
          "attribute_type": "text",
          "created_by_actor": {
            "id": null,
            "type": "api-token"
          },
          "value": "Analyst"
        }
      ],
      "name": [
        {
          "active_from": "2026-08-14T09:12:33.481000000Z",
          "active_until": null,
          "attribute_type": "personal-name",
          "created_by_actor": {
            "id": null,
            "type": "api-token"
          },
          "first_name": "Ada",
          "full_name": "Ada Lovelace",
          "last_name": "Lovelace"
        }
      ]
    },
    "web_url": "https://app.attio.com/lodol/person/891dcbfc-9141-415d-9b2a-2238a6cc012d"
  },
  "record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d",
  "values": {
    "email_addresses": [
      {
        "active_from": "2026-08-14T09:12:33.481000000Z",
        "active_until": null,
        "attribute_type": "email-address",
        "created_by_actor": {
          "id": null,
          "type": "api-token"
        },
        "email_address": "ada@example.com"
      }
    ],
    "job_title": [
      {
        "active_from": "2026-08-14T09:12:33.481000000Z",
        "active_until": null,
        "attribute_type": "text",
        "created_by_actor": {
          "id": null,
          "type": "api-token"
        },
        "value": "Analyst"
      }
    ],
    "name": [
      {
        "active_from": "2026-08-14T09:12:33.481000000Z",
        "active_until": null,
        "attribute_type": "personal-name",
        "created_by_actor": {
          "id": null,
          "type": "api-token"
        },
        "first_name": "Ada",
        "full_name": "Ada Lovelace",
        "last_name": "Lovelace"
      }
    ]
  },
  "web_url": "https://app.attio.com/lodol/person/891dcbfc-9141-415d-9b2a-2238a6cc012d"
}

Update task

Change a task's deadline, tick it off, or change what it is about and who it is for. The task's text cannot be changed - Attio has no way to rewrite it - so changing the wording means creating a new task. Only the fields you set are touched.

Inputs

Task IDtask_idtextRequired
The task to change. "List tasks" returns these in 'task_ids'.
Duedeadline_atdate and time
When the task is due. Leave empty for no deadline.
Completedis_completedtrue/false
Tick the task off, or re-open it. Leave unset to leave it as it is.
Linked record's objectlinked_objecttext
Which object the linked record belongs to. Required whenever a linked record ID is given.
Linked record IDlinked_record_idtext
The record the task is about. Paste its app.attio.com link or its ID.
Assigneesassigneeslist
Who the task is for, replacing whoever is on it now. Leave the field untouched to keep the current assignees; choose nothing to take them all off. Only workspace members can be assigned a task.

Outputs

assigneeslist
Who it is for
content_plaintexttext
The task's text, unchanged
deadline_attext
When it is due, if it is
is_completedtrue/false
Whether it is done
linked_recordslist
The records it is about
taskobject
The updated task
task_idtext
Its ID
Example output
{
  "assignees": [
    {
      "referenced_actor_id": "50cf242c-7fa3-4cad-87d0-75b1af71c57b",
      "referenced_actor_type": "workspace-member"
    }
  ],
  "content_plaintext": "Follow up on the pilot",
  "deadline_at": "2026-09-01T15:00:00.000000000Z",
  "is_completed": true,
  "linked_records": [
    {
      "target_object_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
      "target_record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d"
    }
  ],
  "task": {
    "assignees": [
      {
        "referenced_actor_id": "50cf242c-7fa3-4cad-87d0-75b1af71c57b",
        "referenced_actor_type": "workspace-member"
      }
    ],
    "completed_at": null,
    "content_plaintext": "Follow up on the pilot",
    "created_at": "2026-08-14T09:15:44.000000000Z",
    "created_by_actor": {
      "id": null,
      "type": "api-token"
    },
    "deadline_at": "2026-09-01T15:00:00.000000000Z",
    "id": {
      "task_id": "5f2b0d9c-6a44-4d51-9d1c-96b6f2b64a11",
      "workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c"
    },
    "is_completed": true,
    "linked_records": [
      {
        "target_object_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
        "target_record_id": "891dcbfc-9141-415d-9b2a-2238a6cc012d"
      }
    ]
  },
  "task_id": "5f2b0d9c-6a44-4d51-9d1c-96b6f2b64a11"
}

On this page