Verify or Reject an Attestation
After an attestation is submitted, it must be verified or rejected by an authorized wallet. This adds human oversight to minting and burning operations. This guide shows how to verify or reject an attestation.
Prerequisites
Section titled “Prerequisites”Before you begin, ensure:
- You have the
stablecoinId
andattestationId
- Your wallet has the
VERIFIER_ROLE
or appropriate admin permissions
Endpoint
Section titled “Endpoint”POST /v2/stablecoin/{stablecoinId}/attestation/{attestationId}/verify
Request Parameters
Section titled “Request Parameters”{ "approved": true, "notes": "Documents reviewed and confirmed", "signerWalletId": "{{walletId}}"}
approved
:true
to verify,false
to rejectnotes
: Optional justification (especially important for rejections)signerWalletId
: Wallet that approves or rejects the attestation
Example Request
Section titled “Example Request”curl -X POST https://api.fsco.io/v2/stablecoin/{{stablecoinId}}/attestation/{{attestationId}}/verify \ -H "Authorization: Bearer $FSCO_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "approved": true, "notes": "All backing documentation verified", "signerWalletId": "{{walletId}}" }'
import axios from 'axios';
const FSCO_API_KEY = process.env.FSCO_API_KEY;
const verifyAttestation = async () => { const response = await axios.post( 'https://api.fsco.io/v2/stablecoin/{{stablecoinId}}/attestation/{{attestationId}}/verify', { approved: true, notes: 'All backing documentation verified', signerWalletId: '{{walletId}}' }, { headers: { Authorization: `Bearer ${FSCO_API_KEY}`, 'Content-Type': 'application/json' } } );
console.log('Attestation verified:', response.data);};
verifyAttestation();
import requestsimport os
FSCO_API_KEY = os.getenv("FSCO_API_KEY")
headers = { "Authorization": f"Bearer {FSCO_API_KEY}", "Content-Type": "application/json",}
payload = { "approved": True, "notes": "All backing documentation verified", "signerWalletId": "{{walletId}}",}
response = requests.post( "https://api.fsco.io/v2/stablecoin/{{stablecoinId}}/attestation/{{attestationId}}/verify", json=payload, headers=headers,)
print("Attestation verified:", response.json())
using System;using System.Net.Http;using System.Net.Http.Headers;using System.Text;using System.Threading.Tasks;
class Program{ static async Task Main() { var apiKey = Environment.GetEnvironmentVariable("FSCO_API_KEY");
var client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
var json = @"{ ""approved"": true, ""notes"": ""All backing documentation verified"", ""signerWalletId"": ""{{walletId}}"" }"; var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://api.fsco.io/v2/stablecoin/{{stablecoinId}}/attestation/{{attestationId}}/verify", content); var responseString = await response.Content.ReadAsStringAsync();
Console.WriteLine("Attestation verified: " + responseString); }}
Response
Section titled “Response”{ "attestationId": "{{attestationId}}", "status": "verified", "type": "mint", "amount": "1000000000000000000", "sourceWalletId": "{{walletId}}", "destinationWalletId": "{{walletId}}", "signerWalletId": "{{walletId}}", "transactionReference": "WIRE-REF-2025-001", "transactionDate": "2025-05-08T12:00:00Z", "documents": [ { "blobId": "blob_abc123" } ], "additionalNotes": "USDC treasury deposited", "verificationNotes": "All backing documentation verified", "verifiedBy": "{{walletId}}", "verifiedAt": "2025-05-08T12:30:00Z", "createdAt": "2025-05-08T12:00:00Z"}
Once verified, the attestation can be executed using the
/use
endpoint. Rejected attestations will be permanently excluded from execution.