Skip to content

Asana

Integration with Asana through its REST API 1.0. The family covers the task lifecycle: create a task in a project, read it, update any field, list everything in a project, comment, and delete.

Authentication is handled by the credentials module (provider asana), using a Bearer token — an Asana Personal Access Token (PAT).

NodeInternal nameHTTP call
Asana: Create taskasanaCreateTaskPOST /tasks
Asana: Get taskasanaGetTaskGET /tasks/{gid}
Asana: Update taskasanaUpdateTaskPUT /tasks/{gid}
Asana: List tasksasanaListTasksGET /tasks?project={gid}
Asana: Delete taskasanaDeleteTaskDELETE /tasks/{gid}
Asana: Add commentasanaAddCommentPOST /tasks/{gid}/stories

Every node in the family shares one parameter; the rest are documented on each operation page.

ParameterTypeRequiredDescription
credentials_idcredentialsYesAsana credential (provider asana)

Provider: asana. Create it in Credentials → Add → Asana.

FieldDescription
access_tokenPersonal Access Token, created at app.asana.com/0/my-apps. Masked in logs.
default_workspace_gidOptional. Workspace gid used when a node does not specify one.
timeoutOptional. Request timeout in milliseconds (default 20000).

Authentication is Bearer (Authorization: Bearer <PAT>). The Test button calls GET /users/me and returns the name of the authenticated account.

In Asana every object is identified by a gid — a string of digits, not a number. Tasks, projects, workspaces, users and comments all use one. Keep them as text in your workflow so no leading digits are lost.

You can read a project’s gid from its URL in Asana (app.asana.com/0/<project_gid>/…), or discover resources with the HTTP node.

Asana wraps every request and response inside a { "data": … } envelope. The nodes handle that for you: they wrap what you send and unwrap what comes back, so what reaches the next node is the object itself — no extra data level to navigate.

Each node returns the Asana payload in data, plus a _meta object with the module version and timing:

{
"data": { "gid": "1209876543210987", "resource_type": "task", "name": "Follow-up: ACME Inc.", "completed": false },
"_meta": { "moduleVersion": "1.0.0", "success": true, "gid": "1209876543210987", "totalMs": 305 }
}

On failure the node stops the branch and returns an error object instead:

{
"data": {},
"error": { "message": "project: Not a recognized ID", "type": "validation", "status": 400 }
}
  • Dynamic variables such as {{data.customer}} are resolved in the text parameters: name, notes, project_gid, assignee, due_on, task_gid and text. They are not resolved inside the fields JSON, in opt_fields, in limit or in workspace_gid.
  • Retries are automatic and capped at 3 attempts with exponential backoff for network errors, timeouts, 429 (honouring Retry-After) and 5xx. Validation, 404 and authentication errors are not retried.
  • The default request timeout is 20 seconds; raise it with the timeout field in the credential.
  • The token is never written in full to the logs — only a masked form such as 1/12…9f0a.