Skip to main content
The Chariow API uses store API keys to authenticate requests. Each key belongs to one store and carries a set of scopes that decide which endpoints it can call.

Creating an API Key

1

Log in to Dashboard

Go to app.chariow.com and log in to your account.
2

Navigate to Settings

Click on Settings in the sidebar.
3

Open API Keys

Select API Keys from the settings menu.
4

Create New Key

Click Create API Key, give it a descriptive name, choose its scopes, and copy the generated key.
Copy your API key immediately after creation. For security reasons, the full key is only shown once.
API keys start with sk_. Store them as opaque strings: do not parse them or rely on their length.

Scopes

Every public API endpoint requires one or more scopes. Grant each key only the scopes its integration needs: a key that only reads products cannot start a checkout or revoke a licence, even if it leaks.

Available scopes

A write scope always includes its read scope, so granting licenses.write also grants licenses.read.

Scopes required by each endpoint

The customer endpoints return contact details, so they need both customer scopes. Granting customers.pii.read alone is enough, because it includes customers.read.

How scopes are assigned

  • Choosing scopes: pick the scopes when you create the key. If you do not pick any, the key receives every scope your team role allows.
  • Changing scopes: you can change the scopes of an existing key from Settings → API Keys without regenerating it. Integrations using the key keep working with the new permissions.
  • Team roles: a key can never hold more than the role of the team member who creates it. For example, a member with the Support role cannot grant licenses.write, checkout.write, affiliates.write or webhooks.write.
  • Role changes: if the creator’s role is downgraded, their keys lose the scopes the new role no longer allows. Promoting the creator does not add scopes to existing keys.
  • Deactivated members: when a team member loses access to the store, the API keys and MCP connections they created are deleted and stop working immediately. Reactivating the member does not restore them.
  • Existing keys: keys created before scopes were introduced received every scope their creator’s role allowed at the time.
  • New scopes: scopes added to the catalogue later are never granted automatically to existing keys. Add them to a key yourself when an integration needs them.

Making Authenticated Requests

Include your API key in the Authorization header of every request:

Example Request

Key Security Best Practices

Give each key only the scopes its integration needs. A reporting script needs sales.read, not licenses.write.
Store API keys in environment variables, not in your codebase:
Create separate API keys for development, staging, and production environments. This limits the impact if a key is compromised.
Periodically create new keys and delete old ones. This limits the window of opportunity for compromised keys.
Regularly review your API key usage in the dashboard. Look for unusual patterns that might indicate unauthorised access.
Never expose your API key in client-side code (JavaScript running in browsers). All API calls should be made from your server.

Authentication Errors

If the key is missing or invalid, you’ll receive a 401 Unauthorised response:

Scope Errors

If the key is valid but lacks a scope the endpoint requires, you’ll receive a 403 Forbidden response that lists the missing scopes:
  • errors.scopes lists every missing scope. Use it, rather than the message, in your code: the message is translated into the request language.
  • The WWW-Authenticate header carries the same scopes, separated by spaces.
  • To fix it, add the missing scopes to the key in Settings → API Keys, or ask a team member whose role allows them.

Rate Limiting

API keys are subject to rate limiting to ensure fair usage:
  • 100 requests per minute per API key for all endpoints except checkout
  • 100 requests per minute per API key for POST /v1/checkout, counted separately
When rate limited, you’ll receive a 429 Too Many Requests response. See Rate Limits for details.
Need higher rate limits? Contact our support team at support@chariow.com.

Next Steps

API Reference

Explore the complete API documentation

Rate Limits

Learn more about rate limiting