Verify a cosignature
curl --request POST \
--url https://api.kordio.io/control/v1/cosign/verify \
--header 'Content-Type: application/json' \
--data '
{
"authorization": "<string>"
}
'import requests
url = "https://api.kordio.io/control/v1/cosign/verify"
payload = { "authorization": "<string>" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({authorization: '<string>'})
};
fetch('https://api.kordio.io/control/v1/cosign/verify', 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.kordio.io/control/v1/cosign/verify",
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([
'authorization' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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.kordio.io/control/v1/cosign/verify"
payload := strings.NewReader("{\n \"authorization\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.kordio.io/control/v1/cosign/verify")
.header("Content-Type", "application/json")
.body("{\n \"authorization\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kordio.io/control/v1/cosign/verify")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"authorization\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"valid": true,
"reason": "<string>",
"intent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"action_type": "<string>",
"resource": "<string>",
"amount_cents": 123,
"currency": "<string>",
"policy_version": "<string>",
"frame_hash": "<string>",
"expires_at": "2023-11-07T05:31:56Z"
}
}{
"error": {
"message": "authorization is required",
"code": "authorization_required"
}
}{
"data": {
"valid": false,
"reason": "already_settled"
}
}Verify a cosignature
Unauthenticated. Checks the signature and, beyond that, whether the underlying intent is still spendable and still carries the amount the token claims.
That statefulness is the reason to use this endpoint rather than local
verification: a signature proves authority was granted, not that it has not
already been used. An intent that has already been spent reports already_settled.
For the hot path, verify offline against the JWKS instead. This endpoint is for when you need settlement state.
Send the token either as the body field authorization or as an
Authorization: Bearer <jwt> header.
POST
/
control
/
v1
/
cosign
/
verify
Verify a cosignature
curl --request POST \
--url https://api.kordio.io/control/v1/cosign/verify \
--header 'Content-Type: application/json' \
--data '
{
"authorization": "<string>"
}
'import requests
url = "https://api.kordio.io/control/v1/cosign/verify"
payload = { "authorization": "<string>" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({authorization: '<string>'})
};
fetch('https://api.kordio.io/control/v1/cosign/verify', 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.kordio.io/control/v1/cosign/verify",
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([
'authorization' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"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.kordio.io/control/v1/cosign/verify"
payload := strings.NewReader("{\n \"authorization\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.kordio.io/control/v1/cosign/verify")
.header("Content-Type", "application/json")
.body("{\n \"authorization\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kordio.io/control/v1/cosign/verify")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"authorization\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"valid": true,
"reason": "<string>",
"intent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"action_type": "<string>",
"resource": "<string>",
"amount_cents": 123,
"currency": "<string>",
"policy_version": "<string>",
"frame_hash": "<string>",
"expires_at": "2023-11-07T05:31:56Z"
}
}{
"error": {
"message": "authorization is required",
"code": "authorization_required"
}
}{
"data": {
"valid": false,
"reason": "already_settled"
}
}