Skip to main content

Batch Extract

Upload PDF bank statements for processing. Parse will extract transactions, analyze patterns, detect anomalies, and return detailed financial insights.
curl -X POST https://parse.pantherpulse.ai/v1/extract/batch \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "[email protected]" \
  -F "[email protected]" \
  -F "user_id=ppu_YOUR_USER_ID" \
  -F "company_name=acme-corp"

Request

Path

POST /v1/extract/batch

Headers

HeaderTypeRequiredDescription
AuthorizationstringYesBearer token: Bearer YOUR_API_KEY
Content-TypestringYesmultipart/form-data

Body

FieldTypeRequiredDescription
filefile(s)YesPDF files (1-20 per request, max 4.5MB total)
user_idstringYesYour Pantherpulse user ID
company_namestringYesCompany name for organization

Limits

  • Max files per request: 20
  • Max total size: 4.5MB
  • File format: PDF only
  • Pages consumed: One per page in PDF (tracked against your quota)

Response

{
  "client": "ppu_abc123",
  "total_files": 2,
  "jobs": [
    {
      "job_id": "job_20251022_143022_a1b2c3",
      "company": "acme-corp",
      "filename": "statement1.pdf",
      "status": "processing"
    },
    {
      "job_id": "job_20251022_143022_d4e5f6",
      "company": "acme-corp",
      "filename": "statement2.pdf",
      "status": "processing"
    }
  ]
}

Success Response (200)

FieldTypeDescription
clientstringYour user ID
total_filesnumberNumber of files uploaded
jobsarrayArray of job objects
jobs[].job_idstringUnique identifier for this job
jobs[].companystringCompany name from request
jobs[].filenamestringOriginal filename
jobs[].statusstringAlways processing on upload

Processing Results

Once processing completes, results are stored and can be retrieved. The processed data includes:
{
  "status": "auto_analyzed",
  "data": {
    "bank_name": "UOB",
    "account_number_last_4": "5678",
    "statement_start_date": "2025-10-01",
    "statement_end_date": "2025-10-31",
    "opening_balance": 15000.00,
    "end_month_balance": 18500.00,
    "total_deposits": 8500.00,
    "total_withdrawals": 5000.00,
    "daily_average_balance": 17250.00,
    "deposit_count": 12,
    "withdrawal_count": 8,
    "transaction_count": 20,
    "balance_equation_valid": true,
    "balance_equation_variance": 0.00,
    "is_multi_month": false,
    "months_covered": ["2025-10"],
    "negative_balance_count": 0,
    "negative_balance_dates": [],
    "recurring_debits": [
      {
        "creditor": "SUBSCRIPTION SERVICE",
        "count": 4,
        "total_amount": 200.00,
        "individual_amounts": [50.00, 50.00, 50.00, 50.00],
        "transaction_dates": ["2025-10-05", "2025-10-12", "2025-10-19", "2025-10-26"]
      }
    ],
    "large_transactions": [
      {
        "date": "2025-10-15",
        "type": "deposit",
        "amount": 75000.00,
        "description": "WIRE TRANSFER",
        "reason": "Large deposit"
      }
    ],
    "loans_detected": false,
    "loan_transactions": [],
    "loan_commitments": [],
    "intra_company_transactions": []
  }
}

Analysis Features

Transaction Extraction

  • All transactions parsed with date, amount, description, and balance
  • Handles deposits, withdrawals, and balance calculations
  • Multi-page statements processed in parallel

Financial Summary

  • Opening and closing balances
  • Total deposits and withdrawals
  • Daily average balance calculation
  • Deposit and withdrawal counts
  • Balance equation validation (opening + deposits - withdrawals = closing)

Pattern Detection

  • Recurring debits: Identifies recurring payments and subscriptions
  • Large transactions: Flags deposits >50K or >1.5x monthly average
  • Negative balances: Detects overdraft dates
  • Multi-month statements: Identifies statements spanning multiple months

Risk & Compliance

  • Loan detection: Identifies loan disbursements and payments
  • Intra-company transfers: Detects internal transfers and group transactions
  • Anomalies: Flags unusual transaction patterns

Error Codes

CodeStatusMeaning
invalid_api_key401Invalid or missing API key
invalid_content_type400Content-Type must be multipart/form-data
no_files400No files provided in request
too_many_files400Exceeded max 20 files per request
payload_too_large400Total payload exceeds 4.5MB limit
company_mismatch400Company names count doesn’t match files
limit_exceeded402Monthly quota exceeded

Page Usage

Each page of every uploaded PDF consumes 1 page from your monthly quota. For example:
  • 1 × 5-page statement = 5 pages consumed
  • 3 × 10-page statements = 30 pages consumed
Pages reset on the 1st of each month. Check your remaining quota with GET /v1/usage.

Processing Time

Typical processing times:
  • 1-3 pages: 15-30 seconds
  • 4-10 pages: 30-60 seconds
  • 11+ pages: 60+ seconds (parallel processing)
Results are available via the job IDs returned in the response.