Référence API
API RESTful puissante et simple : implémentez une conversion professionnelle de PDF en eBook en quelques lignes de code seulement
Requêtes API
URL de base:
https://fusion-api.oomol.com/v1Authentification
Toutes les requêtes nécessitent une clé API dans l'entête Authorization (format : Bearer YOUR_API_KEY)
Authorization: Bearer YOUR_API_KEY
POST
/pdf-transform-markdown/submitSoumettre le PDF à la tâche Markdown
Téléchargez l'URL du fichier PDF et soumettez la tâche pour la convertir au format Markdown
Paramètres de la requête
pdfURL- URL du cloud du fichier PDF (chaîne, obligatoire, obtenue à partir de l'API de téléchargement de fichiers)model- Modèle de conversion (chaîne, obligatoire, valeur fixe : "gundam")filename- Nom du fichier de sortie sans extension (facultatif), utilisé pour une reconnaissance plus facile du fichierignore_pdf_errors- Ignorer les erreurs d'analyse PDF (facultatif, par défaut : vrai)ignore_ocr_errors- Ignorer les erreurs OCR (facultatif, par défaut : vrai)
Exemple de requête
{
"pdfURL": "https://pdfcraft.ai/examples/api-quickstart.pdf",
"model": "gundam",
"filename": "my-document",
"ignore_pdf_errors": true,
"ignore_ocr_errors": true
}Exemple de réponse
{
"success": true,
"sessionID": "019aa097-f28d-7000-8d56-6a2987a7b144"
}GET
/pdf-transform-markdown/result/:taskIdRequête PDF vers le résultat Markdown
Statut de la tâche de conversion de requête et résultat par ID de tâche
Paramètres d'URL
taskId- ID de tâche (ID de session renvoyé par l'API de soumission)
Exemple de réponse (traitement)
{
"success": true,
"state": "processing",
"progress": 66
}Exemple de réponse (terminé)
{
"success": true,
"state": "completed",
"progress": 100,
"data": {
"downloadURL": "https://cdn.oomol.com/result.md"
}
}Exemple de réponse (échec)
{
"success": false,
"state": "failed",
"progress": 0,
"error": "Raison de l'échec de la conversion"
}POST
/pdf-transform-epub/submitSoumettre un PDF à une tâche EPUB
Téléchargez l'URL du fichier PDF et soumettez la tâche pour la convertir au format EPUB
Paramètres de la requête
pdfURL- URL du cloud du fichier PDF (chaîne, obligatoire, obtenue à partir de l'API de téléchargement de fichiers)model- Modèle de conversion (chaîne, obligatoire, valeur fixe : "gundam")filename- Nom du fichier de sortie sans extension (facultatif), utilisé pour une reconnaissance plus facile du fichierignore_pdf_errors- Ignorer les erreurs d'analyse PDF (facultatif, par défaut : vrai)ignore_ocr_errors- Ignorer les erreurs OCR (facultatif, par défaut : vrai)
Exemple de requête
{
"pdfURL": "https://pdfcraft.ai/examples/api-quickstart.pdf",
"model": "gundam",
"filename": "my-document",
"ignore_pdf_errors": true,
"ignore_ocr_errors": true
}Exemple de réponse
{
"success": true,
"sessionID": "019aa097-f28d-7000-8d56-6a2987a7b144"
}GET
/pdf-transform-epub/result/:taskIdRésultat de la requête PDF vers EPUB
Statut de la tâche de conversion de requête et résultat par ID de tâche
Paramètres d'URL
taskId- ID de tâche (ID de session renvoyé par l'API de soumission)
Exemple de réponse (traitement)
{
"success": true,
"state": "processing",
"progress": 66
}Exemple de réponse (terminé)
{
"success": true,
"state": "completed",
"progress": 100,
"data": {
"downloadURL": "https://cdn.oomol.com/result.epub"
}
}Exemple de réponse (échec)
{
"success": false,
"state": "failed",
"progress": 0,
"error": "Raison de l'échec de la conversion"
}cURL
# 1. Submit PDF to Markdown taskcurl -X POST https://fusion-api.oomol.com/v1/pdf-transform-markdown/submit \-H "Content-Type: application/json" \-H "Authorization: Bearer YOUR_API_KEY" \-d '{"pdfURL": "https://pdfcraft.ai/examples/api-quickstart.pdf","model": "gundam","filename": "my-document"}'# Response: {"success": true, "sessionID": "019aa097-f28d-7000-8d56-6a2987a7b144"}# 2. Query conversion resultcurl -X GET https://fusion-api.oomol.com/v1/pdf-transform-markdown/result/019aa097-f28d-7000-8d56-6a2987a7b144 \-H "Authorization: Bearer YOUR_API_KEY"# Response: {"success": true, "state": "completed", "data": {"downloadURL": "https://cdn.oomol.com/result.md"}}
SDK Python
Un SDK Python pour interagir avec l'API PDF Craft. Il simplifie le processus de conversion de PDF en Markdown ou EPUB en gérant l'authentification, la soumission des tâches et l'interrogation des résultats.
Installation
pip install pdf-craft-sdk
Utilisation de base
from pdf_craft_sdk import PDFCraftClient# Initialize the clientclient = PDFCraftClient(api_key="YOUR_API_KEY")# Convert a local PDF to Markdowntry:download_url = client.convert_local_pdf("document.pdf")print(f"Conversion successful! Download URL: {download_url}")except Exception as e:print(f"An error occurred: {e}")
Téléchargement de fichiers locaux avec suivi de la progression
from pdf_craft_sdk import PDFCraftClient, UploadProgressdef on_progress(progress: UploadProgress):print(f"Upload: {progress.percentage:.2f}% - Part {progress.current_part}/{progress.total_parts}")client = PDFCraftClient(api_key="YOUR_API_KEY")# Upload local file with progress trackingdownload_url = client.convert_local_pdf("large_document.pdf",progress_callback=on_progress)
Conversion PDF à distance
from pdf_craft_sdk import PDFCraftClient, FormatTypeclient = PDFCraftClient(api_key="YOUR_API_KEY")# Convert remote PDF to EPUBdownload_url = client.convert(pdf_url="https://example.com/file.pdf",format_type=FormatType.EPUB,includes_footnotes=True)print(f"Download URL: {download_url}")
Utilisation avancée (étape par étape)
from pdf_craft_sdk import PDFCraftClient, FormatTypeclient = PDFCraftClient(api_key="YOUR_API_KEY")# Step 1: Upload filecache_url = client.upload_file("document.pdf")# Step 2: Submit conversion tasktask_id = client.submit_conversion(cache_url,format_type=FormatType.MARKDOWN)print(f"Task submitted. ID: {task_id}")# Step 3: Wait for completiondownload_url = client.wait_for_completion(task_id)print(f"Download URL: {download_url}")
Options de configuration
- max_wait_ms : temps d'attente maximum en millisecondes (par défaut : 7 200 000, soit 2 heures)
- check_interval_ms : intervalle d'interrogation initial en millisecondes (par défaut : 1 000)
- max_check_interval_ms : intervalle d'interrogation maximum en millisecondes (par défaut : 5 000)
- backoff_factor : multiplicateur pour un intervalle croissant, ou utilisez l'énumération PollingStrategy (par défaut : PollingStrategy.EXPONENTIAL / 1.5)
- model : Le modèle à utiliser pour la conversion (par défaut : 'gundam')
from pdf_craft_sdk import PDFCraftClient, FormatType, PollingStrategyclient = PDFCraftClient(api_key="YOUR_API_KEY")# Example with custom polling configurationdownload_url = client.convert(pdf_url="https://example.com/file.pdf",format_type=FormatType.MARKDOWN,model="gundam",includes_footnotes=True,ignore_pdf_errors=True,ignore_ocr_errors=True,max_wait_ms=600000, # Maximum wait time: 10 minutescheck_interval_ms=2000, # Initial polling interval: 2 secondsmax_check_interval_ms=10000, # Maximum polling interval: 10 secondsbackoff_factor=PollingStrategy.EXPONENTIAL # or 1.5)
SDK TypeScript
Un SDK TypeScript pour interagir avec l'API PDF Craft. Il simplifie le processus de conversion de PDF en Markdown ou EPUB en gérant l'authentification, la soumission des tâches et l'interrogation des résultats.
Installation
npm install pdf-craft-sdk-ts# oryarn add pdf-craft-sdk-ts
Utilisation de base
import { PDFCraftClient, FormatType } from 'pdf-craft-sdk-ts';const client = new PDFCraftClient("YOUR_API_KEY");async function main() {try {const downloadUrl = await client.convert("cache://your-pdf-file.pdf", {formatType: FormatType.Markdown});console.log(`Success! Download: ${downloadUrl}`);} catch (error) {console.error("Error:", error);}}main();
Téléchargement de fichiers locaux avec suivi de la progression
import { PDFCraftClient, FormatType, UploadProgress } from 'pdf-craft-sdk-ts';const client = new PDFCraftClient("YOUR_API_KEY");const onProgress = (progress: UploadProgress) => {console.log(`Progress: ${progress.percentage.toFixed(2)}%`);console.log(`Part ${progress.currentPart}/${progress.totalParts}`);};// Upload and convert local fileconst downloadUrl = await client.convertLocalPdf("document.pdf", {formatType: FormatType.Markdown,progressCallback: onProgress,includesFootnotes: true,uploadMaxRetries: 5});
Traitement par lots
import { PDFCraftClient, FormatType } from 'pdf-craft-sdk-ts';const client = new PDFCraftClient("YOUR_API_KEY");// Create batch conversionconst files = [{ url: "cache://file1.pdf", fileName: "document1.pdf" },{ url: "cache://file2.pdf", fileName: "document2.pdf" }];const batch = await client.createBatch(files, FormatType.Markdown, false);const result = await client.startBatch(batch.batchId);// Monitor progressconst status = await client.getBatchStatus(batch.batchId);console.log(`Completed: ${status.completedCount}/${status.totalCount}`);
Utilisation avancée (étape par étape)
import { PDFCraftClient, FormatType } from 'pdf-craft-sdk-ts';const client = new PDFCraftClient("YOUR_API_KEY");// Step 1: Submit taskconst taskId = await client.submitConversion("cache://file.pdf",FormatType.Markdown);console.log(`Task submitted. ID: ${taskId}`);// Step 2: Poll for completionconst downloadUrl = await client.waitForCompletion(taskId,FormatType.Markdown);console.log(`Download URL: ${downloadUrl}`);
Options de configuration
- formatType : FormatType.Markdown | FormatType.EPUB (par défaut : FormatType.Markdown)
- model : Modèle à utiliser (par défaut : 'gundam')
- wait : s'il faut attendre la fin (par défaut : true)
- maxWaitMs : temps d'attente maximum en millisecondes (par défaut : 7 200 000, soit 2 heures)
- checkIntervalMs : intervalle d'interrogation initial en millisecondes (par défaut : 1 000)
- maxCheckIntervalMs : intervalle d'interrogation maximal en millisecondes (par défaut : 5 000)
- backoffFactor : multiplicateur pour un intervalle croissant, ou utilisez l'énumération PollingStrategy (par défaut : PollingStrategy.Exponential / 1.5)
import { PDFCraftClient, FormatType, PollingStrategy } from 'pdf-craft-sdk-ts';const client = new PDFCraftClient("YOUR_API_KEY");// Example with custom polling configurationconst downloadUrl = await client.convert("cache://file.pdf", {formatType: FormatType.Markdown,model: "gundam",wait: true,includesFootnotes: true,ignorePdfErrors: true,ignoreOcrErrors: true,maxWaitMs: 600000, // Maximum wait time: 10 minutescheckIntervalMs: 2000, // Initial polling interval: 2 secondsmaxCheckIntervalMs: 10000, // Maximum polling interval: 10 secondsbackoffFactor: PollingStrategy.Exponential // or use a number like 1.5});