*REST API › Errors*

# `addon_required`

> HTTP HTTP 402.

HTTP status: `402` · Problem type: `https://docs.filmo.io/errors/addon_required`

## When it happens

402. The account has not contracted (or has let expire) the add-on the operation belongs to, named in `requiredAddon`. No role or scope bypasses it. It is answered per resource: the CRM, maintenance and incidents (the incidence add-on), purchases and custom fields each need their own add-on, and [`POST /api/v1/ai/ask`](https://docs.filmo.io/rest-api/endpoint-reference/ai/ask-the-ai-about-your-data) answers it when the account has no AI credits left. Operations that need no add-on are not affected.

## What to do

An administrator adds the add-on named in `requiredAddon` to the plan, or you stop calling the operations of that module. Do not change the key or its scopes.

## Retry

| Condition | What to do | Note |
| --- | --- | --- |
| 401 · 402 · 403 (key, owner or plan) | Stop | Do not retry: resending the same request fails again. Act on the key, its owner or the plan: use a valid key with the right scope, ask an administrator for the missing permission, or add the add-on. |

## Fields of errors[]

| Name | Type | Description |
| --- | --- | --- |
| `requiredAddon` | string | On `addon_required`: the id of the add-on the account plan needs (the ids `GET /account` lists in `addons`). `qr-codes`, `incidence`, `purchases`, `activity-log`, `custom-fields`, `profitability`, `web-builder`, `crm`, `consignments`, `email-calendar`, `sales-documents`, `internal-bookings`, `internal-communication`, `advanced-user-permissions` |

## Example

*addon_required*

```json
{
  "type": "https://docs.filmo.io/errors/addon_required",
  "title": "Add-on required",
  "status": 402,
  "code": "addon_required",
  "detail": "Your plan does not include the add-on this operation requires",
  "requestId": "req_0b9f6c1d2e3a4f5a8b7c6d5e4f3a2b1c",
  "requiredAddon": "incidence"
}
```

## Returned by

- [`GET /api/v1/repair-tickets`](https://docs.filmo.io/rest-api/endpoint-reference/repair-tickets/list-repair-tickets) — List repair tickets
- [`POST /api/v1/repair-tickets`](https://docs.filmo.io/rest-api/endpoint-reference/repair-tickets/create-a-repair-ticket) — Create a repair ticket
- [`GET /api/v1/repair-tickets/{ticketId}`](https://docs.filmo.io/rest-api/endpoint-reference/repair-tickets/get-a-repair-ticket) — Get a repair ticket
- [`PATCH /api/v1/repair-tickets/{ticketId}`](https://docs.filmo.io/rest-api/endpoint-reference/repair-tickets/update-a-repair-ticket) — Update a repair ticket
- [`PATCH /api/v1/subrents/{subrentId}`](https://docs.filmo.io/rest-api/endpoint-reference/subrents/update-a-subrent) — Update a subrent
- [`GET /api/v1/purchase-orders`](https://docs.filmo.io/rest-api/endpoint-reference/purchase-orders/list-purchase-orders) — List purchase orders
- [`GET /api/v1/purchase-orders/{purchaseOrderId}`](https://docs.filmo.io/rest-api/endpoint-reference/purchase-orders/get-a-purchase-order) — Get a purchase order
- [`PATCH /api/v1/purchase-orders/{purchaseOrderId}`](https://docs.filmo.io/rest-api/endpoint-reference/purchase-orders/update-a-purchase-order) — Update a purchase order
- [`GET /api/v1/custom-fields`](https://docs.filmo.io/rest-api/endpoint-reference/custom-fields/list-custom-field-definitions) — List custom field definitions
- [`GET /api/v1/incidents`](https://docs.filmo.io/rest-api/endpoint-reference/incidents/list-incidents) — List incidents
- [`POST /api/v1/incidents`](https://docs.filmo.io/rest-api/endpoint-reference/incidents/open-an-incident) — Open an incident
- [`GET /api/v1/incidents/{incidentId}`](https://docs.filmo.io/rest-api/endpoint-reference/incidents/get-an-incident) — Get an incident
- [`PATCH /api/v1/incidents/{incidentId}`](https://docs.filmo.io/rest-api/endpoint-reference/incidents/update-an-incident) — Update an incident
- [`GET /api/v1/incidents/status-counts`](https://docs.filmo.io/rest-api/endpoint-reference/incidents/count-incidents-by-status) — Count incidents by status
- [`POST /api/v1/incidents/{incidentId}/comments`](https://docs.filmo.io/rest-api/endpoint-reference/incidents/comment-on-an-incident) — Comment on an incident
- [`GET /api/v1/crm/opportunities`](https://docs.filmo.io/rest-api/endpoint-reference/crm/list-opportunities) — List opportunities
- [`POST /api/v1/crm/opportunities`](https://docs.filmo.io/rest-api/endpoint-reference/crm/create-an-opportunity) — Create an opportunity
- [`GET /api/v1/crm/opportunities/{opportunityId}`](https://docs.filmo.io/rest-api/endpoint-reference/crm/get-an-opportunity) — Get an opportunity
- [`PATCH /api/v1/crm/opportunities/{opportunityId}`](https://docs.filmo.io/rest-api/endpoint-reference/crm/update-an-opportunity) — Update an opportunity
- [`PATCH /api/v1/crm/opportunities/{opportunityId}/stage`](https://docs.filmo.io/rest-api/endpoint-reference/crm/move-an-opportunity-to-another-stage) — Move an opportunity to another stage
- [`POST /api/v1/crm/opportunities/{opportunityId}/close`](https://docs.filmo.io/rest-api/endpoint-reference/crm/close-an-opportunity) — Close an opportunity
- [`POST /api/v1/crm/opportunities/{opportunityId}/links`](https://docs.filmo.io/rest-api/endpoint-reference/crm/link-a-document-to-an-opportunity) — Link a document to an opportunity
- [`GET /api/v1/crm/pipelines`](https://docs.filmo.io/rest-api/endpoint-reference/crm/list-pipelines) — List pipelines
- [`GET /api/v1/crm/pipelines/{pipelineId}`](https://docs.filmo.io/rest-api/endpoint-reference/crm/get-a-pipeline) — Get a pipeline
- [`POST /api/v1/purchase-orders/{purchaseOrderId}/approve`](https://docs.filmo.io/rest-api/endpoint-reference/purchase-orders/approve-a-purchase-order) — Approve a purchase order
- [`POST /api/v1/purchase-orders/{purchaseOrderId}/receive`](https://docs.filmo.io/rest-api/endpoint-reference/purchase-orders/receive-material-from-a-purchase-order) — Receive material from a purchase order
- [`GET /api/v1/supplier-invoices`](https://docs.filmo.io/rest-api/endpoint-reference/supplier-invoices/list-supplier-invoices) — List supplier invoices
- [`GET /api/v1/supplier-invoices/{supplierInvoiceId}`](https://docs.filmo.io/rest-api/endpoint-reference/supplier-invoices/get-a-supplier-invoice) — Get a supplier invoice
- [`POST /api/v1/ai/ask`](https://docs.filmo.io/rest-api/endpoint-reference/ai/ask-the-ai-about-your-data) — Ask the AI about your data
- [`POST /api/v1/invoices/{invoiceId}/validate`](https://docs.filmo.io/rest-api/endpoint-reference/invoices/validate-an-invoice) — Validate an invoice
- [`PUT /api/v1/invoices/external/{originSystem}/{originExternalId}`](https://docs.filmo.io/rest-api/endpoint-reference/invoices/create-or-update-the-mirror-of-an-externally-issued-invoice) — Create or update the mirror of an externally issued invoice
- [`PATCH /api/v1/proformas/{proformaId}/status`](https://docs.filmo.io/rest-api/endpoint-reference/proformas/change-the-commercial-status-of-a-proforma) — Change the commercial status of a proforma
- [`PATCH /api/v1/quotes/{quoteId}/status`](https://docs.filmo.io/rest-api/endpoint-reference/quotes/change-the-commercial-status-of-a-quote) — Change the commercial status of a quote
- [`POST /api/v1/contracts/{contractId}/validate`](https://docs.filmo.io/rest-api/endpoint-reference/contracts/validate-a-contract) — Validate a contract
- [`POST /api/v1/contracts/{contractId}/sign`](https://docs.filmo.io/rest-api/endpoint-reference/contracts/record-the-signature-of-a-contract) — Record the signature of a contract
- [`POST /api/v1/supplier-invoices/{supplierInvoiceId}/validate`](https://docs.filmo.io/rest-api/endpoint-reference/supplier-invoices/validate-a-supplier-invoice) — Validate a supplier invoice
- [`POST /api/v1/supplier-invoices/{supplierInvoiceId}/void`](https://docs.filmo.io/rest-api/endpoint-reference/supplier-invoices/void-a-supplier-invoice) — Void a supplier invoice

## 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/addon_required  
Last updated: 2026-10-25