Entwickler-API
Integriere eine präzise Handschriftenerkennung in dein eigenes Produkt – Mathematik, Physik, Chemie und normaler Text werden unterstützt. Du erhältst professionell gesetztes LaTeX sowie PDF- und DOCX-Dateien. Die Anmeldung ist kostenlos; du zahlst nur für die Seiten, die du konvertierst.
Warum Teams die API nutzen, statt eine eigene OCR-Lösung zu entwickeln
Allgemeine OCR wandelt Handschrift in einfachen Text um. Scrivenos Verarbeitung erhält dagegen die ursprüngliche Struktur: Gleichungen bleiben Gleichungen, handgezeichnete Diagramme und chemische Strukturen werden erkannt und übernommen statt verworfen. Aus einer Transkription entstehen professionell gesetztes LaTeX, eine erstellte PDF und ein bearbeitbares DOCX mit echten Word-Gleichungen – nicht drei voneinander unabhängige Exporte mit jeweils bestmöglichem Ergebnis.
- Asynchron einreichen, Status abrufen und herunterladen oder nach Abschluss eines Auftrags per Webhook benachrichtigt werden
- HMAC-signierte Webhook-Daten mit Idempotenzschlüssel, damit Wiederholungsversuche sicher sind
- PDF, DOCX, Markdown oder LaTeX-Quellcode – alles aus derselben Anfrage
- Kostenloser Zugang – nur 0,003 $ pro konvertierter Seite, ohne monatlichen Mindestumsatz
Erstelle kostenlos ein Konto und hol dir deinen API-Schlüssel
Schnellstart
Reiche eine Datei ein, frage den Status ab und lade das Ergebnis herunter – genau wie in der Web-App.
Einreichen
curl -X POST https://api.scriveno.com/api/v1/convert \ -H "Authorization: Bearer isk_live_YOUR_API_KEY" \ -H "Idempotency-Key: <your-own-uuid>" \ -F "file=@notes.pdf" \ -F "webhookUrl=https://example.com/webhooks/scriveno"
Idempotency-Key ist optional, wird aber empfohlen. Sende nach einem Timeout oder Netzwerkfehler dieselbe Anfrage erneut, um den ursprünglichen Auftrag statt eines Duplikats zu erhalten.
Status prüfen
curl https://api.scriveno.com/api/v1/convert/{jobId} \
-H "Authorization: Bearer isk_live_YOUR_API_KEY"Herunterladen
curl https://api.scriveno.com/api/v1/convert/{jobId}/download/pdf \
-H "Authorization: Bearer isk_live_YOUR_API_KEY" \
-o result.pdfAlternativ kannst du anstelle von pdf auch docx, markdown oder latex verwenden.
Deine Aufträge auflisten
curl "https://api.scriveno.com/api/v1/convert?page=1&pageSize=20" \ -H "Authorization: Bearer isk_live_YOUR_API_KEY"
Auftrag abbrechen
curl -X POST https://api.scriveno.com/api/v1/convert/{jobId}/cancel \
-H "Authorization: Bearer isk_live_YOUR_API_KEY"Funktioniert nur, solange der Auftrag noch den Status queued oder processing hat. Dabei wird die gesamte Seitenreservierung erstattet, nicht nur der anteilige Rest.
Die vollständige interaktive Dokumentation findest du hier: https://api.scriveno.com/swagger
Du möchtest lieber direkt loslegen? Lade den .NET-Schnellstart herunter – eine einzelne Konsolen-App (ohne Pakete von Drittanbietern), mit der du Dateien einreichen, den Status abfragen, Ergebnisse herunterladen, Aufträge auflisten und abbrechen kannst. API-Schlüssel, Eingabedatei, Formate und Download-Ordner legst du in appsettings.json fest. Setze dort BaseUrl auf https://api.scriveno.com. Nach deiner Bestätigung reicht die App den Auftrag ein, zeigt den Status laufend an und lädt das Ergebnis selbstständig herunter.
Du möchtest lieber Postman verwenden? Importiere die fertige Collection. Alle Anfragen von oben sind bereits eingerichtet und auf https://api.scriveno.com ausgerichtet. Füge einfach deinen API-Schlüssel in die Variable apiKey der Collection ein.
Webhooks
Gib beim Einreichen die Adresse webhookUrl an. Sobald der Auftrag den Status completed, failed oder cancelled erreicht, sendet Scriveno eine POST-Anfrage dorthin. So musst du den Status nicht regelmäßig abfragen.
POST <your webhookUrl>
Content-Type: application/json
X-Scriveno-Signature: sha256=<hex-encoded HMAC-SHA256 of the raw body below>
X-Scriveno-Timestamp: <unix seconds when this delivery was signed>
X-Scriveno-Signature-V2: sha256=<hex-encoded HMAC-SHA256 of "<timestamp>.<raw body>">
{
"jobId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "completed",
"totalPages": 3,
"completedPages": 3,
"errorMessage": null,
"downloads": {
"pdf": "https://api.scriveno.com/api/v1/convert/{jobId}/download/pdf",
"docx": "https://api.scriveno.com/api/v1/convert/{jobId}/download/docx",
"markdown": "https://api.scriveno.com/api/v1/convert/{jobId}/download/markdown",
"latex": "https://api.scriveno.com/api/v1/convert/{jobId}/download/latex"
}
}Bei einem Fehler hat status den Wert failed; nach einem Abbruch lautet der Wert cancelled. In beiden Fällen ist errorMessage gesetzt und downloads ist null statt des oben gezeigten Objekts.
Überprüfe die Signatur, bevor du einer Nutzlast vertraust – jeder kann eine Anfrage an deinen Endpunkt senden. Berechne mit dem Webhook-Secret deines API-Schlüssels (es wird beim Erstellen des Schlüssels einmalig angezeigt) einen HMAC-SHA256 über den unveränderten Anfragetext. Wandle das Ergebnis in Hexadezimalzeichen um und vergleiche es mit dem Teil nach sha256= im Header X-Scriveno-Signature. Verwende dafür einen zeitkonstanten Vergleich. Bevorzuge X-Scriveno-Signature-V2: Diese Signatur umfasst auch X-Scriveno-Timestamp, sodass du eine später erneut gesendete abgefangene Zustellung zurückweisen kannst.
// pseudocode
ts = header["X-Scriveno-Timestamp"]
if abs(now_unix_seconds() - int(ts)) > 300: reject
expected = hex(hmac_sha256(webhookSecret, ts + "." + rawRequestBody))
received = header["X-Scriveno-Signature-V2"].removePrefix("sha256=")
if !constantTimeEquals(expected, received): rejectZustellung: Falls dein Endpunkt keinen 2xx-Status zurückgibt oder nach 10 Sekunden abbricht, erfolgen höchstens zwei Versuche insgesamt (ein Wiederholungsversuch nach 2 Sekunden). Schlagen beide Versuche fehl, wird nichts weiter gesendet. Frage als Ausweichlösung GET /api/v1/convert/{jobId} für Aufträge ab, zu denen du keinen Webhook erhalten hast.