Authentication
The CLI supports three login methods. For automation and CI use API keys — they don't expire on the JWT 3-hour cycle.
API key (recommended)
Automation, CI/CD, scripts
90 days
Developer token (JWT)
Interactive use, short sessions
~3 hours
Email + password
First-time login from a new host
~3 hours
Login with an API Key (Recommended for Automation)
API keys are long-lived keyId.secret credentials. They authenticate via the X-Ace-Api-Key HTTP header instead of Authorization: Bearer, eliminating the 3-hour token-refresh dance for unattended automation.
Step 1 — Create an API key
You must be logged in (via auth login or auth login-token) to create one.
ace api-key create --name terraform-prod --description "IaC for production"Output:
API key created. Save the secret below now — it will NEVER be shown again.
Service name: terraform-prod
API key: 00000000-0000-0000-0000-000000000000.EXAMPLE-secret-do-not-use
To use this key as your CLI auth method, run:
ace auth login-api-key --key "00000000-0000-0000-0000-000000000000.EXAMPLE-secret-do-not-use" --service-name "terraform-prod"The secret is shown only once. Save it to your secrets manager immediately. If you lose it, run ace api-key revive <keyID> to regenerate.
Step 2 — Log in with the key
The CLI verifies the key via auth me, stores it in ~/.ace/config.json, and clears any existing JWT (single-source-of-truth — only one auth method active at a time).
Step 3 — Use it
Every subsequent command sends the X-Ace-Api-Key header. No further action needed:
Env var alternative (preferred for CI)
Skip the config file entirely — set environment variables instead. The CLI checks ACE_API_KEY_ID + ACE_API_KEY_SECRET + ACE_API_KEY_SERVICE_NAME on every invocation:
This is the recommended setup for GitHub Actions, GitLab CI, Jenkins, etc.
Managing API keys
Keys auto-expire after ~90 days. To rotate before expiry, run ace api-key revive <keyID> and update wherever the secret is stored.
Login with Developer Token (JWT)
Get your token from the AceCloud portal: Settings > Developer Tokens.
Tokens expire after ~3 hours. Re-authenticate when expired.
Login with Email/Password
If 2FA/MFA is enabled, use login-token or login-api-key instead.
Account Commands
ace auth me output
The default table view (and -o json / -o yaml) returns a slim profile — name, email, country, and account currency — not the full account dump.
Token Expiry
JWTs are valid for ~3 hours. When expired:
For CI/CD, prefer API keys over JWT — they last 90 days and don't need mid-pipeline refreshes. See Login with an API Key above. If you must use JWT in CI, the ACE_TOKEN environment variable still works:
Last updated
Was this helpful?