Skip to content

Pearsana Partner API

The Pearsana Partner API allows your systems to programmatically create users, send invitations, and submit documents into Pearsana on behalf of your organisation.

Trusted Partners Only

Access to the Pearsana Partner API is restricted to trusted partner organisations. If your organisation is interested in becoming a trusted partner, please reach out to us at support@pearsana.com.

Base URLs

EnvironmentAPIAuth
Sandboxhttps://sandbox.api.pearsana.comhttps://sandbox.auth.pearsana.com
Productionhttps://api.pearsana.comhttps://auth.pearsana.com

All code examples in these docs use the Sandbox URLs. Replace with the Production URLs when you are ready to go live.

Endpoints

MethodPathDescriptionDoc
GET/healthService health check (no auth)Health Check
GET/pingAuth connectivity testPing
POST/v1/usersCreate a userCreate User
POST/v1/invitationsCreate an invitationCreate Invitation
POST/v1/documents:submitSubmit a single documentDocument Submit
POST/v1/documents:submitBatchSubmit up to 25 documentsDocument Submit Batch

Authentication

All endpoints except /health require an OAuth 2.0 access token obtained via the Client Credentials grant.

bash
curl https://sandbox.api.pearsana.com/v1/users \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -H "X-API-Version: 2026-01-30"

See Authentication for the full flow, including how to request a token.

API Versioning

Include the X-API-Version header with a date-based version string on every request:

http
X-API-Version: 2026-01-30

The API returns these headers on every response:

Response HeaderDescription
X-API-VersionThe version applied to this request
X-API-Version-LatestThe newest available version
X-API-Version-SupportedThe oldest version still supported

If you send an unsupported version, the API returns 410 Gone with details of the oldest supported version.

Request ID

Every response includes an X-Request-Id header. You can also send your own X-Request-Id on a request — the API will use it instead of generating one. This value also appears inside error responses, making it useful for support tickets.

Error Format

All errors follow the same envelope structure:

json
{
	"error": {
		"code": "VALIDATION_ERROR",
		"message": "Validation failed",
		"details": {
			"errors": ["identity.email is required"]
		},
		"requestId": "abc-123-def"
	}
}
FieldTypeAlways presentDescription
error.codestringYesMachine-readable error code (see table below)
error.messagestringYesHuman-readable description
error.detailsobjectNoAdditional context (varies by error)
error.requestIdstringYesUnique request identifier

Error Codes

CodeHTTP StatusMeaning
VALIDATION_ERROR400Request body failed validation
INVALID_API_VERSION400X-API-Version header is missing or invalid
UNAUTHORIZED401Missing or invalid access token
FORBIDDEN403Valid token but access denied
INSUFFICIENT_SCOPE403Token does not have the required scopes
NOT_FOUND404Resource or user not found
CONFLICT409Duplicate email or resource
EXTERNAL_REF_CONFLICT409External reference already linked to another user
UNSUPPORTED_API_VERSION410API version is no longer supported
TOO_MANY_REQUESTS429Rate limit exceeded
INTERNAL_SERVER_ERROR500Unexpected server error

Getting Started

  1. Create an App Client in the Pearsana organisation portal to get your Client ID and Client Secret.
  2. Request an access token using the Client Credentials grant.
  3. Start calling endpoints.