API Documentation
Integrate cryptographic treasury verification into any application. Full governance pipeline, every operation.
Quick Start
Create an Account
Sign up for free at treasuryproof.com/signup to get your API key.
Get Your API Key
Navigate to your dashboard to find your unique API key.
Make Your First Call
Send a POST request to /api/payments with your treasury operation details.
Receive Your EVR
Every successful operation returns a cryptographic Execution Verification Record.
Authentication
All authenticated API requests require a Bearer token. Obtain your API key from the Dashboard after signing up.
Authorization: Bearer <your-api-key>API keys are scoped to your account and should never be exposed in client-side code. Use server-side requests only.
Code Examples
curl -X POST https://treasuryproof.com/api/payments \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": 250000.00,
"currency": "USD",
"method": "disbursement",
"paymentType": "allocation",
"recipientName": "Acme Holdings LLC"
}'API Endpoints
/api/paymentsRequires AuthCreate a new verified treasury operation and generate EVR
| Name | Type | Required | Description |
|---|---|---|---|
| amount | number | Yes | Operation amount in the specified currency |
| currency | string | No | ISO 4217 currency code (default: USD) |
| method | string | Yes | Fund flow type: disbursement, allocation, transfer, reserve, reconcile |
| paymentType | string | Yes | Operation type: disbursement, allocation, reconciliation, reserve, intercompany |
| recipientName | string | No | Recipient display name |
| recipientEmail | string | No | Recipient email address |
| description | string | No | Operation description or reference |
{
"amount": 250.00,
"currency": "USD",
"method": "stripe",
"paymentType": "invoice",
"recipientName": "Acme Corp",
"recipientEmail": "[email protected]",
"description": "Invoice #1234"
}{
"payment": {
"id": "clx...",
"amount": 250.00,
"currency": "USD",
"method": "stripe",
"status": "verified"
},
"evr": {
"verificationHash": "a1b2c3d4e5f6...",
"cryptographicProof": "e5f6a7b8c9d0...",
"witnessTimestamp": "2026-06-12T15:30:00.000Z",
"status": "active",
"standard": "ExecutionProof v1.4.1"
}
}/api/paymentsRequires AuthList all treasury operations with filtering and pagination
| Name | Type | Required | Description |
|---|---|---|---|
| page | number | No | Page number (default: 1) |
| limit | number | No | Results per page (default: 20, max: 100) |
| status | string | No | Filter by status: pending, verified, failed |
| method | string | No | Filter by fund flow type |
| search | string | No | Search by recipient name, email, or description |
{
"payments": [...],
"total": 42,
"page": 1,
"limit": 20,
"pages": 3
}/api/payments/:idRequires AuthGet operation details with full EVR and transaction history
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Operation ID (path parameter) |
{
"payment": {
"id": "clx...",
"amount": 250.00,
"status": "verified",
"evr": {
"verificationHash": "a1b2c3d4...",
"cryptographicProof": "e5f6a7b8...",
"witnessTimestamp": "2026-06-12T...",
"evidencePayload": { ... }
},
"transactions": [{ ... }]
}
}/api/demo/verifyPublicRun a treasury verification without authentication (sandbox)
| Name | Type | Required | Description |
|---|---|---|---|
| amount | number | Yes | Operation amount for verification |
| method | string | Yes | Fund flow type to simulate |
| paymentType | string | Yes | Operation type to simulate |
{
"amount": 100,
"method": "stripe",
"paymentType": "p2p"
}{
"success": true,
"paymentId": "demo_...",
"evr": {
"verificationHash": "...",
"cryptographicProof": "...",
"witnessTimestamp": "..."
},
"steps": [
{ "name": "Authority", "status": "passed" },
{ "name": "Policy", "status": "passed" },
...
]
}EVR Format Specification
The Execution Verification Record (EVR) is a JSON-LD document conforming to the RF-100:FINANCE standard. Each EVR contains the complete cryptographic proof chain, witness timestamps, and governance metadata.
{
"@context": "https://executionproof.io/evr/v1",
"@type": "ExecutionVerificationRecord",
"version": "1.0",
"standard": "RF-100:FINANCE v1.0",
"paymentId": "clx1234abcd",
"amount": 250.00,
"currency": "USD",
"method": "stripe",
"paymentType": "invoice",
"recipient": {
"name": "Acme Corporation",
"email": "[email protected]"
},
"verification": {
"hash": "a1b2c3d4e5f6...",
"algorithm": "SHA-256",
"proof": "x7y8z9w0...",
"proofAlgorithm": "SHA-512",
"witnessTimestamp": "2026-06-12T15:30:00.000Z",
"witnessChain": [
"authority:verified:2026-06-12T15:29:58.100Z",
"policy:compliant:2026-06-12T15:29:58.200Z",
"state:captured:2026-06-12T15:29:58.300Z",
"risk:acceptable:2026-06-12T15:29:58.400Z",
"proof:generated:2026-06-12T15:29:59.000Z",
"execution:completed:2026-06-12T15:30:00.000Z"
]
},
"governance": {
"doctrine": "RF-000: Verification Before Execution",
"law": "If it cannot be verified, it cannot execute",
"authority": "Remnant Fieldworks Inc.",
"standard": "ExecutionProof® v1.4.1"
},
"sealed": true,
"immutable": true
}Webhook Integration
Configure webhooks to receive real-time notifications when treasury operations are verified, disputes occur, or evidence is generated. Webhooks are signed with your API key for verification.
operation.verifiedFired when a treasury operation passes all six governance gates and the EVR is sealed
operation.disputedFired when a dispute is raised against a verified operation
evr.generatedFired when a new EVR is generated and sealed in immutable storage
Error Codes
| Code | Description |
|---|---|
| 401 | Unauthorized — Missing or invalid API key |
| 400 | Bad Request — Missing required parameters |
| 404 | Not Found — Operation ID does not exist |
| 403 | Forbidden — Operation belongs to another user |
| 429 | Rate Limited — Monthly verification limit exceeded |
| 500 | Internal Error — Contact support with request ID |