Attio Notes API

May 12, 2025 ยท View on GitHub

The Notes API allows you to create, read, update, and delete notes in Attio. Notes can be attached to records like companies, people, and opportunities, providing a way to track interactions and important information.

Required Scopes

Most note operations require the following scopes:

  • note:read - For reading notes
  • note:read-write - For creating, updating, or deleting notes
  • object_configuration:read - For accessing object configurations
  • record_permission:read - For checking record permissions

Endpoints

List Notes

GET /v2/notes

Lists all notes. Results are sorted by creation date, from newest to oldest.

Query Parameters

ParameterTypeDescription
pagenumberPage number to retrieve (starting at 1)
pageSizenumberNumber of items per page (default 25, max 100)
parent_objectstringFilter notes by parent object type (e.g., "companies", "people")
parent_record_idstringFilter notes by parent record ID
afterstringReturn notes created after this timestamp (ISO 8601 format)
beforestringReturn notes created before this timestamp (ISO 8601 format)

Response

{
  "data": [
    {
      "id": {
        "note_id": "note_01abcdefghijklmnopqrstuv"
      },
      "title": "Meeting Summary",
      "content": "Met with client to discuss contract renewal. They are interested in upgrading to the premium tier.",
      "format": "plaintext",
      "parent_object": "companies",
      "parent_record_id": "record_01wxyzabcdefghijklmnopq",
      "creator": {
        "id": "workspace-member_01abcdefghijklmnopqrstu",
        "type": "workspace-member",
        "name": "Jane Smith",
        "email": "jane@example.com",
        "avatar_url": "https://example.com/avatar.jpg"
      },
      "created_at": "2023-11-30T15:30:00.000Z",
      "updated_at": "2023-11-30T15:30:00.000Z"
    }
  ],
  "meta": {
    "page": 1,
    "pageSize": 25,
    "total": 42
  }
}

Create a Note

POST /v2/notes

Creates a new note attached to a specific record.

Request Body

{
  "data": {
    "title": "Meeting Summary",
    "content": "Met with client to discuss contract renewal. They are interested in upgrading to the premium tier.",
    "format": "plaintext",
    "parent_object": "companies",
    "parent_record_id": "record_01wxyzabcdefghijklmnopq"
  }
}
FieldTypeDescriptionRequired
titlestringThe note titleYes
contentstringThe note contentYes
formatstringThe format of the note content ("plaintext", "markdown", or "html")Yes
parent_objectstringThe type of object the note is attached to (e.g., "companies", "people")Yes
parent_record_idstringThe ID of the record the note is attached toYes

Response

Returns the created note with a 201 status code.

{
  "data": {
    "id": {
      "note_id": "note_01abcdefghijklmnopqrstuv"
    },
    "title": "Meeting Summary",
    "content": "Met with client to discuss contract renewal. They are interested in upgrading to the premium tier.",
    "format": "plaintext",
    "parent_object": "companies",
    "parent_record_id": "record_01wxyzabcdefghijklmnopq",
    "creator": {
      "id": "workspace-member_01abcdefghijklmnopqrstu",
      "type": "workspace-member",
      "name": "Jane Smith",
      "email": "jane@example.com",
      "avatar_url": "https://example.com/avatar.jpg"
    },
    "created_at": "2023-11-30T15:30:00.000Z",
    "updated_at": "2023-11-30T15:30:00.000Z"
  }
}

Get a Note

GET /v2/notes/{note_id}

Retrieves a specific note by ID.

Path Parameters

ParameterTypeDescription
note_idstringThe ID of the note to retrieve

Response

Returns the note object.

Update a Note

PATCH /v2/notes/{note_id}

Updates a specific note.

Path Parameters

ParameterTypeDescription
note_idstringThe ID of the note to update

Request Body

{
  "data": {
    "title": "Updated Meeting Summary",
    "content": "Met with client to discuss contract renewal. They are interested in upgrading to the premium tier with additional users."
  }
}
FieldTypeDescription
titlestringThe updated note title
contentstringThe updated note content
formatstringThe updated format of the note content

Response

Returns the updated note object.

Delete a Note

DELETE /v2/notes/{note_id}

Deletes a specific note.

Path Parameters

ParameterTypeDescription
note_idstringThe ID of the note to delete

Response

Returns a 204 status code with no content on success.

Get Notes for a Record

GET /v2/{parent_object}/{parent_record_id}/notes

Retrieves all notes attached to a specific record.

Path Parameters

ParameterTypeDescription
parent_objectstringThe type of object (e.g., "companies", "people")
parent_record_idstringThe ID of the record

Query Parameters

ParameterTypeDescription
pagenumberPage number to retrieve (starting at 1)
pageSizenumberNumber of items per page (default 25, max 100)

Response

Returns an array of notes attached to the specified record.

Note Formats

Attio supports the following note formats:

FormatDescription
plaintextPlain text with no formatting
markdownText formatted using Markdown syntax
htmlText formatted using HTML

Example Usage

Creating a Note with JavaScript (Node.js)

const axios = require('axios');

async function createNote() {
  try {
    const response = await axios.post('https://api.attio.com/v2/notes', {
      data: {
        title: "Client Meeting",
        content: "Discussed renewal terms and potential upsell opportunities. Follow up next week.",
        format: "plaintext",
        parent_object: "companies",
        parent_record_id: "record_01wxyzabcdefghijklmnopq"
      }
    }, {
      headers: {
        'Authorization': 'Bearer YOUR_API_KEY',
        'Content-Type': 'application/json'
      }
    });
    
    console.log(response.data);
  } catch (error) {
    console.error(error);
  }
}

createNote();

Listing Notes for a Company with cURL

curl -X GET \
  'https://api.attio.com/v2/notes?parent_object=companies&parent_record_id=record_01wxyzabcdefghijklmnopq&page=1&pageSize=10' \
  -H 'Authorization: Bearer YOUR_API_KEY'

Creating a Note for a Person with cURL

curl -X POST \
  https://api.attio.com/v2/notes \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "data": {
      "title": "Phone Call Summary",
      "content": "Discussed potential partnership opportunities and scheduled a follow-up call for next week.",
      "format": "plaintext",
      "parent_object": "people",
      "parent_record_id": "record_01abcdefghijklmnopqrstuv"
    }
  }'