Référence API

Une API REST pour extraire des données structurées de vos documents. Envoyez un fichier, récupérez un JSON structuré.

API RESTRéponses JSONWebhooks60+ langues

Authentification

Toutes les requêtes nécessitent un en-tête X-API-Key . Récupérez votre clé depuis Paramètres → API dans votre compte Airparser.

cURL
curl https://api.airparser.com/inboxes \
  -H "X-API-Key: YOUR_API_KEY"

Conservez votre clé API en sécurité — traitez-la comme un mot de passe.

Analyser des documents

Envoyez n'importe quel fichier et récupérez les données entièrement extraites en une seule requête synchrone — sans webhook, sans polling, sans second appel. La réponse contient tous les champs extraits sous forme de JSON structuré, prêt à l'emploi immédiat dans votre workflow.

POST/inboxes/{inbox_id}/upload-syncDocumentation API →
curl \
  -X POST \
  https://api.airparser.com/inboxes/<INBOX_ID>/upload-sync \
  -F 'file=@./receipt.pdf' \
  -H "X-API-Key: <YOUR_API_KEY>"import requests

header = {"X-API-Key": "<API_KEY>"}
url = "https://api.airparser.com/inboxes/<INBOX_ID>/upload-sync"

with open('invoice.pdf', 'rb') as f:
    files = {'file': f}
    with requests.request("POST", url, files=files, headers=header) as response:
        print('response: ', response)const fetch = require("node-fetch");
const fs = require("fs");
const FormData = require("form-data");

const APIKEY = "<YOUR_API_KEY>";
const inboxId = "<INBOX_ID>";
const filePath = "/path/to/your/file.pdf";
const metadata = { foo: "bar" };

async function parseDocument(inboxId, filePath, metadata) {
  const url = `https://api.airparser.com/inboxes/${inboxId}/upload-sync`;

  const fileStream = fs.createReadStream(filePath);

  const form = new FormData();
  form.append("file", fileStream);
  form.append("meta", JSON.stringify(metadata));

  try {
    const response = await fetch(url, {
      method: "POST",
      body: form,
      headers: {
        "X-API-Key": APIKEY,
      },
    });

    const docId = await response.json();
    console.log(response.status);
    console.log("Document id:", docId);
  } catch (e) {
    console.error("Error:", e.message);
  }
}

parseDocument(inboxId, filePath, metadata);<?php

$apikey = '<API_KEY>';
$url = 'https://api.airparser.com/inboxes/<INBOX_ID>/upload-sync';
$filepath = './invoice.pdf';

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
    'X-API-Key: ' . $apikey
));
curl_setopt($curl, CURLOPT_POST, true);

$meta = array(
  'foo' => 'bar',
  'my_id' => 42,
);
$metaJson = json_encode($meta);

curl_setopt($curl, CURLOPT_POSTFIELDS, array(
    'file' => curl_file_create($filepath, 'application/pdf', 'invoice.pdf'),
    'meta' => $metaJson
));

$response = curl_exec($curl);
curl_close($curl);

echo $response;
Réponse200 OK
{
  "doc_id": "64abc123def456...",
  "parsing_in_progress": false,
  "status": "parsed",
  "name": "invoice.pdf",
  "content_type": "application/pdf",
  "created_at": "2026-03-10T12:00:00.000Z",
  "processed_at": "2026-03-10T12:00:04.321Z",
  "json": {
    "invoice_number": "INV-001",
    "vendor": "Acme Corp",
    "total": 1250.00,
    "currency": "USD",
    "date": "2024-01-15"
  }
}

Récupérer les données extraites

Récupérez un document par son identifiant pour obtenir son statut d'extraction et ses résultats. Interrogez cet endpoint ou utilisez des webhooks pour savoir quand le traitement est terminé.

GET/documents/{document_id}
cURL
curl https://api.airparser.com/documents/doc_abc123 \
  -H "X-API-Key: YOUR_API_KEY"
