API-Referenz

Mit der ConvertFly-REST-API konvertieren, optimieren und transformieren Sie Dateien programmatisch. Erstellen Sie Konvertierungs-Pipelines mit Jobs und Tasks: Datei importieren, verarbeiten und das Ergebnis exportieren, alles in einer einzigen Anfrage.

Basis-URLhttps://convertfly.io/api/v1

Alle Endpunkte sind relativ zu dieser Basis-URL. Anfragen und Antworten verwenden JSON. Alle Zeitstempel sind in UTC im Format ISO 8601.

Authentifizierung

Jede Anfrage muss einen API-Schlüssel im Header Authorization enthalten. Schlüssel beginnen mit dem Präfix cvfly_sk_ und können in Ihrer Übersicht erstellt werden.

HTTP-Header
Authorization: Bearer cvfly_sk_live_abc123def456...

Sicherheitshinweis: Legen Sie API-Schlüssel niemals im clientseitigen Code offen. Speichern Sie sie in Umgebungsvariablen und führen Sie API-Aufrufe von Ihrem Server aus.

Berechtigungen der Schlüssel

API-Schlüssel können auf bestimmte Operationen beschränkt werden. Ein Schlüssel, der ohne Liste von Berechtigungen erstellt wird, erhält die Standardberechtigungen.

BerechtigungZugriff
job:readJobs lesen(Standard)
job:writeJobs und ihre Tasks erstellen, abbrechen, erneut ausführen und löschen(Standard)
task:readTasks lesen(Standard)
convertKonvertierungen ausführen(Standard)
api-key:readAPI-Schlüssel auflisten
api-key:writeAPI-Schlüssel erstellen und widerrufen
webhook:readWebhooks auflisten
webhook:writeWebhooks erstellen und löschen

Schnellstart

Konvertieren Sie ein PDF in drei Schritten in DOCX: Job erstellen, auf den Abschluss warten, dann das Ergebnis herunterladen.

1

Konvertierungsjob erstellen

curl
curl -X POST https://convertfly.io/api/v1/jobs \
  -H "Authorization: Bearer cvfly_sk_live_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "tasks": {
      "import-file": {
        "operation": "import/url",
        "url": "https://example.com/report.pdf"
      },
      "convert": {
        "operation": "convert",
        "input": ["import-file"],
        "output_format": "docx"
      },
      "export": {
        "operation": "export/url",
        "input": ["convert"]
      }
    }
  }'
JavaScript
const res = await fetch("https://convertfly.io/api/v1/jobs", {
  method: "POST",
  headers: {
    "Authorization": "Bearer cvfly_sk_live_abc123...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    tasks: {
      "import-file": {
        operation: "import/url",
        url: "https://example.com/report.pdf",
      },
      convert: {
        operation: "convert",
        input: ["import-file"],
        output_format: "docx",
      },
      export: {
        operation: "export/url",
        input: ["convert"],
      },
    },
  }),
});

const job = await res.json();
console.log(job.id);     // "cmxr9k2p0..."
console.log(job.status); // "processing"
Python
import requests

resp = requests.post(
    "https://convertfly.io/api/v1/jobs",
    headers={"Authorization": "Bearer cvfly_sk_live_abc123..."},
    json={
        "tasks": {
            "import-file": {
                "operation": "import/url",
                "url": "https://example.com/report.pdf",
            },
            "convert": {
                "operation": "convert",
                "input": ["import-file"],
                "output_format": "docx",
            },
            "export": {
                "operation": "export/url",
                "input": ["convert"],
            },
        }
    },
)
job = resp.json()
print(job["id"])      # "cmxr9k2p0..."
print(job["status"])  # "processing"
2

Auf den Abschluss warten

Fragen Sie den Status des Jobs regelmässig ab oder verwenden Sie Webhooks für Benachrichtigungen in Echtzeit.

curl
curl https://convertfly.io/api/v1/jobs/job_7kX9mP2qR \
  -H "Authorization: Bearer cvfly_sk_live_abc123..."
