API de tablas
Cada tabla que activás tiene una API REST para trabajar con sus registros, sin escribir ninguna función. Es la misma lógica que usa el dashboard, así que valida lo mismo.
Antes de usarla
- La API de cada tabla viene apagada. La encendés con un interruptor en la sección Tablas del proyecto.
- Todas las llamadas llevan
Authorization: Bearer <llave>. La URL base eshttps://api.getforja.site. - Una llave de producción (
fk_live_) trabaja sobre los datos de producción; una de staging (fk_test_), sobre los de staging.
Endpoints
| Método y ruta | Qué hace | Permiso de la llave |
|---|---|---|
GET /v1/tables/:proyecto/:tabla | Lista registros, con paginación y filtros. | Leer datos |
GET /v1/tables/:proyecto/:tabla/:id | Trae un registro por su id. | Leer datos |
POST /v1/tables/:proyecto/:tabla | Crea un registro. Responde 201 con el registro. | Escribir datos |
PATCH /v1/tables/:proyecto/:tabla/:id | Edita campos de un registro (no hace falta mandar todos). | Escribir datos |
DELETE /v1/tables/:proyecto/:tabla/:id | Borra un registro. Responde 204. | Escribir datos |
:proyecto es el ID del proyecto (lo ves en la pestaña Conectar) y :tabla es el nombre de la tabla.
Listar, paginar y filtrar
GET /v1/tables/<ID_DEL_PROYECTO>/turnos?limit=20&offset=0&filter[estado]=confirmado
Authorization: Bearer <TU_LLAVE>{
"records": [ { "id": "…", "cliente": "Ana", "estado": "confirmado", "created_at": "…", "updated_at": "…" } ],
"total": 42,
"limit": 20,
"offset": 0
}limit: de 1 a 100 registros. Por defecto, 20.offset: desde qué registro empezar. Por defecto, 0.filter[columna]=valor: filtra por igualdad. Podés combinar varios filtros. No hay otros operadores (mayor que, contiene, etc.).- El orden es fijo: primero el registro más nuevo.
totales la cantidad de registros que cumplen el filtro, sin contar la paginación.
Crear y editar
El cuerpo es un JSON con los campos de la tabla. La API es estricta: un campo que no existe, o un valor del tipo equivocado, devuelve un error 400 en vez de guardarse a medias. El id y las fechas (created_at,updated_at) las pone Forja y no se pueden escribir.
PATCH /v1/tables/<ID_DEL_PROYECTO>/turnos/<ID_DEL_REGISTRO>
Authorization: Bearer <TU_LLAVE>
Content-Type: application/json
{ "estado": "cancelado" }Tipos de columna
Texto, entero, decimal, booleano, fecha, fecha y hora, JSON y UUID. Las relaciones entre tablas son columnas UUID que apuntan alid de otra tabla del mismo proyecto.
Errores
| Código | Cuándo |
|---|---|
| 400 | Parámetro o campo desconocido, filtro sobre una columna que no existe, valor de tipo incorrecto, o limit fuera de rango. |
| 401 | Falta la llave, o no es válida. |
| 403 | La llave no tiene el permiso necesario, o tu plan llegó a su tope de registros o de almacenamiento. |
| 404 | La tabla no existe o tiene la API apagada (las dos dan la misma respuesta), o el registro no existe. |
| 429 | Superaste el límite de pedidos por minuto de tu plan. |
Los errores de parámetros (limit, offset, filtros) llegan con un mensaje que dice qué corregir. Los de cuerpo (campos y tipos) llegan con el detalle por campo.
{ "error": "Parámetro desconocido: \"orden\". Se aceptan limit, offset y filter[columna]=valor." }Límites
El límite de pedidos por minuto, la cantidad de registros y el almacenamiento dependen de tu plan. Los números están en la sección Precios.
Desde el navegador. Una llave con permiso de escritura no puede ir en el código de una página. Para mostrar datos en una web hay llaves públicas de solo lectura; para guardar datos desde una web, miráFunciones públicas y Qué no hace todavía.
Información revisada el 2026-10-24.