Skip to main content
Custom claims let you embed additional data in the JWT returned by attestation. Your backend reads these claims to make authorization decisions without extra API calls.

Claim types

Data types are string, number, boolean, array, object, and date.
Custom claims start on the Pro plan. Creating a claim on Free returns a 403; the managed subscription claim is still injected on every plan.
subscription is a reserved claim key, managed by Grantiva’s subscription entitlement ingestion. Creating a custom claim named subscription — in any casing — returns a 400.

Tier limits

The limit counts active claims only — deactivating a claim frees a slot without deleting it.

Managing claims

Dashboard

Go to Custom Claims in the Configure section of the sidebar. From there you can add a claim, edit one, reorder them, and delete. Each claim carries a key, display name, description, data type, priority, and type-specific configuration. Claim types your plan doesn’t include are shown with a plan badge and raise an upgrade prompt when selected.

API

Claims are managed over /api/v1/org/claims, authenticated with an organization API key or a dashboard session. Wire keys are snake_case.
:ref accepts either the claim’s UUID or its claim key.
claim_key, claim_type, and data_type are immutable after creation. To change any of them, delete the claim and create a new one.
See the Custom Claims API reference for the full field list.

Evaluation order

Claims are evaluated in ascending priority, then by key. A claim whose evaluation fails or produces no value is silently dropped from the token — it never fails the attestation. Your backend should treat a missing claim as a normal case.

Reading claims

In the attestation result:
And in the decoded JWT on your backend:
The customClaims map in the HTTP response is a flat string-to-string map — nested objects are stringified. For structured claims such as subscription, read the decoded JWT instead.

Testing claims

Preview how a claim evaluates without performing a real attestation:
The response gives you claim_key, evaluated_value, data_type, evaluation_time_ms, and any errors. POST /api/v1/org/claims/:ref/preview takes just the context object and evaluates the saved claim. Testing bypasses tier claim limits, but testing an external claim still requires Enterprise — evaluation makes a real outbound call to your configured endpoint.