Produksi & ekspor

Endpoint untuk seni sampul, ilustrasi bab, narasi massal, ekspor buku audio dan naskah, penawaran harga cetak, dan terjemahan. Fitur yang sama tersedia lewat server MCP (generate_cover_art, generate_chapter_image, narrate_book, produce_book, translate_book, dll.).

Render naskah (EPUB / DOCX / PDF)

POST/v1/books/{bookId}/producecakupan: generation:run

EPUB dan DOCX dirender secara sinkron dan file-nya langsung dialirkan kembali. PDF dikirim ke alur kerja dan mengembalikan { jobId, status: "pending" } — pantau /books/{bookId}/production-jobs/{jobId} sampai status === "ready", lalu unduh dari resultBlobUrl.

curl -X POST "$ANTHRA_BASE/books/$BOOK/produce" \
  -H "authorization: Bearer $ANTHRA_TOKEN" \
  -H "content-type: application/json" \
  -d '{ "format": "epub" }' \
  --output book.epub

Pantau tugas produksi

GET/v1/books/{bookId}/production-jobs/{jobId}cakupan: account:read

Mengembalikan { id, status, resultBlobUrl, error, startedAt, completedAt }. Status berputar pending → running → ready (atau failed).

Buat seni sampul

POST/v1/books/{bookId}/cover-imagecakupan: generation:run

Membuat 1–3 varian sampul lewat pipeline gambar AI Gateway, menyimpannya di Vercel Blob, dan memilih yang pertama sebagai sampul aktif. Memakai satu kredit ilustrasi per varian; bagian yang tidak terpakai dikembalikan jika gagal sebagian. Panel sampul belakang dan punggung yang sesuai ada di bawah.

Panel sampul belakang dan punggung

POST/v1/books/{bookId}/back-covercakupan: generation:run
POST/v1/books/{bookId}/spinecakupan: generation:run

Buat 1–3 panel sampul belakang atau punggung untuk sampul melingkar cetak; yang pertama dipilih agar penyusun sampul memakainya. Body opsional: prompt (4–800 karakter, menggantikan arahan bawaan), style, aspectRatio (mis. "1:6") dan variants (1–3). Memakai satu kredit ilustrasi per varian dan mengembalikan yang gagal. Mengembalikan { charged, refunded, failed, images }, tiap gambar dengan id, url, selected, dan prompt yang dipakai.

Susun bentangan sampul siap cetak

POST/v1/books/{bookId}/cover/composecakupan: generation:run

Menggabungkan panel sampul depan, sampul belakang, dan punggung yang sedang dipilih menjadi satu bentangan PNG melingkar yang ukurannya disesuaikan dengan perkiraan jumlah halaman buku. Murni penyusunan di server — tanpa panggilan model, tanpa kredit tambahan.

Buat ilustrasi bab

POST/v1/chapters/{chapterId}/imagecakupan: generation:run

Menyaring prompt dari prosa bab, memanggil pipeline gambar AI Gateway, menyimpan hasilnya di Vercel Blob, dan menjadikannya gambar utama bab. Memakai satu kredit ilustrasi; dikembalikan jika gagal.

Terjemahkan buku ke bahasa lain

POST/v1/books/{bookId}/translatecakupan: generation:run

Menggandakan buku sumber menjadi draf baru (dengan parentBookId terisi), menyiapkan kerangka bab yang sesuai, lalu menerjemahkan setiap bab yang sudah ditulis satu per satu. Mengembalikan bookId yang baru. Mahal — satu panggilan LLM per bab. Kirim glossary (daftar Markdown) untuk mengunci terjemahan baku bagi nama diri dan istilah khusus.

curl -X POST "$ANTHRA_BASE/books/$BOOK/translate" \
  -H "authorization: Bearer $ANTHRA_TOKEN" \
  -H "content-type: application/json" \
  -d '{ "targetLanguage": "pt-BR", "glossary": "- Marin → Marin (do not translate)" }'

Ekspor buku audio M4B

POST/v1/books/{bookId}/audiobookcakupan: generation:run

Menyambung setiap bab yang sudah dinarasikan (audioStatus: "ready") menjadi satu M4B dengan penanda bab, suasana, dan seni sampul, mengunggahnya ke URL Blob yang tidak bisa ditebak, dan mencatat tugas audiobookExport. Narasikan babnya terlebih dahulu (POST /books/{bookId}/chapters/{chapterId}/narrate); jika belum ada yang siap, panggilan menghasilkan 400. Sinkron — respons membawa file-nya:

{ "data": { "jobId": "6c1e…", "audiobookUrl": "https://…/book.m4b", "sizeBytes": 48211022 } }

Produk cetak sesuai pesanan

GET/v1/print/productscakupan: books:read

Menampilkan produk cetak Lulu yang tersedia di instans ini: key, label, blurb, trim, coverFinish, minPages, dan maxPages. Mengembalikan 503 feature_disabled jika pemenuhan cetak belum dikonfigurasi.

Dapatkan penawaran harga cetak

POST/v1/books/{bookId}/print/estimatecakupan: analytics:read

Penawaran baca-saja — tidak ada pesanan yang dibuat. Body: productKey (dari daftar produk), quantity (1–500), shippingLevel (MAIL, PRIORITY_MAIL, GROUND_HD, GROUND_BUS, GROUND, EXPEDITED, atau EXPRESS) dan shippingAddress bergaya Lulu. Jumlah halaman diperkirakan dari jumlah kata buku (minimal 200 kata).

{
  "data": {
    "productKey": "paperback-6x9-bw",
    "pageCount": 212,
    "currency": "USD",
    "wholesaleCents": 812,
    "retailCents": 1499,
    "breakdown": { "line": { … }, "shipping": { … }, "tax": "0.00", "fulfillment": { … } },
    "shippingOptions": [ … ]
  }
}

Katalog suara narasi

GET/v1/voicescakupan: books:read

Menampilkan setiap suara ElevenLabs yang tersedia di instans beserta voiceId, name, previewUrl, dan label kategori (aksen, gender, usia, deskripsi, useCase). Gunakan id suara saat mengatur narasi.