Overview
Researched from the vendor's own pages; every fact links to its source and the day we checked it.
CRM with a REST API for records, lists and entries, OAuth apps or access tokens, and webhooks.
Company
Unverified- Legal name
- Not confirmed
- Headquarters
- Not confirmed
- Founded
- Not confirmed
- Employees
- Not confirmed
- Ownership
- Not confirmed
- Status
- Not confirmed
- Kind
- Not confirmed
- Website
- attio.com
- Status page
- status.attio.com
API
Verified- Access
- Self-serve API
- Style
- REST
- Auth
- OAuth 2.0, Bearer token
- Base URL
https://api.attio.com- Features
- Bulk —Async —Webhooks YesMCP —Sandbox —
- Rate limit
- 100 requests/second for reads, 25 requests/second for writes
Pricing
- Model
- per seat
- List prices
- Plus $44/user/mo ($35 annual)
- Pro $99/user/mo ($79 annual)
- Currency
- USD
- Free tier
- Free plan, up to 3 seats
- Checked
- Sep 29, 2026
Compliance
- SOC 2
- Not confirmed
- GDPR
- Not confirmed
- CCPA
- Not confirmed
- DPA
- Not confirmed
- Resale / storage
- Unknown until a written agreement says otherwise
Relationships
- Integrations
- Not confirmed
- Alternatives
- None named by the vendor
Sources (2)
- Attio pricingchecked Sep 29, 2026
- Attio REST APIchecked Sep 29, 2026
Placement in the Grid
Where this vendor sits on the GridRouter Grid in each category it serves. No vendor pays for placement.
| Category | Placement | Execute | Coverage | Calls | Report |
|---|---|---|---|---|---|
| CRM & Sequencers | Leaders | 97 | 46.5 | 9.3K | View Grid |
Endpoints
What Attio does through GridRouter, and how each endpoint ranks against the other providers of that capability.
| Capability | Rank | Price | Fill rate | Accuracy | p50 | Per verified hit | Leader |
|---|---|---|---|---|---|---|---|
| Upsert CRM contactcrm.contact.upsert · n=9.3K Grid Choice Verified Benchmarked BYOK | Rank 1of 3 | $0per call | 99.0% | n/a | 280 ms | $0 | Leads this board |
Pricing
The price per call you pay through GridRouter, and what one verified hit costs once misses are counted. Failed calls are free; calls on your own vendor key are never metered.
| Capability | List price | Unit | Per verified hit | Your own key |
|---|---|---|---|---|
| Upsert CRM contactcrm.contact.upsert | $0 | per call | $0 | Free, not metered |
Performance
Fill rate is the share of calls that found what was asked for; accuracy is the share of hits confirmed correct; latency is measured at the gateway. Trailing 30 days.
| Capability | Fill rate | Accuracy | Success | p50 | p95 | Samples |
|---|---|---|---|---|---|---|
| Upsert CRM contactcrm.contact.upsert | 99.0% | n/a | 99.7% | 280 ms | 800 ms | 9.3K |
Uptime
Share of calls without a vendor-side failure (errors, timeouts, capacity). Caller mistakes and refusals don't count against a vendor. Last 30 days, daily.
Sample dataIllustrative figures from the catalog's quality samples until live traffic is published
Attiocrm.contact.upsert- Uptime
- 99.7%
- p50 / p95
- 280 ms800 ms
- Calls
- 7.6K
Apps
Public apps that identify themselves with X-Grid-App or HTTP-Referer and X-Title, over the last 30 days.
No public app has listed itself here yet. Add two headers to get yours ranked.
Activity
Routed calls per day over the last 30 days.
- Upsert CRM contact
| Day | Upsert CRM contact |
|---|---|
| Aug 28, 2026 | 316 |
| Aug 29, 2026 | 164 |
| Aug 30, 2026 | 161 |
| Aug 31, 2026 | 270 |
| Sep 1, 2026 | 327 |
| Sep 2, 2026 | 289 |
| Sep 3, 2026 | 278 |
| Sep 4, 2026 | 324 |
| Sep 5, 2026 | 155 |
| Sep 6, 2026 | 161 |
| Sep 7, 2026 | 296 |
| Sep 8, 2026 | 266 |
| Sep 9, 2026 | 326 |
| Sep 10, 2026 | 301 |
| Sep 11, 2026 | 268 |
| Sep 12, 2026 | 140 |
| Sep 13, 2026 | 168 |
| Sep 14, 2026 | 330 |
| Sep 15, 2026 | 288 |
| Sep 16, 2026 | 281 |
| Sep 17, 2026 | 275 |
| Sep 18, 2026 | 255 |
| Sep 19, 2026 | 170 |
| Sep 20, 2026 | 136 |
| Sep 21, 2026 | 253 |
| Sep 22, 2026 | 328 |
| Sep 23, 2026 | 285 |
| Sep 24, 2026 | 297 |
| Sep 25, 2026 | 279 |
| Sep 26, 2026 | 165 |
API
One request shape for every vendor: call crm.contact.upsert and let GridRouter route it, or pin Attio with the provider route.
| Input | Description |
|---|---|
| email* | Match key (required) |
| properties | Fields to write |
curl https://api.gridrouter.io/v1/call/crm.contact.upsert \
-H "Authorization: Bearer $GRID_KEY" \
-d '{"email":"dana@northwind.dev","route":"best_value"}'| Method | Path | Summary | Params | Source |
|---|---|---|---|---|
| GET | /v2/objects | List objects | 0 | Spec |
| POST | /v2/objects | Create an object | 0 | Spec |
| GET | /v2/objects/{object} | Get an object | 1 | Spec |
| PATCH | /v2/objects/{object} | Update an object | 1 | Spec |
| DELETE | /v2/objects/{object} | Delete an object | 1 | Spec |
| GET | /v2/objects/{object}/views | List views for object | 4 | Spec |
| GET | /v2/activities | List activities | 2 | Spec |
| POST | /v2/activities | Create an activity | 0 | Spec |
| GET | /v2/activities/{activity} | Get an activity | 1 | Spec |
| PATCH | /v2/activities/{activity} | Update an activity | 1 | Spec |
| DELETE | /v2/activities/{activity} | Delete an activity | 1 | Spec |
| POST | /v2/activities/{activity}/records/query | List activity records | 1 | Spec |
| POST | /v2/activities/{activity}/records | Create an activity record | 1 | Spec |
| PUT | /v2/activities/{activity}/records | Upsert an activity record | 2 | Spec |
| GET | /v2/activities/{activity}/records/{record_id} | Get an activity record | 2 | Spec |
| PUT | /v2/activities/{activity}/records/{record_id} | Update an activity record (overwrite multiselect values) | 2 | Spec |
| PATCH | /v2/activities/{activity}/records/{record_id} | Update an activity record (append multiselect values) | 2 | Spec |
| DELETE | /v2/activities/{activity}/records/{record_id} | Delete an activity record | 2 | Spec |
| GET | /v2/{target}/{identifier}/attributes | List attributes | 5 | Spec |
| POST | /v2/{target}/{identifier}/attributes | Create an attribute | 2 | Spec |
| GET | /v2/{target}/{identifier}/attributes/{attribute} | Get an attribute | 3 | Spec |
| PATCH | /v2/{target}/{identifier}/attributes/{attribute} | Update an attribute | 3 | Spec |
| GET | /v2/{target}/{identifier}/attributes/{attribute}/options | List select options | 4 | Spec |
| POST | /v2/{target}/{identifier}/attributes/{attribute}/options | Create a select option | 3 | Spec |
| PATCH | /v2/{target}/{identifier}/attributes/{attribute}/options/{option} | Update a select option | 4 | Spec |
| GET | /v2/{target}/{identifier}/attributes/{attribute}/statuses | List statuses | 4 | Spec |
| POST | /v2/{target}/{identifier}/attributes/{attribute}/statuses | Create a status | 3 | Spec |
| PATCH | /v2/{target}/{identifier}/attributes/{attribute}/statuses/{status} | Update a status | 4 | Spec |
| POST | /v2/objects/{object}/records/query | List records | 1 | Spec |
| POST | /v2/objects/{object}/records | Create a record | 1 | Spec |
| PUT | /v2/objects/{object}/records | Upsert a record | 2 | Spec |
| GET | /v2/objects/{object}/records/{record_id} | Get a record | 2 | Spec |
| PUT | /v2/objects/{object}/records/{record_id} | Update a record (overwrite multiselect values) | 2 | Spec |
| PATCH | /v2/objects/{object}/records/{record_id} | Update a record (append multiselect values) | 2 | Spec |
| DELETE | /v2/objects/{object}/records/{record_id} | Delete a record | 2 | Spec |
| POST | /v2/objects/{object}/records/merge | Merge two records | 1 | Spec |
| GET | /v2/objects/{object}/records/{record_id}/attributes/{attribute}/values | List record attribute values | 6 | Spec |
| PUT | /v2/objects/{object}/records/{record_id}/attributes/{attribute}/values | Write record attribute values | 3 | Spec |
| GET | /v2/objects/{object}/records/{record_id}/entries | List record entries | 4 | Spec |
| POST | /v2/objects/records/search | Search records | 0 | Spec |
Showing 40 of 97 operations; the full list is in the spec.
Rate limits
| Limit | Scope | Plan | Endpoint | Burst / concurrency |
|---|---|---|---|---|
| 100 / second | account | All | All | — / — |
| 25 / second | account | All | All | — / — |
GridRouter never paces above these and backs off on 429, honoring Retry-After. Source, checked Sep 29, 2026
Attio questions
How much does the Attio API cost through GridRouter?
upsert crm contact at $0 per call, charged from prepaid credits at the provider's rate. Buying direct is Free; Plus $35/user/mo (annual).
Where does Attio rank?
Attio ranks first for upsert crm contact on Grid score, which weighs reliability, fill, accuracy, speed and cost per verified result.
Can I bring my own Attio key?
Yes. Add it once in the vault; calls on your key are never metered and still count toward the quality scores.