AffixIO Circuits API
The Circuits API from AffixIO — 3 operation(s) for circuits.
The Circuits API from AffixIO — 3 operation(s) for circuits.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/affix-io-com:affix-io-com-circuits-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: AffixIO Verification Circuits API
version: 1.8.0
description: Public /v1 and /api surface of the AffixIO verification API (ML-DSA-65 signed yes/no results, Noir/Barretenberg circuits, Merkle audit, spent registry, gates, Agent Trust). Generated from the live MCP endpoint catalogue and the Postman collection at https://api.affix-io.com/openapi.postman.json. Account, key, OAuth, Hub and webhook administration are intentionally omitted. A successful verify spends the proof digest; presenting it again returns 409 double_spend_detected. Send Idempotency-Key on prove/verify to retry safely.
contact:
name: AffixIO
url: https://www.affix-io.com/contact/
servers:
- url: https://api.affix-io.com
tags:
- name: Circuits
paths:
/v1/circuits:
get:
operationId: affix_list_circuits
summary: List zk circuits
description: List the available AffixIO zero-knowledge circuits with their ids and metadata.
security:
- ApiKey: []
- Bearer: []
responses:
'200':
description: Success (JSON).
'400':
description: Invalid request.
'401':
description: API key missing or not accepted.
'409':
description: Conflict, e.g. double_spend_detected on a spent proof.
'429':
description: Rate limited; see Retry-After.
tags:
- Circuits
/v1/circuits/{circuitId}/prove:
post:
operationId: affix_circuit_prove
summary: Generate zk circuit proof
description: 'Generate a zero-knowledge proof for a circuit (POST /v1/circuits/:circuitId/prove). Recommended shape: credential + context; the server builds the witness. Every witness value must be a number: send numeric fields (claim_value, valid_from, valid_until, min_value, max_value) as JSON numbers, and id fields (schema_id, issuer_pubkey_hash, credential_id, context.secret, context.context_id) as strings holding a decimal or 0x hex number. Hash any text (an order id, an email) to a field element first; plain text is rejected with 400 invalid_fields and invalid_witness_fields. issuer_id may be any string. Range circuits such as ticket_age_entry take context.min_value and context.max_value, so a ticket age check works over REST: decision yes when claim_value is in range. The simple fields shape (condition_greater1..3) only applies to the yesno circuit.'
security:
- ApiKey: []
- Bearer: []
responses:
'200':
description: Success (JSON).
'400':
description: Invalid request.
'401':
description: API key missing or not accepted.
'409':
description: Conflict, e.g. double_spend_detected on a spent proof.
'429':
description: Rate limited; see Retry-After.
parameters:
- name: circuitId
in: path
required: true
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
type: object
additionalProperties: true
examples:
ticket_age_entry:
summary: Ticket age check (18+), circuitId=ticket_age_entry
value:
credential:
schema_id: '0x01'
issuer_id: box-office
issuer_pubkey_hash: '0x0a'
credential_id: '0x0b'
claim_value: 30
valid_from: 0
valid_until: 4000000000
context:
secret: '0x01'
context_id: '0x02'
min_value: 18
max_value: 120
simple_yesno:
summary: Yes/no credential, circuitId=simple_yesno
value:
credential:
schema_id: '0x01'
issuer_id: issuer
issuer_pubkey_hash: '0x0a'
credential_id: '0x0b'
claim_value: 1
valid_from: 0
valid_until: 4000000000
context:
secret: '0x01'
context_id: '0x02'
yesno_fields:
summary: Simple fields, circuitId=yesno only
value:
fields:
condition_greater1: true
condition_greater2: true
condition_greater3: true
tags:
- Circuits
/v1/circuits/{circuitId}/verify:
post:
operationId: affix_circuit_verify
summary: Verify zk circuit proof
description: Verify a zero-knowledge proof for a circuit (POST /v1/circuits/:circuitId/verify).
security:
- ApiKey: []
- Bearer: []
responses:
'200':
description: Success (JSON).
'400':
description: Invalid request.
'401':
description: API key missing or not accepted.
'409':
description: Conflict, e.g. double_spend_detected on a spent proof.
'429':
description: Rate limited; see Retry-After.
parameters:
- name: circuitId
in: path
required: true
schema:
type: string
requestBody:
required: false
content:
application/json:
schema:
type: object
additionalProperties: true
example:
proof: pf_<proof_id from prove>
requestAttestation: true
tags:
- Circuits
components:
securitySchemes:
ApiKey:
type: apiKey
in: header
name: X-API-Key
Bearer:
type: http
scheme: bearer