Skip to main content

Command-line wrapper around the official Asana Python SDK

Project description

asana-api-cli

A CLI tool for the Asana API. It thinly wraps the official python-asana SDK with click, exposing every API endpoint from the command line via asana-api <group> <command>.

Installation

pip install asana-api-cli

# or, to install as an isolated CLI tool
pipx install asana-api-cli

Environment variables

Name Required Description
ASANA_ACCESS_TOKEN Yes (at runtime only) Asana Personal Access Token
ASANA_DEFAULT_WORKSPACE No Default workspace GID for endpoints that require it

The token can be issued from the Asana Developer Console. No token is needed for --help or argument-error output.

export ASANA_ACCESS_TOKEN="1/12345..."
export ASANA_DEFAULT_WORKSPACE="12345678"   # optional

Shell completion

asana-api is built with Click, which supports dynamic shell completion. To enable bash completion, add the following line to your ~/.bashrc:

eval "$(_ASANA_API_COMPLETE=bash_source asana-api)"

Then reload the shell (source ~/.bashrc or open a new terminal). Pressing <TAB> after asana-api will now complete subcommands and options.

For zsh or fish, replace bash_source with zsh_source or fish_source and add the line to ~/.zshrc or ~/.config/fish/config.fish respectively.

Usage

# Version and help
asana-api --version
asana-api --help
asana-api tasks --help
asana-api tasks get-tasks --help

# List workspaces and projects
asana-api workspaces get-workspaces
asana-api projects get-projects-for-workspace
asana-api projects get-projects --workspace <WORKSPACE_GID>

# List tasks (first page only by default)
asana-api tasks get-tasks --project <PROJECT_GID>

# Preview the first few items
asana-api tasks get-tasks --project <PROJECT_GID> --max-items 5

# Fetch every item across pages
asana-api tasks get-tasks --project <PROJECT_GID> --all-items

# Single task
asana-api tasks get-task --task <TASK_GID>

# Create a task (body is a JSON string)
asana-api tasks create-task --body '{"data":{"name":"new task","projects":["<PID>"]}}'

# Output formats
asana-api tasks get-tasks --project <PID> --output table
asana-api tasks get-tasks --project <PID> --query '.data' --output csv

See Pagination for fetching across pages and Global options for --debug, --access-token, etc.

Workspace resolution

Many API endpoints require a workspace. For those endpoints (e.g. get-projects-for-workspace), the CLI resolves it in this order:

  1. --workspace <GID> on the command
  2. ASANA_DEFAULT_WORKSPACE environment variable

For endpoints where workspace is optional (e.g. get-tasks), the env-var fallback is not used — pass --workspace explicitly if needed. This prevents conflicts with other scope parameters like --project that are mutually exclusive with workspace in the Asana API.

Pagination

Listing endpoints (e.g. tasks get-tasks) return paginated results. The CLI provides four ways to control how much is fetched:

Option Behavior
(none) Fetch a single page (Asana default: 100 items)
--max-items N Fetch up to N items, auto-paginating across pages. The last request is automatically capped to the remaining count.
--all-items Fetch every page until the server reports no more
--offset <TOKEN> Manual pagination: pass the next_page.offset token from the previous response

--max-items and --all-items are mutually exclusive.

--page-size N tunes the per-page request size (Asana API requires 1-100, default 100). Rarely needed — combine with --all-items or --max-items only when the default doesn't suit (e.g. very large rows or rate-limit tuning).

# Auto-paginate up to 250 items
asana-api tasks get-tasks --project <PID> --max-items 250

# Fetch everything
asana-api tasks get-tasks --project <PID> --all-items

# Manual pagination using the offset token
asana-api tasks get-tasks --project <PID> --offset <TOKEN>

Global options

These options work at any level of the command tree, so the following are equivalent:

asana-api --debug tasks get-tasks --project <PID>
asana-api tasks get-tasks --project <PID> --debug

When the same option is given at multiple levels, the more specific (later) one wins.

Option Description
--access-token TOKEN Asana personal access token (default: $ASANA_ACCESS_TOKEN)
--host URL Override API base URL (default: https://app.asana.com/api/1.0)
--proxy URL HTTP/HTTPS proxy URL
--no-verify-ssl Disable TLS certificate verification (insecure)
--ca-cert PATH Path to a PEM bundle of trusted CA certificates
--retries N Number of retries on 429/5xx responses (default: 5)
--timeout SECONDS Per-request timeout in seconds
--temp-dir PATH Directory for temporary downloads
--debug Print HTTP request/response to stderr for troubleshooting

Development

See docs/development.md for building from source, project layout, and library usage.

License

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

asana_api_cli-1.5.0.tar.gz (44.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

asana_api_cli-1.5.0-py3-none-any.whl (86.0 kB view details)

Uploaded Python 3

File details

Details for the file asana_api_cli-1.5.0.tar.gz.

File metadata

  • Download URL: asana_api_cli-1.5.0.tar.gz
  • Upload date:
  • Size: 44.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for asana_api_cli-1.5.0.tar.gz
Algorithm Hash digest
SHA256 f9806cf8de6ef6f8e6ba95621ad7cc45acc2155ec22c7ad893643112c21156ff
MD5 f3cf0338a3228b77a4cd8f01ba7bef82
BLAKE2b-256 a26bfcb65711f5312f75f29ad1a5182d88c1e66093c66d2dc7f314c1d8c0fff0

See more details on using hashes here.

Provenance

The following attestation bundles were made for asana_api_cli-1.5.0.tar.gz:

Publisher: publish.yml on izumo-m/asana-api-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file asana_api_cli-1.5.0-py3-none-any.whl.

File metadata

  • Download URL: asana_api_cli-1.5.0-py3-none-any.whl
  • Upload date:
  • Size: 86.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for asana_api_cli-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 33af09a0a8ddfcdfdf793902c7be8bc83fa149048539b6a97721017b4222b183
MD5 677019dcc27d2f1475d57022730f1404
BLAKE2b-256 962c54187b9ae1daaa2db1c4f0d9c32e9191ea2cc7c5a877580d9d34b7350ac6

See more details on using hashes here.

Provenance

The following attestation bundles were made for asana_api_cli-1.5.0-py3-none-any.whl:

Publisher: publish.yml on izumo-m/asana-api-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page