Complete API reference for building with AffixIO. Real-time cryptographic verification, zero-knowledge proofs, and stateless architecture. Every endpoint documented with examples.
Get API information, version, and available endpoints. Returns different responses for JSON vs HTML requests.
{
"name": "AffixIO API",
"version": "1.0.0",
"engine": {
"name": "Apollo",
"version": "1.0.0"
},
"documentation": "https://www.affix-io.com/docs",
"endpoints": {
"health": "/health",
"verify": "/verify",
"pod": "/pod/:podId/verify",
"domain": "/domain/verify",
"hermes": "/hermes/:slug"
},
"customDomains": {
"supported": true,
"cname": "api.affix-io.com"
},
"timestamp": "2025-01-20T12:00:00.000Z"
}
curl -X GET https://api.affix-io.com/ \
-H "Accept: application/json"
Comprehensive health check endpoint. Returns service status, database connectivity, engine status, and response time metrics.
curl https://api.affix-io.com/health
{
"status": "healthy",
"timestamp": "2025-01-20T12:00:00.000Z",
"uptime": 86400,
"engine": {
"name": "Apollo",
"version": "1.0.0",
"status": "operational"
},
"database": {
"status": "connected"
},
"responseTime": 5
}
Readiness probe for Kubernetes/Docker orchestration. Checks if the service is ready to accept traffic.
curl https://api.affix-io.com/health/ready
{ "ready": true }
Liveness probe for Kubernetes/Docker orchestration. Checks if the service process is alive.
curl https://api.affix-io.com/health/live
{ "live": true }
Get engine information and verification service status.
curl https://api.affix-io.com/verify
{
"success": true,
"engine": {
"name": "Apollo",
"version": "1.0.0"
},
"status": "operational",
"timestamp": "2025-01-20T12:00:00.000Z"
}
Main verification endpoint for cryptographic verification. Requires active subscription. Supports both API key and Bearer token authentication.
curl -X POST https://api.affix-io.com/verify \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"data": {
"field1": "value1",
"field2": "value2"
},
"options": {}
}'
const response = await fetch('https://api.affix-io.com/verify', {
method: 'POST',
headers: {
'X-API-Key': 'your-api-key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
data: {
field1: 'value1',
field2: 'value2'
},
options: {}
})
});
const result = await response.json();
{
"success": true,
"verificationId": "verify-123-abc",
"timestamp": "2025-01-20T12:00:00.000Z",
"jws": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"signature": "cryptographic-signature",
"proof": "zero-knowledge-proof"
}
Batch verification endpoint. Process up to 100 verification items in a single request for improved performance.
curl -X POST https://api.affix-io.com/verify/batch \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"items": [
{"field1": "value1"},
{"field2": "value2"}
]
}'
{
"success": true,
"count": 2,
"results": [
{
"success": true,
"verificationId": "verify-1"
},
{
"success": true,
"verificationId": "verify-2"
}
]
}
Verify a QR code by hash. Proxies to main backend service. No authentication required.
curl https://api.affix-io.com/verify/qr/abc123def456
Get information about a corporate pod including status, custom domain, and verification count.
curl https://api.affix-io.com/pod/pod-123
{
"success": true,
"pod": {
"id": "pod-123",
"name": "Corporate Pod",
"status": "ACTIVE",
"customDomain": "verify.example.com",
"verificationCount": 1500,
"createdAt": "2025-01-20T12:00:00.000Z",
"endpoints": {
"verify": "https://api.affix-io.com/pod/pod-123/verify",
"info": "https://api.affix-io.com/pod/pod-123"
}
}
}
Pod-specific verification endpoint. Public endpoint but requires pod authentication. Charges apply per verification ($0.35 default). Rate limited to 1000 requests per hour per IP.
curl -X POST https://api.affix-io.com/pod/pod-123/verify \
-H "Content-Type: application/json" \
-d '{
"field1": "value1",
"field2": "value2"
}'
{
"success": true,
"verificationId": "pod-verify-123",
"timestamp": "2025-01-20T12:00:00.000Z",
"jws": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"signature": "cryptographic-signature",
"proof": "zero-knowledge-proof"
}
Get pod statistics including total verifications, success rate, today's count, and weekly charges. Requires pod ownership (verified via API key).
curl https://api.affix-io.com/pod/pod-123/stats \
-H "X-API-Key: your-api-key"
{
"success": true,
"stats": {
"podId": "pod-123",
"podName": "Corporate Pod",
"totalVerifications": 1500,
"successfulVerifications": 1450,
"successRate": "96.67%",
"todayVerifications": 50,
"weeklyCharges": 525.00,
"status": "ACTIVE"
}
}
Verify DNS configuration for a custom domain. Checks if CNAME is properly configured to point to api.affix-io.com. Can optionally verify pod ownership.
curl -X POST https://api.affix-io.com/domain/verify \
-H "X-API-Key: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"domain": "verify.example.com",
"podId": "pod-123"
}'
{
"success": true,
"domain": "verify.example.com",
"dns": {
"valid": true,
"cname": "api.affix-io.com"
},
"available": true,
"instructions": null
}
Check the current status of a domain including DNS configuration, pod association, and readiness status.
curl https://api.affix-io.com/domain/status/verify.example.com
{
"success": true,
"domain": "verify.example.com",
"configured": true,
"podInfo": {
"id": "pod-123",
"name": "Corporate Pod",
"status": "ACTIVE"
},
"dns": {
"valid": true,
"cname": "api.affix-io.com"
},
"ready": true
}
Hermes routes provide stateless eligibility checks. They forward requests to target URLs and return YES/NO verdicts based on search results in the response data. Perfect for building eligibility verification systems.
Verify eligibility through a Hermes route. Searches the target URL's data source and returns a YES/NO verdict. Supports optional token authentication if route requires it.
curl -X POST https://api.affix-io.com/hermes/my-route \
-H "Content-Type: application/json" \
-d '{
"id": "12345",
"email": "user@example.com"
}'
const response = await fetch('https://api.affix-io.com/hermes/my-route', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
// Optional: 'Authorization': 'Bearer token' if route requires token
},
body: JSON.stringify({
id: '12345',
email: 'user@example.com'
})
});
const result = await response.json();
// Result: { verdict: 'YES' | 'NO', jws: '...', timestamp: '...', ... }
{
"verdict": "YES",
"timestamp": "2025-01-20T12:00:00.000Z",
"jws": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"signature": "cryptographic-signature",
"proof": "zero-knowledge-proof",
"zkProof": {
"proof": "zk-proof-data",
"commitment": "commitment-hash",
"verificationKey": "verification-key",
"publicInputs": {
"verdict": "YES"
}
}
}
GET request to Hermes route. Uses query parameters as search criteria. Optional ID parameter can be used for specific item lookup.
curl "https://api.affix-io.com/hermes/my-route?id=12345&email=user@example.com"
const params = new URLSearchParams({
id: '12345',
email: 'user@example.com'
});
const response = await fetch(`https://api.affix-io.com/hermes/my-route?${params}`);
const result = await response.json();
{
"verdict": "YES",
"timestamp": "2025-01-20T12:00:00.000Z",
"jws": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"signature": "cryptographic-signature",
"proof": "zero-knowledge-proof"
}
Proxy routes create api.affix-io.com URLs that forward to destination URLs. They use Hermes routes under the hood and return YES/NO verdicts based on search results.
Create a proxy URL. Converts a destination URL into an api.affix-io.com link that can be used for verification.
curl -X POST https://api.affix-io.com/proxy \
-H "Content-Type: application/json" \
-d '{
"userId": "user-123",
"destinationUrl": "https://api.example.com/data",
"requireToken": false
}'
{
"success": true,
"id": "hermes-123",
"slug": "abc123def456",
"sourceUrl": "https://api.example.com/data",
"destinationUrl": "https://api.example.com/data",
"apiUrl": "https://api.affix-io.com/hermes/abc123def456",
"createdAt": "2025-01-20T12:00:00.000Z"
}
List all proxy URLs for a user with statistics.
curl "https://api.affix-io.com/proxy?userId=user-123"
Get details for a specific proxy route.
curl https://api.affix-io.com/proxy/hermes-123
Delete a proxy route. Soft delete preserves history.
curl -X DELETE https://api.affix-io.com/proxy/hermes-123 \
-H "Content-Type: application/json" \
-d '{"userId": "user-123"}'