Credential detail
curl --request GET \
--url https://api.sandbox.mocachain.org/v1/catalog/credentials/{id}import requests
url = "https://api.sandbox.mocachain.org/v1/catalog/credentials/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.sandbox.mocachain.org/v1/catalog/credentials/{id}', 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://api.sandbox.mocachain.org/v1/catalog/credentials/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.sandbox.mocachain.org/v1/catalog/credentials/{id}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sandbox.mocachain.org/v1/catalog/credentials/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.mocachain.org/v1/catalog/credentials/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"code": 80000000,
"msg": "success",
"data": {
"credentialId": "c21s70g0i54sn0023172Cv",
"name": "Age Verification",
"category": "identity",
"issuer": {
"issuerId": "iss_01",
"name": "Acme Corp",
"issuerDid": "did:air:id:test:5P44fsVUhPctDTWH2Nz26pZJFsg6CqyiAELTGeVQDB",
"issuerFrom": "dashboard"
},
"dataPoints": [
{
"title": "Age",
"type": "integer",
"name": "age",
"isRequired": true,
"description": "User's age in years"
}
],
"schema": {
"schemaId": "sch_01HX",
"title": "KYC Identity",
"description": "Basic identity verification schema"
},
"traction": {
"holderCount": 120,
"issuanceCount": 200,
"verificationCount": 85
},
"programs": [
{
"programId": "prg_01",
"name": "Age Gate",
"verifierName": "Verify Inc",
"verificationCount": 85
}
],
"createdAt": "2026-01-15T10:30:00Z"
},
"timestamp": 1772530828000
}{
"error": 404,
"message": "Credential not found"
}Catalog
Credential detail
Returns a single credential with its full profile: the schema-defined data points (field name, type, required flag), issuer identity (name, DID, origin), traction metrics (unique holders, total issuances, total verifications), linked verification programs, and availability window (accessible start/end, expiration duration, first/last issuance timestamps).
GET
/
catalog
/
credentials
/
{id}
Credential detail
curl --request GET \
--url https://api.sandbox.mocachain.org/v1/catalog/credentials/{id}import requests
url = "https://api.sandbox.mocachain.org/v1/catalog/credentials/{id}"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.sandbox.mocachain.org/v1/catalog/credentials/{id}', 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://api.sandbox.mocachain.org/v1/catalog/credentials/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.sandbox.mocachain.org/v1/catalog/credentials/{id}"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sandbox.mocachain.org/v1/catalog/credentials/{id}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.mocachain.org/v1/catalog/credentials/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"code": 80000000,
"msg": "success",
"data": {
"credentialId": "c21s70g0i54sn0023172Cv",
"name": "Age Verification",
"category": "identity",
"issuer": {
"issuerId": "iss_01",
"name": "Acme Corp",
"issuerDid": "did:air:id:test:5P44fsVUhPctDTWH2Nz26pZJFsg6CqyiAELTGeVQDB",
"issuerFrom": "dashboard"
},
"dataPoints": [
{
"title": "Age",
"type": "integer",
"name": "age",
"isRequired": true,
"description": "User's age in years"
}
],
"schema": {
"schemaId": "sch_01HX",
"title": "KYC Identity",
"description": "Basic identity verification schema"
},
"traction": {
"holderCount": 120,
"issuanceCount": 200,
"verificationCount": 85
},
"programs": [
{
"programId": "prg_01",
"name": "Age Gate",
"verifierName": "Verify Inc",
"verificationCount": 85
}
],
"createdAt": "2026-01-15T10:30:00Z"
},
"timestamp": 1772530828000
}{
"error": 404,
"message": "Credential not found"
}Pilot API — Available on Sandbox only at this stage. Endpoint is under active development and may change without notice. Not yet available in production.
Path Parameters
Credential ID.
Response
Credential with full detail.
Standard API response envelope used by all Catalog endpoints.
Was this page helpful?
⌘I