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
stablecoinIdandattestationId - Your wallet has the
VERIFIER_ROLEor appropriate admin permissions
Endpoint
Section titled “Endpoint”POST /v2/stablecoin/{stablecoinId}/attestation/{attestationId}/verifyRequest Parameters
Section titled “Request Parameters”{ "approved": true, "notes": "Documents reviewed and confirmed", "signerWalletId": "{{walletId}}"}approved:trueto verify,falseto 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.