Réponse200 OK
{
  "doc_id": "64abc123def456...",
  "parsing_in_progress": false,
  "status": "parsed",
  "name": "invoice.pdf",
  "content_type": "application/pdf",
  "created_at": "2026-03-10T12:00:00.000Z",
  "processed_at": "2026-03-10T12:00:04.321Z",
  "json": {
    "invoice_number": "INV-001",
    "vendor": "Acme Corp",
    "total": 1250.00,
    "date": "2024-01-15"
  }
}

Définir le schéma d'extraction

Définissez les champs à extraire. Prend en charge les champs scalaires, les listes (pour les lignes de détail), et les énumérations.

POST/inboxes/{inbox_id}/schema
{
  "fields": [
    {
      "type": "scalar",
      "data": {
        "name": "invoice_number",
        "description": "Invoice reference number",
        "type": "string",
        "default_value": ""
      }
    },
    {
      "type": "list",
      "data": {
        "name": "items",
        "description": "List of items in the invoice",
        "attributes": [
          {
            "name": "description",
            "description": "Item description",
            "type": "string",
            "default_value": ""
          },
          {
            "name": "amount",
            "description": "Item amount",
            "type": "decimal",
            "default_value": "0.00"
          }
        ]
      }
    },
    {
      "type": "enum",
      "data": {
        "name": "payment_status",
        "description": "Current payment status",
        "values": ["paid", "pending", "overdue"]
      }
    }
  ]
}

Post-traitement

Exécutez du code Python sur les données extraites avant leur envoi vers les intégrations. Ajoutez de la logique métier, fusionnez des champs, formatez des valeurs.

Fusionner des champs
# Merge first and last name into full name
data['fullname'] = data['first_name'] + " " + data['last_name']

# Using f-strings (recommended)
data["fullname"] = f"{data['first_name']} {data['last_name']}"

# Using format() function
data['fullname'] = '{} {}'.format(data['first_name'], data['last_name'])
Logique conditionnelle
# Only process invoices above certain amount
if float(data.get('total_amount', 0)) > 1000:
    data['priority'] = 'high'
else:
    data['priority'] = 'normal'

# Add timestamp
import datetime
data['processed_at'] = datetime.datetime.now().isoformat()

Explorez des techniques et exemples de post-traitement avancés :

Webhooks

Airparser envoie une requête POST à votre endpoint lorsque l'extraction est terminée. Répondez avec 200 pour accuser réception.

Étapes de configuration

  1. 1 Copiez l'URL de votre endpoint webhook depuis votre serveur ou un service comme ngrok.
  2. 2 Allez dans Intégrations → Webhooks dans votre compte Airparser.
  3. 3 Cliquez sur « Create a webhook » et collez l'URL de votre endpoint.
  4. 4 Testez le webhook avec un document d'exemple pour vérifier l'intégration.
import json
from flask import Flask, request

app = Flask(__name__)

@app.route('/webhook', methods=['POST'])
def webhook():
    payload = request.data
    data = json.loads(payload)

    # Process the parsed data
    # data contains all extracted fields

    return {'success': True}

if __name__ == '__main__':
    app.run(port=4242)const express = require('express');
const app = express();

app.post('/webhook', express.raw({type: 'application/json'}), (request, response) => {
  const payload = request.body;
  const data = JSON.parse(payload);

  // Process the parsed data
  // data contains all extracted fields

  // Return 200 to acknowledge receipt
  response.send();
});

app.listen(4242, () => console.log('Running on port 4242'));<?php
$payload = @file_get_contents('php://input');
$data = json_decode($payload, true);

// Process the parsed data
// $data contains all extracted fields

// Always return 200 to acknowledge receipt
http_response_code(200);
echo "OK";

Ressources

Vous cherchez un aperçu non technique ? Lisez Qu'est-ce qu'une API d'extraction de documents — couvre le concept, les cas d'usage, et comment fonctionne l'API d'Airparser sans exemples de code.