Antwort
{
  "id": "cmxr9k2p0",
  "status": "finished",
  "created_at": "2026-04-03T10:30:00Z",
  "tasks": [
    {
      "name": "export",
      "operation": "export/url",
      "status": "finished",
      "result": {
        "files": [
          { "url": "https://files.convertfly.io/d/cmv.../result.docx?e=...&s=..." }
        ]
      }
    }
  ]
}
3

Ergebnis herunterladen

Verwenden Sie die URL aus dem Ergebnis des Export-Tasks. Download-Links sind 1 Stunde gültig; Dateien werden 24 Stunden nach dem Hochladen gelöscht.

curl
curl -o result.docx "https://files.convertfly.io/d/..."

Jobs

Ein Job ist ein Container für einen oder mehrere Tasks, die zusammen eine Konvertierungs-Pipeline bilden. Die Tasks eines Jobs werden in der Reihenfolge ihrer Abhängigkeiten ausgeführt: Jeder Task kann über das Feld input auf die Ausgabe eines vorherigen Tasks verweisen.

Pipeline-Konzept

Eine typische Pipeline sieht so aus: import/url -> convert -> export/url. Sie können auch mehrere Operationen verketten: Import -> Konvertierung -> Optimierung -> Wasserzeichen -> Export.

Status eines Jobs

StatusBeschreibung
waitingJob erstellt, zur Verarbeitung eingereiht
processingMindestens ein Task wird gerade ausgeführt
finishedAlle Tasks erfolgreich abgeschlossen
errorEin oder mehrere Tasks sind fehlgeschlagen

Job erstellen

POST/api/v1/jobs
tagstring

Optionale Bezeichnung zur Organisation von Jobs (z. B. batch-2026-04).

tasksobjecterforderlich

Eine Zuordnung von Task-Namen zu Task-Definitionen. Task-Namen müssen innerhalb des Jobs eindeutig sein.

webhook_urlstring

URL, die ein Ereignis job.finished oder job.failed erhält, wenn der Job abgeschlossen ist.

curl
curl -X POST https://convertfly.io/api/v1/jobs \
  -H "Authorization: Bearer cvfly_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "tag": "invoice-batch",
    "tasks": {
      "import-file": {
        "operation": "import/url",
        "url": "https://example.com/invoice.pdf"
      },
      "to-png": {
        "operation": "convert",
        "input": ["import-file"],
        "output_format": "png",
        "options": { "density": 300 }
      },
      "export": {
        "operation": "export/url",
        "input": ["to-png"]
      }
    }
  }'
Antwort (201 Created)
{
  "id": "cmxr9k2p0",
  "tag": "invoice-batch",
  "status": "processing",
  "created_at": "2026-04-03T10:30:00Z",
  "tasks": [
    { "name": "import-file", "operation": "import/url", "status": "finished" },
    { "name": "to-png",      "operation": "convert",    "status": "processing" },
    { "name": "export",      "operation": "export/url", "status": "waiting" }
  ]
}

Beispiel: Dateien zu einem PDF zusammenführen

Die Operation merge fasst zwei oder mehr Eingaben (PDFs und/oder Bilder) zu einem einzigen PDF zusammen. Führen Sie die Namen der Eingabe-Tasks in der gewünschten Reihenfolge im Array input auf.

curl
curl -X POST https://convertfly.io/api/v1/jobs \
  -H "Authorization: Bearer cvfly_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "tasks": {
      "cover": {
        "operation": "import/url",
        "url": "https://example.com/cover.png"
      },
      "report": {
        "operation": "import/url",
        "url": "https://example.com/report.pdf"
      },
      "merge-all": {
        "operation": "merge",
        "input": ["cover", "report"]
      },
      "export": {
        "operation": "export/url",
        "input": ["merge-all"]
      }
    }
  }'

Beispiel: Website erfassen

Die Operation capture-website benötigt keinen Eingabe-Task: Sie rendert eine öffentliche URL als PDF, PNG oder JPG.

