Skip to main content
GET
Get Permission

Authorizations

Authorization
string
header
required

Your Nevermined API Key (starts with 'nvm:'). Get one at nevermined.app under Settings > API Keys.

Path Parameters

permissionHash
string
required

Unique permission identifier

Response

Permission details

Full details of one permission, as returned by GET /x402/permissions/{permissionHash}. The four delegation budget fields are present whenever the permission is linked to a delegation — on BOTH schemes, not nvm:card-delegation only: PermissionEntity.createErc4337Delegation sets delegationId, spendingLimitCents and currency alongside the nvm:erc4337 scheme, and the builder gates them on delegationId, never on scheme.

permissionHash
string
required

Unique identifier of the permission (hash)

Example:

"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"

scheme
enum<string>
required

Payment scheme identifier

Available options:
nvm:erc4337,
nvm:card-delegation
Example:

"nvm:erc4337"

planName
string
required

Name of the payment plan. Always the empty string on permissions the API creates today — the write path hardcodes planName to it. The key is always emitted, which is why it stays in required.

Example:

""

status
enum<string>
required

Current status of the permission

Available options:
Active,
Revoked,
Expired,
Exhausted
Example:

"Active"

createdAt
string<date-time>
required

Date when the permission was created

Example:

"2025-05-09T12:00:00Z"

lastUsedAt
string<date-time> | null
required

Date when the permission was last used, or null if never used

Example:

"2025-05-09T14:00:00Z"

expiresAt
string<date-time> | null
required

Date when the permission expires, or null if it does not expire

Example:

"2025-12-20T00:00:00Z"

redemptionLimit
integer | null
required

Maximum number of redemptions allowed, or null for unlimited

Example:

10

planId
string

No permission the API creates today carries one: the single write path (delegation.service.ts — permissionRepository.save) hardcodes planId = null as plan-agnostic, and the response builder maps planId ?? undefined, which JSON.stringify drops — so the key is ALWAYS absent, on both schemes. Retained because the column exists and older rows may carry a value.

delegationId
string | null

Linked delegation id. Present on any delegation-linked permission, on both schemes

Example:

"a1b2c3d4-e5f6-4a90-8bcd-ef1234567890"

spendingLimitCents
string | null

Spending limit in cents. Present on any delegation-linked permission, on both schemes

Example:

"10000"

currency
string | null

Currency code. Present on any delegation-linked permission, on both schemes

Example:

"usd"

remainingBudgetCents
string | null

Remaining budget in cents. Present on any delegation-linked permission, on both schemes

Example:

"9000"