Authentication

Every /api/v1 request authenticates with an API key, sent as a bearer token or an X-API-Key header. Organization, location, and environment scope come exclusively from the key and cannot be widened by request parameters.

Authorization: Bearer itms_test_...
# or
X-API-Key: itms_test_...

Key prefixes

EnvironmentPrefixUse
Sandboxitms_test_Created by organization admins after the workspace and API Access module are enabled.
Liveitms_live_Issued once live access is enabled for the workspace. See Environments.

One-time secret reveal

The full secret is shown exactly once at creation — store it in a secret manager and never commit it to source control. Only a key prefix is displayed afterward. If a secret is lost, revoke the key and create a new one.

Scopes

Default key scopes are:

  • tax:calculate — stateless calculation endpoints.
  • transactions:read — list and fetch transactions.
  • transactions:write — create, void, and refund transactions.

Return-package access uses explicit returns:read and returns:write scopes. These are not default scopes and require the corresponding compliance entitlement and filing-unit authorization. A request outside the key's scopes returns 403 insufficient_scope.

Service-provider credentials add four portfolio scopes. They remain scoped to the enabled provider practice and never grant direct access to an underlying taxpayer organization without an authorized engagement:

  • provider:clients:read — list clients, locations, and readiness.
  • provider:clients:write — create and update canonical client organizations and locations.
  • provider:return-jobs:read — read durable portfolio return-job output.
  • provider:return-jobs:write — submit portfolio return jobs.

Taxpayer-data calls made with a provider credential also require either the recommended provider-owned external reference in X-ITMS-Client-Ref, or the backward-compatible numeric engagement ID in X-ITMS-Client-Id. See the complete service-provider portfolio guide.

Rotation & revocation

Rotate a key in the Developer Console to revoke the current secret and issue a replacement with the same name, environment, and scopes — the new secret is shown once. Revocation takes effect on the next request. Live-key rotation requires the same authorization as live-key creation.

Identify your integration

Send X-ITMS-Client: application-name/version from server-side integrations. This identifier helps support correlate behavior with an application release and does not alter tax results. Responses include X-ITMS-API-Version as an informational contract revision and X-Request-Id for request-level diagnostics.

During sandbox evaluation, send non-secret X-ITMS-Test-Run-Id and X-ITMS-Test-Case-Id values to correlate a test plan with request logs. The sanitized values are echoed in response headers.

Browser sessions are not accepted

Dashboard login sessions (JWTs) are not accepted on /api/v1. API keys cannot read or write data for any other tenant, location, or environment. Never embed an API key in a browser, mobile application, public repository, or client-side JavaScript bundle.