Asana (via Apideck Proxy)
Access Asana through Apideck's Proxy API with managed Vault auth. Apideck stores credentials, refreshes tokens, and forwards your HTTP calls to Asana's native API — you keep using Asana's own request and response shapes, while Apideck eliminates per-tenant credential plumbing and gives you a single auth integration shared across every Apideck connector.
Auth-only / proxy-only connector. Apideck does not map Asana to a unified-API resource model — your code talks Asana's own API directly through the Proxy. You still get Vault credential storage, token refresh, retries, and a consistent request envelope.
Quick facts
- Apideck serviceId:
asana - Mode: Proxy-only (no unified API resources)
- Auth type: oauth2
- Status: beta
- Apideck setup guide: OAuth credentials
- Gotchas: page
- Asana docs: https://developers.asana.com/docs
- Homepage: https://asana.com/
When to use this skill
Activate this skill when the user wants to call Asana via Apideck — for example, "call the Asana API" or "fetch data from Asana". This skill teaches the agent:
- That Asana routes through Apideck's Proxy API, not a unified resource API
- The correct
serviceIdto pass on every call (asana) - How to keep using Asana's native request/response shapes while Apideck handles Vault auth
If you need a unified-API surface (one method shape across many vendors), see the connector skills in this catalog whose serviceId is mapped to a unified API.
Auth
- Type: OAuth 2.0
- Managed by: Apideck Vault — Apideck handles the full OAuth dance (authorization code flow, token exchange, refresh). Never ask the user for API keys or tokens directly.
- User setup: Users authorize via the Vault modal. Connection state progresses
available → added → authorized → callable. - Token refresh: automatic. Expired tokens are refreshed transparently on the next API call.
Calling Asana via the Proxy API
Send any HTTP request to https://unify.apideck.com/proxy. Apideck looks up the user's stored Asana credentials by x-apideck-consumer-id + x-apideck-service-id, injects them on the way out, and returns Asana's raw response.
curl 'https://unify.apideck.com/proxy' \
-H "Authorization: Bearer ${APIDECK_API_KEY}" \
-H "x-apideck-app-id: ${APIDECK_APP_ID}" \
-H "x-apideck-consumer-id: ${CONSUMER_ID}" \
-H "x-apideck-service-id: asana" \
-H "x-apideck-downstream-url: <target endpoint on Asana>" \
-H "x-apideck-downstream-method: GET"
For POST/PATCH/PUT/DELETE, change x-apideck-downstream-method and pass the body as you would to Asana directly. Apideck does not transform the body — it forwards bytes.
See Asana's API docs for available endpoints.
See also
- Apideck OAuth setup guide for Asana
- Asana gotchas
- Apideck Proxy API reference
apideck-rest— REST patterns including the Proxyapideck-best-practices— Vault, error handling, retriesapideck-unified-api— when to use unified vs proxy- Asana official docs