Guías
Probar tu integración
Empieza con una clave de solo lectura, revisa las automatizaciones de la cuenta antes de la primera escritura y mantén las operaciones irreversibles fuera de cualquier cuenta que contenga datos reales.
No hay sandbox ni claves de prueba: todas las claves empiezan por fk_live_ y actúan sobre los datos reales de la cuenta que las emitió. Cada paso siguiente es una forma de reducir lo que puede tocar una prueba.
Empezar con una clave de solo lectura
Enlace a esta sección: Empezar con una clave de solo lecturaCrea una clave solo con los scopes :read que necesita la integración, más account:read, y haz con ella toda tu lectura, paginación y análisis. Una clave de solo lectura no puede cambiar nada, así que un error en tu código tampoco. El Permisos (scopes) tiene recetas por tipo de integración. También puedes probar lecturas desde la Referencia de OpenAPI.
Una cuenta separada para las escrituras
Enlace a esta sección: Una cuenta separada para las escriturasPrueba las escrituras en una cuenta aparte que solo contenga datos ficticios (nombres como Acme Rentals, emails en example.), no en la cuenta de un cliente real. Usa una cuenta de prueba gratuita: sirve para probar la API. Un administrador crea en ella las claves de API y conecta OAuth y MCP como en cualquier otra cuenta, y la prueba desbloquea todos los add-ons. Conoce sus condiciones.
- La prueba dura 14 días y no necesita tarjeta. Cuando expira, puede ser prorrogable una vez, por 7 días.
- Un periodo de prueba desbloquea todos los add-ons mientras dura (
trial). Cuando termina, las operaciones que hay detrás de un add-on responden 402addon_requiredmientras las demás siguen funcionando, así que un test que pasó durante el periodo de prueba puede fallar después. Las claves y las conexiones OAuth no se revocan cuando termina el periodo de prueba, y la autenticación no mira el periodo de prueba: comprueba la clave, su dueño y el acceso del dueño a la cuenta. - Los datos de una cuenta de prueba se purgan unos 30 días después de que acabe la prueba. No guardes ahí nada que necesites.
- Trata la cuenta de prueba como una real. Validar una factura o una nota de crédito es irreversible y consume números de la numeración de la cuenta, también en una cuenta de prueba: valida solo lo que necesite una prueba.
Antes de escribir: comprueba las automatizaciones
Enlace a esta sección: Antes de escribir: comprueba las automatizacionesUna escritura a través de la API sigue la misma ruta que un cambio hecho en la app, así que dispara los workflows de eventos de la cuenta. No puedes suprimirlo por petición: no hay cabecera ni indicador para ello. Esos workflows pueden enviar emails a clientes o llamar a terceros, así que esta comprobación es obligatoria antes de la primera escritura. Los eventos se disparan después de la respuesta y en la medida de lo posible; la mayoría de las escrituras de negocio (pedidos, facturas, pagos, presupuestos, contactos, tareas, proyectos) disparan uno, mientras que algunas ediciones, como las asignaciones de etiquetas o los cambios de precio de artículos, no disparan ninguno.
Listar los workflows activos que empiezan con un evento o una entidad
Llama a
GET /apicon/v1 /workflows isActivepuesto atrueytriggerTypespuesto aevent,entity. La clave necesitaworkflows:read, y solo los administradores pueden listar workflows.Lee qué hace cada uno
Para cada workflow,
triggerindica qué evento o entidad lo inicia. Ábrelo en la app para ver qué envía.Páusalos o excluye la API
Pausa los que podrían llegar a un cliente o a un tercero mientras pruebas. Como alternativa, filtra el trigger de cada workflow por
originpara excluirapi(ymcp, si también pruebas por MCP), de modo que ignore lo que escribe tu clave. Reanúdalos o restáuralos después.
Si también pruebas por MCP, un asistente escribe con el mismo efecto. Lee Escrituras seguras antes de dejar que escriba una sola vez.
BASE="${FILMO_BASE_URL:-https://app.filmo.io}"
curl -sS -G "$BASE/api/v1/workflows" \
-H "Authorization: Bearer $FILMO_API_KEY" \
--data-urlencode "isActive=true" \
--data-urlencode "triggerTypes=event,entity" \
--data-urlencode "limit=500"const base = process.env.FILMO_BASE_URL ?? "https://app.filmo.io";
const url = new URL(base + "/api/v1/workflows");
url.searchParams.set("isActive", "true");
url.searchParams.set("triggerTypes", "event,entity");
url.searchParams.set("limit", "500");
const res = await fetch(url, {
headers: { Authorization: `Bearer ${process.env.FILMO_API_KEY}` },
});
if (!res.ok) throw new Error("HTTP " + res.status + " " + (await res.text()));
const { data, pagination } = await res.json();
for (const workflow of data) {
const starts = workflow.trigger.event ?? workflow.trigger.entity;
console.log(workflow.name, "-", workflow.trigger.type, starts);
}
if (pagination.hasMore) console.warn("More workflows: follow pagination.nextCursor");import os
import requests
base = os.environ.get("FILMO_BASE_URL", "https://app.filmo.io")
res = requests.get(
base + "/api/v1/workflows",
headers={"Authorization": f"Bearer {os.environ['FILMO_API_KEY']}"},
params={"isActive": "true", "triggerTypes": "event,entity", "limit": "500"},
timeout=30,
)
res.raise_for_status()
body = res.json()
for workflow in body["data"]:
trigger = workflow["trigger"]
print(workflow["name"], "-", trigger["type"], trigger["event"] or trigger["entity"])
if body["pagination"]["hasMore"]:
print("More workflows: follow pagination.nextCursor")Nunca en producción
Enlace a esta sección: Nunca en producciónNo llames a estas operaciones desde una prueba contra una cuenta que tenga datos reales. No se pueden deshacer, producen documentos fiscales o avisan a personas.
- Validar o anular una factura, una nota de crédito, un contrato o una factura de proveedor.
- Cancelar o firmar un contrato.
- Recibe una orden de compra, devuelve líneas de pedido o registra un pago.
- Ejecuta un workflow.
- Cancelar un pedido o quitar su reserva.
- Eliminar un registro.
- Crea una nota que mencione a usuarios: les notifica.
La tabla se genera a partir de las mismas listas que alimentan las insignias de las páginas de operación, así que no pueden discrepar.
Si debes probar en producción
Enlace a esta sección: Si debes probar en producciónPrefiere una cuenta aparte. Si la única cuenta es la real, reduce el riesgo:
- Haz antes la comprobación de automatizaciones de arriba.
- Marca cada registro que crees para poder encontrarlo, evitarlo y limpiarlo. Crea una etiqueta como
api-testconPOST /apiy asóciala a cada registro de prueba, y da a los registros de prueba un prefijo de nombre evidente. Excluye esa etiqueta y ese prefijo de tus informes y de las consultas propias de la integración./v1 /tags - Usa un contacto ficticio (un email en
example.) para los pedidos y notas de prueba, de modo que ningún cliente reciba nada.com - No llames nunca a las operaciones de la tabla anterior.
- Usa una clave limitada a los permisos de la prueba y revócala cuando termines.
Simular la API en local
Enlace a esta sección: Simular la API en localSin sandbox, la única forma sin riesgo de probar escrituras, idempotencia y rutas de error es un servidor simulado construido a partir del archivo OpenAPI:
npm install --global @stoplight/prism-cli
prism mock -d https://docs.filmo.io/openapi.jsonLos campos decimales llegan como cadenas de relleno, no como importes reales. Consulta Archivo OpenAPI y clientes generados para ver los detalles y los límites de un mock.
Ejercita las rutas de fallo
Enlace a esta sección: Ejercita las rutas de fallo- 401: llama con una clave incorrecta y comprueba que tu código avisa en lugar de reintentar.
- 403: llama a una operación con una clave que no tiene su permiso y lee
requiredScopedel cuerpo. - 429: baja tu propio límite en una prueba para forzarlo y comprueba que esperas a
Retry-After. - Un timeout durante una escritura: corta la petición después de enviarla, luego reintenta con el mismo
Idempotency-Keyy confirma que solo existe un registro.
No todos los registros se pueden borrar, y algunos cambios no se pueden deshacer. Archivar un pedido lo hace invisible para la API: su GET responde 404. Consulta qué es posible para cada tipo de registro en Archivar y eliminar antes de crear datos de prueba que luego querrás borrar.
Páginas relacionadas
Enlace a esta sección: Páginas relacionadasGuías
Lista de comprobación de salida a producción
Repasa estas ocho comprobaciones antes de que tu integración funcione con datos de producción. Cada una remite a la guía que la explica.
Guías
Archivo OpenAPI y clientes generados
Filmo publica toda su API como un archivo OpenAPI 3.1. Úsalo para generar un cliente tipado, para importar la API en Postman, Insomnia o Bruno, o para ejecutar un servidor mock en tu máquina.
Guías
Idempotencia y reintentos seguros
Envía una cabecera
Idempotency-Keycon cada escritura y reutiliza el mismo valor cuando reintentes esa operación: Filmo devuelve el resultado almacenado del primer intento en lugar de escribir dos veces.
¿Te ha resultado útil esta página?