Overview

Environments, base URLs, response format, and error handling for the Call+ Simulation API.

The Call+ Simulation API lets you run financial simulations for the Call+ stock option plan and generate PDF reports for beneficiaries.

Environments

Sandbox and production share the same endpoints, request schema, and response envelope — only the base URL and key prefix change. Build against sandbox while you integrate, then swap the base URL and key to go live. No code changes.

EnvironmentPurposeBase URLAPI key prefix
SandboxThe test base URL — point your client here while you build. Behaves like production but never produces real records.https://sandbox-api.callplus.be/api/v1sk_sbx_…
ProductionReal beneficiary simulations and reports.https://api.callplus.be/api/v1sk_prod_…

_meta.environment in every response is "sandbox" or "production" depending on which base URL you called — use it as a runtime sanity check.

Endpoints

MethodPathDescription
POST/simulationsRun a simulation
GET/simulations/{id}Retrieve a previously created simulation
GET/simulations/{id}/pdfDownload the PDF report

Response format

Every response follows the same envelope structure:

{
  "success": true,
  "requestId": "550e8400-e29b-41d4-a716-446655440000",
  "data": { ... },
  "_meta": {
    "timestamp": "2026-02-10T10:30:00.123Z",
    "environment": "sandbox"
  }
}
FieldTypeDescription
successbooleantrue on success, false on error
requestIdstringUnique ID for tracing — include this when contacting support
dataobjectResponse payload (only on success)
errorobjectError details (only on failure)
_metaobjectTimestamp and environment identifier

Error format

When success is false, the error object contains:

{
  "success": false,
  "requestId": "550e8400-e29b-41d4-a716-446655440000",
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "The request contains invalid parameters.",
    "details": [
      {
        "field": "benefitInKind",
        "code": "VALUE_TOO_LARGE",
        "message": "Value exceeds maximum allowed",
        "received": 150000,
        "constraint": { "max": 100000, "inclusive": true }
      }
    ]
  },
  "_meta": {
    "timestamp": "2026-02-10T10:30:00.123Z",
    "environment": "sandbox"
  }
}

Error codes

CodeHTTPWhat to do
VALIDATION_ERROR400Check the details array for specific field issues
INVALID_REQUEST400Fix malformed JSON, unknown fields, or type mismatches
UNAUTHORIZED401Verify the X-API-Key header is present and correct
FORBIDDEN403Contact support — account may be suspended
NOT_FOUND404Verify the simulation ID
RATE_LIMIT_EXCEEDED429Wait for Retry-After seconds and retry
INTERNAL_ERROR500Retry later or contact support with requestId

The same codes apply in both environments.

Request ID

Every response includes an X-Request-Id header and a requestId in the body. Always log this value — it's the fastest way to debug issues with the Call+ team.