curl --request POST \
--url https://api.useanima.sh/v1/agents/{agentId}/credentials \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"claims": {},
"expiresInSeconds": 157680000
}
'import requests
url = "https://api.useanima.sh/v1/agents/{agentId}/credentials"
payload = {
"claims": {},
"expiresInSeconds": 157680000
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({claims: {}, expiresInSeconds: 157680000})
};
fetch('https://api.useanima.sh/v1/agents/{agentId}/credentials', 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.useanima.sh/v1/agents/{agentId}/credentials",
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([
'claims' => [
],
'expiresInSeconds' => 157680000
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://api.useanima.sh/v1/agents/{agentId}/credentials"
payload := strings.NewReader("{\n \"claims\": {},\n \"expiresInSeconds\": 157680000\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://api.useanima.sh/v1/agents/{agentId}/credentials")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"claims\": {},\n \"expiresInSeconds\": 157680000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.useanima.sh/v1/agents/{agentId}/credentials")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"claims\": {},\n \"expiresInSeconds\": 157680000\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"agentId": "<string>",
"orgId": "<string>",
"type": "<string>",
"jwtVc": "<string>",
"issuerDid": "<string>",
"subjectDid": "<string>",
"issuedAt": "<string>",
"expiresAt": "<string>",
"revoked": true,
"revokedAt": "<string>",
"revocationIndex": 123,
"metadata": {},
"createdAt": "<string>",
"updatedAt": "<string>"
}Post agents credentials
curl --request POST \
--url https://api.useanima.sh/v1/agents/{agentId}/credentials \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"claims": {},
"expiresInSeconds": 157680000
}
'import requests
url = "https://api.useanima.sh/v1/agents/{agentId}/credentials"
payload = {
"claims": {},
"expiresInSeconds": 157680000
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({claims: {}, expiresInSeconds: 157680000})
};
fetch('https://api.useanima.sh/v1/agents/{agentId}/credentials', 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.useanima.sh/v1/agents/{agentId}/credentials",
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([
'claims' => [
],
'expiresInSeconds' => 157680000
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://api.useanima.sh/v1/agents/{agentId}/credentials"
payload := strings.NewReader("{\n \"claims\": {},\n \"expiresInSeconds\": 157680000\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://api.useanima.sh/v1/agents/{agentId}/credentials")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"claims\": {},\n \"expiresInSeconds\": 157680000\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.useanima.sh/v1/agents/{agentId}/credentials")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"claims\": {},\n \"expiresInSeconds\": 157680000\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"agentId": "<string>",
"orgId": "<string>",
"type": "<string>",
"jwtVc": "<string>",
"issuerDid": "<string>",
"subjectDid": "<string>",
"issuedAt": "<string>",
"expiresAt": "<string>",
"revoked": true,
"revokedAt": "<string>",
"revocationIndex": 123,
"metadata": {},
"createdAt": "<string>",
"updatedAt": "<string>"
}Authorizations
JWT Bearer token obtained from authentication. Pass as: Authorization: Bearer
Path Parameters
Agent identifier
^[0-9a-z]+$Body
Input for issuing a verifiable credential to an agent (master key). Platform verification events (email OTP, phone provisioning, Stripe checkout) auto-issue AnimaEmailVerified/AnimaOwnerBound, AnimaPhoneVerified, and AnimaPaymentCapable; those types (plus AnimaKYBCompleted) derive the agent card's public verification.level and are platform-reserved — issuing them here returns 403. This endpoint issues the org-attestation types (AnimaAddressVerified, AnimaTrustScore), recorded with metadata.source=api, distinct from the platform's source=platform-auto.
Credential type to issue
AnimaEmailVerified, AnimaPhoneVerified, AnimaAddressVerified, AnimaKYBCompleted, AnimaPaymentCapable, AnimaOwnerBound, AnimaTrustScore Additional claims for the credential subject (the subject id is always the agent's DID)
Show child attributes
Show child attributes
Optional credential lifetime in seconds (omit for non-expiring)
0 <= x <= 315360000Response
OK
A Verifiable Credential record
Show child attributes
Show child attributes
