Setu Recipes: reusable digital workers across every app.Browse templates

Integrations / Attio

Attio

Attio CRM: search and query records, read workspace objects, add notes and create tasks.

6 actions OAuth 2 4 read2 write Calls api.attio.com

Connect

TypeScript
const conn = await setu.connections.initiate({ userId: "user_1", toolkit: "attio" });
console.log(conn.connectUrl); // show this to your user
await conn.waitUntilActive();

Permissions requested

ScopeWhy it is requested
record_permission:readRead people, companies and other records
object_configuration:readSee which objects and attributes your workspace has
note:read-writeCreate notes on records
task:read-writeCreate tasks
user_management:readLook up workspace members to assign tasks to

Actions

Create notewriteattio.create_noteAdd a note to a record (a person, company, deal...) with a title and plaintext or markdown content.

Needs scopes: note:read-write, object_configuration:read, record_permission:read

InputTypeDescription
parent_objectstringRequiredObject slug of the record, e.g. people
parent_record_idstringRequiredID of the record to attach the note to
titlestringRequiredNote title
contentstringRequiredNote body
formatstringRequiredFormat of content
TypeScript
await setu.execute({
  userId: "user_1",
  action: "attio.create_note",
  input: {
    "parent_object": "<parent_object>",
    "parent_record_id": "<parent_record_id>",
    "title": "<title>",
    "content": "<content>",
    "format": "<format>"
  },
});
Create taskwriteattio.create_taskCreate a task, optionally linked to records and assigned to workspace members, with an optional deadline.

Needs scopes: task:read-write, object_configuration:read, record_permission:read, user_management:read

InputTypeDescription
contentstringRequiredTask text (plaintext)
deadline_atstringOptionalDeadline as an ISO 8601 timestamp
linked_recordsarray of objectOptionalRecords to link: [{target_object, target_record_id}]
assigneesarray of objectOptionalAssignees: [{referenced_actor_type: workspace-member, referenced_actor_id}]
TypeScript
await setu.execute({
  userId: "user_1",
  action: "attio.create_task",
  input: {
    "content": "<content>"
  },
});
Get connected workspacereadattio.get_workspaceIdentify the Attio workspace and token this connection uses, including the granted scopes.

No input.

TypeScript
await setu.execute({
  userId: "user_1",
  action: "attio.get_workspace",
  input: {},
});
List objectsreadattio.list_objectsList the objects in the workspace (people, companies, deals and custom objects) with their slugs for use in other calls.

Needs scope: object_configuration:read

No input.

TypeScript
await setu.execute({
  userId: "user_1",
  action: "attio.list_objects",
  input: {},
});
Query recordsreadattio.query_recordsList records of one object (for example people or companies), optionally filtered and sorted, with paging by limit and offset.

Needs scopes: record_permission:read, object_configuration:read

InputTypeDescription
objectstringRequiredObject slug or ID, e.g. people
filterobjectOptionalAttio filter object, e.g. {"name": "Ada Lovelace"}
sortsarray of objectOptionalSort rules with attribute and direction (asc or desc)
limitintegerOptionalMaximum records to return
offsetintegerOptionalRecords to skip
TypeScript
await setu.execute({
  userId: "user_1",
  action: "attio.query_records",
  input: {
    "object": "<object>"
  },
});
Search recordsreadattio.search_recordsFuzzy-search records (names, emails, domains, phone numbers) across one or more objects such as people, companies or deals.

Needs scopes: record_permission:read, object_configuration:read

InputTypeDescription
querystringRequiredText to search for (max 256 characters)
objectsarray of stringRequiredObject slugs or IDs to search, e.g. ["people", "companies"]
limitintegerOptionalNumber of results, 1 to 25
TypeScript
await setu.execute({
  userId: "user_1",
  action: "attio.search_records",
  input: {
    "query": "<query>",
    "objects": []
  },
});