StriseConnect

Errors

When a request fails, Strise Connect returns a non-200 HTTP status and a GraphQL errors array. A failed request returns no partial data: if any field in the operation fails, the whole operation fails.

Error format

Every error raised while executing an operation carries an extensions object with a machine-readable code:

{
  "errors": [
    {
      "message": "Unauthorized! Forbidden!",
      "extensions": {
        "code": "FORBIDDEN",
        "reason": "FEATURE_NOT_ENABLED",
        "requestId": "920a0e81ac"
      }
    }
  ]
}
FieldDescription
messageHuman-readable description. Do not parse it; the wording can change.
extensions.codeError category. Always present. Branch on this value.
extensions.reasonOptional, more specific cause. See Reasons.
extensions.requestIdIdentifies the request in our logs. Include it when you contact support.
extensions.missingPermissionsOptional. On some FORBIDDEN errors, the permissions the API client is missing.

Codes and reasons are a stable contract: new values may be added, but existing values are never renamed or given a different meaning. Treat an unknown code as a non-retryable error.

Error codes

codeHTTP statusMeaningRetry?
INVALID_INPUT400An argument or variable is invalid, for example a wrong type or a value the operation does not accept.No. Fix the request.
UNAUTHENTICATED401The bearer token is missing, expired or invalid.After generating a new token.
FORBIDDEN403The token is valid but not allowed to perform this operation. Check reason.No.
RESOURCE_NOT_FOUND404The requested entity does not exist or is not visible to your team.No.
UPSTREAM_TIMEOUT408A registry or data provider did not respond in time.Yes, with backoff.
RESOURCE_ALREADY_EXISTS409The entity you are creating already exists.No.
CONCURRENT_MODIFICATION409The same record was changed by another request at the same time.Yes.
RATE_LIMITED429Your quota for this operation is used up for the current period.After the period resets.
UPSTREAM_ERROR502A registry or data provider returned an error.Yes, with backoff.
INTERNAL500An unexpected error on our side.Contact us with the requestId.

FORBIDDEN errors always use the message Unauthorized! Forbidden!. Use reason to tell the causes apart.

Reasons

reasoncodeMeaning
FEATURE_NOT_ENABLEDFORBIDDENThe feature behind this field or operation (for example PEP and sanction screening or credit data) is not enabled for your team. Contact your Strise contact to enable it.
MISSING_PERMISSIONFORBIDDENThe API client's role lacks a required permission. missingPermissions lists which.
RESOURCE_ACCESS_DENIEDFORBIDDENThe entity belongs to a team your API client does not have access to.
TEAM_MEMBERSHIP_REQUIREDFORBIDDENThe API client is not a member of the team the request targets.
PRIVATE_PERSON_NIN_ALREADY_EXISTSRESOURCE_ALREADY_EXISTSA private person with this national identity number already exists in your team.

Rate limits

Some operations, such as PEP and sanction screening and credit scores, count against a quota that resets each period (weekly or monthly, depending on the operation and your agreement). When the quota is used up, the operation returns RATE_LIMITED until the next period starts. Contact your Strise contact if you need a higher quota.

Query validation errors

A query that is not valid against the schema, for example one with a syntax error or an unknown field, is rejected with HTTP 400 before it runs. These errors follow the standard GraphQL format: a message and the locations in the query that caused it, without extensions:

{
  "errors": [
    {
      "message": "Cannot query field 'turnover' on type 'Company'.",
      "locations": [{ "line": 5, "column": 9 }]
    }
  ]
}

On this page