Skip to Content
API ReferenceOverview & Authentication

API Reference

VeriProof exposes two primary REST APIs: the Ingest API for submitting AI governance sessions from your application, and the Customer Portal API for querying, managing, and exporting compliance data from the portal.


APIs at a glance

APIBase URLAuthPrimary use
Ingest APIhttps://veriproof-api.rjrlabs.comX-API-KeySDK span export, session submission
Customer Portal APIhttps://portal-api.rjrlabs.comJWT session cookiePortal queries, exports, webhooks

Authentication

Ingest API — X-API-Key header

All Ingest API requests require an X-API-Key header containing the secondary segment of your compound API key.

POST /v1/ingest/otlp HTTP/1.1 Host: veriproof-api.rjrlabs.com X-API-Key: 3xQr9pLm8N2vT4wK Content-Type: application/json

The VeriProof SDK handles this automatically — if you configure the SDK with a full compound key, it parses and routes each segment to the correct header.

For direct REST calls (bypassing the SDK), use only the secondary segment in the X-API-Key header.

Customer Portal API — JWT session

The Customer Portal API authenticates using a JWT session token stored in the veriproof_customer_token cookie, set by the portal’s login flow. API calls made from the Customer Portal web application send this cookie automatically.

For programmatic access (CI/CD, integrations), use the portal’s token endpoint:

POST /auth/token HTTP/1.1 Host: portal-api.rjrlabs.com Content-Type: application/json { "email": "dev@yourcompany.com", "password": "..." }

Returns a JWT token valid for 24 hours.


Compound key format

vp_cust_{customer-slug}.{azure-component}.{secondary-token}

When calling the Ingest API directly, include only the {secondary-token} segment in the X-API-Key header. The full compound key format is consumed by the SDK; individual REST integrations only need the secondary.

See API Authentication for a full explanation of the compound key model.


Environments

EnvironmentIngest endpointAuth requires
Productionhttps://veriproof-api.rjrlabs.comProduction-scoped key
Sandboxhttps://veriproof-api.rjrlabs.com + X-Veriproof-Sandbox: trueSandbox-scoped key

Sandbox keys automatically trigger sandbox routing — the X-Veriproof-Sandbox: true header is set by the SDK automatically when a sandbox key is detected. For direct REST calls, add the header manually.


Common response codes

CodeMeaning
200 OKRequest processed successfully
400 Bad RequestInvalid request body; check the errors array in the response
401 UnauthorizedMissing or invalid X-API-Key; key not found or revoked
403 ForbiddenAuthenticated but insufficient scope; sandbox write-only keys on mutation endpoints
422 Unprocessable EntityMerkle root mismatch — batch hash validation failed
429 Too Many RequestsRate limit exceeded; see Retry-After header
503 Service UnavailableCustomer account suspended

Rate limits

Rate limits are enforced per API key and scoped to a rolling 60-second window. Limits vary by plan:

PlanRequests / minuteBatch size limit
Starter60100 spans / batch
Growth300500 spans / batch
EnterpriseCustomCustom

When a rate limit is exceeded, the response includes:

HTTP/1.1 429 Too Many Requests Retry-After: 12 X-RateLimit-Limit: 300 X-RateLimit-Remaining: 0 X-RateLimit-Reset: 1712345678

The SDK handles 429 responses automatically using the Retry-After value.


Interactive API explorers

Use the interactive explorers below to browse endpoints, view request/response schemas, and try authenticated calls:

Both explorers are powered by @scalar/api-reference  and load the published OpenAPI 3.1 specification.


Next steps

Last updated on