@todoforai/attio-api
v0.1.0
Published
JSON-first CLI for the official Attio CRM REST API
Readme
attio-api
Independent JSON-first CLI over the Attio REST API v2 (not an official Attio product). Zero SDK, plain fetch, Node >= 20.
cd api-apps/attio-api && npm install --workspaces=false && bun run build
node dist/index.js --helpAuth
Attio → Workspace settings → Developers → Access tokens → Create access token (set scopes to Read-write for records, lists, notes, tasks).
<secret-manager> | attio-api auth --stdin # verifies via GET /v2/self, saves ~/.config/attio-api/credentials.json (0600)
ATTIO_API_KEY=… attio-api whoami # env overrides the fileCommands
objects, attributes, records (query/search/create/assert/get/update/replace/delete/values/entries), lists, entries, notes, tasks, comments, threads, meetings, recordings, members, webhooks, plus api <METHOD> <path> for any other endpoint. Every command prints its HTTP method, path and docs link in --help; --dry-run previews; DELETE needs --yes.
attio-api records create companies --data '{"data":{"values":{"name":"Acme","domains":["acme.com"]}}}'
attio-api records assert people --query matching_attribute=email_addresses --data '{"data":{"values":{"email_addresses":["[email protected]"]}}}'
attio-api records query people --data '{"filter":{"email_addresses":"[email protected]"},"limit":10}'
attio-api notes create --data '{"data":{"parent_object":"companies","parent_record_id":"<id>","title":"Call","format":"plaintext","content":"…"}}'Docs: https://docs.attio.com/llms.txt · OpenAPI: https://api.attio.com/openapi/api
Tests
bun test (mocked fetch) and bun run test:node (built bundle under Node).
