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
| Action | What it does |
|---|---|
| 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. |
| Create note | Write a note onto a record - a call summary, a piece of research, anything worth keeping against the person or company. |
| 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. |
| Create record | Add a record to an object - a new person, company, deal or anything else the workspace tracks. |
| Create task | Create a task, optionally due on a date, about a record and assigned to someone. |
| Delete note | Permanently delete a note. |
| Delete record | Permanently delete a record. |
| Delete task | Permanently delete a task. |
| Get note | Read one note in full - its title, the record it is on, and its body in both plain text and markdown. |
| Get record | Read one record and every attribute value on it. |
| List attributes | List the attributes defined on one object or list - the field names a record's values are keyed by. |
| 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. |
| List lists | List every list in the workspace - the pipelines and working sets records get filed into. |
| List notes | Read notes, either across the whole workspace or just the ones on one record. |
| List objects | List every object in the Attio workspace - People, Companies and Deals, plus any object the workspace has added of its own. |
| List records | Search one object's records - every person, company, deal or whatever else the object holds - filtered and sorted however you like. |
| List tasks | Read tasks, narrowed to one record, one assignee or one state. |
| Remove record from list | Take an entry off a list. |
| Update record | Change attribute values on a record. |
| Update task | Change 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
- List
listtextRequired - Which list to work with. Pick from the list; the value sent is the list's API slug.
- Record's object
parent_objecttextRequired - Which object the record being added belongs to.
- Record ID
parent_record_idtextRequired - The record to add. Paste its app.attio.com link or its ID.
- List attribute values
entry_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 object
parent_objecttextRequired - Which object the record being noted belongs to.
- Record ID
parent_record_idtextRequired - The record to attach the note to. Paste its app.attio.com link or its ID.
- Title
titletextRequired - The note's title. Plain text, with no formatting.
- Content
contenttextRequired - The body of the note.
- Content format
formattext - How to read the body. Markdown supports headings, lists, styling and links - but not images.One of:
plaintext(Plain text),markdown. Default:plaintext. - Backdate to
created_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
- Object
objecttextRequired - 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 attribute
matching_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 values
valuesobjectRequired - 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
- Object
objecttextRequired - 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 values
valuesobjectRequired - 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
- Task
contenttextRequired - What needs doing. Plain text, up to 2000 characters. This cannot be edited afterwards.
- Due
deadline_atdate and time - When the task is due. Leave empty for no deadline.
- Already done
is_completedtrue/false - Create the task already ticked off. Usually left off.Default:
false. - Linked record's object
linked_objecttext - Which object the linked record belongs to. Required whenever a linked record ID is given.
- Linked record ID
linked_record_idtext - The record the task is about. Paste its app.attio.com link or its ID.
- Assignees
assigneeslist - 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 ID
note_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
- Object
objecttextRequired - 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 ID
record_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 ID
task_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 ID
note_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
- Object
objecttextRequired - 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 ID
record_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 of
targettextRequired - 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 list
identifiertextRequired - Which object or list to read the attributes of. The choices follow the target chosen above.
- Limit
limitnumber - How many results to return, 1-500. Defaults to 50.From 1 to 500. Default:
50. - Offset
offsetnumber - 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 attributes
show_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
- List
listtextRequired - Which list to work with. Pick from the list; the value sent is the list's API slug.
- Filter
filterobject - 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 attribute
sort_attributetext - The API slug of the attribute to sort by, such as 'created_at' or 'name'. Leave empty for Attio's own ordering.
- Sort direction
sort_directiontext - Which way to sort. Only applies when an attribute is chosen.One of:
asc(Ascending),desc(Descending). Default:asc. - Sort by sub-field
sort_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.
- Limit
limitnumber - How many results to return, 1-500. Defaults to 50.From 1 to 500. Default:
50. - Offset
offsetnumber - 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 object
parent_objecttext - Narrow to notes on records of this object. Required if a record ID is given below.
- Record ID
parent_record_idtext - Narrow to notes on this one record. Leave both this and the object empty for every note in the workspace.
- Limit
limitnumber - How many notes to return, 1-50. Attio caps this endpoint lower than the others. Defaults to 10.From 1 to 50. Default:
10. - Offset
offsetnumber - 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
- Object
objecttextRequired - 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.
- Filter
filterobject - 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 attribute
sort_attributetext - The API slug of the attribute to sort by, such as 'created_at' or 'name'. Leave empty for Attio's own ordering.
- Sort direction
sort_directiontext - Which way to sort. Only applies when an attribute is chosen.One of:
asc(Ascending),desc(Descending). Default:asc. - Sort by sub-field
sort_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.
- Limit
limitnumber - How many results to return, 1-500. Defaults to 50.From 1 to 500. Default:
50. - Offset
offsetnumber - 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
- Limit
limitnumber - How many results to return, 1-500. Defaults to 50.From 1 to 500. Default:
50. - Offset
offsetnumber - 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 by
sorttext - 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 object
linked_objecttext - Which object the linked record belongs to. Required whenever a linked record ID is given.
- Linked record ID
linked_record_idtext - The record the task is about. Paste its app.attio.com link or its ID.
- Assigned to
assigneetext - Only tasks assigned to this workspace member. Leave empty for everyone's.
- Completed
is_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
- List
listtextRequired - Which list to work with. Pick from the list; the value sent is the list's API slug.
- Entry ID
entry_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
- Object
objecttextRequired - 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 ID
record_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 values
valuesobjectRequired - 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 values
multiselect_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 ID
task_idtextRequired - The task to change. "List tasks" returns these in 'task_ids'.
- Due
deadline_atdate and time - When the task is due. Leave empty for no deadline.
- Completed
is_completedtrue/false - Tick the task off, or re-open it. Leave unset to leave it as it is.
- Linked record's object
linked_objecttext - Which object the linked record belongs to. Required whenever a linked record ID is given.
- Linked record ID
linked_record_idtext - The record the task is about. Paste its app.attio.com link or its ID.
- Assignees
assigneeslist - 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"
}