curl --request GET \
--url https://api.qbank.cl/platform/v1/signature-proofs/{proofID} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.qbank.cl/platform/v1/signature-proofs/{proofID}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.qbank.cl/platform/v1/signature-proofs/{proofID}', 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.qbank.cl/platform/v1/signature-proofs/{proofID}",
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.qbank.cl/platform/v1/signature-proofs/{proofID}"
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.qbank.cl/platform/v1/signature-proofs/{proofID}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.qbank.cl/platform/v1/signature-proofs/{proofID}")
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{
"proof": {
"proof_id": "c41d2a88-7f3e-4b21-9c6d-2e8f1a5b7d90",
"account_id": "ae8c1f02-3b45-4c67-9d12-8f0e5a6b7c8d",
"wallet_id": "b7e39c14-2d56-4e78-8a01-3c5d7e9f1b24",
"chain": "eth",
"address": "0x71C7656EC7ab88b098defB751B7401B5f6d8976F",
"purpose": "wallet_ownership",
"statement": "I control this wallet",
"envelope": "CBPay Signature Proof\nDomain: https://api.qbank.cl/platform\nPurpose: wallet_ownership\nWallet: 0x71C7656EC7ab88b098defB751B7401B5f6d8976F\nNonce: 9f2c41d2a887f3e4b219c6d2e8f1a5b7\nIssued: 2026-08-21T14:03:11Z\nExpires: 2026-08-21T14:13:11Z\nStatement: \"I control this wallet\"",
"nonce": "9f2c41d2a887f3e4b219c6d2e8f1a5b7",
"proof_code": "Gc41d2a887f3e4b219c6d2e8f1a5b7d90a1b2c3d4e5f60718293a",
"status": "signed",
"issued_at": "2026-08-21T14:03:11Z",
"expires_at": "2026-08-21T14:13:11Z",
"signed_at": "2026-08-21T14:03:12Z",
"created_at": "2026-08-21T14:03:11Z",
"signature": "8ba1f109551bd432803012645ac136ddd64dba72a0c9e0b1f5b1a2c3d4e5f60718293a4b5c6d7e8f90112233445566778899aabbccddeeff00112233445566771b",
"message_hash": "3f8a1c4e9b2d6f70a5c8e1b4d7f2093a4c6e8f10b3d5f709e2a4c6d8f0b1c3d5",
"verify_url": "https://api.qbank.cl/platform/v1/public/signature-proofs/Gc41d2a887f3e4b219c6d2e8f1a5b7d90a1b2c3d4e5f60718293a"
}
}Detalle de una prueba de firma
Devuelve el detalle completo de una prueba de firma de la cuenta, incluyendo la firma, el hash del mensaje y el link público de verificación.
curl --request GET \
--url https://api.qbank.cl/platform/v1/signature-proofs/{proofID} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.qbank.cl/platform/v1/signature-proofs/{proofID}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.qbank.cl/platform/v1/signature-proofs/{proofID}', 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.qbank.cl/platform/v1/signature-proofs/{proofID}",
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.qbank.cl/platform/v1/signature-proofs/{proofID}"
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.qbank.cl/platform/v1/signature-proofs/{proofID}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.qbank.cl/platform/v1/signature-proofs/{proofID}")
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{
"proof": {
"proof_id": "c41d2a88-7f3e-4b21-9c6d-2e8f1a5b7d90",
"account_id": "ae8c1f02-3b45-4c67-9d12-8f0e5a6b7c8d",
"wallet_id": "b7e39c14-2d56-4e78-8a01-3c5d7e9f1b24",
"chain": "eth",
"address": "0x71C7656EC7ab88b098defB751B7401B5f6d8976F",
"purpose": "wallet_ownership",
"statement": "I control this wallet",
"envelope": "CBPay Signature Proof\nDomain: https://api.qbank.cl/platform\nPurpose: wallet_ownership\nWallet: 0x71C7656EC7ab88b098defB751B7401B5f6d8976F\nNonce: 9f2c41d2a887f3e4b219c6d2e8f1a5b7\nIssued: 2026-08-21T14:03:11Z\nExpires: 2026-08-21T14:13:11Z\nStatement: \"I control this wallet\"",
"nonce": "9f2c41d2a887f3e4b219c6d2e8f1a5b7",
"proof_code": "Gc41d2a887f3e4b219c6d2e8f1a5b7d90a1b2c3d4e5f60718293a",
"status": "signed",
"issued_at": "2026-08-21T14:03:11Z",
"expires_at": "2026-08-21T14:13:11Z",
"signed_at": "2026-08-21T14:03:12Z",
"created_at": "2026-08-21T14:03:11Z",
"signature": "8ba1f109551bd432803012645ac136ddd64dba72a0c9e0b1f5b1a2c3d4e5f60718293a4b5c6d7e8f90112233445566778899aabbccddeeff00112233445566771b",
"message_hash": "3f8a1c4e9b2d6f70a5c8e1b4d7f2093a4c6e8f10b3d5f709e2a4c6d8f0b1c3d5",
"verify_url": "https://api.qbank.cl/platform/v1/public/signature-proofs/Gc41d2a887f3e4b219c6d2e8f1a5b7d90a1b2c3d4e5f60718293a"
}
}Autorizaciones
JWT de sesión (de register/login) o llave de API (pk_...).
X-API-Key: <token> se acepta como header alternativo.
Parámetros de ruta
ID de la prueba de firma.
Respuesta
Detalle de la prueba de firma.
Prueba criptográfica de que una wallet firmó un mensaje estructurado CBPay (EIP-191 ETH/EVM, TIP-191 TRON). Verificable públicamente vía verify_url. El envelope es el mensaje anti-phishing exacto que firmó la wallet (líneas Domain / Purpose / Wallet / Nonce / Issued / Expires / Statement; la línea Account solo aparece para proofs wallet_link). Los proofs viven 10 minutos (expires_at); un proof firmado sigue siendo verificable públicamente tras expirar.
Show child attributes
Show child attributes