curl
curl -X POST https://convertfly.io/api/v1/jobs \
  -H "Authorization: Bearer cvfly_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "tasks": {
      "capture": {
        "operation": "capture-website",
        "url": "https://example.com",
        "output_format": "pdf",
        "width": 1280
      },
      "export": {
        "operation": "export/url",
        "input": ["capture"]
      }
    }
  }'

Job abrufen

GET/api/v1/jobs/:id

Ruft die Details eines Jobs und den Status aller zugehörigen Tasks ab.

curl
curl https://convertfly.io/api/v1/jobs/job_7kX9mP2qR \
  -H "Authorization: Bearer cvfly_sk_..."

Jobs auflisten

GET/api/v1/jobs
pageinteger

Seitennummer, beginnend bei 1. Standard: 1.

limitinteger

Ergebnisse pro Seite, 1-100. Standard: 20.

statusstring

Nach Status filtern: WAITING, PROCESSING, FINISHED, ERROR.

tagstring

Nach Bezeichnung filtern.

curl
curl "https://convertfly.io/api/v1/jobs?status=finished&per_page=5" \
  -H "Authorization: Bearer cvfly_sk_..."
Antwort
{
  "data": [ ... ],
  "links": { "first": "?page=1&per_page=5", "last": "?page=9&per_page=5", "prev": null, "next": "?page=2&per_page=5" },
  "meta": {
    "page": 1,
    "per_page": 5,
    "total": 42
  }
}

Job löschen

DELETE/api/v1/jobs/:id

Löscht einen Job und alle zugehörigen Dateien. Laufende Tasks werden abgebrochen. Diese Aktion kann nicht rückgängig gemacht werden.

curl
curl -X DELETE https://convertfly.io/api/v1/jobs/job_7kX9mP2qR \
  -H "Authorization: Bearer cvfly_sk_..."

Auf den Abschluss warten

GET/api/v1/jobs/:id/wait

Long-Polling-Endpunkt, der blockiert, bis der Job einen Endzustand erreicht (FINISHED oder ERROR). Nach 300 Sekunden erfolgt ein Timeout mit 202 Accepted, falls der Job noch verarbeitet wird.

curl
curl "https://convertfly.io/api/v1/jobs/job_7kX9mP2qR/wait?timeout=120" \
  -H "Authorization: Bearer cvfly_sk_..."

Tasks

Tasks sind die einzelnen Schritte innerhalb eines Jobs. Jeder Task hat einen Namen (den Schlüssel im Objekt tasks), eine operation und optional ein Array input, das auf Namen vorheriger Tasks verweist.

Felder eines Tasks

FeldTypBeschreibung
operationstringDie auszuführende Operation (siehe Operationen)
inputstring[]Namen der Tasks, deren Ausgabe als Eingabe dient
output_formatstringZielformat für Konvertierungsoperationen
optionsobjectOperationsspezifische Einstellungen (Qualität, Auflösung usw.)

Tasks eines Jobs auflisten

GET/api/v1/jobs/:id/tasks
Antwort
{
  "data": [
    {
      "name": "import-file",
      "operation": "import/url",
      "status": "finished",
      "result": { "file_id": "file_Xk9m..." }
    },
    {
      "name": "convert",
      "operation": "convert",
      "status": "finished",
      "result": { "file_id": "file_Pm3n..." }
    }
  ]
}

Task abrufen

GET/api/v1/jobs/:job_id/tasks/:task_name

Task abbrechen

POST/api/v1/jobs/:job_id/tasks/:task_name/cancel

Bricht einen laufenden oder wartenden Task ab. Nachgelagerte Tasks, die von ihm abhängen, werden ebenfalls abgebrochen.

Fehlgeschlagenen Task wiederholen

POST/api/v1/jobs/:job_id/tasks/:task_name/retry

Wiederholt einen Task mit dem Status ERROR. Ist der Task kostenpflichtig, werden erneut Credits verbraucht.

Datei-Upload

Es gibt drei Möglichkeiten, Dateien an ConvertFly zu übergeben. Wählen Sie diejenige, die am besten zu Ihrem Anwendungsfall passt.

Import von einer URL

Die einfachste Methode. ConvertFly lädt die Datei von einer öffentlich zugänglichen URL herunter.

