API authentication#

Every /api/v1 request requires a Doctosan developer key. Send the plaintext secret in the X-API-Key request header:

GET /api/v1/key HTTP/1.1
Host: www.doctosan.com
Accept: application/json
X-API-Key: dct_live_replace_me

The validation endpoint returns non-secret key metadata:

{
  "key": {
    "id": "0f20b884-…",
    "name": "Outreach CRM",
    "prefix": "dct_live_Ab12cd…",
    "creationTime": "2026-09-20T10:00:00.000Z"
  }
}

The API also accepts Authorization: Bearer dct_live_… when it is reached without a gateway that owns that header. X-API-Key is the canonical REST form and works through www.doctosan.com.

Secret lifecycle#

  • The full secret is returned only by the create-key operation in the web console.
  • Doctosan stores a SHA-256 hash, not a recoverable copy.
  • A Doctosan account may hold at most five active keys.
  • Revocation takes effect on the next request.
  • Use a separate key for each workload so one integration can be rotated without interrupting another.

Errors#

Status Meaning
400 A query or path parameter is invalid.
401 The key is missing, malformed, unknown, or revoked.
404 The requested published record does not exist.
429 The per-key request window is exhausted.

Do not retry a 401. On 429, wait for the number of seconds in Retry-After. Successful authenticated responses include RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset, and RateLimit-Policy headers.

Do not send keys in URLs

Query strings are routinely retained by browsers, proxies, analytics, and access logs. Credentials belong in a header only.