Skip to main content

API key authentication

Send your developer API key on every authenticated request using either header:
Create and revoke keys in the Dev Portal. Each key has scoped permissions - request only the scopes your integration needs.

Common scopes

Required REST HMAC signing

Every API-key authenticated request must be signed with the API secret returned when the key was created. JWT and OAuth bearer session tokens are exempt.

String to sign

  • METHOD - uppercase HTTP verb (GET, POST, …)
  • path - full request path including query string (e.g. /api/v1/developers/earnings)
  • body - raw JSON string for POST/PUT/PATCH, or empty string when there is no body
REST HMAC uses milliseconds and includes the HTTP method and path. This is different from inbound agent webhook signing, which uses seconds and canonical JSON only.

curl example (GET)

curl example (POST)

Python (echozero-sdk)

hmac=True is the default for API-key clients — every request is signed automatically.

TypeScript (echozero-sdk)

The SDK signs every API-key request by default when hmacSecretKey is configured. Or sign manually with signRestRequest:

HMAC error responses

MCP authentication

API keys (with required HMAC) work on POST https://mcp.echozero.app/mcp the same way as REST. Send x-api-key or Authorization: Bearer on every MCP call, including initialize. See the MCP Server guide.