SciFig

API-Referenz

Bilder konvertieren

Vektorisieren Sie ein Bild als SVG oder exportieren Sie PNG, PDF, TIFF und PPTX, auch für Flussdiagramme.

Als Markdown anzeigen

JSON-Anfrageinhalt#

POST /images/conversions. Erforderlicher Berechtigungsbereich: figures:generate.

FeldTypErforderlichStandardRegeln
imagestringja—Eine PNG- oder JPEG-file_id oder die SVG-Ausgabe eines Flussdiagramms bis 20 MB; svg akzeptiert auch WebP
formatstringja—svg, png, pdf, tiff oder pptx
vector_modestringneineditable_textNur für svg: editable_text oder full_vector
dpiintegernein300Nicht für svg: 300, 600 oder 1000
widthintegernein2048Nur für Flussdiagramm-SVG-Quelldateien: lange Seite in Pixeln, 256–4096, insgesamt höchstens 8,388,608 Pixel

SVG-Vektorisierung#

  • Kostet 150 Credits und erfordert einen kostenpflichtigen Tarif. Verwendet denselben Vektorisierer wie die Canvas-Bearbeitung auf der Website. Die Quelle ist ein PNG-, JPEG- oder WebP-Bild.
  • editable_text erhält Text als bearbeitbaren SVG-Text; full_vector zeichnet alles einschließlich Text als Pfade nach.
  • Die Vektorisierung läuft als Auftrag. Credits werden erst reserviert, nachdem die Vektorisierungsaufgabe angenommen wurde. Die credits des Auftrags werden aus dem Ledger zurückgelesen. Eine fehlgeschlagene Vektorisierung wird erstattet und gibt für diesen Schlüssel TASK_FAILED zurück.
  • Die Konvertierung eines bereits vektorisierten Bildes gibt das frühere SVG zurück und kostet diesen Auftrag nichts.
  • Ist der Vektorisierer vor dem Aufgabenstart vorübergehend nicht verfügbar, lautet die Antwort 503 SERVICE_UNAVAILABLE mit Retry-After: Wiederholen Sie die Anfrage mit demselben Schlüssel.

PNG, PDF, TIFF und PPTX#

  • Kostenlos, bis zu 200 Konvertierungen pro Konto und Tag. Sie werden sofort abgeschlossen; die Antwort ist ein Auftrag mit Status succeeded.
  • Eine Konvertierung zählt erst nach erfolgreicher Prüfung aller Eingaben zum Tageskontingent und nur einmal pro Idempotency-Key. Eine Wiederholung mit demselben Schlüssel zählt nicht erneut. Nach Ausschöpfen des Kontingents lautet die Antwort 429 RATE_LIMITED mit details.reason = DAILY_CONVERSION_LIMIT und Retry-After bis zum Zurücksetzen des Tagesfensters.
  • Die Quelle ist ein PNG- oder JPEG-Bild oder die SVG-Ausgabe eines Flussdiagramms. WebP wird nicht akzeptiert: UNSUPPORTED_SOURCE_FORMAT.
  • Eine Datei, deren kodierte Ausgabe 24 MiB überschreiten würde, wird mit 400 INVALID_REQUEST und OUTPUT_TOO_LARGE abgelehnt. Konvertieren Sie ein kleineres Bild.
  • dpi wird in die Datei geschrieben und legt die physische Seitengröße von PDF und PPTX fest. Die Pixelzahl wird nicht geändert. Für mehr Pixel vergrößern Sie das Bild zuerst.
  • PNG und TIFF erfordern eine PNG-Quelle; PDF und PPTX akzeptieren auch JPEG. TIFF verwendet verlustfreie Deflate-Komprimierung.
  • Die PPTX enthält eine Folie mit dem Bild, keine bearbeitbaren Formen.

Flussdiagramme exportieren#

Die SVG-Ausgabe eines Flussdiagramms kann in PNG, PDF, TIFF oder PPTX konvertiert werden. Der Server rendert sie mit Arial- und Noto-Schriften mit width Pixeln an der langen Seite: standardmäßig 2048, höchstens 4096 und insgesamt höchstens 8,388,608 Pixel; ein quadratisches Diagramm darf höchstens 2896 px groß sein. Größere Anfragen führen zu 400 INVALID_REQUEST mit RENDER_TOO_LARGE. Text, den die Schriften nicht darstellen können, wird mit 400 INVALID_REQUEST und SVG_NOT_RENDERABLE abgelehnt, statt als leere Kästchen gezeichnet zu werden. Wenn der Renderer selbst fehlschlägt, lautet die Antwort 503 SERVICE_UNAVAILABLE mit SVG_RENDERER_UNAVAILABLE und Retry-After: Wiederholen Sie die Anfrage mit demselben Schlüssel. Andere SVG-Dateien sind als Eingaben nicht möglich.

cURL#

curl -X POST https://scifig.ai/api/v1/images/conversions \
  -H "Authorization: Bearer $SCIFIG_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Prefer: wait=25" \
  -H "Content-Type: application/json" \
  -d '{
    "image": "<file_id>",
    "format": "pdf",
    "dpi": 600
  }'

JavaScript#

const response = await fetch('https://scifig.ai/api/v1/images/conversions', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.SCIFIG_API_KEY}`,
    'Idempotency-Key': crypto.randomUUID(),
    Prefer: 'wait=25',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "image": "<file_id>",
    "format": "pdf",
    "dpi": 600
  }),
});
const result = await response.json();
console.log(response.status, result);

Python#

import os
import uuid

import requests

headers = {
    "Authorization": f"Bearer {os.environ['SCIFIG_API_KEY']}",
    "Idempotency-Key": str(uuid.uuid4()),
    "Prefer": "wait=25",
}
response = requests.post(
    "https://scifig.ai/api/v1/images/conversions",
    headers=headers,
    json={
        "image": "<file_id>",
        "format": "pdf",
        "dpi": 600
    },
    timeout=60,
)
print(response.status_code, response.json())