Crear un flipbook (desde un PDF o una URL)

Flipbooks

Crea un flipbook desde un PDF que subes o desde una URL de PDF que el servidor descarga, y recupera el ID del nuevo elemento, su URL de vista y la cuota actualizada de tu plan.

APIs usadas en esta discusión

¿Hay algo incorrecto o desactualizado en esta guía?

Qué puedes hacer

Hay dos formas de crear un flipbook desde un PDF, según dónde esté el PDF:

  • Sube el archivo directamente — envía el PDF como multipart/form-data.
  • Apunta a una URL — indica una URL de PDF y deja que el servidor lo descargue por ti.

En cualquier caso, el archivo se almacena, se genera una miniatura, se registra el registro y recuperas el ID del nuevo elemento, su URL de vista y la cuota actualizada de tu plan. Usa el ID devuelto para las llamadas posteriores (set-meta, set-cta-primary, save-as-template, etc.).

Antes de empezar

  • Una clave de API — enviada en el encabezado X-Api-Key, o como Authorization: Bearer YOUR_API_KEY, en cada solicitud.
  • Todas las solicitudes van a la URL base https://go.fliplink.me.
  • Que crees un Flipbook o un Document lo decide el campo opcional DocType: omítelo o envía DocType=Flipbook para un flipbook (el valor por defecto), o DocType=Document para un documento — FlipLink admite ambos.
  • Los campos de cuota devueltos (Flipbooks_Count / Flipbooks_Max / Flipbooks_Left) reflejan la cuota de tu plan después de la creación.

Ninguno de los dos endpoints usa un parámetro de ruta — creas haciendo POST al endpoint en sí y recuperas el nuevo ID. Create by File usa multipart/form-data. Create by URL usa form-urlencoded (no JSON).

Crear desde un PDF subido

POST /api/create-by-file crea un flipbook desde un PDF subido enviado como multipart/form-data. El archivo se almacena, se genera una miniatura y se registra el registro. El único campo obligatorio es File; Name, Title y DocType son opcionales. El tamaño máximo de archivo depende del plan (consulta MaxFileSizeMB en who-am-i).

curl -X POST 'https://go.fliplink.me/api/create-by-file' \
  -H 'X-Api-Key: YOUR_API_KEY' \
  -F 'File=@/path/to/file' \
  -F 'Name=My Document' \
  -F 'Title=My Title' \
  -F 'DocType=Flipbook'

DocType es Flipbook (el valor por defecto) o Document — envía DocType=Document para crear un documento en lugar de un flipbook.

Respuesta:

{
  "Result": "OK",
  "ID": "90001",
  "URL": "https://go.fliplink.me/view/<slug>",
  "Flipbooks_Count": 12,
  "Flipbooks_Max": 200,
  "Flipbooks_Left": 188
}

Crear desde una URL de PDF

POST /api/create-by-url crea un flipbook desde una URL de PDF. El servidor descarga FileURL, lo sube a S3, genera una miniatura y registra el registro. El cuerpo es form-urlencoded. El único campo obligatorio es FileURL; Name, Title y DocType son opcionales.

curl -X POST 'https://go.fliplink.me/api/create-by-url' \
  -H 'X-Api-Key: YOUR_API_KEY' \
  --data-urlencode 'FileURL=https://example.com/document.pdf' \
  --data-urlencode 'Name=My Document' \
  --data-urlencode 'Title=My Title' \
  --data-urlencode 'DocType=Flipbook'

La URL de origen debe responder en un plazo de 60 s — las fuentes lentas o inalcanzables fallan con Source URL timed out after 60s. Para fuentes poco fiables, usa /api/create-by-file.

Respuesta:

{
  "Result": "OK",
  "ID": "90001",
  "URL": "https://go.fliplink.me/view/<slug>",
  "Flipbooks_Count": 12,
  "Flipbooks_Max": 200,
  "Flipbooks_Left": 188
}

Errores posibles

Create by File:

  • Clave de API ausente o no válida → HTTP 401. Devuelve una página HTML de "Unauthorized" sin formato — no hay cuerpo JSON.
  • El archivo subido no es un PDF legible → HTTP 200, mensaje File is not a valid PDF.
  • La subida supera el tamaño máximo de archivo del plan → HTTP 413, mensaje File exceeds the maximum allowed upload size.

Create by URL:

  • Clave de API ausente o no válida → HTTP 401. Devuelve una página HTML de "Unauthorized" sin formato — no hay cuerpo JSON.
  • El host de FileURL es privado o no está permitido → HTTP 200, mensaje FileURL host is not allowed.
  • Campo del cuerpo desconocido o mal escrito → HTTP 200, mensaje Unknown field(s) '…'. Expected: …

Notas

  • Los valores Flipbooks_Count / Flipbooks_Max / Flipbooks_Left reflejan la cuota de tu plan después de esta creación.
  • Conserva el ID devuelto — es lo que pasas a las llamadas posteriores (set-meta, set-cta-primary, save-as-template, entre otras).

Discusiones relacionadas