Task-Definition
{
  "import-file": {
    "operation": "import/url",
    "url": "https://example.com/document.pdf",
    "filename": "document.pdf",
    "headers": {
      "Authorization": "Bearer your-external-token"
    }
  }
}

Direkter Upload (vorsignierte URL)

Für Dateien auf Ihrem lokalen Rechner. Dies erfolgt in zwei Schritten: Erstellen Sie zuerst den Task, um eine vorsignierte Upload-URL zu erhalten, und senden Sie dann Ihre Datei per PUT an diese URL.

Schritt 1: Job mit import/upload erstellen
{
  "upload-file": {
    "operation": "import/upload",
    "filename": "photo.jpg"
  }
}
Schritt 2: An die vorsignierte URL hochladen
# The task result will contain the presigned URL
curl -X PUT "https://files.convertfly.io/convertfly-files/..." \
  -H "Content-Type: image/jpeg" \
  --data-binary @photo.jpg

Import aus Base64

Für kleine Dateien (unter 10 MB). Betten Sie den Dateiinhalt direkt in die Anfrage ein.

Task-Definition
{
  "import-file": {
    "operation": "import/base64",
    "file": "JVBERi0xLjQKJcOkw7zD...",
    "filename": "document.pdf"
  }
}
MethodeMax. GrösseGeeignet für
import/url5 GBBereits online gehostete Dateien
import/upload5 GBLokale Dateien, grosse Dateien
import/base6410 MBKleine Dateien, direkt in der Anfrage

Konvertierungsoptionen

Jede Operation unterstützt eigene Optionen. Hier finden Sie alle verfügbaren Operationen und die Formatpaare für Konvertierungen.

Verfügbare Operationen

OperationBeschreibungCredits
import/uploadDatei über eine vorsignierte URL hochladen0
import/urlDatei von einer URL importieren0
import/base64Datei aus Base64-Daten importieren0
convertZwischen Formaten konvertieren1-4
optimizeDatei komprimieren/optimieren1
thumbnailVorschaubild erzeugen1
mergeMehrere PDFs und/oder Bilder zu einem einzigen PDF zusammenführen1
watermarkText- oder Bildwasserzeichen zu Bildern, Videos oder PDFs hinzufügen1
splitSeiten aus einem PDF extrahieren oder es in ein PDF pro Seite teilen (ZIP)1
rotateDie Seiten eines PDFs um 90, 180 oder 270 Grad drehen1
resizeEin Bild nach Breite, Höhe oder Prozent skalieren, Proportionen bleiben erhalten1
gifEinen Videoausschnitt in ein animiertes GIF umwandeln (Beginn, Dauer, fps, Breite)2
ocrText in PDFs oder Bildern erkennen (14 Sprachen, dieselben wie auf der OCR-Seite)3
capture-websiteÖffentliche Website als PDF, PNG oder JPG erfassen1
metadataMetadaten einer Datei extrahieren1
export/urlSignierte Download-URL erhalten0
export/s3Direkt in Ihren S3-Bucket exportieren0

Unterstützte Formatpaare

Beliebte Konvertierungen. Das Format wird automatisch aus der Datei erkannt, Sie können input_format aber auch explizit angeben.

KategorieEingabeformateAusgabeformate
Dokumentepdf, docx, doc, odt, rtf, txt, htmlpdf, docx, odt, rtf, txt, html
Tabellenxlsx, xls, ods, csvxlsx, ods, csv, pdf
Präsentationenpptx, ppt, odppptx, odp, pdf
Bilderjpg, png, gif, bmp, tiff, webp, svg, heicjpg, png, gif, bmp, tiff, webp
Videomp4, avi, mov, mkv, webmmp4, avi, mov, mkv, webm, gif
Audiomp3, wav, ogg, flac, aac, m4amp3, wav, ogg, flac, aac

Qualitäts- und Verarbeitungsoptionen

Übergeben Sie diese im Objekt options eines Konvertierungs-Tasks.

qualityinteger

Ausgabequalität für verlustbehaftete Formate (1-100). Standard: 85.

