ByteChef LogoByteChef

Attio

Attio is the AI-native CRM that builds, scales and grows your company to the next level.

Categories: CRM

Type: attio/v1


Connections

Version: 1

Access Token

Properties

NameLabelTypeDescriptionRequired
tokenAccess TokenSTRINGCan be found in Workspace Settings -> Developers -> Access tokens.true

Connection Setup

Find Access Token

  1. Navigate to your dashboard.
  2. Click on Workspace settings.
  3. Click on Developers.
  4. Click on Create access token.
  5. Enable Records.
  6. Enable Tasks.
  7. Enable Webhooks.
  8. Click on Save changes.
  9. Click here to copy the access token.

Actions

Create Record

Name: createRecord

Creates a new record.

Properties

NameLabelTypeDescriptionRequired
record_typeRecord TypeSTRINGType of record that will be created.true
peoplePersonOBJECT
Properties {STRING(first_name), STRING(last_name), STRING(email_address), STRING(description), STRING(company), STRING(job_title), STRING(facebook), STRING(instagram), STRING(linkedin), [STRING(deal)]\(associated_deals), [STRING\(user)](associated_users)}
true
companiesCompanyOBJECT
Properties {STRING(domains), STRING(name), STRING(description), STRING(facebook), STRING(instagram), STRING(linkedin), STRING(estimated_arr_usd), DATE(foundation_date), STRING(employee_range), [STRING(category)]\(categories), [STRING\(deal)](associated_deals), [STRING($workspace)](associated_workspaces)}
true
usersOBJECT
Properties {STRING(person), STRING(email_address), STRING(user_id), [STRING($workspace)](workspace)}
true
dealsOBJECT
Properties {STRING(name), STRING(stage), STRING(owner), NUMBER(value), [STRING($people)](associated_people), STRING(associated_company)}
true
workspacesOBJECT
Properties {STRING(workspace_id), STRING(name), [STRING($user)](users), STRING(company), STRING(avatar_url)}
true

Example JSON Structure

{
  "label" : "Create Record",
  "name" : "createRecord",
  "parameters" : {
    "record_type" : "",
    "people" : {
      "first_name" : "",
      "last_name" : "",
      "email_address" : "",
      "description" : "",
      "company" : "",
      "job_title" : "",
      "facebook" : "",
      "instagram" : "",
      "linkedin" : "",
      "associated_deals" : [ "" ],
      "associated_users" : [ "" ]
    },
    "companies" : {
      "domains" : "",
      "name" : "",
      "description" : "",
      "facebook" : "",
      "instagram" : "",
      "linkedin" : "",
      "estimated_arr_usd" : "",
      "foundation_date" : "2021-01-01",
      "employee_range" : "",
      "categories" : [ "" ],
      "associated_deals" : [ "" ],
      "associated_workspaces" : [ "" ]
    },
    "users" : {
      "person" : "",
      "email_address" : "",
      "user_id" : "",
      "workspace" : [ "" ]
    },
    "deals" : {
      "name" : "",
      "stage" : "",
      "owner" : "",
      "value" : 0.0,
      "associated_people" : [ "" ],
      "associated_company" : ""
    },
    "workspaces" : {
      "workspace_id" : "",
      "name" : "",
      "users" : [ "" ],
      "company" : "",
      "avatar_url" : ""
    }
  },
  "type" : "attio/v1/createRecord"
}

Output

The output for this action is dynamic and may vary depending on the input parameters. To determine the exact structure of the output, you need to execute the action.

Create Task

Name: createTask

Creates a new task.

Properties

NameLabelTypeDescriptionRequired
contentContentSTRINGContent of the task.true
deadline_atDeadlineDATE_TIMEDeadline of the task.true
is_completedIs CompletedBOOLEAN
Options true, false
Weather the task completed.true
linked_recordsLinked RecordsARRAY
Items [{STRING(target_object), STRING(target_record_id)}]
Records linked to the task.true
assigneesAssigneesARRAY
Items [STRING]
Assignees of the task.false

Example JSON Structure

{
  "label" : "Create Task",
  "name" : "createTask",
  "parameters" : {
    "content" : "",
    "deadline_at" : "2021-01-01T00:00:00",
    "is_completed" : false,
    "linked_records" : [ {
      "target_object" : "",
      "target_record_id" : ""
    } ],
    "assignees" : [ "" ]
  },
  "type" : "attio/v1/createTask"
}

Output

Type: OBJECT

Properties

NameTypeDescription
dataOBJECT
Properties {{STRING(workspace_id), STRING(task_id)}(id), STRING(content_plaintext), BOOLEAN(is_completed), STRING(deadline_at), [{STRING(target_object_id), STRING(target_record_id)}](linked_records), [{STRING(referenced_actor_type), STRING(referenced_actor_id)}](assignees), {STRING(type), STRING(id)}(created_by_actor), STRING(created_at)}

Output Example

{
  "data" : {
    "id" : {
      "workspace_id" : "",
      "task_id" : ""
    },
    "content_plaintext" : "",
    "is_completed" : false,
    "deadline_at" : "",
    "linked_records" : [ {
      "target_object_id" : "",
      "target_record_id" : ""
    } ],
    "assignees" : [ {
      "referenced_actor_type" : "",
      "referenced_actor_id" : ""
    } ],
    "created_by_actor" : {
      "type" : "",
      "id" : ""
    },
    "created_at" : ""
  }
}

Update Record

Name: updateRecord

Updates a record.

Properties

