Vai al contenuto principale

API per l'estrazione dell'estratto conto

API REST per convertire estratti conto PDF in JSON strutturato. 99,9%+ delle transazioni identificate correttamente, rimborso automatico in caso di fallimento.

$ curl https://api.bankstatementlab.com/v1/extractions \
  -H "Authorization: Bearer bsl_live_..." \
  -F "file=@statement.pdf"

Estrazione estratti conto

Estrai transazioni, saldi e metadati da qualsiasi PDF.

Output JSON strutturato

Schema prevedibile nelle 10 lingue supportate.

99,9%+ delle transazioni identificate correttamente

Rimborso automatico in caso di fallimento. Nessun addebito per estrazioni fallite.

Modalità sincrona e asincrona

Sincrono per piccoli PDF, asincrono + polling per batch di grandi dimensioni.

Esempi di codice

Integrazione in qualsiasi lingua. Esempi di seguito.

$ curl https://api.bankstatementlab.com/v1/extractions \
  -H "Authorization: Bearer bsl_live_..." \
  -F "file=@statement.pdf"

Formato delle risposte

I campi data, column_names e transaction_count sono presenti solo quando status vale "completed". Negli altri casi vengono omessi dal JSON (sono assenti, non null).

GET /v1/extractions/:id

200 OK — Estrazione completata

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": "ext_3f8a9b2c1d4e5f6a7b8c9d0e",
  "status": "completed",
  "file_name": "statement-march-2026.pdf",
  "created_at": "2026-03-15T10:23:00.000Z",
  "completed_at": "2026-03-15T10:23:18.000Z",
  "page_count": 3,
  "credits_charged": 3,
  "api_key_id": "ak_abc123",
  "column_names": ["Date", "Description", "Amount"],
  "transaction_count": 42,
  "data": {
    "columns": ["Date", "Description", "Amount"],
    "transactions": [
      ["2026-03-01", "VIREMENT SEPA", "1500.00"],
      ["2026-03-02", "CB CARREFOUR", "-45.20"]
    ]
  }
}

200 OK — Estrazione in corso

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": "ext_3f8a9b2c1d4e5f6a7b8c9d0e",
  "status": "processing",
  "file_name": "statement-march-2026.pdf",
  "created_at": "2026-03-15T10:23:00.000Z",
  "page_count": 3,
  "credits_charged": 3,
  "api_key_id": "ak_abc123"
}

200 OK — Estrazione fallita

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": "ext_3f8a9b2c1d4e5f6a7b8c9d0e",
  "status": "failed",
  "file_name": "statement-march-2026.pdf",
  "created_at": "2026-03-15T10:23:00.000Z",
  "completed_at": "2026-03-15T10:23:32.000Z",
  "page_count": 3,
  "credits_charged": 3,
  "api_key_id": "ak_abc123",
  "error": {
    "type": "extraction_failed",
    "message": "Extraction failed due to an internal error. Contact support if the issue persists."
  }
}

Schema di polling

Quando un'estrazione viene eseguita in modalità async, la risposta contiene status: "processing" finché il worker non ha terminato. Verifica sempre che status valga "completed" PRIMA di leggere i campi data, transaction_count e column_names: vengono omessi dal JSON fino al completamento dell'estrazione.

Frequenza di polling consigliata lato client: da 5 a 10 secondi. Il worker lato server viene eseguito ogni 10 secondi; un polling più frequente non accelera il risultato.

GET /v1/extractions

200 OK — Pagina mista (un elemento per stato)

HTTP/1.1 200 OK
Content-Type: application/json

{
  "data": [
    {
      "id": "ext_001",
      "status": "completed",
      "file_name": "march.pdf",
      "created_at": "2026-03-15T10:00:00.000Z",
      "completed_at": "2026-03-15T10:00:18.000Z",
      "page_count": 3,
      "credits_charged": 3,
      "api_key_id": "ak_abc123",
      "column_names": ["Date", "Description", "Amount"],
      "transaction_count": 42
    },
    {
      "id": "ext_002",
      "status": "processing",
      "file_name": "april.pdf",
      "created_at": "2026-04-15T10:00:00.000Z",
      "page_count": 5,
      "credits_charged": 5,
      "api_key_id": "ak_abc123"
    },
    {
      "id": "ext_003",
      "status": "failed",
      "file_name": "may.pdf",
      "created_at": "2026-05-15T10:00:00.000Z",
      "completed_at": "2026-05-15T10:00:42.000Z",
      "page_count": 2,
      "credits_charged": 2,
      "api_key_id": "ak_abc123",
      "error": {
        "type": "extraction_failed",
        "message": "Extraction failed due to an internal error. Contact support if the issue persists."
      }
    }
  ],
  "has_more": false
}

Schema di polling

Quando un'estrazione viene eseguita in modalità async, la risposta contiene status: "processing" finché il worker non ha terminato. Verifica sempre che status valga "completed" PRIMA di leggere i campi data, transaction_count e column_names: vengono omessi dal JSON fino al completamento dell'estrazione.

Frequenza di polling consigliata lato client: da 5 a 10 secondi. Il worker lato server viene eseguito ogni 10 secondi; un polling più frequente non accelera il risultato.

Pensata per

Automazione contabile

Importa gli estratti conto dei clienti direttamente nella tua pipeline di contabilità.

Due diligence sui prestiti

Verificare il reddito e il flusso di cassa dagli estratti conto bancari del richiedente.

App di finanza personale

Consenti agli utenti di collegare i propri estratti conto senza l'immissione manuale dei dati.

Stessi crediti, web + API

1 credito = 1 pagina. I crediti sono condivisi con il piano Pro o Business; non esiste un minimo separato per l'API.

Vedi i prezzi →

Domande frequenti

Inizia a costruire oggi

Il livello gratuito include 5 crediti. Non è richiesta alcuna carta di credito.

Ottieni la tua chiave API