curl --request POST \
--url https://staging.crossmint.com/api/v1-alpha1/credentials/templates/{templateId}/vcs \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"recipient": "polygon:0x1234abcde... or email:<email_address>:polygon",
"credential": {
"subject": {
"subjectName": "foo",
"subjectAge": 20,
"claim": "bar"
},
"expiresAt": "2023-08-31T16:34:33.854Z"
},
"sendNotification": true,
"locale": "en-US"
}
'import requests
url = "https://staging.crossmint.com/api/v1-alpha1/credentials/templates/{templateId}/vcs"
payload = {
"recipient": "polygon:0x1234abcde... or email:<email_address>:polygon",
"credential": {
"subject": {
"subjectName": "foo",
"subjectAge": 20,
"claim": "bar"
},
"expiresAt": "2023-08-31T16:34:33.854Z"
},
"sendNotification": True,
"locale": "en-US"
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
recipient: 'polygon:0x1234abcde... or email:<email_address>:polygon',
credential: {
subject: {subjectName: 'foo', subjectAge: 20, claim: 'bar'},
expiresAt: '2023-08-31T16:34:33.854Z'
},
sendNotification: true,
locale: 'en-US'
})
};
fetch('https://staging.crossmint.com/api/v1-alpha1/credentials/templates/{templateId}/vcs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://staging.crossmint.com/api/v1-alpha1/credentials/templates/{templateId}/vcs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'recipient' => 'polygon:0x1234abcde... or email:<email_address>:polygon',
'credential' => [
'subject' => [
'subjectName' => 'foo',
'subjectAge' => 20,
'claim' => 'bar'
],
'expiresAt' => '2023-08-31T16:34:33.854Z'
],
'sendNotification' => true,
'locale' => 'en-US'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://staging.crossmint.com/api/v1-alpha1/credentials/templates/{templateId}/vcs"
payload := strings.NewReader("{\n \"recipient\": \"polygon:0x1234abcde... or email:<email_address>:polygon\",\n \"credential\": {\n \"subject\": {\n \"subjectName\": \"foo\",\n \"subjectAge\": 20,\n \"claim\": \"bar\"\n },\n \"expiresAt\": \"2023-08-31T16:34:33.854Z\"\n },\n \"sendNotification\": true,\n \"locale\": \"en-US\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://staging.crossmint.com/api/v1-alpha1/credentials/templates/{templateId}/vcs")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"recipient\": \"polygon:0x1234abcde... or email:<email_address>:polygon\",\n \"credential\": {\n \"subject\": {\n \"subjectName\": \"foo\",\n \"subjectAge\": 20,\n \"claim\": \"bar\"\n },\n \"expiresAt\": \"2023-08-31T16:34:33.854Z\"\n },\n \"sendNotification\": true,\n \"locale\": \"en-US\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.crossmint.com/api/v1-alpha1/credentials/templates/{templateId}/vcs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"recipient\": \"polygon:0x1234abcde... or email:<email_address>:polygon\",\n \"credential\": {\n \"subject\": {\n \"subjectName\": \"foo\",\n \"subjectAge\": 20,\n \"claim\": \"bar\"\n },\n \"expiresAt\": \"2023-08-31T16:34:33.854Z\"\n },\n \"sendNotification\": true,\n \"locale\": \"en-US\"\n}"
response = http.request(request)
puts response.read_body{
"id": "1938b38c-3037-45dc-8033-333b7ebaee7",
"onChain": {
"status": "pending",
"chain": "polygon",
"contractAddress": "0x123456789"
},
"credentialId": "urn:uuid:40ada19e-3b4a-4de0-8d61-e0e7aedbfa0",
"actionId": "1938b38c-3037-45dc-8033-333b7ebaee7"
}Issue Credential
Issue a credential and deliver it to a wallet or email address.
API scope required credentials.create
curl --request POST \
--url https://staging.crossmint.com/api/v1-alpha1/credentials/templates/{templateId}/vcs \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"recipient": "polygon:0x1234abcde... or email:<email_address>:polygon",
"credential": {
"subject": {
"subjectName": "foo",
"subjectAge": 20,
"claim": "bar"
},
"expiresAt": "2023-08-31T16:34:33.854Z"
},
"sendNotification": true,
"locale": "en-US"
}
'import requests
url = "https://staging.crossmint.com/api/v1-alpha1/credentials/templates/{templateId}/vcs"
payload = {
"recipient": "polygon:0x1234abcde... or email:<email_address>:polygon",
"credential": {
"subject": {
"subjectName": "foo",
"subjectAge": 20,
"claim": "bar"
},
"expiresAt": "2023-08-31T16:34:33.854Z"
},
"sendNotification": True,
"locale": "en-US"
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
recipient: 'polygon:0x1234abcde... or email:<email_address>:polygon',
credential: {
subject: {subjectName: 'foo', subjectAge: 20, claim: 'bar'},
expiresAt: '2023-08-31T16:34:33.854Z'
},
sendNotification: true,
locale: 'en-US'
})
};
fetch('https://staging.crossmint.com/api/v1-alpha1/credentials/templates/{templateId}/vcs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://staging.crossmint.com/api/v1-alpha1/credentials/templates/{templateId}/vcs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'recipient' => 'polygon:0x1234abcde... or email:<email_address>:polygon',
'credential' => [
'subject' => [
'subjectName' => 'foo',
'subjectAge' => 20,
'claim' => 'bar'
],
'expiresAt' => '2023-08-31T16:34:33.854Z'
],
'sendNotification' => true,
'locale' => 'en-US'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://staging.crossmint.com/api/v1-alpha1/credentials/templates/{templateId}/vcs"
payload := strings.NewReader("{\n \"recipient\": \"polygon:0x1234abcde... or email:<email_address>:polygon\",\n \"credential\": {\n \"subject\": {\n \"subjectName\": \"foo\",\n \"subjectAge\": 20,\n \"claim\": \"bar\"\n },\n \"expiresAt\": \"2023-08-31T16:34:33.854Z\"\n },\n \"sendNotification\": true,\n \"locale\": \"en-US\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://staging.crossmint.com/api/v1-alpha1/credentials/templates/{templateId}/vcs")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"recipient\": \"polygon:0x1234abcde... or email:<email_address>:polygon\",\n \"credential\": {\n \"subject\": {\n \"subjectName\": \"foo\",\n \"subjectAge\": 20,\n \"claim\": \"bar\"\n },\n \"expiresAt\": \"2023-08-31T16:34:33.854Z\"\n },\n \"sendNotification\": true,\n \"locale\": \"en-US\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.crossmint.com/api/v1-alpha1/credentials/templates/{templateId}/vcs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"recipient\": \"polygon:0x1234abcde... or email:<email_address>:polygon\",\n \"credential\": {\n \"subject\": {\n \"subjectName\": \"foo\",\n \"subjectAge\": 20,\n \"claim\": \"bar\"\n },\n \"expiresAt\": \"2023-08-31T16:34:33.854Z\"\n },\n \"sendNotification\": true,\n \"locale\": \"en-US\"\n}"
response = http.request(request)
puts response.read_body{
"id": "1938b38c-3037-45dc-8033-333b7ebaee7",
"onChain": {
"status": "pending",
"chain": "polygon",
"contractAddress": "0x123456789"
},
"credentialId": "urn:uuid:40ada19e-3b4a-4de0-8d61-e0e7aedbfa0",
"actionId": "1938b38c-3037-45dc-8033-333b7ebaee7"
}Authorizations
Key obtained from the Crossmint developer console, reflecting the API scope granted.
Path Parameters
The credential template's id that the newly issued credential is related to.
Body
Recipient address in the format of <chain>:<address> or email:<email_address>:<chain>.
"polygon:0x1234abcde... or email:<email_address>:polygon"
Show child attributes
Show child attributes
Notify recipient via email notification about successful mint [Default: true]. For legacy projects created before Sep 16, 2024, this is set to false by default.
Specify the locale for the email content [Default: en-US]
"en-US"
Descriptive information inherited, by default, from the credential's template.
Show child attributes
Show child attributes
Response
Success.
Uniquely identifies the transaction in the system.
Information on the credential's current status on the blockchain, specifying its status on the specified network and related smart contract address.
Show child attributes
Show child attributes
Key identifier for the credential itself, distinct from the transaction or record as a whole.
"urn:uuid:credentialId"
Represents the action or transaction ID. In this context, it is the same as the primary id, indicating reference to the same overarching transaction or operation.
Was this page helpful?

