forja

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 es https://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 rutaQué hacePermiso de la llave
GET /v1/tables/:proyecto/:tablaLista registros, con paginación y filtros.Leer datos
GET /v1/tables/:proyecto/:tabla/:idTrae un registro por su id.Leer datos
POST /v1/tables/:proyecto/:tablaCrea un registro. Responde 201 con el registro.Escribir datos
PATCH /v1/tables/:proyecto/:tabla/:idEdita campos de un registro (no hace falta mandar todos).Escribir datos
DELETE /v1/tables/:proyecto/:tabla/:idBorra 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

Pedido
GET /v1/tables/<ID_DEL_PROYECTO>/turnos?limit=20&offset=0&filter[estado]=confirmado
Authorization: Bearer <TU_LLAVE>
Respuesta
{
  "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.
  • total es 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.

Editar un registro
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ódigoCuándo
400Parámetro o campo desconocido, filtro sobre una columna que no existe, valor de tipo incorrecto, o limit fuera de rango.
401Falta la llave, o no es válida.
403La llave no tiene el permiso necesario, o tu plan llegó a su tope de registros o de almacenamiento.
404La tabla no existe o tiene la API apagada (las dos dan la misma respuesta), o el registro no existe.
429Superaste 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.

Ejemplo
{ "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.