NameLabelTypeDescriptionRequired
record_typeRecord TypeSTRINGType of record that will be created.true
record_idRecord IDSTRING
Depends On record_type
ID of the record that will be updated.true
peoplePersonOBJECT
Properties {STRING(first_name), STRING(last_name), STRING(email_address), STRING(description), STRING(company), STRING(job_title), STRING(facebook), STRING(instagram), STRING(linkedin), [STRING(deal)]\(associated_deals), [STRING\(user)](associated_users)}
true
companiesCompanyOBJECT
Properties {STRING(domains), STRING(name), STRING(description), STRING(facebook), STRING(instagram), STRING(linkedin), STRING(estimated_arr_usd), DATE(foundation_date), STRING(employee_range), [STRING(category)]\(categories), [STRING\(deal)](associated_deals), [STRING($workspace)](associated_workspaces)}
true
usersOBJECT
Properties {STRING(person), STRING(email_address), STRING(user_id), [STRING($workspace)](workspace)}
true
dealsOBJECT
Properties {STRING(name), STRING(stage), STRING(owner), NUMBER(value), [STRING($people)](associated_people), STRING(associated_company)}
true
workspacesOBJECT
Properties {STRING(workspace_id), STRING(name), [STRING($user)](users), STRING(company), STRING(avatar_url)}
true

Example JSON Structure

{
  "label" : "Update Record",
  "name" : "updateRecord",
  "parameters" : {
    "record_type" : "",
    "record_id" : "",
    "people" : {
      "first_name" : "",
      "last_name" : "",
      "email_address" : "",
      "description" : "",
      "company" : "",
      "job_title" : "",
      "facebook" : "",
      "instagram" : "",
      "linkedin" : "",
      "associated_deals" : [ "" ],
      "associated_users" : [ "" ]
    },
    "companies" : {
      "domains" : "",
      "name" : "",
      "description" : "",
      "facebook" : "",
      "instagram" : "",
      "linkedin" : "",
      "estimated_arr_usd" : "",
      "foundation_date" : "2021-01-01",
      "employee_range" : "",
      "categories" : [ "" ],
      "associated_deals" : [ "" ],
      "associated_workspaces" : [ "" ]
    },
    "users" : {
      "person" : "",
      "email_address" : "",
      "user_id" : "",
      "workspace" : [ "" ]
    },
    "deals" : {
      "name" : "",
      "stage" : "",
      "owner" : "",
      "value" : 0.0,
      "associated_people" : [ "" ],
      "associated_company" : ""
    },
    "workspaces" : {
      "workspace_id" : "",
      "name" : "",
      "users" : [ "" ],
      "company" : "",
      "avatar_url" : ""
    }
  },
  "type" : "attio/v1/updateRecord"
}

Output

The output for this action is dynamic and may vary depending on the input parameters. To determine the exact structure of the output, you need to execute the action.

Find Record ID

To find the Record ID, click here.

Triggers

Record Created

Name: recordCreated

Triggers when new record is created.

Type: DYNAMIC_WEBHOOK

Output

Type: OBJECT

Properties

NameTypeDescription
event_typeSTRINGType of an event that triggers the trigger.
idOBJECT
Properties {STRING(workspace_id), STRING(task_id)}
actorOBJECT
Properties {STRING(type), STRING(id)}

JSON Example

{
  "label" : "Record Created",
  "name" : "recordCreated",
  "type" : "attio/v1/recordCreated"
}

Task Created

Name: taskCreated

Triggers when new task is created.

Type: DYNAMIC_WEBHOOK

Output

Type: OBJECT

Properties

NameTypeDescription
event_typeSTRINGType of an event that triggers the trigger.
idOBJECT
Properties {STRING(workspace_id), STRING(task_id)}
actorOBJECT
Properties {STRING(type), STRING(id)}

JSON Example

{
  "label" : "Task Created",
  "name" : "taskCreated",
  "type" : "attio/v1/taskCreated"
}

What to do if your action is not listed here?

If this component doesn't have the action you need, you can use Custom Action to create your own. Custom Actions empower you to define HTTP requests tailored to your specific requirements, allowing for greater flexibility in integrating with external services or APIs.

To create a Custom Action, simply specify the desired HTTP method, path, and any necessary parameters. This way, you can extend the functionality of your component beyond the predefined actions, ensuring that you can meet all your integration needs effectively.


Additional Instructions

How to find your Record ID

Many Attio API endpoints require a record_id, but in most integrations you only have another unique identifier (such as an email, company domain, or external ID).

The recommended approach is:

  1. Query records using a filter.
  2. Read the data[].id.record_id field from the response.
  3. Use that record_id in subsequent API requests.

Query Records

Endpoint

POST /v2/objects/{object}/records/query

Replace {object} with your object slug, for example:

  • people
  • companies
  • deals
  • your custom object slug

Example

curl --request POST \
  --url https://api.attio.com/v2/objects/people/records/query \
  --header "Authorization: Bearer YOUR_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "filter": {
      "email_addresses": "john@example.com"
    },
    "limit": 1
  }'

Response

{
  "data": [
    {
      "id": {
        "workspace_id": "14beef7a-99f7-4534-a87e-70b564330a4c",
        "object_id": "97052eb9-e65e-443f-a297-f2d9a4a7f795",
        "record_id": "bf071e1f-6035-429d-b874-d83ea64ea13b"
      },
      "created_at": "2022-11-21T13:22:49.061281000Z",
      "values": {}
    }
  ]
}

The value you need is:

data[0].id.record_id

Example:

bf071e1f-6035-429d-b874-d83ea64ea13b

Common Lookup Examples

Find a person by email

{
  "filter": {
    "email_addresses": "john@example.com"
  },
  "limit": 1
}

Find a company by domain

{
  "filter": {
    "domains": "acme.com"
  },
  "limit": 1
}

References

How is this guide?

Last updated on

On this page