densityinteger

DPI für die Konvertierung von Dokumenten in Bilder. Standard: 150.

widthinteger

Auf diese Breite in Pixeln skalieren. Das Seitenverhältnis bleibt erhalten, wenn height fehlt.

heightinteger

Auf diese Höhe in Pixeln skalieren. Das Seitenverhältnis bleibt erhalten, wenn width fehlt.

pagesstring

Seitenbereich für Dokumentoperationen, z. B. 1-5, 1,3,5, all.

Beispiel: hochwertiges PNG mit 300 DPI
{
  "convert-hq": {
    "operation": "convert",
    "input": ["import-file"],
    "output_format": "png",
    "options": {
      "density": 300,
      "quality": 95
    }
  }
}

Webhooks

Registrieren Sie Webhook-URLs, um Benachrichtigungen in Echtzeit zu erhalten, wenn sich der Status von Jobs oder Tasks ändert. Alle Nutzdaten sind mit HMAC-SHA256 signiert, sodass Sie prüfen können, dass sie von ConvertFly stammen.

Webhook erstellen

POST/api/v1/webhooks
urlstringerforderlich

Die HTTPS-URL, die Webhook-Ereignisse empfängt.

eventsstring[]erforderlich

Zu abonnierende Ereignistypen.

curl
curl -X POST https://convertfly.io/api/v1/webhooks \
  -H "Authorization: Bearer cvfly_sk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://your-app.com/webhooks/convertfly",
    "events": ["job.finished", "job.failed"]
  }'
Antwort (201 Created)
{
  "data": {
    "id": "wh_Abc123...",
    "url": "https://your-app.com/webhooks/convertfly",
    "events": ["job.finished", "job.failed"],
    "signing_secret": "whsec_9f8e7d6c5b4a...",
    "created_at": "2026-04-03T10:30:00Z"
  }
}

Webhooks auflisten

GET/api/v1/webhooks

Webhook löschen

DELETE/api/v1/webhooks/:id

Ereignistypen

EreignisAuslöser
job.finishedAlle Tasks des Jobs wurden erfolgreich abgeschlossen
job.failedEin oder mehrere Tasks sind fehlgeschlagen, der Job ist im Status ERROR
task.finishedEin einzelner Task wurde abgeschlossen
task.failedEin einzelner Task ist fehlgeschlagen

Webhook-Nutzdaten

POST an Ihre Webhook-URL
{
  "event": "job.finished",
  "timestamp": "2026-04-03T10:31:15Z",
  "data": {
    "id": "job_7kX9mP2qR",
    "status": "finished",
    "tasks": { ... }
  }
}

Signaturen prüfen

Jede Webhook-Anfrage enthält zwei Header: X-Webhook-Signature und X-Webhook-Timestamp. Prüfen Sie diese, um sicherzustellen, dass die Nutzdaten von ConvertFly gesendet und nicht verändert wurden.

Node.js
import crypto from "crypto";

function verifyWebhook(rawBody, signature, timestamp, secret) {
  const signedContent = timestamp + "." + rawBody;
  const expected = "v1=" + crypto
    .createHmac("sha256", secret)
    .update(signedContent)
    .digest("hex");

  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(signature)
  );
}
Python
import hmac, hashlib

def verify_webhook(raw_body: bytes, signature: str, timestamp: str, secret: str) -> bool:
    signed_content = f"{timestamp}.{raw_body.decode()}"
    expected = "v1=" + hmac.new(
        secret.encode(), signed_content.encode(), hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature)

API-Schlüssel

Verwalten Sie API-Schlüssel programmatisch. Sie können Schlüssel auch in der Übersicht verwalten.

API-Schlüssel erstellen

POST/api/v1/api-keys
namestringerforderlich

Ein aussagekräftiger Name für den Schlüssel.

scopesstring[]

Zu erteilende Berechtigungen. Standard: ["*"] (Vollzugriff).

Antwort (201 Created)
{
  "data": {
    "id": "key_Xk9m...",
    "name": "production-server",
    "key": "cvfly_sk_live_abc123def456...",
    "scopes": ["*"],
    "created_at": "2026-04-03T10:30:00Z"
  }
}

