# Error code reference

> Every error message RemakeCV can show, what causes it, and how to resolve it — covering the web app and the public API.

Source: https://www.remakecv.com/help/troubleshooting/error-codes
Last updated: 2026-08-21

---
This page lists every error RemakeCV can return, in the app and through the API, with its cause and resolution. API errors are identified by a machine-readable `code` and carry a `request_id`; log that identifier, because it is what support needs to trace the specific call.

## Application messages

| Message | Cause | Resolution |
|---|---|---|
| Dialog: **No Credits Left** — "You have run out of credits. Please top up to continue using the service." | The company credit balance is exhausted | Top up, or wait for the billing cycle to refresh |
| Dialog: **Credit Limit Reached** — "You have reached your individual or shared credit limit for this period." | An individual or shared-pool cap was hit while the company still has credits | An administrator raises the limit — see [credits explained](https://www.remakecv.com/help/account-and-billing/credits-explained.md) |
| `Please select a file to upload` | No file was attached | Select the file |
| `Please select files to upload` | Bulk upload started with no files | Select the files |
| `Failed to upload and process file` | Upload or processing failed | See [upload failed](https://www.remakecv.com/help/troubleshooting/upload-failed.md) |
| `Upload functionality is restricted for this account.` | Account-level restriction | Contact your administrator or support |
| `Company configuration not loaded. Please try again.` | Company settings did not load | Refresh; if it persists, contact support |
| `No file available to regenerate summary` | Summary requested with no source CV loaded | Reopen the CV first |
| `Error regenerating summary` | Summary generation failed | Retry; if it persists, contact support |
| `Could not accept all changes. Please retry or accept changes in smaller batches.` | Too many edits applied at once | Accept changes in smaller groups |
| `Could not process the selected file from JobAdder.` | The file could not be retrieved from JobAdder | See [integration sync errors](https://www.remakecv.com/help/troubleshooting/integration-sync-errors.md) |
| `Too many Vincere requests. Please retry shortly.` | Vincere requests are rate limited per company | Wait and retry |
| `Failed to search for candidates.` / `Failed to upload CV.` / `Failed to create contact from CV.` | Mercury operation failed | See [Mercury](https://www.remakecv.com/help/integrations/mercury.md) |
| `Failed to convert DOCX to PDF` | PDF generation failed server-side | Retry; if it persists, contact support |
| `Unsupported file type. Please upload a PDF, DOCX, or DOC file.` | The file is not a supported format | Convert the file |
| A red status on a file in a bulk upload, with no message | A per-file failure in batch mode | Retry that file on its own to see the actual error |

## API error codes

Every API error returns `code`, `message` and `request_id`.

| Status | Code | Cause | Resolution |
|---|---|---|---|
| `400` | `validation_error` | Malformed request, or file over the size limit | The message names the specific problem |
| `400` | `upload_required` | No file supplied where one is required | Send the file in the `file` multipart field |
| `400` | `acting_user_required` | `acting_user_email` missing | Add it |
| `400` | `storage_required` | Operation needs CV storage, which is disabled | Enable CV storage |
| `401` | `unauthorized` | `Authorization` header missing or malformed | Send `Authorization: Bearer <key>` |
| `401` | `invalid_api_key` | Key not found, inactive, revoked or expired | Check or replace the key |
| `403` | `api_disabled` | Public API not enabled for this company | Email support@remakecv.com |
| `403` | `cv_storage_disabled` | CV storage is off, so stored CVs cannot be listed | Enable storage, or use `download_url` at processing time |
| `403` | `forbidden` | Key not permitted for this resource | Confirm the resource belongs to your company |
| `404` | `not_found` | CV does not exist for this company | Check the `cvId` |
| `404` | `company_not_found` | The key's company no longer exists | Contact support |
| `404` | `acting_user_invalid` | Acting user is not a member of this company | Use a valid consultant email |
| `429` | `rate_limit_exceeded` | Over 30 requests per minute | Back off — see [rate limits](https://www.remakecv.com/help/api-reference/rate-limits.md) |
| `500` | `internal_error` | Failure on our side | Retry once, then send us the `request_id` |
| `400` / `500` | `process_failed` | CV processing failed — **including credit rejections** | Read `message`; see below |
| `400` / `500` | `storage_failed` | The CV processed but could not be stored | Retry; the `download_url` from the response may still work |

> **Warning:** 
**Credit failures arrive as `process_failed`, not a dedicated code.** A company out of credits returns `400 process_failed` with `message` set to `No credits left`, and a per-user cap returns the same code with `credit limit reached`. If you need to handle these distinctly — and you should, since one needs a top-up and the other an administrator — branch on `message` for these two cases specifically.

> **Tip:** 
Log `request_id` for every API error, alongside the endpoint and the acting user. That combination lets support reconstruct almost any failure without a further round trip — and it is returned in the `X-Request-Id` header on successful responses too.

## Retry policy

| Category | Retry? |
|---|---|
| `429` | Yes — exponential backoff with jitter |
| `5xx` | Once, then escalate |
| `4xx` | No — the request itself needs fixing |

## Reporting an error

Email support@remakecv.com with:

- The exact message or error code
- The `request_id` if it was an API call
- What you were doing and roughly when
- The source CV, if it was a processing failure

## Frequently asked questions

### What is a request_id?

A unique identifier for one API call, returned in every error body and in the X-Request-Id header on every response. Include it when contacting support.

### Do errors consume credits?

Almost never — credits are deducted only after a CV parses successfully. The one exception is an API storage_failed, where processing succeeded and only the storage step failed, so the credit has already been spent.

### Which errors are worth retrying?

429 rate_limit_exceeded with backoff, and 500 internal_error once. Every 4xx error will fail identically on retry.
