FlipLink

Создание флипбука (из PDF или из URL)

Флипбуки

Создавайте флипбук из загруженного вами PDF или из URL PDF, который скачивает сервер, и считывайте ID нового элемента, его URL просмотра и обновлённую квоту тарифа.

API, используемые в этом обсуждении

Что-то в этом руководстве неточно или устарело?

Что можно сделать

Создать флипбук из PDF можно двумя способами — в зависимости от того, где находится PDF:

  • Загрузить файл напрямую — отправьте PDF как multipart/form-data.
  • Указать URL — дайте URL PDF, и сервер скачает его за вас.

В любом случае файл сохраняется, генерируется миниатюра, регистрируется запись, и вы получаете обратно ID нового элемента, его URL просмотра и обновлённую квоту тарифа. Используйте возвращённый ID для последующих вызовов (set-meta, set-cta-primary, save-as-template и т. д.).

Перед началом

  • API-ключ — передаётся в заголовке X-Api-Key или как Authorization: Bearer YOUR_API_KEY в каждом запросе.
  • Все запросы идут на базовый URL https://go.fliplink.me.
  • Создаёте вы флипбук или документ, выбирается необязательным полем DocType: опустите его или отправьте DocType=Flipbook для флипбука (по умолчанию), либо DocType=Document для документа — FlipLink поддерживает оба.
  • Возвращаемые поля квоты (Flipbooks_Count / Flipbooks_Max / Flipbooks_Left) отражают квоту вашего тарифа после создания.

Ни один из эндпоинтов не использует параметр пути — вы создаёте элемент, отправляя POST на сам эндпоинт, и получаете обратно новый ID. Create by File использует multipart/form-data. Create by URL — form-urlencoded (не JSON).

Создание из загруженного PDF

POST /api/create-by-file создаёт флипбук из загруженного PDF, отправленного как multipart/form-data. Файл сохраняется, генерируется миниатюра, регистрируется запись. Единственное обязательное поле — File; Name, Title и DocType необязательны. Максимальный размер файла зависит от тарифа (см. MaxFileSizeMB из 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 (по умолчанию) или Document; отправьте DocType=Document, чтобы создать документ вместо флипбука.

Ответ:

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

Создание из URL PDF

POST /api/create-by-url создаёт флипбук из URL PDF. Сервер скачивает FileURL, загружает его в S3, генерирует миниатюру и регистрирует запись. Тело — form-urlencoded. Единственное обязательное поле — FileURL; Name, Title и DocType необязательны.

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'

Исходный URL должен ответить в течение 60 с — медленные или недоступные источники завершаются ошибкой Source URL timed out after 60s. Для ненадёжных источников предпочитайте /api/create-by-file.

Ответ:

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

Возможные ошибки

Create by File:

  • Отсутствующий или неверный API-ключ → HTTP 401. Возвращается обычная HTML-страница Unauthorized — тела JSON нет.
  • Загруженный файл не является читаемым PDF → HTTP 200, сообщение File is not a valid PDF.
  • Загрузка превышает максимальный размер файла тарифа → HTTP 413, сообщение File exceeds the maximum allowed upload size.

Create by URL:

  • Отсутствующий или неверный API-ключ → HTTP 401. Возвращается обычная HTML-страница Unauthorized — тела JSON нет.
  • Хост FileURL приватный или не разрешён → HTTP 200, сообщение FileURL host is not allowed.
  • Неизвестное поле тела запроса или опечатка в нём → HTTP 200, сообщение Unknown field(s) '…'. Expected: …

Примечания

  • Значения Flipbooks_Count / Flipbooks_Max / Flipbooks_Left отражают квоту вашего тарифа после этого создания.
  • Сохраните возвращённый ID — именно его вы передаёте в последующие вызовы (set-meta, set-cta-primary, save-as-template и другие).

Похожие обсуждения