*Overview › Core concepts*

# Plans and add-ons

> The API and MCP are included in any paid plan; they are not an add-on. Access needs an administrator and the API switched on by Filmo for your environment; some modules need their add-on. Call `GET /api/v1/account` to see which add-ons the account has today.

## API and MCP access

The API and the MCP server are included in any paid plan and are not an add-on: the API does not check the plan or any add-on to let a key in. Access needs two things: Filmo has switched the API and MCP on for the environment your account lives in (a switch on Filmo's side, not an account setting), and an administrator creates the key or approves the OAuth connection. The rate limits are the same for every plan. Modules that have an add-on keep it, as the next section says. The help center covers the subscription in [Your subscription](https://www.filmo.io/help/reference/account-and-settings/your-filmo-subscription/your-subscription).

## Add-ons

Some modules sit behind an add-on. If the account has not contracted it, or has let it expire, an operation of that module answers 402 [`addon_required`](https://docs.filmo.io/rest-api/errors/addon_required) and `requiredAddon` names the add-on. It is a 402 and not a 403 because it is about the add-on, not about permissions. The answer is per resource: the same key can call other resources of the account without any add-on.

| Add-on | Opens |
| --- | --- |
| `crm` | Opportunities and pipelines |
| `incidence` | Incidents and repair tickets |
| `purchases` | Purchase orders, supplier invoices and subrent updates |
| `custom-fields` | Custom field definitions |
| AI credit | `POST /api/v1/ai/ask`. Without quota it answers 402 |

That table names the main add-ons. The ids come from a closed catalog: [`addons`](https://docs.filmo.io/rest-api/objects/account#response-addons) lists the ones the account has, and each operation that can answer 402 names its add-on in the `x-required-addon` extension of the specification. Some operations outside these modules can also respond 402.

## Which operations can answer 402

The list is generated from the 402 responses the spec declares. Each operation on it names its add-on.

| Operation | Scope |
| --- | --- |
| `GET /api/v1/repair-tickets` | `repair-tickets:read` |
| `POST /api/v1/repair-tickets` | `repair-tickets:write` |
| `GET /api/v1/repair-tickets/{ticketId}` | `repair-tickets:read` |
| `PATCH /api/v1/repair-tickets/{ticketId}` | `repair-tickets:write` |
| `PATCH /api/v1/subrents/{subrentId}` | `subrents:write` |
| `GET /api/v1/purchase-orders` | `purchase-orders:read` |
| `GET /api/v1/purchase-orders/{purchaseOrderId}` | `purchase-orders:read` |
| `PATCH /api/v1/purchase-orders/{purchaseOrderId}` | `purchase-orders:write` |
| `GET /api/v1/custom-fields` | `custom-fields:read` |
| `GET /api/v1/incidents` | `incidents:read` |
| `POST /api/v1/incidents` | `incidents:write` |
| `GET /api/v1/incidents/{incidentId}` | `incidents:read` |
| `PATCH /api/v1/incidents/{incidentId}` | `incidents:write` |
| `GET /api/v1/incidents/status-counts` | `incidents:read` |
| `POST /api/v1/incidents/{incidentId}/comments` | `incidents:write` |
| `GET /api/v1/crm/opportunities` | `crm:read` |
| `POST /api/v1/crm/opportunities` | `crm:write` |
| `GET /api/v1/crm/opportunities/{opportunityId}` | `crm:read` |
| `PATCH /api/v1/crm/opportunities/{opportunityId}` | `crm:write` |
| `PATCH /api/v1/crm/opportunities/{opportunityId}/stage` | `crm:write` |
| `POST /api/v1/crm/opportunities/{opportunityId}/close` | `crm:write` |
| `POST /api/v1/crm/opportunities/{opportunityId}/links` | `crm:write` |
| `GET /api/v1/crm/pipelines` | `crm:read` |
| `GET /api/v1/crm/pipelines/{pipelineId}` | `crm:read` |
| `POST /api/v1/purchase-orders/{purchaseOrderId}/approve` | `purchase-orders:write` |
| `POST /api/v1/purchase-orders/{purchaseOrderId}/receive` | `purchase-orders:write` |
| `GET /api/v1/supplier-invoices` | `supplier-invoices:read` |
| `GET /api/v1/supplier-invoices/{supplierInvoiceId}` | `supplier-invoices:read` |
| `POST /api/v1/ai/ask` | `ai:ask` |
| `POST /api/v1/invoices/{invoiceId}/validate` | `invoices:write` |
| `PUT /api/v1/invoices/external/{originSystem}/{originExternalId}` | `invoices:write` |
| `PATCH /api/v1/proformas/{proformaId}/status` | `invoices:write` |
| `PATCH /api/v1/quotes/{quoteId}/status` | `quotes:write` |
| `POST /api/v1/contracts/{contractId}/validate` | `contracts:write` |
| `POST /api/v1/contracts/{contractId}/sign` | `contracts:write` |
| `POST /api/v1/supplier-invoices/{supplierInvoiceId}/validate` | `supplier-invoices:write` |
| `POST /api/v1/supplier-invoices/{supplierInvoiceId}/void` | `supplier-invoices:write` |

## See them in your account

[`GET /api/v1/account`](https://docs.filmo.io/rest-api/endpoint-reference/account/get-the-account) returns [`addons`](https://docs.filmo.io/rest-api/objects/account#response-addons), the add-ons the account has access to today. Read it at start-up and before you call a resource behind an add-on. The MCP server lists only the tools the key can call.

## Free trial

A free trial lasts 14 days and needs no card. During it an administrator can create keys and connect OAuth and MCP, like in any account, so it serves to try the API. [`trial`](https://docs.filmo.io/rest-api/objects/account#response-trial) has `active`, true while the trial lasts, and `endsAt`. While a trial is active every add-on is unlocked, so what you build during it can start answering 402 afterwards.

- When the trial ends, keys and OAuth connections are not revoked, and authentication does not look at the trial. Endpoints behind an add-on answer 402 [`addon_required`](https://docs.filmo.io/rest-api/errors/addon_required); endpoints that need no add-on keep working.
- Validating an invoice or a credit note in a trial account uses up numbers of its numbering. Validate only what a test needs.
- Filmo purges the data of an account whose trial ended and that has not been converted to a paid subscription about 30 days after the end.
- Read [`addons`](https://docs.filmo.io/rest-api/objects/account#response-addons) on the account you will use in production, not only on the trial, and handle [`addon_required`](https://docs.filmo.io/rest-api/errors/addon_required) explicitly.

Testing guidance is in [Testing](https://docs.filmo.io/rest-api/guides/testing), and the help center covers billing in [Your subscription](https://www.filmo.io/help/reference/account-and-settings/your-filmo-subscription/your-subscription).

---

Canonical URL: https://docs.filmo.io/concepts/plans-and-add-ons  
Last updated: 2026-10-09