Wichtig: Der vollständige API-Schlüssel wird nur einmal bei der Erstellung angezeigt. Bewahren Sie ihn sicher auf, er kann später nicht mehr abgerufen werden.

API-Schlüssel auflisten

GET/api/v1/api-keys

API-Schlüssel widerrufen

DELETE/api/v1/api-keys/:id

Macht den Schlüssel sofort ungültig. Alle Anfragen mit diesem Schlüssel geben 401 zurück.

Ratenbegrenzung

API-Anfragen werden pro API-Schlüssel begrenzt, um eine faire Nutzung sicherzustellen. Bei Überschreitung des Limits geben Anfragen 429 Too Many Requests zurück.

Standardlimit

Jeder API-Schlüssel erlaubt 100 Anfragen pro Stunde. Das aktuelle Limit und das Zeitfenster eines Schlüssels werden beim Auflisten Ihrer Schlüssel als rate_limit und rate_limit_window (Sekunden) zurückgegeben. Kontaktieren Sie uns, wenn Ihre Integration ein höheres Limit benötigt.

Antwort-Header

Jede Antwort auf eine mit einem API-Schlüssel gestellte Anfrage enthält diese Header:

X-RateLimit-LimitHeader

Maximal zulässige Anfragen im aktuellen Zeitfenster.

X-RateLimit-RemainingHeader

Verbleibende Anfragen im aktuellen Zeitfenster.

X-RateLimit-ResetHeader

Unix-Zeitstempel, zu dem das Zeitfenster zurückgesetzt wird.

Retry-AfterHeader

Wartezeit in Sekunden vor einem erneuten Versuch (nur bei Antworten mit 429).

Beispiel für eine Antwort mit 429
HTTP/1.1 429 Too Many Requests
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1743681600
Retry-After: 3600

{
  "code": "RATE_LIMIT_EXCEEDED",
  "message": "Rate limit exceeded. 100 requests per 3600s allowed."
}

Fehler

ConvertFly verwendet die üblichen HTTP-Statuscodes. Alle Fehlerantworten folgen einem einheitlichen Format mit einem maschinenlesbaren code und einer für Menschen lesbaren message.

Format der Fehlerantwort

JSON
{
  "code": "INVALID_DATA",
  "message": "Missing required field: output_format",
  "details": {
    "field": "output_format",
    "reason": "required"
  }
}

Fehlercodes

CodeHTTPBeschreibung
INVALID_DATA400Ungültiger Anfragetext oder ungültige Parameter
UNAUTHENTICATED401Fehlender oder ungültiger API-Schlüssel
FORBIDDEN403Dem API-Schlüssel fehlt die für diese Operation erforderliche Berechtigung
NOT_FOUND404Die Ressource existiert nicht oder wurde gelöscht
CONFLICT409Die Ressource existiert bereits oder die Operation steht im Konflikt mit dem aktuellen Zustand
PAYLOAD_TOO_LARGE413Der Anfragetext überschreitet die maximal zulässige Grösse
UNSUPPORTED_FORMAT422Die angeforderte Konvertierung wird nicht unterstützt
RATE_LIMIT_EXCEEDED429Anfragelimit überschritten, siehe Ratenbegrenzung
INSUFFICIENT_CREDITS402Nicht genügend Credits für diese Operation
SERVER_ERROR500Interner Serverfehler, erneut versuchen oder Support kontaktieren
UNAVAILABLE503Dienst vorübergehend nicht verfügbar, bitte gleich erneut versuchen

Umgang mit Fehlern

JavaScript
const res = await fetch("https://convertfly.io/api/v1/jobs", {
  method: "POST",
  headers: {
    "Authorization": "Bearer cvfly_sk_...",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ tasks: { /* ... */ } }),
});

if (!res.ok) {
  const error = await res.json();
  console.error(`[${error.code}] ${error.message}`);
  // "[INVALID_DATA] Missing required field: output_format"
  return;
}

const { data: job } = await res.json();

