Skip to main content
Every request to the Dynamo CSMS API must include a valid credential. This page explains the two supported authentication methods, how to obtain and manage API keys, what permission scopes control, and how to handle authentication and rate-limit errors.

Authentication methods

Dynamo CSMS accepts credentials in two header formats. Both are equally valid — choose whichever fits your HTTP client or framework better. Pass your API key as a Bearer token in the Authorization header:
This is the standard OAuth 2.0 Bearer format and is supported by virtually every HTTP client library.

X-API-Key header

Alternatively, pass your API key in the X-API-Key header:
Do not pass credentials in the URL query string (for example, ?api_key=...). Query parameters appear in server logs and browser history. Use headers instead.

Code examples

Obtaining an API key

Via the Developer Portal

  1. Log in to the Dynamo CSMS Developer Portal.
  2. Navigate to Settings → API Keys.
  3. Click Create API key, choose a name, and select the scopes you need.
  4. Copy the key immediately — it is only displayed once.

Via the API

If you already have a valid key with the write:api_keys scope, you can create additional keys programmatically:
The key field is only returned on creation. If you lose the key value, you must revoke it and create a new one. The API never returns the full key value again after the creation response.

Permission scopes

Scopes restrict what an API key can do. Assign only the scopes an application actually needs — this limits the blast radius if a key is ever leaked.
For read-only integrations such as monitoring dashboards or analytics pipelines, use only read:* scopes. Reserve write:* scopes for services that actively control hardware.

Installer authentication

Installers in the field use a separate token-based flow rather than long-lived API keys. This is because installer credentials are personal and time-limited — they are not associated with an organisation’s API key quota. To authenticate as an installer:
Use the access_token value as a Bearer token in the same way as an API key. Installer tokens expire after 60 minutes. See the Installer quickstart for the full workflow.

Rate limits

Dynamo CSMS enforces rate limits per API key to ensure fair use and platform stability. Every response includes rate-limit headers so you can track your consumption:
The X-RateLimit-Reset value is a Unix timestamp indicating when your hourly quota resets.

Error responses

401 Unauthorized

A 401 response means the request was not authenticated or the credential is invalid.
Common causes:
  • The Authorization or X-API-Key header is missing entirely.
  • The API key has been revoked or expired.
  • The key belongs to a different organisation than the resource being accessed.
  • The Bearer prefix is missing from the Authorization header value.

403 Forbidden

A 403 response means the credential is valid but the key does not have the required scope for the requested operation.
Add the missing scope to the API key in the Developer Portal, or create a new key with the correct scopes.

429 Too Many Requests

A 429 response means you have exceeded your hourly rate limit.
The retry_after field tells you how many seconds to wait before retrying. Implement exponential backoff in your application rather than retrying immediately.

Revoking an API key

To revoke a key that is no longer needed or may have been compromised, delete it via the API or from Settings → API Keys in the Developer Portal.
Revocation takes effect immediately. Any in-flight requests using the revoked key that have already been authenticated will complete, but new requests will return 401.

Security best practices

  • Rotate keys regularly. Create a new key, update your application, then revoke the old one.
  • Use environment variables. Never hard-code API keys in source files.
  • Apply least-privilege scopes. Give each key only the scopes it needs.
  • Monitor usage. Review X-RateLimit-Remaining in responses and alert on unexpected spikes.
  • Separate keys per environment. Use distinct keys for development, staging, and production.