Skip to main content

Overview

The Adcyma API lets you create, update, look up, and offboard Entra ID users from your own systems.

Base URL: https://api.adcyma.com
Path prefix: /v1/api
Content type: application/json

All endpoints are mounted under the path prefix above. For example, the create-user endpoint is at https://api.adcyma.com/v1/api/user.

Authentication

Every request (except the health check) must include three headers:

  • X-Company-ID: Your tenant identifier. You can find this under Settings > Company profile in Adcyma.
  • X-Api-User: The username of an active API user from your tenant.
  • X-Api-Key: The secret key paired with that API user.

API users and keys are managed in the User Permissions section of your Adcyma portal (create a user with the API role). The key is only shown once when you create it. Store it somewhere safe. If you lose it, create a new API user and delete the old one.

Example headers

X-Company-ID: AcmeAB-1f2c8a90
X-Api-User: integrations-bot
X-Api-Key: <your-secret-key>
Content-Type: application/json

Response envelope

Successful responses wrap the payload in a data object:

{
"data": {
"message": "User creation queued successfully"
}
}

Errors come back in a consistent shape:

{
"error": {
"code": "BAD_REQUEST",
"message": "Missing required field: userPrincipalName"
}
}

The HTTP status code matches the error code:

HTTP statuscodeWhen it happens
400BAD_REQUESTA required field is missing, or a value fails validation.
401UNAUTHORIZEDAPI credentials are missing, mistyped, or belong to a disabled API user.
403FORBIDDENThe action is not allowed, for example when your seat limit is reached.
404NOT_FOUNDThe user you referenced does not exist in your tenant.
429RATE_LIMIT_EXCEEDEDYou hit one of the rate limits described below.
500INTERNAL_ERRORUnexpected server-side error. Safe to retry after a short wait.

Rate limits

Limits are evaluated on a 60-second sliding window. When you hit a limit, the response is 429 RATE_LIMIT_EXCEEDED. Wait for the window to clear and retry.

ScopeDefault limitNotes
Per IP200 requests / minCounted across all tenants behind the same IP.
Per tenant100 requests / minCounted per X-Company-ID.
Failed auth10 attempts / minPer tenant. Triggered by missing or wrong X-Api-User / X-Api-Key.

Request body limits

  • The maximum JSON request body is 16 KB for most endpoints. The /v1/api/user endpoint accepts up to 6 MB to allow a base64-encoded profile photo.
  • All authenticated endpoints expect a JSON body (or query string on GET). Always send Content-Type: application/json.

Health check

One unauthenticated endpoint is available for uptime monitoring.

Endpoint: /v1/api/health
Method: GET
Description: Returns 200 OK when the API is running. Useful for liveness probes and external monitors.

Success Response (200 OK):

{
"data": {
"status": "ok"
}
}