curl --request POST \
--url https://api.alpha-1edtech.ai/ims/ob/v3p0/issue-badge/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"userId": "<string>",
"achievementId": "<string>",
"validFrom": "2026-09-11T03:45:15.469Z",
"awardedDate": "2026-09-11T03:45:15.469Z",
"validUntil": "<string>"
}
'import requests
url = "https://api.alpha-1edtech.ai/ims/ob/v3p0/issue-badge/"
payload = {
"userId": "<string>",
"achievementId": "<string>",
"validFrom": "2026-09-11T03:45:15.469Z",
"awardedDate": "2026-09-11T03:45:15.469Z",
"validUntil": "<string>"
}
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({
userId: '<string>',
achievementId: '<string>',
validFrom: '2026-09-11T03:45:15.469Z',
awardedDate: '2026-09-11T03:45:15.469Z',
validUntil: '<string>'
})
};
fetch('https://api.alpha-1edtech.ai/ims/ob/v3p0/issue-badge/', 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.alpha-1edtech.ai/ims/ob/v3p0/issue-badge/",
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([
'userId' => '<string>',
'achievementId' => '<string>',
'validFrom' => '2026-09-11T03:45:15.469Z',
'awardedDate' => '2026-09-11T03:45:15.469Z',
'validUntil' => '<string>'
]),
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.alpha-1edtech.ai/ims/ob/v3p0/issue-badge/"
payload := strings.NewReader("{\n \"userId\": \"<string>\",\n \"achievementId\": \"<string>\",\n \"validFrom\": \"2026-09-11T03:45:15.469Z\",\n \"awardedDate\": \"2026-09-11T03:45:15.469Z\",\n \"validUntil\": \"<string>\"\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.alpha-1edtech.ai/ims/ob/v3p0/issue-badge/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"userId\": \"<string>\",\n \"achievementId\": \"<string>\",\n \"validFrom\": \"2026-09-11T03:45:15.469Z\",\n \"awardedDate\": \"2026-09-11T03:45:15.469Z\",\n \"validUntil\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.alpha-1edtech.ai/ims/ob/v3p0/issue-badge/")
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 \"userId\": \"<string>\",\n \"achievementId\": \"<string>\",\n \"validFrom\": \"2026-09-11T03:45:15.469Z\",\n \"awardedDate\": \"2026-09-11T03:45:15.469Z\",\n \"validUntil\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"@context": [
"<string>"
],
"id": "<string>",
"type": [
"<string>"
],
"issuer": "<string>",
"credentialSubject": {
"id": "<string>",
"type": [
"<string>"
],
"achievement": {
"id": "<string>",
"type": [
"<string>"
],
"name": "<string>",
"description": "<string>",
"criteria": {
"narrative": "<string>"
},
"image": {
"id": "<string>",
"type": "<string>",
"caption": "<string>"
},
"achievementType": "<string>",
"creator": {
"id": "<string>",
"type": [
"<string>"
],
"name": "<string>",
"url": "<string>",
"email": "<string>",
"phone": "<string>",
"address": "<string>"
}
},
"identifier": [
{
"type": "<string>",
"identityHash": "<string>",
"identityType": "<string>",
"hashed": true
}
]
},
"validFrom": "<string>",
"name": "<string>",
"description": "<string>",
"image": {
"id": "<string>",
"type": "<string>",
"caption": "<string>"
},
"proof": [
{
"type": "<string>",
"cryptosuite": "<string>",
"created": "<string>",
"proofPurpose": "<string>",
"verificationMethod": "<string>",
"proofValue": "<string>"
}
],
"validUntil": "<string>",
"credentialSchema": [
{
"id": "<string>",
"type": "<string>"
}
]
}Issue a Verifiable Open Badge Credential
Processes achievement data submitted by an authorized external creator (e.g., university, school) and issues a new Open Badge v3.0 compliant Verifiable Credential (AchievementCredential). This platform acts as the ‘issuer’ of the Verifiable Credential, digitally signing it to ensure its authenticity and integrity. The ‘userId’ information provided in the request body will be embedded within the ‘achievement’ object of the issued badge. The resulting badge includes a cryptographic proof (e.g., JsonWebSignature2020) allowing any verifier to confirm that the badge was issued by this platform and has not been tampered with.
curl --request POST \
--url https://api.alpha-1edtech.ai/ims/ob/v3p0/issue-badge/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"userId": "<string>",
"achievementId": "<string>",
"validFrom": "2026-09-11T03:45:15.469Z",
"awardedDate": "2026-09-11T03:45:15.469Z",
"validUntil": "<string>"
}
'import requests
url = "https://api.alpha-1edtech.ai/ims/ob/v3p0/issue-badge/"
payload = {
"userId": "<string>",
"achievementId": "<string>",
"validFrom": "2026-09-11T03:45:15.469Z",
"awardedDate": "2026-09-11T03:45:15.469Z",
"validUntil": "<string>"
}
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({
userId: '<string>',
achievementId: '<string>',
validFrom: '2026-09-11T03:45:15.469Z',
awardedDate: '2026-09-11T03:45:15.469Z',
validUntil: '<string>'
})
};
fetch('https://api.alpha-1edtech.ai/ims/ob/v3p0/issue-badge/', 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.alpha-1edtech.ai/ims/ob/v3p0/issue-badge/",
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([
'userId' => '<string>',
'achievementId' => '<string>',
'validFrom' => '2026-09-11T03:45:15.469Z',
'awardedDate' => '2026-09-11T03:45:15.469Z',
'validUntil' => '<string>'
]),
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.alpha-1edtech.ai/ims/ob/v3p0/issue-badge/"
payload := strings.NewReader("{\n \"userId\": \"<string>\",\n \"achievementId\": \"<string>\",\n \"validFrom\": \"2026-09-11T03:45:15.469Z\",\n \"awardedDate\": \"2026-09-11T03:45:15.469Z\",\n \"validUntil\": \"<string>\"\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.alpha-1edtech.ai/ims/ob/v3p0/issue-badge/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"userId\": \"<string>\",\n \"achievementId\": \"<string>\",\n \"validFrom\": \"2026-09-11T03:45:15.469Z\",\n \"awardedDate\": \"2026-09-11T03:45:15.469Z\",\n \"validUntil\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.alpha-1edtech.ai/ims/ob/v3p0/issue-badge/")
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 \"userId\": \"<string>\",\n \"achievementId\": \"<string>\",\n \"validFrom\": \"2026-09-11T03:45:15.469Z\",\n \"awardedDate\": \"2026-09-11T03:45:15.469Z\",\n \"validUntil\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"@context": [
"<string>"
],
"id": "<string>",
"type": [
"<string>"
],
"issuer": "<string>",
"credentialSubject": {
"id": "<string>",
"type": [
"<string>"
],
"achievement": {
"id": "<string>",
"type": [
"<string>"
],
"name": "<string>",
"description": "<string>",
"criteria": {
"narrative": "<string>"
},
"image": {
"id": "<string>",
"type": "<string>",
"caption": "<string>"
},
"achievementType": "<string>",
"creator": {
"id": "<string>",
"type": [
"<string>"
],
"name": "<string>",
"url": "<string>",
"email": "<string>",
"phone": "<string>",
"address": "<string>"
}
},
"identifier": [
{
"type": "<string>",
"identityHash": "<string>",
"identityType": "<string>",
"hashed": true
}
]
},
"validFrom": "<string>",
"name": "<string>",
"description": "<string>",
"image": {
"id": "<string>",
"type": "<string>",
"caption": "<string>"
},
"proof": [
{
"type": "<string>",
"cryptosuite": "<string>",
"created": "<string>",
"proofPurpose": "<string>",
"verificationMethod": "<string>",
"proofValue": "<string>"
}
],
"validUntil": "<string>",
"credentialSchema": [
{
"id": "<string>",
"type": "<string>"
}
]
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Body
Response
Successful response
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes