> ## Documentation Index
> Fetch the complete documentation index at: https://docs-provider.voucher.allride.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Error catalog

> Every error code the Provider API can return, with what to do about it.

Every error response is `{"errors": [{"message", "statusCode", "errorCode", …}]}` and its `errorCode` is listed below; the [errors guide](https://docs-provider.voucher.allride.io/errors.md) explains the format.

## 400 Bad request

### `data-failed-validation`

**400 Bad request** · Data failed validation · Retry: after changing the request

One or more properties or parameters are invalid; each is listed in more.validationErrors with its property path and violated constraint. Unknown properties and query parameters are refused as well.

**What to do:** Correct every entry in more.validationErrors.

**Details in `more`:** `validationErrors` (The invalid properties and parameters: `{property, constraint, params?, message{en,de}, value?}`; `params` holds the constraint's parameters (for example `{"max": 120}`); `value` is echoed only for numbers and booleans, never for strings.)

### `invalid-header`

**400 Bad request** · Invalid header · Retry: after changing the request

A standard or platform header is malformed; more.validationErrors\[].property names the header.

**What to do:** Correct the header named in more.validationErrors.

**Details in `more`:** `validationErrors` (The malformed header, as `property`.)

### `invalid-idempotency-key`

**400 Bad request** · Invalid Idempotency-Key · Retry: after changing the request

The Idempotency-Key header is not 1-255 printable ASCII characters without spaces.

**What to do:** Send a valid key, for example a UUID.

### `malformed-json`

**400 Bad request** · Malformed JSON · Retry: after changing the request

The body is not valid UTF-8 JSON.

**What to do:** Send a valid JSON document.

## 401 Unauthorized

### `api-key-invalid`

**401 Unauthorized** · Invalid API key · Retry: never

The API key is unknown, revoked, expired, or belongs to the other environment (a vk\_test\_ key against production or a vk\_live\_ key against the sandbox).

**What to do:** Check the key and the base URL; create or roll a key in the developer dashboard.

### `session-revoked`

**401 Unauthorized** · Session revoked · Retry: never

The dashboard user's session was revoked.

**What to do:** Sign in again.

### `token-expired`

**401 Unauthorized** · Credential expired · Retry: never

The dashboard user's ID token has expired.

**What to do:** Sign in again; API-key integrations never see this code.

### `token-invalid`

**401 Unauthorized** · Invalid credential · Retry: never

The credential cannot be verified for this surface, has an unknown scheme, or two Authorization headers were sent.

**What to do:** Send exactly one Authorization header with a credential for this surface.

### `unauthenticated`

**401 Unauthorized** · Authentication required · Retry: never

No credential was sent with the request.

**What to do:** Send your API key in the Authorization header: Bearer vk\_test\_… or Bearer vk\_live\_….

## 403 Forbidden

### `api-access-inactive`

**403 Forbidden** · API access inactive · Retry: never

API access of the partner is not active, or the partner is not active. API keys work only while both are active; the same code answers key and webhook operations that need active API access.

**What to do:** Request API access in the developer dashboard and wait for AllRide to activate it.

Returned by: [Replay failed deliveries](https://docs-provider.voucher.allride.io/api-reference/partner-webhook-endpoints-replay-failed.md), [Send a test event](https://docs-provider.voucher.allride.io/api-reference/partner-webhook-endpoints-send-test-event.md), [Replay a webhook delivery](https://docs-provider.voucher.allride.io/api-reference/partner-webhook-deliveries-replay.md)

### `ip-not-allowed`

**403 Forbidden** · IP address not allowed · Retry: never

The request came from an address outside the partner's IP allowlist while enforcement is on.

**What to do:** Call from an allowlisted address, or add your egress range to the allowlist.

### `mfa-required`

**403 Forbidden** · Multi-factor authentication required · Retry: never

The partner requires multi-factor authentication and the session has not satisfied it.

**What to do:** Complete the step-up at more.stepUpUrl or enrol at more.enrolUrl.

**Details in `more`:** `enrolUrl` (Where to enrol.), `stepUpUrl` (Where to step up.)

### `missing-permission`

**403 Forbidden** · Missing permission · Retry: after changing the request

The membership or API key lacks a permission the operation requires; more.requiredPermissions lists them. API keys always get this code on dashboard-only operations.

**What to do:** Ask a partner administrator to grant the permissions, or use a key with that scope.

**Details in `more`:** `requiredPermissions` (The permissions the operation needs.)

### `owner-membership-required`

**403 Forbidden** · Owner membership required · Retry: never

Only members of the owners group may change the owners and administrators groups or suspend or remove an owner.

**What to do:** Ask an owner to make the change.

Returned by: [Invite a member](https://docs-provider.voucher.allride.io/api-reference/partner-members-create.md), [Remove a member](https://docs-provider.voucher.allride.io/api-reference/partner-members-remove.md), [Suspend a member](https://docs-provider.voucher.allride.io/api-reference/partner-members-suspend.md), [Unsuspend a member](https://docs-provider.voucher.allride.io/api-reference/partner-members-unsuspend.md), [Update a group](https://docs-provider.voucher.allride.io/api-reference/partner-groups-update.md)

### `partner-not-active`

**403 Forbidden** · Partner not active · Retry: never

The partner is still in draft or onboarding and the operation needs an active partner.

**What to do:** Complete onboarding first.

### `partner-offboarded`

**403 Forbidden** · Partner offboarded · Retry: never

The partner has been offboarded.

**What to do:** Contact AllRide support.

### `partner-role-missing`

**403 Forbidden** · Partner role missing · Retry: never

The partner lacks the role this surface needs (more.requiredRole names it), for example a consumer-only partner on /provider/v1.

**What to do:** Use the surface of your partner's role.

**Details in `more`:** `requiredRole` (The role the surface needs.)

### `partner-suspended`

**403 Forbidden** · Partner suspended · Retry: never

The partner is suspended; only reads are allowed.

**What to do:** Contact AllRide support.

### `reauthentication-required`

**403 Forbidden** · Recent sign-in required · Retry: after changing the request

The operation needs a sign-in within the last 15 minutes. API keys are exempt.

**What to do:** Sign in again at more.stepUpUrl and repeat the request.

**Details in `more`:** `stepUpUrl` (Where to sign in again.)

### `sso-required`

**403 Forbidden** · Single sign-on required · Retry: never

The partner enforces single sign-on for the user's email domain.

**What to do:** Sign in through the partner's identity provider.

## 404 Not found

### `api-key-not-found`

**404 Not found** · API key not found · Retry: after changing the request

No API key with this id exists in your partner.

**What to do:** List your API keys.

Returned by: [Get an API key](https://docs-provider.voucher.allride.io/api-reference/partner-api-keys-get.md), [Rename an API key](https://docs-provider.voucher.allride.io/api-reference/partner-api-keys-update.md), [Revoke an API key](https://docs-provider.voucher.allride.io/api-reference/partner-api-keys-revoke.md), [Roll an API key](https://docs-provider.voucher.allride.io/api-reference/partner-api-keys-roll.md)

### `audit-event-not-found`

**404 Not found** · Audit event not found · Retry: after changing the request

No audit event with this id is visible to your partner.

**What to do:** List audit events with filters.

Returned by: [Get an audit event](https://docs-provider.voucher.allride.io/api-reference/partner-audit-events-get.md)

### `brand-asset-not-found`

**404 Not found** · Brand asset not found · Retry: after changing the request

No brand asset with this id exists for your partner, including asset ids referenced inside content.

**What to do:** Upload the asset first or use one of your own asset ids.

Returned by: [Get a brand asset](https://docs-provider.voucher.allride.io/api-reference/provider-brand-assets-get.md), [Complete a brand asset upload](https://docs-provider.voucher.allride.io/api-reference/provider-brand-assets-complete.md), [Delete a brand asset](https://docs-provider.voucher.allride.io/api-reference/provider-brand-assets-delete.md), [Create a voucher set change request](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-set-change-requests-create.md), [Edit a voucher set change request](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-set-change-requests-update.md), [Create a provider profile change request](https://docs-provider.voucher.allride.io/api-reference/provider-provider-profile-change-requests-create.md) and others

### `category-not-found`

**404 Not found** · Category not found · Retry: after changing the request

No active category with this id exists.

**What to do:** List categories and use an active one.

Returned by: [Get a category](https://docs-provider.voucher.allride.io/api-reference/provider-categories-get.md)

### `change-request-not-found`

**404 Not found** · Change request not found · Retry: after changing the request

No change request with this id exists for this subject.

**What to do:** Check the subject path and the change request id.

Returned by: [Get a voucher set change request](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-set-change-requests-get.md), [Edit a voucher set change request](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-set-change-requests-update.md), [Submit a voucher set change request](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-set-change-requests-submit.md), [Withdraw a voucher set change request](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-set-change-requests-withdraw.md), [Get a provider profile change request](https://docs-provider.voucher.allride.io/api-reference/provider-provider-profile-change-requests-get.md), [Edit a provider profile change request](https://docs-provider.voucher.allride.io/api-reference/provider-provider-profile-change-requests-update.md) and others

### `group-not-found`

**404 Not found** · Group not found · Retry: after changing the request

No group with this id exists in your partner.

**What to do:** List the groups of your partner.

Returned by: [Get a group](https://docs-provider.voucher.allride.io/api-reference/partner-groups-get.md), [Update a group](https://docs-provider.voucher.allride.io/api-reference/partner-groups-update.md), [Delete a group](https://docs-provider.voucher.allride.io/api-reference/partner-groups-delete.md), [List the members of a group](https://docs-provider.voucher.allride.io/api-reference/partner-groups-members.md)

### `ip-allowlist-entry-not-found`

**404 Not found** · IP allowlist entry not found · Retry: after changing the request

No allowlist entry with this id exists in your partner.

**What to do:** List your IP allowlist entries.

Returned by: [Relabel an IP allowlist entry](https://docs-provider.voucher.allride.io/api-reference/partner-ip-allowlist-update.md), [Remove an IP allowlist entry](https://docs-provider.voucher.allride.io/api-reference/partner-ip-allowlist-delete.md)

### `partner-membership-not-found`

**404 Not found** · Member not found · Retry: after changing the request

No membership with this id exists in your partner.

**What to do:** List the members of your partner.

Returned by: [Get a member](https://docs-provider.voucher.allride.io/api-reference/partner-members-get.md), [Change a member's direct permissions](https://docs-provider.voucher.allride.io/api-reference/partner-members-update.md), [Remove a member](https://docs-provider.voucher.allride.io/api-reference/partner-members-remove.md), [Resend an invitation](https://docs-provider.voucher.allride.io/api-reference/partner-members-resend-invitation.md), [Suspend a member](https://docs-provider.voucher.allride.io/api-reference/partner-members-suspend.md), [Unsuspend a member](https://docs-provider.voucher.allride.io/api-reference/partner-members-unsuspend.md)

### `partner-not-found`

**404 Not found** · Partner not found · Retry: never

The token names a partner that does not exist or in which the user has no active membership.

**What to do:** Sign in to a partner you are a member of.

### `redemption-not-found`

**404 Not found** · Redemption not found · Retry: after changing the request

No redemption of your vouchers has this id.

**What to do:** Check the redemption id.

Returned by: [Get a redemption](https://docs-provider.voucher.allride.io/api-reference/provider-redemptions-get.md)

### `route-not-found`

**404 Not found** · Route not found · Retry: never

No operation exists for this path.

**What to do:** Check the path against the API reference.

### `sso-connection-not-found`

**404 Not found** · SSO connection not found · Retry: after changing the request

No single sign-on connection with this id exists in your partner.

**What to do:** List your SSO connections.

Returned by: [Get an SSO connection](https://docs-provider.voucher.allride.io/api-reference/partner-sso-connections-get.md), [Update an SSO connection](https://docs-provider.voucher.allride.io/api-reference/partner-sso-connections-update.md), [Activate an SSO connection](https://docs-provider.voucher.allride.io/api-reference/partner-sso-connections-activate.md), [Deactivate an SSO connection](https://docs-provider.voucher.allride.io/api-reference/partner-sso-connections-deactivate.md), [Verify SSO email domains](https://docs-provider.voucher.allride.io/api-reference/partner-sso-connections-verify.md)

### `stock-alert-rule-not-found`

**404 Not found** · Stock alert rule not found · Retry: after changing the request

This voucher set has no provider stock alert rule (only sets created by AllRide for a shell partner).

**What to do:** Create the rule with PUT on the stock-alert-rule path.

Returned by: [Get the stock alert rule](https://docs-provider.voucher.allride.io/api-reference/provider-stock-alert-rules-get.md)

### `voucher-not-found`

**404 Not found** · Voucher not found · Retry: after changing the request

No voucher with this id exists for your partner (or, inside a batch revocation, in this voucher set).

**What to do:** Check the voucher id.

Returned by: [Get a voucher](https://docs-provider.voucher.allride.io/api-reference/provider-vouchers-get.md), [Reveal a voucher value](https://docs-provider.voucher.allride.io/api-reference/provider-vouchers-reveal.md), [Revoke a voucher](https://docs-provider.voucher.allride.io/api-reference/provider-vouchers-revoke.md)

### `voucher-set-not-found`

**404 Not found** · Voucher set not found · Retry: after changing the request

No voucher set with this id exists for your partner.

**What to do:** Check the id; ids of other partners are reported as not found.

Returned by: [Get a voucher set](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-get.md), [Update a voucher set](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-update.md), [Activate a voucher set now](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-activate.md), [Archive a voucher set](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-archive.md), [Cancel a schedule](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-cancel-schedule.md), [Deactivate a voucher set now](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-deactivate.md) and others

### `voucher-set-revision-not-found`

**404 Not found** · Voucher set revision not found · Retry: after changing the request

No revision with this id exists for this voucher set.

**What to do:** List the revisions of the voucher set.

Returned by: [Get a revision](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-set-revisions-get.md)

### `voucher-upload-not-found`

**404 Not found** · Voucher upload not found · Retry: after changing the request

No upload with this id exists for this voucher set.

**What to do:** Check both the voucher set id and the upload id.

Returned by: [Get a voucher upload](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-uploads-get.md), [Cancel a voucher upload](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-uploads-cancel.md), [Import the valid rows](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-uploads-import.md), [Start processing a voucher upload](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-uploads-start.md), [List upload row errors](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-uploads-errors.md)

### `webhook-delivery-not-found`

**404 Not found** · Webhook delivery not found · Retry: after changing the request

No webhook delivery with this id is visible to you.

**What to do:** List deliveries; they are kept for 30 days.

Returned by: [Get a webhook delivery](https://docs-provider.voucher.allride.io/api-reference/partner-webhook-deliveries-get.md), [Replay a webhook delivery](https://docs-provider.voucher.allride.io/api-reference/partner-webhook-deliveries-replay.md)

### `webhook-endpoint-not-found`

**404 Not found** · Webhook endpoint not found · Retry: after changing the request

No webhook endpoint with this id exists in your partner.

**What to do:** List your webhook endpoints.

Returned by: [Get a webhook endpoint](https://docs-provider.voucher.allride.io/api-reference/partner-webhook-endpoints-get.md), [Update a webhook endpoint](https://docs-provider.voucher.allride.io/api-reference/partner-webhook-endpoints-update.md), [Pause a webhook endpoint](https://docs-provider.voucher.allride.io/api-reference/partner-webhook-endpoints-pause.md), [Replay failed deliveries](https://docs-provider.voucher.allride.io/api-reference/partner-webhook-endpoints-replay-failed.md), [Resume a webhook endpoint](https://docs-provider.voucher.allride.io/api-reference/partner-webhook-endpoints-resume.md), [Rotate the first signing secret](https://docs-provider.voucher.allride.io/api-reference/partner-webhook-endpoints-rotate-first-secret.md) and others

## 405 Method not allowed

### `method-not-allowed`

**405 Method not allowed** · Method not allowed · Retry: never

The path exists but not with this method.

**What to do:** Use a method listed in the Allow header.

## 409 Conflict

### `brand-asset-in-use`

**409 Conflict** · Brand asset in use · Retry: after changing the request

The asset is referenced by live or draft content or by an open change request; more.references lists where.

**What to do:** Remove the references first.

**Details in `more`:** `references` (Up to 20 places that use the asset: `{type, id, pointer}`.)

Returned by: [Delete a brand asset](https://docs-provider.voucher.allride.io/api-reference/provider-brand-assets-delete.md), [Delete a brand asset](https://docs-provider.voucher.allride.io/api-reference/partner-brand-assets-delete.md)

### `change-request-open`

**409 Conflict** · Change request open · Retry: after changing the request

The subject already has an open change request (more.openChangeRequestId names it), or the voucher set's draft is held by that open change request.

**What to do:** Edit, submit or withdraw the open change request instead.

**Details in `more`:** `openChangeRequestId` (The open change request.)

Returned by: [Update a voucher set](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-update.md), [Archive a voucher set](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-archive.md), [Create a voucher set change request](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-set-change-requests-create.md), [Create a provider profile change request](https://docs-provider.voucher.allride.io/api-reference/provider-provider-profile-change-requests-create.md), [Create a listing branding change request](https://docs-provider.voucher.allride.io/api-reference/provider-listing-branding-change-requests-create.md)

### `concurrent-update`

**409 Conflict** · Concurrent update · Retry: with backoff

A database conflict persisted after internal retries. Not stored for idempotency.

**What to do:** Retry with the same Idempotency-Key and backoff.

### `group-in-use`

**409 Conflict** · Group in use · Retry: after changing the request

The group is the default group of an SSO connection's automatic member provisioning.

**What to do:** Change the SSO connection first.

Returned by: [Delete a group](https://docs-provider.voucher.allride.io/api-reference/partner-groups-delete.md)

### `group-name-taken`

**409 Conflict** · Group name taken · Retry: after changing the request

An active group with this name already exists.

**What to do:** Choose another name.

Returned by: [Create a group](https://docs-provider.voucher.allride.io/api-reference/partner-groups-create.md), [Update a group](https://docs-provider.voucher.allride.io/api-reference/partner-groups-update.md)

### `idempotency-key-in-use`

**409 Conflict** · Idempotency-Key in use · Retry: after the Retry-After delay

A request with the same Idempotency-Key is still being processed.

**What to do:** Retry with the same key after the Retry-After interval.

### `invalid-state-transition`

**409 Conflict** · Invalid state transition · Retry: after changing the request

The command is not allowed in the resource's current status; the message names the from and to states. This is also the answer when another change moved the resource first: the status is checked when the command runs.

**What to do:** Read the resource and send a command that its current status allows.

Returned by: [Complete a brand asset upload](https://docs-provider.voucher.allride.io/api-reference/provider-brand-assets-complete.md), [Activate a voucher set now](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-activate.md), [Archive a voucher set](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-archive.md), [Cancel a schedule](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-cancel-schedule.md), [Deactivate a voucher set now](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-deactivate.md), [Schedule activation](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-schedule-activation.md) and others

### `ip-allowlist-entry-exists`

**409 Conflict** · IP allowlist entry exists · Retry: never

This CIDR block is already in the allowlist.

**What to do:** Leave the existing entry as it is.

Returned by: [Add an IP allowlist entry](https://docs-provider.voucher.allride.io/api-reference/partner-ip-allowlist-create.md)

### `ip-allowlist-required`

**409 Conflict** · IP allowlist required · Retry: after changing the request

IP allowlist enforcement needs at least one entry; this change would enable it with none or delete the last entry.

**What to do:** Add entries before enabling enforcement, or turn enforcement off first.

Returned by: [Update security settings](https://docs-provider.voucher.allride.io/api-reference/partner-partner-update-settings.md), [Remove an IP allowlist entry](https://docs-provider.voucher.allride.io/api-reference/partner-ip-allowlist-delete.md)

### `landing-legal-urls-required`

**409 Conflict** · Landing legal URLs required · Retry: after changing the request

Consumer partners only (the shared route serves both audiences): the change would clear landing.privacyUrl or landing.imprintUrl while the consumer has a Redemption Link that is not revoked; more.nonRevokedLinkCount says how many. Nothing was saved. Provider workspaces never get this error.

**What to do:** Revoke the links first, or keep both URLs set.

Returned by: [Replace the workspace branding](https://docs-provider.voucher.allride.io/api-reference/partner-workspace-branding-replace.md)

### `last-owner`

**409 Conflict** · Last owner · Retry: never

The operation would leave the partner without an active owner.

**What to do:** Add another owner first.

Returned by: [Remove a member](https://docs-provider.voucher.allride.io/api-reference/partner-members-remove.md), [Suspend a member](https://docs-provider.voucher.allride.io/api-reference/partner-members-suspend.md), [Update a group](https://docs-provider.voucher.allride.io/api-reference/partner-groups-update.md)

### `membership-exists`

**409 Conflict** · Membership exists · Retry: never

The email already has a membership in this partner.

**What to do:** Use the existing membership or resend its invitation.

Returned by: [Invite a member](https://docs-provider.voucher.allride.io/api-reference/partner-members-create.md)

### `self-modification-not-allowed`

**409 Conflict** · Self-modification not allowed · Retry: never

Nobody can change their own permissions, groups or status.

**What to do:** Ask another administrator.

Returned by: [Change a member's direct permissions](https://docs-provider.voucher.allride.io/api-reference/partner-members-update.md), [Remove a member](https://docs-provider.voucher.allride.io/api-reference/partner-members-remove.md), [Suspend a member](https://docs-provider.voucher.allride.io/api-reference/partner-members-suspend.md), [Unsuspend a member](https://docs-provider.voucher.allride.io/api-reference/partner-members-unsuspend.md), [Create a group](https://docs-provider.voucher.allride.io/api-reference/partner-groups-create.md), [Update a group](https://docs-provider.voucher.allride.io/api-reference/partner-groups-update.md)

### `sso-connection-exists`

**409 Conflict** · SSO connection exists · Retry: after changing the request

The partner already has an SSO connection that is not disabled.

**What to do:** Edit or deactivate the existing connection.

Returned by: [Create an SSO connection](https://docs-provider.voucher.allride.io/api-reference/partner-sso-connections-create.md)

### `sso-domain-unverified`

**409 Conflict** · SSO domain unverified · Retry: after changing the request

An SSO connection needs at least one verified email domain before it can be activated.

**What to do:** Publish the TXT record and call :verify.

Returned by: [Activate an SSO connection](https://docs-provider.voucher.allride.io/api-reference/partner-sso-connections-activate.md)

### `system-group-immutable`

**409 Conflict** · System group immutable · Retry: never

System groups cannot be renamed or deleted, and the owners group's permissions are fixed.

**What to do:** Create a custom group instead.

Returned by: [Update a group](https://docs-provider.voucher.allride.io/api-reference/partner-groups-update.md), [Delete a group](https://docs-provider.voucher.allride.io/api-reference/partner-groups-delete.md)

### `upload-file-missing`

**409 Conflict** · Upload file missing · Retry: after changing the request

No file was found at the upload target.

**What to do:** PUT the file to uploadTarget.url with the exact headers, then call the command again.

Returned by: [Complete a brand asset upload](https://docs-provider.voucher.allride.io/api-reference/provider-brand-assets-complete.md), [Start processing a voucher upload](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-uploads-start.md), [Complete a brand asset upload](https://docs-provider.voucher.allride.io/api-reference/partner-brand-assets-complete.md)

### `voucher-kind-locked`

**409 Conflict** · Voucher kind locked · Retry: never

voucherKind can change only while the set is a draft without vouchers.

**What to do:** Create a new voucher set with the other kind.

Returned by: [Update a voucher set](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-update.md)

### `voucher-not-revocable`

**409 Conflict** · Voucher not revocable · Retry: never

Only available vouchers can be revoked; this one is exhausted, expired or already revoked.

**What to do:** Leave the voucher as it is.

Returned by: [Revoke several vouchers](https://docs-provider.voucher.allride.io/api-reference/provider-vouchers-revoke-many.md), [Revoke a voucher](https://docs-provider.voucher.allride.io/api-reference/provider-vouchers-revoke.md)

### `voucher-set-archived`

**409 Conflict** · Voucher set archived · Retry: never

The voucher set is archived, which is terminal.

**What to do:** Create a new voucher set.

Returned by: [Update a voucher set](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-update.md), [Activate a voucher set now](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-activate.md), [Cancel a schedule](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-cancel-schedule.md), [Deactivate a voucher set now](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-deactivate.md), [Schedule activation](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-schedule-activation.md), [Schedule deactivation](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-schedule-deactivation.md) and others

### `voucher-set-suspended`

**409 Conflict** · Voucher set suspended · Retry: never

AllRide has suspended the voucher set; providers cannot activate, schedule, archive, change or add vouchers to it.

**What to do:** Contact AllRide support.

Returned by: [Activate a voucher set now](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-activate.md), [Archive a voucher set](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-archive.md), [Cancel a schedule](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-cancel-schedule.md), [Deactivate a voucher set now](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-deactivate.md), [Schedule activation](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-schedule-activation.md), [Schedule deactivation](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-schedule-deactivation.md) and others

### `voucher-upload-in-progress`

**409 Conflict** · Voucher upload in progress · Retry: after changing the request

The voucher set has an upload that is being validated or imported.

**What to do:** Wait for the upload to finish, then retry.

Returned by: [Archive a voucher set](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-archive.md)

### `voucher-upload-limit-reached`

**409 Conflict** · Voucher upload limit reached · Retry: after changing the request

The voucher set already has 10 uploads in a non-terminal status.

**What to do:** Finish or cancel uploads before creating another.

Returned by: [Create a voucher upload](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-uploads-create.md)

### `voucher-value-exists`

**409 Conflict** · Voucher value exists · Retry: after changing the request

A value of the batch already exists in the voucher set; more.validationErrors names each item. Nothing was created.

**What to do:** Remove the existing values and send the batch with a new Idempotency-Key.

**Details in `more`:** `validationErrors` (One entry per existing value, `property` names the item.)

Returned by: [Create vouchers in a batch](https://docs-provider.voucher.allride.io/api-reference/provider-vouchers-batch.md)

### `webhook-endpoint-not-active`

**409 Conflict** · Webhook endpoint not active · Retry: after changing the request

Test events and replays need an active endpoint; this one is paused or deleted.

**What to do:** Resume the endpoint, then retry.

Returned by: [Replay failed deliveries](https://docs-provider.voucher.allride.io/api-reference/partner-webhook-endpoints-replay-failed.md), [Send a test event](https://docs-provider.voucher.allride.io/api-reference/partner-webhook-endpoints-send-test-event.md), [Replay a webhook delivery](https://docs-provider.voucher.allride.io/api-reference/partner-webhook-deliveries-replay.md)

## 410 Gone

### `api-version-sunset`

**410 Gone** · API version sunset · Retry: never

The operation or API version is past its Sunset date.

**What to do:** Move to the operation named in more.successorUrl.

**Details in `more`:** `sunsetAt` (Sunset date.), `successorUrl` (The successor.)

### `webhook-event-expired`

**410 Gone** · Webhook event expired · Retry: never

The event of this delivery is older than the 30-day retention and cannot be replayed.

**What to do:** Fetch the current state through the API instead.

Returned by: [Replay a webhook delivery](https://docs-provider.voucher.allride.io/api-reference/partner-webhook-deliveries-replay.md)

## 422 Unprocessable content

### `api-key-limit-reached`

**422 Unprocessable content** · API key limit reached · Retry: after changing the request

The partner already has 20 active API keys.

**What to do:** Revoke unused keys.

Returned by: [Create an API key](https://docs-provider.voucher.allride.io/api-reference/partner-api-keys-create.md)

### `batch-too-large`

**422 Unprocessable content** · Batch too large · Retry: after changing the request

The batch has more than 1,000 vouchers.

**What to do:** Split the batch, or use a voucher upload.

Returned by: [Create vouchers in a batch](https://docs-provider.voucher.allride.io/api-reference/provider-vouchers-batch.md)

### `brand-asset-limit-reached`

**422 Unprocessable content** · Brand asset limit reached · Retry: after changing the request

The partner already has 500 counted brand assets.

**What to do:** Delete unused assets.

Returned by: [Create a brand asset](https://docs-provider.voucher.allride.io/api-reference/provider-brand-assets-create.md), [Create a brand asset](https://docs-provider.voucher.allride.io/api-reference/partner-brand-assets-create.md)

### `content-blocked`

**422 Unprocessable content** · Content blocked · Retry: after changing the request

A saved text breaks the content rules; more.validationErrors lists one public reason per field.

**What to do:** Change the fields named in more.validationErrors; see the content rules guide.

**Details in `more`:** `validationErrors` (One public reason per field, as `constraint`.)

Returned by: [Replace the workspace branding](https://docs-provider.voucher.allride.io/api-reference/partner-workspace-branding-replace.md)

### `idempotency-key-reused`

**422 Unprocessable content** · Idempotency-Key reused · Retry: after changing the request

The Idempotency-Key was already used for a different request.

**What to do:** Use a new key for a new request.

### `insufficient-contrast`

**422 Unprocessable content** · Insufficient contrast · Retry: after changing the request

Text and background colours, or button text and button colours, are below a 4.5:1 contrast ratio.

**What to do:** Choose colours with more contrast.

Returned by: [Replace the workspace branding](https://docs-provider.voucher.allride.io/api-reference/partner-workspace-branding-replace.md)

### `invalid-schedule`

**422 Unprocessable content** · Invalid schedule · Retry: after changing the request

activeFrom must be before deactivateAt, deactivateAt must be in the future, and both at most 2 years ahead.

**What to do:** Correct the instant named in more.validationErrors.

**Details in `more`:** `validationErrors` (The instant that breaks the rule.)

Returned by: [Schedule activation](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-schedule-activation.md), [Schedule deactivation](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-sets-schedule-deactivation.md)

### `ip-allowlist-limit-reached`

**422 Unprocessable content** · IP allowlist limit reached · Retry: after changing the request

The partner already has 100 allowlist entries.

**What to do:** Merge entries into wider CIDR blocks.

Returned by: [Add an IP allowlist entry](https://docs-provider.voucher.allride.io/api-reference/partner-ip-allowlist-create.md)

### `ip-allowlist-would-lock-out`

**422 Unprocessable content** · IP allowlist would lock out · Retry: after changing the request

The change would block the calling user's current IP address.

**What to do:** Add your current address first.

Returned by: [Update security settings](https://docs-provider.voucher.allride.io/api-reference/partner-partner-update-settings.md), [Remove an IP allowlist entry](https://docs-provider.voucher.allride.io/api-reference/partner-ip-allowlist-delete.md)

### `link-host-in-use`

**422 Unprocessable content** · Link host in use · Retry: after changing the request

The change removes an allowed link host or scheme that available vouchers or the link template still use; the message lists them.

**What to do:** Revoke those vouchers or keep the host.

Returned by: [Create a voucher set change request](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-set-change-requests-create.md), [Edit a voucher set change request](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-set-change-requests-update.md), [Submit a voucher set change request](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-set-change-requests-submit.md)

### `permission-not-applicable`

**422 Unprocessable content** · Permission not applicable · Retry: after changing the request

A permission does not apply to your partner's roles.

**What to do:** Use permissions of your partner's roles.

Returned by: [Create an API key](https://docs-provider.voucher.allride.io/api-reference/partner-api-keys-create.md)

### `private-key-not-allowed`

**422 Unprocessable content** · Private key not allowed · Retry: after changing the request

The request contains a private key. Only public certificates are accepted.

**What to do:** Send the public certificate only; the private key never leaves your systems.

Returned by: [Create an SSO connection](https://docs-provider.voucher.allride.io/api-reference/partner-sso-connections-create.md), [Update an SSO connection](https://docs-provider.voucher.allride.io/api-reference/partner-sso-connections-update.md)

### `scope-not-delegable`

**422 Unprocessable content** · Scope not delegable · Retry: after changing the request

An API key scope is a dashboard-only permission.

**What to do:** Remove non-delegable permissions from scopes.

Returned by: [Create an API key](https://docs-provider.voucher.allride.io/api-reference/partner-api-keys-create.md)

### `slug-immutable`

**422 Unprocessable content** · Slug immutable · Retry: never

The partner slug cannot be changed.

**What to do:** Leave slug out of the request.

Returned by: [Update general information](https://docs-provider.voucher.allride.io/api-reference/partner-partner-update.md)

### `upload-size-mismatch`

**422 Unprocessable content** · Upload size mismatch · Retry: after changing the request

The uploaded file's size differs from the declared sizeBytes.

**What to do:** Create a new upload with the correct size.

Returned by: [Complete a brand asset upload](https://docs-provider.voucher.allride.io/api-reference/provider-brand-assets-complete.md), [Start processing a voucher upload](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-uploads-start.md), [Complete a brand asset upload](https://docs-provider.voucher.allride.io/api-reference/partner-brand-assets-complete.md)

### `webhook-endpoint-limit-reached`

**422 Unprocessable content** · Webhook endpoint limit reached · Retry: after changing the request

The partner already has 10 webhook endpoints.

**What to do:** Delete unused endpoints.

Returned by: [Create a webhook endpoint](https://docs-provider.voucher.allride.io/api-reference/partner-webhook-endpoints-create.md)

### `webhook-url-not-allowed`

**422 Unprocessable content** · Webhook URL not allowed · Retry: after changing the request

The endpoint URL is not https on port 443 or 8443, is not publicly resolvable, or resolves to a private address; more.reason names the check.

**What to do:** Use a public https URL.

**Details in `more`:** `reason` (Why the URL was refused.)

Returned by: [Create a webhook endpoint](https://docs-provider.voucher.allride.io/api-reference/partner-webhook-endpoints-create.md), [Update a webhook endpoint](https://docs-provider.voucher.allride.io/api-reference/partner-webhook-endpoints-update.md)

## 500 Internal error

### `internal-error`

**500 Internal error** · Internal error · Retry: with backoff

An unexpected failure occurred.

**What to do:** Retry later with the same Idempotency-Key; quote the requestId when contacting support.

## 502 Bad gateway

### `upstream-error`

**502 Bad gateway** · Upstream error · Retry: with backoff

An upstream service answered with an error.

**What to do:** Retry later.

Returned by: [Create an SSO connection](https://docs-provider.voucher.allride.io/api-reference/partner-sso-connections-create.md), [Update an SSO connection](https://docs-provider.voucher.allride.io/api-reference/partner-sso-connections-update.md)

### `upstream-unavailable`

**502 Bad gateway** · Upstream unavailable · Retry: with backoff

A service AllRide depends on could not be reached; nothing was changed.

**What to do:** Retry later with the same Idempotency-Key.

## 503 Service unavailable

### `db-unavailable`

**503 Service unavailable** · Database unavailable · Retry: after the Retry-After delay

The database is overloaded or unreachable.

**What to do:** Retry after the Retry-After interval.

### `query-timeout`

**503 Service unavailable** · Query timeout · Retry: after the Retry-After delay

A database statement took too long.

**What to do:** Retry after the Retry-After interval; narrow list filters.

### `service-unavailable`

**503 Service unavailable** · Service unavailable · Retry: after the Retry-After delay

The service is overloaded.

**What to do:** Retry after the Retry-After interval.

## 504 Gateway timeout

### `upstream-timeout`

**504 Gateway timeout** · Upstream timeout · Retry: with backoff

An upstream service did not answer in time.

**What to do:** Retry later.

Returned by: [Create an SSO connection](https://docs-provider.voucher.allride.io/api-reference/partner-sso-connections-create.md), [Update an SSO connection](https://docs-provider.voucher.allride.io/api-reference/partner-sso-connections-update.md)

## Validation item codes

Values of `more.validationErrors[].constraint` in a `data-failed-validation` (and `content-blocked`, `voucher-value-exists` or batch) error. Codes that are also error codes above are described there.

### `brand-asset-not-usable`

The asset must be ready and of a kind that fits this field.

### `category-not-active`

The category must be active.

### `content-encoded-data`

This text contains encoded data. Use plain text.

### `content-hidden-characters`

This text contains invisible or direction-changing characters. Remove them and try again.

### `content-impersonation`

This text or link uses a name or characters that imitate another brand.

### `content-markup-not-allowed`

HTML, scripts or template code are not allowed here.

### `content-suspicious-text`

This text was blocked by our safety checks.

### `content-too-large`

This content is too large.

### `content-unsafe-link`

This link is not allowed. Use an https link to a website that belongs to you.

### `domain-not-allowed`

Hosts under the AllRide platform domain are not allowed.

### `duplicate-items`

Must not contain duplicate items.

### `duplicate-value`

The same voucher value appears more than once in the request.

### `invalid-cidr`

Must be an allowed IPv4 or IPv6 CIDR block in canonical form.

### `invalid-color`

Must be a colour in the form #rrggbb.

### `invalid-country`

Must be an ISO 3166-1 alpha-2 country code.

### `invalid-date`

Must be a date in the form YYYY-MM-DD.

### `invalid-email`

Must be a valid email address.

### `invalid-enum-value`

Must be one of: \{allowed}.

### `invalid-filter`

This filter field, operator or value is not supported by the operation, the filtered range is longer than the operation allows (`params.maxMonths` or `params.maxDays`), or more than 20 filters or 100 values in one `in` filter were sent (`params.max`).

### `invalid-format`

Does not match the format \{format}.

### `invalid-hostname`

Must be a valid host name.

### `invalid-i18n-text`

Must be a text per supported locale, including the partner's default locale, within the length limit.

### `invalid-id`

Must be a positive integer id.

### `invalid-link-template`

Placeholders are allowed only in the path, query or fragment; only known variables and allowed schemes.

### `invalid-markdown`

Must be valid text in the allowed Markdown subset, including the partner's default locale.

### `invalid-metadata`

Must be a JSON object of at most 16 KiB, depth 5 and 100 keys per object.

### `invalid-money`

Must be an amount in euro cent (a non-negative integer).

### `invalid-month`

Must be a month in the form YYYY-MM.

### `invalid-page`

Must be between \{min} and \{max} (`page` 1-100,000, `perPage` 1-100).

### `invalid-slug`

Must be 2-40 lower-case letters, digits or hyphens and not a reserved name.

### `invalid-sort`

Must be one of the sortable fields in \{allowed}, optionally prefixed with - for descending; one field only.

### `invalid-threshold`

Must be one of 50, 75, 90, 100.

### `invalid-timestamp`

Must be an RFC 3339 timestamp with an offset, for example 2026-11-01T00:00:00Z.

### `invalid-timezone`

Must be an IANA time zone with whole-hour offsets, such as Europe/Berlin.

### `invalid-type`

Must be of type \{expected}.

### `invalid-url`

Must be an https URL on an allowed host.

### `link-host-not-allowed`

The link host is not in allowedLinkHosts of the voucher set.

### `link-template-requires-code-kind`

linkTemplate is allowed only on voucher sets of kind code.

### `max-redemptions-not-allowed-for-single`

Single-use vouchers cannot set maxRedemptions other than 1.

### `max-redemptions-too-small`

Multi-use vouchers need maxRedemptions of at least 2, or null for unlimited.

### `null-not-allowed`

This property must not be null.

### `out-of-range`

The value is outside the allowed range.

### `range-too-large`

The range has more buckets or months than allowed (\{max}).

### `recipient-not-eligible`

Must be an active member who can view voucher sets.

### `required`

This property, parameter or filter is required.

### `scheme-not-allowed`

This link scheme is not in allowedLinkSchemes of the voucher set.

### `sso-domain-not-allowed`

Public mailbox domains and the platform domain cannot be used.

### `terms-required`

termsText (the voucher terms of the set) is required.

### `too-few-items`

Must contain at least \{min} items.

### `too-large`

Must be at most \{max}.

### `too-long`

Must be at most \{max} characters.

### `too-many-items`

Must contain at most \{max} items.

### `too-short`

Must be at least \{min} characters.

### `too-small`

Must be at least \{min}.

### `unknown-field`

This property is not allowed.

### `unknown-parameter`

This query parameter is not supported by the operation.

### `unsupported-locale`

Must be a supported locale (de, en).

### `validity-window-invalid`

validUntil must be after validFrom and in the future.

### `webhook-event-type-not-allowed`

This event type is not available for your partner's roles.

## Upload row codes

Codes of the rows listed by [List upload row errors](https://docs-provider.voucher.allride.io/api-reference/provider-voucher-uploads-errors.md). `duplicate-in-file` and `value-exists` report skipped duplicates and do not make a row invalid.

| Code | Meaning |
| - | - |
| `value-missing` | The value cell is empty. |
| `value-invalid` | The value is malformed: a code longer than 256 characters or with spaces, a malformed link or a forbidden scheme. |
| `link-host-not-allowed` | The link's host is not in allowedLinkHosts. |
| `scheme-not-allowed` | The link's scheme is not in allowedLinkSchemes. |
| `redemption-type-invalid` | Not single or multiple. |
| `max-redemptions-invalid` | Not a non-negative integer or the word unlimited. |
| `max-redemptions-not-allowed-for-single` | A single row with maxRedemptions other than 1. |
| `max-redemptions-too-small` | A multiple row with maxRedemptions 0 or 1. |
| `validity-window-invalid` | validUntil not after validFrom, or not in the future (also checked again at import). |
| `date-invalid` | A timestamp without offset or not parseable. |
| `metadata-invalid` | metadata is not a JSON object within the limits. |
| `column-count-mismatch` | The row has more or fewer cells than the header. |
| `duplicate-in-file` | The value repeats an earlier row; skipped. |
| `value-exists` | The value is already in the voucher set; skipped. |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.