Guides
OpenAPI file and generated clients
Filmo publishes its whole API as an OpenAPI 3.1 file. Use it to generate a typed client, to import the API into Postman, Insomnia or Bruno, or to run a mock server on your machine.
Download the file
Link to this section: Download the file- JSON:
https://docs. filmo. io /openapi. json - YAML:
https://docs. filmo. io /openapi. yaml
Both files describe the same contract. The version and the date of the snapshot these docs are built from are on the OpenAPI reference page, together with an index of every schema. The compatibility policy is described in Versioning. Whatever your tool takes as the server, send requests to https://.
What is in the file
Link to this section: What is in the file- It is OpenAPI 3.1. A nullable value is written as
type: ["string", "null"], and unions useanyOf. Tools that only understand 3.0 misread both. - Every operation has a stable
operationId, the name the docs use (GET /api,/v1 /orders POST /api)./v1 /orders - Schema names end in
Dtofor what the API returns and inBodyfor what you send (OrderUpdateBody). Generated clients expose them as type names. - Money is a decimal string such as
"1234., never a float. Keep it as a string or a decimal type in your client.50" - Each operation lists its scope in
x-required-scopeand its quotas inx-rateLimit.
Generate a client
Link to this section: Generate a clientTypeScript types with openapi-typescript
Link to this section: TypeScript types with openapi-typescriptnpx openapi-typescript https://docs.filmo.io/openapi.json -o filmo.d.tsPair the types with a small fetch wrapper such as openapi-fetch. The path keys include the /api prefix.
import createClient from "openapi-fetch";
import type { paths } from "./filmo";
const client = createClient<paths>({
baseUrl: process.env.FILMO_BASE_URL ?? "https://app.filmo.io",
headers: { Authorization: `Bearer ${process.env.FILMO_API_KEY}` },
});
const { data, error } = await client.GET("/api/v1/account");
if (error) throw new Error(error.code);
console.log(data.data.name);Other languages with openapi-generator
Link to this section: Other languages with openapi-generatorOpenAPI Generator covers typescript-fetch, python, csharp, java, php and go, among others. Set the base path to https:// in the generated configuration, and send the key as a bearer token.
npx @openapitools/openapi-generator-cli generate \
-i https://docs.filmo.io/openapi.json \
-g typescript-fetch \
-o ./filmo-clientPython with openapi-python-client
Link to this section: Python with openapi-python-clientopenapi-python-client generate --url https://docs.filmo.io/openapi.jsonThe availability responses are unions: each entry is one of several named schemas (a result, or an entry that says the item or resource was not found). Generators differ in how they handle anyOf, so generate the client and try the availability operations before you rely on them. The status of each generator, with the version tested and the known problems, is in the table under Generators we test.
Generators we test
Link to this section: Generators we testFilmo runs generators against the file. For each tool, the table gives the version tested, the options used, the result and the known problems.
| Tool | Version | Date | Options | Result | Known issues |
|---|---|---|---|---|---|
| openapi-typescript | 7.13.0 | 2026-10-09 | defaults (openapi-typescript <spec> -o schema.) | Generates and compiles | — |
| openapi-python-client | 0.29.1 | 2026-10-09 | defaults (generate --path <spec>) | Generates and compiles | — |
| openapi-generator (typescript-fetch) | 7.17.0 | 2026-10-09 | -g typescript-fetch | Generates and compiles | — |
| openapi-generator (python) | 7.17.0 | 2026-10-09 | -g python | Generates and compiles | Compiles, with a SyntaxWarning (invalid escape sequence \&) in setup.: the generator pastes info. into a string literal. |
| openapi-generator (csharp) | 7.17.0 | 2026-10-09 | -g csharp | Generates; not compiled (no dotnet in the verification environment) | Not compiled: no dotnet in the verification environment. |
| openapi-generator (java) | 7.17.0 | 2026-10-09 | -g java (default okhttp-gson library) | Generates and compiles | — |
| openapi-generator (java, native) | 7.17.0 | 2026-10-09 | -g java --library native | Generates and compiles | — |
| openapi-generator (php) | 7.17.0 | 2026-10-09 | -g php | Generates and passes php -l | — |
| openapi-generator (go) | 7.17.0 | 2026-10-09 | -g go | Generates and compiles | — |
Import it in Postman, Insomnia or Bruno
Link to this section: Import it in Postman, Insomnia or BrunoImport by link
In the import dialog of your tool, choose the option to import from a link or URL and paste
https://. Importing the downloaded file also works.docs. filmo. io /openapi. json Set the base URL
Check the server the importer picked and set it to
https://.app. filmo. io Add the key
Choose bearer token authentication and store the key as a secret variable or environment value, never in the collection itself.
Make your first call
Run
GET /apito confirm the key and see its scopes./v1 /account
If an importer shows odd types, the cause is usually the type: [... or anyOf notation. The request still works.
Make generated clients tolerant
Link to this section: Make generated clients tolerant- Closed enums: a new status or kind can arrive within v1 as an additive change. If your generator can map unknown enum values to a fallback, turn that on; if not, wrap response parsing so one unknown value does not fail the whole call.
- Strict response validation: do not reject unknown properties.
- Regenerate on purpose. Read the changelog first, then regenerate and review the diff of the generated code.
Mock the API locally with Prism
Link to this section: Mock the API locally with PrismPrism serves a fake API from the OpenAPI file. Use it to exercise your parsing, your error handling and your write paths without touching real data.
npm install --global @stoplight/prism-cli
prism mock -d https://docs.filmo.io/openapi.json
# In another terminal. Prism listens on port 4010 by default.
curl -s http://127.0.0.1:4010/api/v1/account -H "Authorization: Bearer $FILMO_API_KEY"A mock returns generated data. Decimal fields come back as placeholder strings such as "string", not amounts like "1234., and the mock stores nothing, so it cannot show idempotent replays, ETag changes or the real rate limits. For those, follow the testing guide.
More on safe ways to test: Testing.
Related pages
Link to this section: Related pagesGuides
Versioning and deprecation
Within v1 Filmo only adds things. Anything that could break your integration is announced first, either as a new major version or as a deprecation with at least six months before the sunset.
Guides
Testing your integration
Start with a read-only key, check the account's automations before the first write, and keep irreversible operations out of any account that holds real data.
Introduction
REST API overview
The Filmo REST API v1 is a JSON API over HTTPS at
https://. You authenticate with an API key, and every response uses the same envelope.app. filmo. io /api /v1
Was this page helpful?