Zum Inhalt springen

Schnellstart

Hier der komplette Roundtrip mit curl. Du brauchst einen API-Key und ein PDF. Exportiere den Key zuerst:

Terminal-Fenster
export ACCESSFUL_API_KEY="ak_dein_key_hier"
export BASE="https://api.accessful.de/api/v1/upload-service"
  1. PDF hochladen. Sende es als Multipart-Feld files:

    Terminal-Fenster
    curl -X POST "$BASE/pdf/upload" \
    -H "X-API-Key: $ACCESSFUL_API_KEY" \
    -F "files=@dokument.pdf"

    Die Antwort listet eine caseId pro akzeptierter Datei:

    {
    "successfulUploads": ["7c2f1e4a-9b0d-4a1e-8f3c-2d6b5a9e1c40"],
    "duplicateFiles": [],
    "message": "Upload completed successfully. Uploaded 1 files. 0 duplicates found.",
    "callbackUrl": null
    }
  2. Job-Status pollen mit dieser caseId, bis er completed ist:

    Terminal-Fenster
    curl "$BASE/job-status/7c2f1e4a-9b0d-4a1e-8f3c-2d6b5a9e1c40" \
    -H "X-API-Key: $ACCESSFUL_API_KEY"
    { "jobStatus": "completed", "stage": "finished", "score": 87 }

    score ist die Barrierefreiheits-Qualität des Ergebnisses (0–100). Siehe alle jobStatus-Werte.

  3. Herunterladen des konvertierten PDF/UA:

    Terminal-Fenster
    curl -L "$BASE/download/7c2f1e4a-9b0d-4a1e-8f3c-2d6b5a9e1c40" \
    -H "X-API-Key: $ACCESSFUL_API_KEY" \
    -o dokument-pdfua.pdf
  4. Case löschen, wenn du ihn nicht mehr brauchst (optional, aber empfohlen — dies ist eine endgültige Löschung):

    Terminal-Fenster
    curl -X DELETE "$BASE/delete/7c2f1e4a-9b0d-4a1e-8f3c-2d6b5a9e1c40" \
    -H "X-API-Key: $ACCESSFUL_API_KEY"
const BASE = 'https://api.accessful.de/api/v1/upload-service';
const headers = { 'X-API-Key': process.env.ACCESSFUL_API_KEY };
// 1. Upload
const form = new FormData();
form.append('files', new Blob([await readFile('dokument.pdf')], { type: 'application/pdf' }), 'dokument.pdf');
const up = await fetch(`${BASE}/pdf/upload`, { method: 'POST', headers, body: form });
const { successfulUploads: [caseId] } = await up.json();
// 2. Pollen bis Endzustand
const terminal = new Set(['completed', 'failed', 'analyzer_failed', 'canceled', 'quota_exceeded']);
let status;
do {
await new Promise((r) => setTimeout(r, 2000));
status = await (await fetch(`${BASE}/job-status/${caseId}`, { headers })).json();
} while (!terminal.has(status.jobStatus));
if (status.jobStatus !== 'completed') throw new Error(`Job ${status.jobStatus}`);
// 3. Download
const pdf = await (await fetch(`${BASE}/download/${caseId}`, { headers })).arrayBuffer();
await writeFile('dokument-pdfua.pdf', Buffer.from(pdf));
console.log(`Fertig — Score ${status.score}`);

Lieber klicken statt tippen? Führe denselben Ablauf im Browser auf der Seite Live testen aus.