---
title: Initiate OpenID4VCI Offer
component: pingone-api
page_id: pingone-api:credentials:openid4vci-issuance/initiate-openid4vci-offers
canonical_url: https://developer.pingidentity.com/pingone-api/credentials/openid4vci-issuance/initiate-openid4vci-offers.html
section_ids:
  prerequisites: Prerequisites
  headers: Headers
  body: Body
  example-request: Example Request
  example-response: Example Response
---

# Initiate OpenID4VCI Offer

##

     

```none
POST {{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/openid4vciOffers
```

After a user registers and authenticates with the credential issuer, they can request verifiable credentials. The first step in OpenID4VCI credential issuance is to request verifiable credentials from the issuer using the `POST {{apiPath}}/v1/environments/{envID}/users/{userID}/openid4vciOffers` endpoint. This endpoint is typically invoked by the user's wallet. A credential offer is valid for 30 minutes.

### Prerequisites

* [Create a user](../../platform/users/users-1/create-user.html) to get a `userID` for the endpoint. Refer also to [Users](../../platform/users.html), especially [User operations](../../platform/users/users-1.html).

* [Create a credential type for OpenID4VCI](../credential-types.html#credential-types-create-credential-type-openid4vci) to enable OpenID4VCI credential issuance.

* [Apply Credential Issuance Rule Staged Changes](../credential-issuance-rules.html#apply-credential-issuance-rule-staged-changes) for `AUTOMATED` credential types or [Create a User Credential](../user-credentials/create-user-credential.html) or [Update a User Credential](../user-credentials/update-a-user-credential.html) for `MANAGED` credential types to have a credential for the user to retrieve.

> **Collapse: Request Model**
>
> Refer to [Digital wallet data model](../openid4vci-issuance.html#openid4vci-credentials-issuance-offers-data-model) for full property descriptions.
>
> | Property      | Type      | Required? |
> | ------------- | --------- | --------- |
> | `grantTypes`  | String\[] | Optional  |
> | `credentials` | String\[] | Optional  |

### Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

### Body

raw ( application/json )

```json
{
    "credentials": [
        "{{credentialID}}"
    ],
    "grantTypes": [
        "authorization_code", "urn:ietf:params:oauth:grant-type:pre-authorized_code"
    ]
}
```

##

### Example Request

* cURL

* C#

* Go

* HTTP

* Java

* jQuery

* NodeJS

* Python

* PHP

* Ruby

* Swift

```shell
curl --location --globoff '{{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/openid4vciOffers' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
    "credentials": [
        "{{credentialID}}"
    ],
    "grantTypes": [
        "authorization_code", "urn:ietf:params:oauth:grant-type:pre-authorized_code"
    ]
}'
```

```csharp
var options = new RestClientOptions("{{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/openid4vciOffers")
{
  MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Post);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer {{accessToken}}");
var body = @"{" + "\n" +
@"    ""credentials"": [" + "\n" +
@"        ""{{credentialID}}""" + "\n" +
@"    ]," + "\n" +
@"    ""grantTypes"": [" + "\n" +
@"        ""authorization_code"", ""urn:ietf:params:oauth:grant-type:pre-authorized_code""" + "\n" +
@"    ]" + "\n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
```

```golang
package main

import (
  "fmt"
  "strings"
  "net/http"
  "io"
)

func main() {

  url := "{{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/openid4vciOffers"
  method := "POST"

  payload := strings.NewReader(`{
    "credentials": [
        "{{credentialID}}"
    ],
    "grantTypes": [
        "authorization_code", "urn:ietf:params:oauth:grant-type:pre-authorized_code"
    ]
}`)

  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, payload)

  if err != nil {
    fmt.Println(err)
    return
  }
  req.Header.Add("Content-Type", "application/json")
  req.Header.Add("Authorization", "Bearer {{accessToken}}")

  res, err := client.Do(req)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer res.Body.Close()

  body, err := io.ReadAll(res.Body)
  if err != nil {
    fmt.Println(err)
    return
  }
  fmt.Println(string(body))
}
```

```http
POST /v1/environments/{{envID}}/users/{{userID}}/openid4vciOffers HTTP/1.1
Host: {{apiPath}}
Content-Type: application/json
Authorization: Bearer {{accessToken}}

{
    "credentials": [
        "{{credentialID}}"
    ],
    "grantTypes": [
        "authorization_code", "urn:ietf:params:oauth:grant-type:pre-authorized_code"
    ]
}
```

```java
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"credentials\": [\n        \"{{credentialID}}\"\n    ],\n    \"grantTypes\": [\n        \"authorization_code\", \"urn:ietf:params:oauth:grant-type:pre-authorized_code\"\n    ]\n}");
Request request = new Request.Builder()
  .url("{{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/openid4vciOffers")
  .method("POST", body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer {{accessToken}}")
  .build();
Response response = client.newCall(request).execute();
```

```javascript
var settings = {
  "url": "{{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/openid4vciOffers",
  "method": "POST",
  "timeout": 0,
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{accessToken}}"
  },
  "data": JSON.stringify({
    "credentials": [
      "{{credentialID}}"
    ],
    "grantTypes": [
      "authorization_code",
      "urn:ietf:params:oauth:grant-type:pre-authorized_code"
    ]
  }),
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
```

```javascript
var request = require('request');
var options = {
  'method': 'POST',
  'url': '{{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/openid4vciOffers',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {{accessToken}}'
  },
  body: JSON.stringify({
    "credentials": [
      "{{credentialID}}"
    ],
    "grantTypes": [
      "authorization_code",
      "urn:ietf:params:oauth:grant-type:pre-authorized_code"
    ]
  })

};
request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});
```

```python
import requests
import json

url = "{{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/openid4vciOffers"

payload = json.dumps({
  "credentials": [
    "{{credentialID}}"
  ],
  "grantTypes": [
    "authorization_code",
    "urn:ietf:params:oauth:grant-type:pre-authorized_code"
  ]
})
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
```

```php
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/openid4vciOffers');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'Content-Type' => 'application/json',
  'Authorization' => 'Bearer {{accessToken}}'
));
$request->setBody('{\n    "credentials": [\n        "{{credentialID}}"\n    ],\n    "grantTypes": [\n        "authorization_code", "urn:ietf:params:oauth:grant-type:pre-authorized_code"\n    ]\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
```

```ruby
require "uri"
require "json"
require "net/http"

url = URI("{{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/openid4vciOffers")

http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Post.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer {{accessToken}}"
request.body = JSON.dump({
  "credentials": [
    "{{credentialID}}"
  ],
  "grantTypes": [
    "authorization_code",
    "urn:ietf:params:oauth:grant-type:pre-authorized_code"
  ]
})

response = http.request(request)
puts response.read_body
```

```swift
let parameters = "{\n    \"credentials\": [\n        \"{{credentialID}}\"\n    ],\n    \"grantTypes\": [\n        \"authorization_code\", \"urn:ietf:params:oauth:grant-type:pre-authorized_code\"\n    ]\n}"
let postData = parameters.data(using: .utf8)

var request = URLRequest(url: URL(string: "{{apiPath}}/v1/environments/{{envID}}/users/{{userID}}/openid4vciOffers")!,timeoutInterval: Double.infinity)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("Bearer {{accessToken}}", forHTTPHeaderField: "Authorization")

request.httpMethod = "POST"
request.httpBody = postData

let task = URLSession.shared.dataTask(with: request) { data, response, error in
  guard let data = data else {
    print(String(describing: error))
    return
  }
  print(String(data: data, encoding: .utf8)!)
}

task.resume()
```

### Example Response

201 Created

```json
{
    "_links": {
        "self": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/23f1c64b-f8b6-48f6-b55d-b56924126df7/openid4vciOffers/00b1faf5-c4b4-44ac-894c-aaabf11187d6"
        },
        "environment": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
        },
        "user": {
            "href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/users/23f1c64b-f8b6-48f6-b55d-b56924126df7"
        },
        "credentialOfferUrl": {
            "href": "https://auth.pingone.com/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/credentialOffer/00b1faf5-c4b4-44ac-894c-aaabf11187d6"
        },
        "openid-credential-offer": {
            "href": "openid-credential-offer://?credential_offer_uri=https%3A%2F%2Fauth.pingone.com%2Fabfba8f6-49eb-49f5-a5d9-80ad5c98f9f6%2FcredentialOffer%2F00b1faf5-c4b4-44ac-894c-aaabf11187d6"
        },
        "qrCode": {
            "href": "data:image/png;base64,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"
        }
    },
    "id": "00b1faf5-c4b4-44ac-894c-aaabf11187d6",
    "createdAt": "2026-04-08T17:45:42.114654683Z",
    "environment": {
        "id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
    },
    "user": {
        "id": "23f1c64b-f8b6-48f6-b55d-b56924126df7"
    },
    "status": "CREATED",
    "requiredScopes": [
        "p1:provision:credentials"
    ],
    "grantTypes": [
        "authorization_code", "urn:ietf:params:oauth:grant-type:pre-authorized_code"
    ],
    "credentialOfferUrl": "https://auth.pingone.com/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/credentialOffer/00b1faf5-c4b4-44ac-894c-aaabf11187d6",
    "expiresAt": "2026-04-08T18:15:42.114658133Z"
}
```
