---
title: Errors, Warnings & Limits
slug: errors-warnings-and-limits
createdAt: 2025-09-25T08:55:12.818Z
---

# Permissions

Fields which you do not have permission to access will result in a response with an `error` block, with `errorType` set to `Unauthorized`. The response payload is still valid and may be consumed.

You can test your applications handling of deprecated fields by calling:

```graphql
query MyQuery {
  debug
  {
    permissionDeniedExample
  }
}
```

This will trigger the API to return a permissions error within your query. If you wish to access a field you do not have access to, contact your account representative.

# Field Deprecation

Any query which uses a deprecated field will result in a response with an `error` block, with `errorType` set to `DEPRECATED`. The `message` field will provide an explanation of the deprecation and an alternative field to use, if available. The response payload is still valid and may be consumed.

You can test your applications handling of deprecated fields by calling:

```graphql
query MyQuery {
  debug
  {
    deprecatedExample
  }
}
```

This will trigger the API to return a deprecated error within your query. Note that this field may be hidden in the GraphiQL explorer (as it hides deprecated fields by default), however it is present.

:::hint{type="warning"}
Deprecated fields will be removed in future releases. If your application receives a DEPRECATED error message, remove the affected fields from your queries and mutations.
:::

:::hint{type="danger"}
In the event of any other type of error being received, the response payload must be discarded
:::

# GraphQL Fragments

Altrata GraphQL API's do not support named GraphQL fragment spreads. This limitation also applies to nested fields.

If a request uses a named fragment spread such as `...PersonDetails`, it will fail and result in a `GenericError` response.

```graphql
query person {
  person: personIDSearch(id: "xxxxxxxx") {
    ... on Person {
      ...PersonDetails
    }
    ... on AuthorizationError {
      authorizationErrorCode
    }
  }
}

fragment PersonDetails on Person {
  id
  name
}
```

Instead, select the fields inline:

```graphql
query person {
  person: personIDSearch(id: "xxxxxxxx") {
    ... on Person {
      id
      name
    }
    ... on AuthorizationError {
      authorizationErrorCode
    }
  }
}
```

Inline fragments used for type selection are supported:

```graphql
... on Person {
  id
  name
}
```

# Rate Limits

| **Service**            | **Rate**     | **Burst**  | **Quota**   |
| ---------------------- | ------------ | ---------- | ----------- |
| **Profile API**        | 2 per second | 2 Requests | None        |
| **Matching API**       | 2 per second | 2 Requests | None        |
| **Events API**         | 2 per second | 2 Requests | None        |
| **Relationship API**   | 2 per second | 2 Requests | None        |
| **Authentication API** | 1 per Second | 1 Request  | 200 per day |

# Daily Quota

The authentication endpoint that issues access tokens is limited to **200 requests per day**. Each token remains valid for **8 hours**.

**Best practice:** Request an access token once and reuse it across multiple API calls for the duration of its 8-hour lifetime.&#x20;

# HTTP Errors

**429 Too Many Requests** - when you have exceeded your rate limit. To resolve this error, use retries and an exponential backoff algorithm with jitter, and then resubmit your API request.

**429 Limit Exceeded** - when you have exceeded your daily quota.





