Attestation Report
curl --request GET \
--url https://api.redpill.ai/v1/attestation/report \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.redpill.ai/v1/attestation/report"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.redpill.ai/v1/attestation/report', 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.redpill.ai/v1/attestation/report",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.redpill.ai/v1/attestation/report"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.redpill.ai/v1/attestation/report")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.redpill.ai/v1/attestation/report")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodyLegacy
Attestation Report
The legacy gateway attestation report.
GET
/
attestation
/
report
Attestation Report
curl --request GET \
--url https://api.redpill.ai/v1/attestation/report \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.redpill.ai/v1/attestation/report"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.redpill.ai/v1/attestation/report', 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.redpill.ai/v1/attestation/report",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.redpill.ai/v1/attestation/report"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.redpill.ai/v1/attestation/report")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.redpill.ai/v1/attestation/report")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body/v1/attestation/report is a legacy endpoint kept for backward compatibility with earlier API clients. It now returns the gateway’s
TEE attestation report, proving which gateway workload served your request. It is the same gateway
attestation as the canonical GET /v1/aci/attestation; the two endpoints
share the same underlying report. New integrations should use the canonical endpoint.
The legacy form differs in two ways:
- It adds top-level
signing_address,signing_algo, andsigning_public_key, derived from the gateway’s keyset for older clients. - It collapses
all_attestationsto a single entry.
This endpoint now returns the gateway’s attestation. Earlier API versions returned the
upstream model’s attestation here. With the attested gateway, the model provider’s verification for a
given response is recorded in the receipt (
upstream.verified event) and
the attested session instead.string
A fresh random value. The legacy endpoint accepts the earlier flexible nonce format; the gateway
binds it into
report_data so you can prove the report is not a replay.Response
Theattestation object, workload_keyset_digest, and service_capabilities match
GET /v1/aci/attestation. The differences are the added top-level
signing_address, signing_algo, and signing_public_key fields, plus the single-entry
all_attestations compatibility array. See the canonical page for the full field reference.
signing_algo query parameter
Pass ?signing_algo=ecdsa (default) or ?signing_algo=ed25519 to select which keyset key the legacy
signing_address and signing_public_key are derived from.
Related
Get attestation report
Signature
Was this page helpful?