Skip to main content
POST
Create a grant.

Authorizations

x-api-key
string
header
required

LedgerUp API Key.

Headers

Idempotency-Key
string

Optional. Duplicate keys within the same company namespace and route return 409. Non-empty idempotency key for deduplicating write requests on the same route.

Example:

"6f31c20e-725c-4be8-96f4-835042f67602"

Body

application/json

Create-grant request. Exactly one of metric_id or currency is required. Unknown JSON fields are rejected. When provided, expires_at must be after effective_at.

account_id
string
required

LedgerUp account identifier.

Pattern: ^account_[0-9a-f]{32}$
Example:

"account_0194f4e3a2b77c6aa91c4f6b4db2a980"

metric_id
string
required

LedgerUp metric identifier. Required when currency is omitted.

Pattern: ^metric_[0-9a-f]{32}$
Example:

"metric_0194f4e3a2b77c6aa91c4f6b4db2a980"

amount
string
required

Decimal amount as a string.

Pattern: ^-?\d+(\.\d+)?$
Example:

"100.0"

effective_at
integer<int64>
required

Unix timestamp in seconds.

Example:

1767225600

description
string | null

Optional description. Maximum 2048 Unicode scalar values.

Maximum string length: 2048
Example:

"Usage tracked for Acme."

currency
string

Three-letter ISO 4217-style currency code. Amount is expressed in major currency units, not minor units. Required when metric_id is omitted. Stored lowercase; metric_id remains null.

Pattern: ^[A-Za-z]{3}$
Example:

"usd"

expires_at
integer<int64> | null

Unix timestamp in seconds.

Example:

1767225600

contract_v1_id
string<uuid> | null

Optional public.contracts identifier.

Response

Created.

id
string
required

LedgerUp grant identifier.

Pattern: ^grant_[0-9a-f]{32}$
Example:

"grant_0194f4e3a2b77c6aa91c4f6b4db2a980"

description
string | null
required

Optional description. Maximum 2048 Unicode scalar values.

Maximum string length: 2048
Example:

"Usage tracked for Acme."

account_id
string
required

LedgerUp account identifier.

Pattern: ^account_[0-9a-f]{32}$
Example:

"account_0194f4e3a2b77c6aa91c4f6b4db2a980"

metric_id
string | null
required

LedgerUp metric identifier. Null for currency grants.

Pattern: ^metric_[0-9a-f]{32}$
Example:

"metric_0194f4e3a2b77c6aa91c4f6b4db2a980"

currency
string | null
required

Three-letter lowercase currency code. Amount is expressed in major currency units, not minor units. Null for metric grants.

Pattern: ^[a-z]{3}$
Example:

"usd"

amount
string
required

Decimal amount serialized as a string.

Pattern: ^-?\d+(\.\d+)?$
Example:

"100.0"

expires_at
integer<int64> | null
required

Unix timestamp in seconds.

Example:

1767225600

accepted_at
integer<int64>
required

Unix timestamp in seconds.

Example:

1767225600

created_at
integer<int64>
required

Unix timestamp in seconds.

Example:

1767225600

updated_at
integer<int64>
required

Unix timestamp in seconds.

Example:

1767225600

status
enum<string>
required

Derived grant status. Voided and archived take precedence over expiration and scheduled activation.

Available options:
active,
scheduled,
voided,
archived,
expired
Example:

"active"

archived_at
integer<int64> | null
required

Unix timestamp in seconds.

Example:

1767225600

contract_v1_id
string<uuid> | null
required

Optional public.contracts identifier.

effective_at
integer<int64>
required

Unix timestamp in seconds.

Example:

1767225600