Docs

Errors

The API uses standard HTTP status codes. Error bodies come in a few shapes, depending on where in the request the problem was found.

Status codes

StatusMeaningWhat to do
200Success
400Invalid parameters, or a client you cannot accessFix the request. The message says what is wrong. Do not retry unchanged.
401Missing, invalid or expired credentials, or an endpoint outside your licenseRefresh your token and retry once. If it persists, check your credentials and license.
404Document not found, or unknown client on Grouped performanceCheck the id.
429Rate limit or queue limit reachedWait for Retry-After seconds, then retry. See Rate limits.
500Unexpected server errorRetry later with backoff. If it persists, contact support with the time of the request.

Error body shapes

Message string

Most endpoint-specific errors return a JSON-encoded string:

Validation problem

When a required parameter is missing or has the wrong type, for example no yearMonth or yearMonth=sept, the API returns a standard validation problem document:

Plain text

License and rate-limit rejections return plain text (Content-Type: application/text):

Server error

Empty

Authentication failures on data endpoints (missing or expired token) return 401 with no body.

Error messages

These are the messages you can receive, so you can match on them or show them to users.

StatusMessageEndpoints
400The user does not have access to this client or the client does not exist.All client-scoped endpoints
400The user does not have access to this tenant or the tenant does not exist.All endpoints that take tenantId
400apiKey and apiSecret are required.Auth token
401Invalid credentials.Auth token
400The value of historicalMonths must be between 1 and 12.Holdings
400groupBy must be one of: consolidated, bankAccount, investmentVehicle, assetClass, customField.Grouped performance
400id=0 is only valid when groupBy is "consolidated".Grouped performance
400customFieldId is required and must be between 1 and 10 when groupBy is "customField".Grouped performance
400customFieldId is only valid when groupBy is "customField".Grouped performance
400investmentVehicleNodeId is required when groupBy is "investmentVehicle".Grouped performance
400investmentVehicleNodeId is only valid when groupBy is "investmentVehicle".Grouped performance
400period must be a single value between 0 and 4.Grouped performance
400performanceMetric must be one of: IRR, TWR, XIRR.Grouped performance
404Unknown client id.Grouped performance
400Both start and end date should be providedPublished reports
400Invalid date format. Please provide date in yyyyMMdd formatPublished reports
400Start date should be less than end datePublished reports
404Problem details with "title": "Not Found"Documents (not found or not accessible)
401Unauthorized. Invalid license.Endpoints outside your license
429Too many requests. Please wait and try again.All authenticated endpoints

Over MCP, these messages come back as tool errors. MCP tools also reject a missing or zero client id with A client id greater than 0 is required. Use get_clients to find the client id.

Handling errors in code