# Bild zu Excel

Wandeln Sie gedruckte Tabellen aus Screenshots, Scans oder Fotos in bearbeitbare XLSX-Arbeitsmappen um.

Offizielle Dokumentation: https://img2excel.net/de/docs/api/image-to-excel

`POST /api/v1/image-to-excel`

Wandeln Sie gedruckte Tabellen aus Screenshots, Scans oder Fotos in bearbeitbare XLSX-Arbeitsmappen um. Der synchrone Endpunkt wartet auf den Abschluss. Fehlgeschlagene Konvertierungen verbrauchen keine Credits.

## Anfrage

### Header

| Header | Erforderlich | Beschreibung |
| --- | --- | --- |
| `Authorization` | Ja | `Bearer $IMG2EXCEL_API_KEY`. Verwenden Sie einen serverseitigen API-Schlüssel. |
| `Content-Type` | Ja | `multipart/form-data` mit boundary. Lassen Sie Ihren HTTP-Client den Header beim Datei-Upload setzen. |
| `Idempotency-Key` | Nein | Idempotenzschlüssel mit maximal 200 Zeichen. Für jeden Upload empfohlen; bei Wiederholungen denselben Wert verwenden. |

### Anfragekörper

| Feld | Typ | Erforderlich | Beschreibung |
| --- | --- | --- | --- |
| `file` | Binärdatei | Ja | Ein PNG-, JPG- oder JPEG-Bild, maximal 4 MB. |

Senden Sie das Bild als Datei-Upload, nicht als JSON oder Bild-URL. Der Endpunkt wählt das Erkennungsprofil automatisch.

## Anfragebeispiele

Führen Sie die Beispiele serverseitig mit gesetztem `IMG2EXCEL_API_KEY` aus. Python benötigt `pip install requests`; Node.js benötigt Version 20 oder neuer.


### cURL

```bash
curl --fail-with-body --max-time 330 -i https://img2excel.net/api/v1/image-to-excel \
  -H "Authorization: Bearer $IMG2EXCEL_API_KEY" \
  -H "Idempotency-Key: image-to-excel-001" \
  -F "file=@spreadsheet-photo.jpg"
```


### Python

```python
import os
import requests

with open("spreadsheet-photo.jpg", "rb") as image:
    response = requests.post(
        "https://img2excel.net/api/v1/image-to-excel",
        headers={
            "Authorization": f"Bearer {os.environ['IMG2EXCEL_API_KEY']}",
            "Idempotency-Key": "spreadsheet-photo-001",
        },
        files={"file": ("spreadsheet-photo.jpg", image, "image/jpeg")},
        timeout=330,
    )

response.raise_for_status()
job = response.json()
print(job["result"]["download_url"])
```


### Node.js

```ts
import { readFile } from 'node:fs/promises';

const file = await readFile('spreadsheet-photo.jpg');
const form = new FormData();
form.set('file', new File([file], 'spreadsheet-photo.jpg', { type: 'image/jpeg' }));

const response = await fetch('https://img2excel.net/api/v1/image-to-excel', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.IMG2EXCEL_API_KEY}`,
    'Idempotency-Key': 'spreadsheet-photo-001',
  },
  body: form,
  signal: AbortSignal.timeout(330_000),
});

if (!response.ok) throw new Error(await response.text());
const job = await response.json();
console.log(job.result.download_url);
```




## Antwort

**200 OK** — Konvertierung abgeschlossen. Laden Sie die Excel-Datei über `result.download_url` herunter. Die Beispiel-URL ist ein Platzhalter.

```json
{
  "id": "job_0123456789abcdef0123456789abcdef",
  "type": "image-to-excel",
  "status": "succeeded",
  "credits_reserved": 1,
  "credits_used": 1,
  "created_at": "2026-10-04T09:00:00.000Z",
  "completed_at": "2026-10-04T09:00:08.000Z",
  "result": {
    "filename": "table_result.xlsx",
    "content_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
    "size_bytes": 17330,
    "download_url": "https://signed-storage-url.example/...",
    "download_url_expires_in": 900
  }
}
```

**422 Unprocessable Entity** — Konvertierung fehlgeschlagen. Die Antwort enthält die Auftrags-ID, `status: "failed"`, `error.code` und `error.message`. Es werden keine Credits verbraucht.

Passt der Idempotenzschlüssel zu einer bestehenden Konvertierung, wird `Idempotent-Replayed: true` zurückgegeben. Abgeschlossene Aufträge liefern `200`, abgelaufene Ergebnisse `410`. Wartende oder laufende Aufträge liefern bei Wiederholung `202` mit `Location`. Fragen Sie diese URL ab, statt eine neue Konvertierung zu erstellen.

Alle Antwortfelder stehen unter [Aufträge und Fehler](https://img2excel.net/de/docs/api/jobs). Synchrone und asynchrone Aufrufe teilen pro Konvertierungstyp dieselben Aufträge, Kontolimits und Idempotenzschlüssel.

Der synchrone Endpunkt wartet auf die Konvertierung. Setzen Sie das HTTP-Client-Timeout auf 330 Sekunden. Bei einem Verbindungs-Timeout wiederholen Sie den Aufruf mit demselben `Idempotency-Key`. Ein neuer Schlüssel startet eine neue Konvertierung.

## Asynchrone Konvertierung (optional)

Mit `POST /api/v1/image-to-excel/jobs` können Sie ohne Warten senden. Felder und Authentifizierung bleiben gleich. Ein neuer Auftrag liefert `202`, seine ID und `Location`. Fragen Sie `GET /api/v1/jobs/{job_id}` alle 2–3 Sekunden ab, bis `succeeded`, `failed` oder `expired` erreicht ist. Laden Sie bei Erfolg `result.download_url` herunter. Siehe [Aufträge und Fehler](https://img2excel.net/de/docs/api/jobs).

---

OpenAPI 3.1: https://img2excel.net/api/openapi.json
Vollständige API-Dokumentation: https://img2excel.net/de/docs/api/text/llms-full.txt
