Criar um flipbook (a partir de um PDF ou de uma URL)

Flipbooks

Crie um flipbook a partir de um PDF que você envia ou de uma URL de PDF que o servidor baixa, e leia de volta o ID do novo item, a URL de visualização e a cota atualizada do plano.

APIs usadas nesta discussão

Algo impreciso ou desatualizado neste guia?

O que você pode fazer

Há duas formas de criar um flipbook a partir de um PDF, dependendo de onde o PDF está:

  • Enviar o arquivo diretamente — mande o PDF como multipart/form-data.
  • Apontar para uma URL — informe uma URL de PDF e deixe o servidor baixá-lo para você.

De qualquer forma, o arquivo é armazenado, uma miniatura é gerada, o registro é criado e você recebe de volta o ID do novo item, sua URL de visualização e a cota atualizada do seu plano. Use o ID retornado nas chamadas seguintes (set-meta, set-cta-primary, save-as-template e assim por diante).

Antes de começar

  • Uma chave de API — enviada como cabeçalho X-Api-Key, ou como Authorization: Bearer YOUR_API_KEY, em toda requisição.
  • Todas as requisições vão para a URL base https://go.fliplink.me.
  • Criar um Flipbook ou um Document é escolhido pelo campo opcional DocType: omita-o ou envie DocType=Flipbook para um flipbook (o padrão), ou DocType=Document para um documento — o FlipLink aceita ambos.
  • Os campos de cota retornados (Flipbooks_Count / Flipbooks_Max / Flipbooks_Left) refletem a cota do seu plano depois da criação.

Nenhum dos endpoints usa parâmetro de caminho — você cria fazendo POST no próprio endpoint e recebe de volta o novo ID. O Create by File usa multipart/form-data. O Create by URL é form-urlencoded (não JSON).

Crie a partir de um PDF enviado

POST /api/create-by-file cria um flipbook a partir de um PDF enviado como multipart/form-data. O arquivo é armazenado, uma miniatura é gerada e o registro é criado. O único campo obrigatório é File; Name, Title e DocType são opcionais. O tamanho máximo de arquivo depende do plano (veja MaxFileSizeMB do 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 é Flipbook (o padrão) ou Document — envie DocType=Document para criar um documento em vez de um flipbook.

Resposta:

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

Crie a partir de uma URL de PDF

POST /api/create-by-url cria um flipbook a partir de uma URL de PDF. O servidor baixa FileURL, faz o upload para o S3, gera uma miniatura e cria o registro. O corpo é form-urlencoded. O único campo obrigatório é FileURL; Name, Title e DocType são opcionais.

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'

A URL de origem precisa responder em até 60s — origens lentas ou inacessíveis falham com Source URL timed out after 60s. Para origens instáveis, prefira /api/create-by-file.

Resposta:

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

Erros possíveis

Create by File:

  • Chave de API ausente ou inválida → HTTP 401. Isso retorna uma página HTML de Unauthorized simples — não há corpo JSON.
  • O arquivo enviado não é um PDF legível → HTTP 200, mensagem File is not a valid PDF.
  • O upload excede o tamanho máximo de arquivo do plano → HTTP 413, mensagem File exceeds the maximum allowed upload size.

Create by URL:

  • Chave de API ausente ou inválida → HTTP 401. Isso retorna uma página HTML de Unauthorized simples — não há corpo JSON.
  • O host de FileURL é privado ou não permitido → HTTP 200, mensagem FileURL host is not allowed.
  • Campo do corpo desconhecido ou digitado errado → HTTP 200, mensagem Unknown field(s) '…'. Expected: …

Notas

  • Os valores Flipbooks_Count / Flipbooks_Max / Flipbooks_Left refletem a cota do seu plano depois desta criação.
  • Guarde o ID retornado — é o que você passa nas chamadas seguintes (set-meta, set-cta-primary, save-as-template e outras).

Discussões relacionadas