Asana
Asana
Asana API lets apps read and write tasks, projects, goals, and portfolios — the primary integration entry point for team collaboration.
Clean resource model: workspace → project → task → subtask
Free-tier workspaces restrict some advanced APIs (portfolios, goals require paid plans)
At app.asana.com create a Personal Access Token (simplest for personal use) or register an OAuth App. Send Authorization: Bearer <token>. Official SDKs in Python, JS, etc.
Uptime · 30-day window
About this API
Asana has one of the cleaner API designs among enterprise collaboration tools. The resource model is hierarchical and clear: workspace is the top container, project is a sub-unit, task is the basic work item, subtask decomposes further. Custom fields let enterprises define their own attributes (customer name, priority, alternate due date) — visible in the UI and read/write via API.
Webhooks are the key integration capability — subscribe to resources (e.g. tasks in a project) and Asana POSTs change events to your endpoint. Combined with PATCH endpoints, you can build bidirectional sync: external tool modifies a Linear issue → sync into Asana task; Asana task completes → reverse-update the external system.
Rate limits are two-tier per token: ~150 calls/minute and ~1,500/hour. Bulk imports (initializing thousands of external issues at once) need exponential backoff or batched runs.
What you can build
- 1Sync external issues/tickets into Asana tasks
- 2Generate progress reports from Asana data
- 3Trigger webhooks to mirror task changes elsewhere
- 4Schedule task creation automations
- 5Read project status for internal team tools
Strengths & limitations
Strengths
- Clean resource model: workspace → project → task → subtask
- Webhooks subscribe to task-level changes
- Custom fields API persists enterprise-specific data
Limitations
- Free-tier workspaces restrict some advanced APIs (portfolios, goals require paid plans)
- Per-minute and per-hour rate limits — batch syncs need backoff
Example request
curl https://asana.com/support/<endpoint> \
-H "Authorization: Bearer $ACCESS_TOKEN"Getting started
At app.asana.com create a Personal Access Token (simplest for personal use) or register an OAuth App. Send Authorization: Bearer <token>. Official SDKs in Python, JS, etc.
FAQ
Are API calls free?+
The API itself is free; some advanced resources (portfolios, goals) require a paid workspace plan.
How do I subscribe to task changes?+
Call webhooks.create against a resource (e.g. a project gid). Asana sends a handshake request first to validate the endpoint.
How should I manage tokens?+
PATs suit personal scripts. For team distribution use an OAuth App so users can revoke and tokens auto-refresh.
Technical details
- Auth type
- oauth
- Pricing
- freemium
- Protocols
- REST
- SDKs
- python, javascript, ruby, go, java
- Response time
- 693 ms
- Last health check
- 5/12/2026, 7:36:56 AM
Endpoints
Parsed from the OpenAPI spec. Showing 12 of 167 non-deprecated endpoints.
/attachmentsAttachmentsGet attachments from an object
/attachmentsAttachmentsUpload an attachment
/attachments/{attachment_gid}AttachmentsDelete an attachment
/attachments/{attachment_gid}AttachmentsGet an attachment
/batchBatch APISubmit parallel requests
/custom_fieldsCustom fieldsCreate a custom field
/custom_fields/{custom_field_gid}Custom fieldsDelete a custom field
/custom_fields/{custom_field_gid}Custom fieldsGet a custom field
/custom_fields/{custom_field_gid}Custom fieldsUpdate a custom field
/custom_fields/{custom_field_gid}/enum_optionsCustom fieldsCreate an enum option
/custom_fields/{custom_field_gid}/enum_options/insertCustom fieldsReorder a custom field's enum
/enum_options/{enum_option_gid}Custom fieldsUpdate an enum option
155 more endpoints not shown. See the OpenAPI spec for the full list.
Alternatives to consider
Different providers solving similar problems. Picked by category, auth, pricing, and tag overlap.