Skip to content

API REST

Actualizado: 16 de septiembre de 2026

AZbox publica librerías para tres stacks: Dart/Flutter en pub.dev, Node.js en npm y PHP en Packagist. Cualquier otro stack — React Native, iOS o Android nativos, Vue, Angular, Go, Python — se integra a través de esta API.

Preferimos decirlo aquí a que pierdas una tarde buscando un SDK que no existe.

Obtener las keywords de un proyecto

GET https://api.azbox.io/v1/projects/{projectId}/keywords
ParámetroEnObligatorioDescripción
projectIdrutasíEl ID de tu proyecto, en el panel
api_keyquerysíTu clave de API
languagequerysíCódigo de idioma tal y como está en el proyecto, en mayúsculas: EN-US, ES, PT-PT…
afterUpdatedAtStrquerynoFecha ISO. Devuelve solo las keywords actualizadas después

Ejemplo

curl "https://api.azbox.io/v1/projects/TU_PROJECT_ID/keywords?api_key=TU_API_KEY&language=ES"

Respuesta

Un array de keywords:

[
  {
    "id": "8Kd0pQ2mNvXyZ1aB3cD4",
    "data": {
      "keyword": "home.title",
      "translation": "Bienvenido a AZbox",
      "createdAt": "2026-08-14T09:02:00.000Z",
      "updatedAt": "2026-09-02T10:14:00.000Z",
      "categories": []
    }
  }
]

La clave que usas en tu código es data.keyword, no id. El id es el identificador interno del documento y se genera solo, así que no significa nada para tu aplicación. Montar el diccionario sobre id te deja un mapa indexado por cadenas aleatorias.

Dos cosas más que la forma no enseña:

  • translation no aparece cuando esa keyword todavía no tiene texto en el idioma que has pedido. No es una cadena vacía: el campo directamente no está.
  • context, comment y reference se omiten cuando están vacíos, así que léelos a la defensiva.

Sincronizar solo lo que ha cambiado

Pasa afterUpdatedAtStr con la marca de tiempo de tu última sincronización y recibirás únicamente las keywords tocadas desde entonces. Esto es lo que hace practicables las actualizaciones over-the-air: corriges un texto en el panel y tu siguiente refresco lo recoge sin desplegar y sin pasar por la store.

curl "https://api.azbox.io/v1/projects/TU_PROJECT_ID/keywords?api_key=TU_API_KEY&language=ES&afterUpdatedAtStr=2026-09-01T00:00:00.000Z"

Guarda la marca de tiempo de la respuesta que aplicaste, no la hora actual, o perderás todo lo que se escriba mientras tu petición viaja.

El informe de calidad

GET https://api.azbox.io/v1/projects/{projectId}/qa
ParámetroDóndeObligatorio
api_key / x-api-keyquery o cabecerasíla misma clave de arriba
sourcequerynoidioma contra el que se compara todo; por defecto, el primero del proyecto
languagesquerynoseparados por comas; por defecto, todos los del proyecto
formatquerynocsv para hoja de cálculo en vez de JSON

Devuelve totales, un resumen por idioma y la lista de avisos: marcadores que no cuadran, plurales ICU rotos, etiquetas HTML que no coinciden, traducciones mucho más largas que el original y lo que falta por traducir. Qué significa cada comprobación está en la página del informe de calidad; el CLI convierte ese mismo informe en un código de salida para CI.

Antes de ponerte a construir

  • Un resultado vacío es un 404, no un array vacío. Un proyecto sin keywords en ese idioma responde 404 con {"detail": "No keywords found"}. Trátalo como «todavía no hay nada», no como un fallo.
  • El código de idioma tiene que coincidir con el del proyecto, en mayúsculas. Uno en minúsculas o que no existe no da error: la API responde 200 con todas las keywords y sin translation, lo que parece «no hay nada traducido». Los códigos del proyecto están en GET /v1/projects/{projectId}.
  • La API es de solo lectura para keywords. Se crean en el panel o importando un archivo. Aquí no hay ningún endpoint que las suba.
  • Una petición por idioma. No hay respuesta combinada.
  • La interpolación es cosa tuya. Los textos vuelven tal y como están guardados, con sus placeholders. Sustituir {count} y compañía te toca a ti.
  • Cachea el resultado. Una petición por texto en tiempo de render va a ir lenta. Pide una vez al arrancar y refresca cada cierto tiempo.
  • Guarda la clave en el servidor siempre que puedas. Viaja como parámetro de query, así que acaba en los logs de acceso, en los proxys y en el historial del navegador si llamas a la API directamente desde el cliente.

Implementación de referencia

El cliente que lleva dentro azbox-cli son unas cien líneas, sin dependencias, y cubre todos los casos de arriba. Si vas a escribir un cliente para otro lenguaje, es lo más corto que puedes leer: src/api.mjs en GitHub.

Para los tres stacks que sí tienen librería, empieza mejor por la guía rápida: Flutter, Node.js o PHP.

Fondo de llamada a la acción

Comienza el Crecimiento Global Hoy

Sube tus archivos de idioma, recibe las traducciones y mantén cada idioma sincronizado mientras tu producto sigue cambiando.

Comenzar - Es Gratis