Skip to main content

Error Codes

This page provides a complete reference of error codes returned by the Point API, along with their meanings and recommended resolutions.

HTTP Status Codes

Status CodeMeaning
200 OKRequest succeeded
201 CreatedResource was created successfully
204 No ContentRequest succeeded with no response body
400 Bad RequestRequest is malformed
401 UnauthorizedAuthentication required or failed
403 ForbiddenAuthenticated but not authorised
404 Not FoundResource does not exist
409 ConflictResource conflict (e.g., duplicate)
422 Unprocessable EntityValidation failed
429 Too Many RequestsRate limit exceeded
500 Internal Server ErrorUnexpected server error
503 Service UnavailablePlatform temporarily unavailable

Application Error Codes

Authentication Errors (AUTH_*)

CodeDescriptionResolution
AUTH_TOKEN_MISSINGNo access token providedInclude Authorization: Bearer {token} header
AUTH_TOKEN_INVALIDToken is malformed or tamperedRequest a new token
AUTH_TOKEN_EXPIREDToken has expiredRequest a new token
AUTH_INSUFFICIENT_SCOPEToken doesn't have required permissionsRequest a token with the correct scope
AUTH_CLIENT_DISABLEDAPI client has been disabledContact your administrator

Validation Errors (VAL_*)

CodeDescriptionResolution
VAL_REQUIRED_FIELDA required field is missingInclude the missing field in your request
VAL_INVALID_FORMATA field value is in the wrong formatCheck the field format requirements
VAL_INVALID_CURRENCYCurrency code is not a valid ISO 4217 codeUse a valid 3-letter currency code
VAL_INVALID_DATEDate is not in ISO 8601 formatUse YYYY-MM-DD format
VAL_DATE_RANGEEnd date is before start dateEnsure from is before to
VAL_INVALID_ISINISIN does not pass checksum validationVerify the ISIN is correct
VAL_WEIGHTS_NOT_100Look-through weights don't sum to 100%Ensure weights sum to exactly 100

Resource Errors (RES_*)

CodeDescriptionResolution
RES_NOT_FOUNDThe requested resource does not existCheck the ID is correct
RES_DUPLICATE_CODEA resource with this code already existsUse a unique code
RES_ARCHIVEDThe resource has been archivedUnarchive it first, or use a different resource
RES_DEPENDENCYCannot delete — resource has dependentsRemove dependents first

Data Errors (DATA_*)

CodeDescriptionResolution
DATA_PRICE_NOT_FOUNDNo price available for the security on the requested dateCheck the date and security
DATA_FX_RATE_NOT_FOUNDNo FX rate available for the currency pair on the requested dateCheck the date and currency pair
DATA_VALUATION_NOT_AVAILABLEPortfolio cannot be valued on the requested dateCheck for missing price/FX exceptions

Rate Limit Errors (RATE_*)

CodeDescriptionResolution
RATE_LIMIT_EXCEEDEDToo many requests in the time windowWait and retry; implement exponential backoff

Error Response Format

All errors follow this format:

{
"error": {
"code": "VAL_REQUIRED_FIELD",
"message": "The 'baseCurrency' field is required.",
"details": [
{
"field": "baseCurrency",
"code": "VAL_REQUIRED_FIELD",
"message": "This field is required."
}
],
"requestId": "req_abc123xyz",
"timestamp": "2026-02-17T14:30:00Z"
}
}

Always include the requestId when contacting support about an error.


Retry Strategy

For transient errors (429, 500, 503), implement exponential backoff:

import time
import random

def api_request_with_retry(url, headers, max_retries=5):
for attempt in range(max_retries):
response = requests.get(url, headers=headers)

if response.status_code == 200:
return response.json()

if response.status_code in [429, 500, 503]:
wait_time = (2 ** attempt) + random.uniform(0, 1)
time.sleep(wait_time)
continue

# Non-retryable error
raise Exception(f"API error: {response.json()}")

raise Exception("Max retries exceeded")