/v1/issuer/offers
API Key
Paginated
List credential offers
List all credential offers created by the issuer. Returns offers in descending
order by creation date, with pagination support.
Parameters
| Name | Location | Type | Description |
|---|---|---|---|
page
|
query | integer | Page number for pagination |
per_page
|
query | integer | Items per page (default: 25, max: 100) |
status
|
query | string |
Filter by offer status
Values: pending, accepted, expired, revoked
|
created_after
|
query | string | Filter by created_at >= this date (ISO8601). Note: uses created_at, not issued_at. |
created_before
|
query | string | Filter by created_at <= this date (ISO8601). Note: uses created_at, not issued_at. |
expires_after
|
query | string | Filter offers expiring after this date (ISO8601) |
expires_before
|
query | string | Filter offers expiring before this date (ISO8601) |
schema
|
query | string | Filter by credential schema UUID or slug |
subject_identifier
|
query | string | Filter by subject identifier (email or unique ID) |
sort
|
query | string |
Sort field
Values: created_at, expires_at, subject_identifier, status
|
direction
|
query | string |
Sort direction
Values: asc, desc
|
X-API-Key
*
|
header | string | Issuer API key for authentication |
* Required parameter
Response
Content-Type: application/json
success
boolean
data
array[object]
Array items:
A credential offer that holders can claim via wallet apps (OID4VCI)
uuid
*
string (uuid)
Unique identifier for the offer
Example: e8738e4f-2867-485d-9a00-fbe913ffca20
status
*
string
Current status of the offer: - pending: Awaiting holder claim - accepted: Successfully claimed by holder - expired: Past expiration time - revoked: Cancelled by issuer before claim
Allowed values: "pending", "accepted", "expired", "revoked"
Example: pending
subject_identifier
string
nullable
Email or DID of the intended recipient
Example: [email protected]
subject_claims
*
object
Pre-filled claim values for the credential
Example: {"name":"Jane Doe","degree":"Bachelor of Science"}
expires_at
string (date-time)
nullable
When the offer expires
Example: 2025-02-15T23:59:59Z
created_at
*
string (date-time)
When the offer was created
Example: 2025-01-15T10:00:00Z
schema
*
object
The credential schema for this offer
uuid
string (uuid)
Example: 7dceea59-9eef-406c-bca9-acaa0211bf8a
name
string
Schema display name
Example: University Degree
slug
string
URL-friendly schema identifier
Example: university-degree
offer_uri
string (uri)
nullable
URL where the offer can be retrieved (included on show)
Example: https://aho.com/openid4vci/offers/027b08a5-83e6-4cb3-b20e-8c5c9d517363
deep_link
string
nullable
Deep link for wallet apps (openid-credential-offer://...) (included on show)
Example: openid-credential-offer://?credential_offer_uri=https%3A%2F%2Faho.com%2Fopenid4vci%2Foffers%2Fcb20c0ad
meta
object
Pagination metadata for list responses
current_page
*
integer
Current page number
Example: 1
per_page
*
integer
Items per page
Example: 25
total_count
*
integer
Total number of items
Example: 42
total_pages
*
integer
Total number of pages
Example: 2
Code Examples
import os
from aho_sdk import AhoSdk
client = AhoSdk.issuer(api_key=os.environ["AHO_API_KEY"])
result = client.offers.list
client = AhoSdk.issuer(api_key: ENV["AHO_API_KEY"])
result = client.offers.list
import { AhoSdk } from '@aho/sdk';
const client = AhoSdk.issuer({ apiKey: process.env.AHO_API_KEY });
const result = await client.offers.list;
curl -X GET 'https://api.aho.com/v1/issuer/offers' \
-H 'X-API-Key: $AHO_API_KEY'
Try It
Log in to test this endpoint directly from the documentation.
Log in