*REST API › Errors*

# `internal_error`

> 500. Something failed on Filmo's side, or the store that counts the rate limit was unavailable (the API does not let the request through unmetered). With an `Idempotency-Key`, a 500 can happen after the write was committed (the response could not be built); that error is then stored and replayed with `Idempotent-Replay: true` for 24 hours, so resending does not write twice and does not recover either. HTTP 500.

HTTP status: `500` · Problem type: `https://docs.filmo.io/errors/internal_error`

## When it happens

500. Something failed on Filmo's side, or the store that counts the rate limit was unavailable (the API does not let the request through unmetered). With an `Idempotency-Key`, a 500 can happen after the write was committed (the response could not be built); that error is then stored and replayed with `Idempotent-Replay: true` for 24 hours, so resending does not write twice and does not recover either.

## What to do

Note the `requestId` (it is also the `X-Request-Id` header). If the request was a write, read the resource to see where it stands before doing anything else. If the same request keeps failing, contact support with the `requestId`.

## Retry

| Condition | What to do | Note |
| --- | --- | --- |
| 500 internal_error · Idempotency-Key: Yes · Idempotent-Replay: true | Stop | Stop. The failure happened after the commit and is stored and repeated for 24 h with that key: read the resource to see where it ended up. |
| 500 internal_error · Idempotency-Key: Yes | Retry with backoff | Retry with exponential backoff and the same key. |
| 500 internal_error · Idempotency-Key: No | Read the resource first | Read before retrying a write: without a key nothing protects you from a duplicate. |

## Example

*internal_error*

```json
{
  "type": "https://docs.filmo.io/errors/internal_error",
  "title": "Internal error",
  "status": 500,
  "code": "internal_error",
  "detail": "Internal error",
  "requestId": "req_0b9f6c1d2e3a4f5a8b7c6d5e4f3a2b1c"
}
```

## Returned by

`internal_error` can be returned by any operation.

## Through MCP

A tool call that fails comes back with `isError` set and the problem as structured content, with the same `code`.

---

Canonical URL: https://docs.filmo.io/rest-api/errors/internal_error  
Last updated: 2026-10-25