Skip to main content
Glama
objects-api.mdβ€’11.3 kB
# Attio Objects API The Objects API allows you to manage the structure and configuration of your data model in Attio. Objects define the schema of your records and can be both standard (built-in) or custom. ## Required Scopes Most objects operations require the following scopes: - `object_configuration:read` - For reading object configurations - `object_configuration:read-write` - For creating, updating, or deleting objects and their attributes ## Endpoints ### List Objects ``` GET /v2/objects ``` Lists all objects in the workspace. #### Query Parameters | Parameter | Type | Description | |-----------|--------|-------------| | page | number | Page number to retrieve (starting at 1) | | pageSize | number | Number of items per page (default 25, max 100) | | includeStandard | boolean | Whether to include standard objects (default true) | #### Response ```json { "data": [ { "id": "object_01abcdefghijklmnopqrstuv", "slug": "companies", "title": "Companies", "title_singular": "Company", "is_standard": true, "attributes_count": 15, "created_at": "2023-01-01T00:00:00.000Z", "updated_at": "2023-06-15T12:30:00.000Z" }, { "id": "object_01wxyzabcdefghijklmnopq", "slug": "projects", "title": "Projects", "title_singular": "Project", "is_standard": false, "attributes_count": 8, "created_at": "2023-05-12T09:45:00.000Z", "updated_at": "2023-06-10T15:20:00.000Z" } ], "meta": { "page": 1, "pageSize": 25, "total": 10 } } ``` ### Create an Object ``` POST /v2/objects ``` Creates a new custom object. #### Request Body ```json { "slug": "projects", "title": "Projects", "title_singular": "Project", "attributes": [ { "slug": "name", "title": "Name", "data_type": "text", "is_title": true, "is_required": true }, { "slug": "status", "title": "Status", "data_type": "select", "options": [ {"value": "planning", "label": "Planning"}, {"value": "in_progress", "label": "In Progress"}, {"value": "completed", "label": "Completed"}, {"value": "on_hold", "label": "On Hold"} ] } ] } ``` | Field | Type | Description | Required | |-----------------|----------|-------------|----------| | slug | string | Unique identifier for the object (URL-friendly) | Yes | | title | string | Display name for the object (plural) | Yes | | title_singular | string | Singular display name for the object | Yes | | attributes | array | Initial attributes for the object | No | #### Response Returns the created object with a 201 status code. ### Get an Object ``` GET /v2/objects/{object_id} ``` or ``` GET /v2/objects/{object_slug} ``` Retrieves a specific object by ID or slug. #### Path Parameters | Parameter | Type | Description | |--------------|--------|-------------| | object_id | string | The ID of the object to retrieve | | object_slug | string | The slug of the object to retrieve | #### Response Returns the object configuration. ### Update an Object ``` PATCH /v2/objects/{object_id} ``` or ``` PATCH /v2/objects/{object_slug} ``` Updates a specific object. #### Path Parameters | Parameter | Type | Description | |--------------|--------|-------------| | object_id | string | The ID of the object to update | | object_slug | string | The slug of the object to update | #### Request Body ```json { "title": "Updated Title", "title_singular": "Updated Singular" } ``` | Field | Type | Description | |-----------------|----------|-------------| | title | string | Updated display name for the object (plural) | | title_singular | string | Updated singular display name for the object | #### Response Returns the updated object. ### Delete an Object ``` DELETE /v2/objects/{object_id} ``` or ``` DELETE /v2/objects/{object_slug} ``` Deletes a custom object. Standard objects cannot be deleted. #### Path Parameters | Parameter | Type | Description | |--------------|--------|-------------| | object_id | string | The ID of the object to delete | | object_slug | string | The slug of the object to delete | #### Response Returns a 204 status code with no content on success. ### List Object Attributes ``` GET /v2/objects/{object_id}/attributes ``` or ``` GET /v2/objects/{object_slug}/attributes ``` Lists all attributes defined on a specific object. #### Path Parameters | Parameter | Type | Description | |--------------|--------|-------------| | object_id | string | The ID of the object | | object_slug | string | The slug of the object | #### Response ```json { "data": [ { "id": "attribute_01abcdefghijklmnopqrstuv", "slug": "name", "title": "Name", "data_type": "text", "is_title": true, "is_required": true, "is_unique": true, "created_at": "2023-05-12T09:45:00.000Z", "updated_at": "2023-05-12T09:45:00.000Z" }, { "id": "attribute_01wxyzabcdefghijklmnopq", "slug": "status", "title": "Status", "data_type": "select", "options": [ {"value": "planning", "label": "Planning"}, {"value": "in_progress", "label": "In Progress"}, {"value": "completed", "label": "Completed"}, {"value": "on_hold", "label": "On Hold"} ], "is_title": false, "is_required": false, "is_unique": false, "created_at": "2023-05-12T09:45:00.000Z", "updated_at": "2023-06-10T15:20:00.000Z" } ], "meta": { "page": 1, "pageSize": 25, "total": 8 } } ``` ### Create an Attribute ``` POST /v2/objects/{object_id}/attributes ``` or ``` POST /v2/objects/{object_slug}/attributes ``` Creates a new attribute for a specific object. #### Path Parameters | Parameter | Type | Description | |--------------|--------|-------------| | object_id | string | The ID of the object | | object_slug | string | The slug of the object | #### Request Body ```json { "slug": "budget", "title": "Budget", "data_type": "currency", "is_required": false, "is_unique": false, "currency": "USD" } ``` | Field | Type | Description | Required | |-----------------|----------|-------------|----------| | slug | string | Unique identifier for the attribute (URL-friendly) | Yes | | title | string | Display name for the attribute | Yes | | data_type | string | Type of data for the attribute (text, number, date, select, etc.) | Yes | | is_required | boolean | Whether the attribute is required | No | | is_unique | boolean | Whether the attribute value must be unique | No | | is_title | boolean | Whether the attribute is the title attribute | No | | default_value | any | Default value for the attribute | No | | options | array | Options for select data type | For select data type | #### Response Returns the created attribute with a 201 status code. ### Get an Attribute ``` GET /v2/objects/{object_id}/attributes/{attribute_id} ``` or ``` GET /v2/objects/{object_slug}/attributes/{attribute_slug} ``` Retrieves a specific attribute. #### Path Parameters | Parameter | Type | Description | |------------------|--------|-------------| | object_id | string | The ID of the object | | object_slug | string | The slug of the object | | attribute_id | string | The ID of the attribute to retrieve | | attribute_slug | string | The slug of the attribute to retrieve | #### Response Returns the attribute configuration. ### Update an Attribute ``` PATCH /v2/objects/{object_id}/attributes/{attribute_id} ``` or ``` PATCH /v2/objects/{object_slug}/attributes/{attribute_slug} ``` Updates a specific attribute. #### Path Parameters | Parameter | Type | Description | |------------------|--------|-------------| | object_id | string | The ID of the object | | object_slug | string | The slug of the object | | attribute_id | string | The ID of the attribute to update | | attribute_slug | string | The slug of the attribute to update | #### Request Body ```json { "title": "Updated Title", "is_required": true } ``` | Field | Type | Description | |-----------------|----------|-------------| | title | string | Updated display name for the attribute | | is_required | boolean | Updated required status | | is_unique | boolean | Updated unique status | | default_value | any | Updated default value | | options | array | Updated options for select data type | #### Response Returns the updated attribute. ### Delete an Attribute ``` DELETE /v2/objects/{object_id}/attributes/{attribute_id} ``` or ``` DELETE /v2/objects/{object_slug}/attributes/{attribute_slug} ``` Deletes a specific attribute. #### Path Parameters | Parameter | Type | Description | |------------------|--------|-------------| | object_id | string | The ID of the object | | object_slug | string | The slug of the object | | attribute_id | string | The ID of the attribute to delete | | attribute_slug | string | The slug of the attribute to delete | #### Response Returns a 204 status code with no content on success. ## Standard Objects Attio provides several standard objects that are pre-configured: | Object Slug | Description | |-------------|-------------| | companies | Represents companies/organizations | | people | Represents individual contacts | | opportunities | Represents sales opportunities | | workspaces | Represents Attio workspaces | | users | Represents users in the workspace | ## Attribute Data Types Attio supports the following attribute data types: | Data Type | Description | |-----------|-------------| | text | Plain text values | | number | Numeric values | | date | Date and time values | | boolean | True/false values | | select | Single-select from predefined options | | multi_select | Multiple selections from predefined options | | link | Links to other records | | email | Email addresses | | phone | Phone numbers | | url | Web URLs | | currency | Monetary values with currency | | percentage | Percentage values | | rating | Star ratings (1-5) | ## Example Usage ### Creating a Custom Object with JavaScript (Node.js) ```javascript const axios = require('axios'); async function createCustomObject() { try { const response = await axios.post('https://api.attio.com/v2/objects', { slug: 'products', title: 'Products', title_singular: 'Product', attributes: [ { slug: 'name', title: 'Name', data_type: 'text', is_title: true, is_required: true }, { slug: 'price', title: 'Price', data_type: 'currency', currency: 'USD' } ] }, { headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' } }); console.log(response.data); } catch (error) { console.error(error); } } createCustomObject(); ```

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kesslerio/attio-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server