Developers

REST API. Five-minute integration.

A single POST endpoint, structured JSON back. Webhook delivery for async parsing, signed payloads, idempotency keys, generous rate limits.

Quick start

Upload a bill, get JSON

curl -X POST https://api.utilitybillparse.com/v1/bills \
  -H "Authorization: Bearer $UBP_API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -F "file=@con-edison-may.pdf" \
  -F "vendor_short_name=ConEdison" \
  -F "webhook_url=https://yourapp.com/hooks/ubp"

Sample response

// POST /v1/bills returns 202 immediately. Poll the document URL
// or wait for the batch.completed webhook delivery.
{
  "id": "doc_a40f8293-...",
  "object": "bill",
  "status": "queued",
  "batch_id": "bat_2de40829-...",
  "document_id": "doc_a40f8293-...",
  "total_credits": 1,
  "total_usd_cents": 39,
  "webhook_secret": "whsec_…",       // returned once; store securely
  "links": {
    "self":  "/v1/documents/doc_a40f8293-...",
    "batch": "/v1/batches/bat_2de40829-..."
  }
}
Platform

Built for production workloads

Auth

Bearer tokens. Scoped API keys per environment, rotatable from your dashboard.

Webhooks

Async delivery with HMAC-SHA256 signatures, retries, and an idempotency key on every payload.

Rate limits

60 req/s burst, 10K req/min sustained. Higher limits on enterprise.

OpenAPI

Full OpenAPI 3.1 spec at /api/v1/openapi.json — generate a client for any language with openapi-generator or your tooling of choice.

Get started

Your API key is two clicks away

Create an API key