Parseo

Client Scoping

How to target a specific client with API requests using X-Client-Id or client-bound keys.

Client Scoping

Parseo organizes invoices under clients (your end-customers). Every invoice belongs to exactly one client. All public API requests that create or read invoices require client context.

Two Approaches

Pattern A — Team-Scoped Key

A single API key for your team. You specify which client to target per request using the X-Client-Id header.

curl -X POST https://api.parseo.app/external/v1/invoices \
  -H "Authorization: Bearer parseo_live_..." \
  -H "X-Client-Id: cl_9Z8y7X..." \
  -F "file=@invoice.pdf"

Use this when you have multiple clients and one integration handles all of them.

Pattern B — Client-Scoped Key

A key bound to a single client at creation time. No X-Client-Id header needed — the client is implicit.

curl -X POST https://api.parseo.app/external/v1/invoices \
  -H "Authorization: Bearer parseo_live_..." \
  -F "file=@invoice.pdf"

Use this for white-label or embedded integrations where each end-customer gets their own API key.

Client ID Format

Client IDs use the cl_ prefix: cl_5F4e3D2c1B0a9Z8y7X6w5V. Find client IDs in the Parseo dashboard under Settings → Clients.

Header Mismatch

If a client-scoped key is used with an X-Client-Id header pointing to a different client, Parseo returns 403 client.mismatch. This is a hard error, not a silent coercion — it surfaces bugs early in development.

List Scoping

GET /invoices is always scoped to the resolved client context. A team-scoped key with X-Client-Id returns only that client's invoices. A client-scoped key returns only its bound client's invoices, regardless of any clientId filter in the query string.

On this page