Credits

Jede Operation kostet eine bestimmte Anzahl Credits. Import- und Exportoperationen sind kostenlos. Ihr verbleibendes Guthaben ist in jeder API-Antwort im Header X-Credits-Remaining enthalten.

Kosten in Credits nach Konvertierungsart

OperationKostenBeispiele
Import / ExportKostenlosimport/url, import/upload, export/url, export/s3
Bildkonvertierung1 Creditjpg in png, webp in gif, heic in jpg
Audiokonvertierung1 Creditmp3 in wav, flac in aac
Dokument in PDF1 Credittxt in pdf, html in pdf, md in pdf
Office in PDF2 Creditsdocx in pdf, pptx in pdf, xlsx in pdf
Videokonvertierung2 Creditsmp4 in webm, mov in mp4
PDF in Office4 Creditspdf in docx, pdf in pptx
Optimieren1 CreditBilder, PDFs komprimieren
Vorschaubild1 CreditVorschaubild erzeugen
Zusammenführen1 CreditMehrere PDFs zusammenführen
Wasserzeichen1 CreditText-/Bildüberlagerung hinzufügen
PDF teilen1 CreditSeiten 1-3, 7 extrahieren oder eine Datei pro Seite
PDF drehen1 CreditAlle Seiten oder eine Auswahl drehen
Bild skalieren1 Credit1200 px breit, 50 Prozent
GIF erstellen2 Creditsmp4-Ausschnitt zu gif, gleicher Preis wie eine Videokonvertierung
Website erfassen1 CreditEine URL als PDF oder Bild rendern
OCR3 CreditsGescanntes PDF durchsuchbar machen
Metadaten1 CreditDateiinformationen extrahieren

Guthaben prüfen

Jede API-Antwort enthält den Header X-Credits-Remaining mit Ihrem aktuellen Guthaben.

Antwort-Header
HTTP/1.1 201 Created
Content-Type: application/json
X-Credits-Remaining: 9847
X-Credits-Used: 2

Reicht Ihr Guthaben nicht aus, um einen Job abzuschliessen, gibt die API 402 mit dem Fehlercode INSUFFICIENT_CREDITS zurück. Laden Sie Credits in Ihrer Abrechnungsübersicht auf.

Testumgebung

Mit Testschlüsseln (Sandbox) können Sie eine Integration vollständig entwickeln und testen, ohne Credits zu verbrauchen. Erstellen Sie einen Schlüssel mit "sandbox": true; er beginnt mit cf_test_ statt cvfly_sk_. Alles funktioniert wie in der Produktion, mit drei Unterschieden.

CreditsWerden nie belastet. Ihr Guthaben bleibt unverändert.
DateigrösseEingaben sind auf 5 MB begrenzt.
AusgabeBilder, Videos und PDFs tragen ein Wasserzeichen „ConvertFly SANDBOX“.
Testschlüssel erstellen
curl -X POST https://convertfly.io/api/v1/api-keys \
  -H "Authorization: Bearer YOUR_LIVE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Sandbox", "sandbox": true}'

# Response includes: "key": "cf_test_...", "is_sandbox": true

Bereit, loszulegen?

Erstellen Sie Ihr kostenloses Konto und testen Sie die API kostenlos mit einem Testschlüssel.

Ihre Daten

Keine Werbung und keine Werbenetzwerke, also nichts abzulehnen. Das verwenden wir.

Ihre Dateien

Verschlüsselt gespeichert und 24 Stunden nach dem Hochladen gelöscht.

Notwendige Cookies

Immer aktiv
ZweckNameDauer
Ihre Sprache merkenNEXT_LOCALEBis zum Schließen des Browsers
Ihr Gratis-Kontingent zählencf_free1 Jahr
Sie angemeldet haltenauthjs.*30 Tage, wenn Sie ein Konto haben

Plausible, gehostet von Dizzus, ohne Cookies. Wir sehen Gesamtzahlen, keine Personen.

Dienstleister: Stripe für Zahlungen, Cloudflare für DNS und Schutz vor Bots. Datenschutzerklärung