docs · api
ES
Empezar

Primeros pasos

En menos de cinco minutos harás tu primera petición autenticada y leerás el contenido publicado de un blog. Todo lo que necesitas es la clave de API del blog y un cliente HTTP.

Requisitos previos

  • Un blog creado en DraftIn con al menos un post publicado.
  • La clave de API del blog (cabecera X-API-Key). Consulta Autenticación.
  • Un cliente HTTP: curl, el fetch del navegador o Node 22+.

1. Guarda tu clave de forma segura

La clave de API concede acceso de lectura al contenido del blog. Mantenla fuera del código fuente — usa una variable de entorno:

.env
# Nunca subas este archivo al repositorio. Añade ".env" a tu .gitignore.
DRAFTIN_API_KEY=dra_xxxxxxxxxxxxxxxxxxxxxxxxxxx

2. Conoce la base URL

Todos los endpoints públicos viven bajo el prefijo /public a partir de la base de producción https://api.draftin.io. Una ruta completa se ve así:

endpoint
https://api.draftin.io/public/posts

3. Haz la primera llamada

Lista los cinco posts publicados más recientes. La clave va en la cabecera X-API-Key; ninguna otra cabecera es obligatoria para peticiones GET.

curl https://api.draftin.io/public/posts?limit=5 \
  -H "X-API-Key: $DRAFTIN_API_KEY"

Una respuesta correcta (200 OK) es un envelope { success, data } con el array de objetos Post en data:

200 OK
{
  "success": true,
  "data": [
    {
      "id": "clxxx101",
      "title": "Mi Primer Post",
      "subtitle": "Subtítulo del post",
      "slug": "mi-primer-post",
      "status": "PUBLISHED",
      "publishedAt": "2026-06-01T12:00:00.000Z",
      "content": "Contenido del post en HTML o Markdown",
      "blogId": "clxxx789",
      "authorId": "clxxx123",
      "categories": [],
      "tags": []
    }
  ]
}

4. Maneja la autenticación ausente

Si la clave es incorrecta o falta, la API responde 401 Unauthorized. Verifica siempre res.ok (o el estado) antes de consumir el cuerpo:

JavaScript
const res = await fetch("https://api.draftin.io/public/posts", {
  headers: { "X-API-Key": process.env.DRAFTIN_API_KEY },
});

switch (res.status) {
  case 200:
    return (await res.json()).data; // el payload viene en data
  case 401:
    throw new Error("Clave de API inválida o ausente.");
  default:
    throw new Error(`Error inesperado: ${res.status}`);
}

Próximos pasos