---
title: "Create a credential offer"
method: POST
path: "/v1/credential-offers"
tags: ["OpenID4VCI Protocol"]
---

# Create a credential offer

`POST /v1/credential-offers`

Create an OpenID4VCI (OpenID for Verifiable Credential Issuance) credential offer from one of your templates. You provide captured claim values, and Didit returns the claim URL, the wallet deep link, and the pre-authorized grant data. Send the returned transaction code to the holder through your own channel when the offer requires one.

## Request body

- object
  - `claims` object — Send claim values keyed by the schema attribute name. This captured request includes `given_name` and `tier`.
    - `given_name` string — Send the holder's given name when your template includes this claim.
    - `tier` string — Send the membership tier when your template includes this claim.
  - `template_id` string, uuid, required — Send the UUID of the credential template you want to issue from.

## Response `201`

Didit created the credential offer and returned the claim links and grant data.

- object
  - `claim_url` string, uri — Send this web claim URL to the holder when you use Didit's hosted claim flow.
  - `credential_issuer` string, uri — Use this issuer identifier as the OpenID4VCI (OpenID for Verifiable Credential Issuance) credential issuer.
  - `credential_offer_uri` string, uri — Encode this OpenID4VCI (OpenID for Verifiable Credential Issuance) credential-offer URI as a QR code or wallet deep link.
  - `email_sent` boolean — You receive true when Didit sent the claim email during offer creation.
  - `expires_at` string, date-time — You receive the timestamp when this offer expires.
  - `grants` object — Pass this OpenID4VCI (OpenID for Verifiable Credential Issuance) grants object to the wallet. It contains the pre-authorized code grant.
    - `urn:ietf:params:oauth:grant-type:pre-authorized_code` object — Use this grant object when the wallet exchanges the pre-authorized code for an issuance access token.
      - `pre-authorized_code` string — Send this code to the token endpoint as `pre-authorized_code`.
  - `offer_id` string, uuid — Use this UUID to fetch, accept, or resend the credential offer.
  - `pre_authorized_code` string — You receive the pre-authorized code as a top-level convenience field.
  - `recipient_email` string — You receive the email recipient configured for the offer. You receive an empty string when no recipient email was set.
  - `tx_code` string — Send this transaction code to the holder through an out-of-band channel.

## Other responses

- `404` — No template with `template_id` exists for the caller's tenant (or it is soft-deleted).

---

[API](https://skmtc.net/didit-protocol/apis/didit-credentials-api.md) · [All operations](https://skmtc.net/didit-protocol/apis/didit-credentials-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/didit-protocol/didit-credentials-api/revisions/e4eddba66557/schema)
