openapi: 3.2.0 info: contact: email: nicholas@csoai.org name: CSOAI Ltd url: https://councilof.ai/ description: 'Verification is free forever. Agents pay per artefact: issuance, assembly, cadence — never a grade. 22 axes measured · 14 model fleets · 3 public leader scores · 8 fact runs · TIE is TIE · not a certificate. Operations with security [] are free and unauthenticated. Operations with x-payment-info are x402 doors; an amount appears only inside a door''s 402 challenge (documented as each door''s 402 example).' license: name: CC-BY-4.0 url: https://creativecommons.org/licenses/by/4.0/ title: Council of AI — Public X402 API version: 0.2+820f7aa0ad7a x-guidance: 'Free board: GET /api/gspc — quote totals.lid verbatim, never compose a count. Paid doors are the operations carrying x-payment-info: GET without payment answers HTTP 402 with the x402 v2 challenge (accepts[0]: scheme exact, network eip155:8453, USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, payTo 0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31); pay it and retry with the X-PAYMENT header. Required query parameters carry an example that reaches the 402. Free previews are named per door under x-csoai.free_preview. Catalog: https://councilof.ai/.well-known/x402.json and https://councilof.ai/api/x402. Verify is free: https://councilof.ai/gspc-verify. Offer & Receipt emission is conditional: a 402 carries server-signed offers only when the Pages signing key is available; a settled 200 carries a signed receipt only when settlement exposes the required payer and transaction evidence and that key is available. The extension uses JWS/EdDSA, kid did:web:csoai.org#board-attestation-1, published at https://csoai.org/.well-known/did.json. Check either without trusting this document: POST it to /api/receipts/verify, or run scripts/verify_receipt.py, which reads did.json and contacts nobody. 22 axes measured · 14 model fleets · 3 public leader scores · 8 fact runs · TIE is TIE · not a certificate.' servers: - url: https://councilof.ai tags: - name: X402 paths: /api/x402: get: description: GET /api/x402 — the machine catalog of the metered rail. NO AMOUNTS HERE. operationId: get__api_x402 responses: '200': content: application/json: {} description: OK security: [] summary: GET /api/x402 — the machine catalog of the metered rail. NO AMOUNTS HERE tags: - X402 /api/art50/marking-evidence: get: description: A signed card recording whether a machine-readable mark was detected in one named output, by named methods, at one time. Detection, never a conformity opinion. preview=1 is free unsigned. Paid signed card requires url (HTTP 402). operationId: x402_art50_marking_evidence parameters: - description: Public URL of the generative output to measure (≤ 20 MiB); or POST the bytes example: https://councilof.ai/og-image.png in: query name: url required: true schema: const: https://councilof.ai/og-image.png type: string - description: 1 = free unsigned measurement in: query name: preview required: false schema: type: string responses: '200': content: application/json: schema: description: A signed card recording whether a machine-readable mark was detected in one named output, by named methods, at one time. Detection, never a conformity opinion. type: object description: A signed card recording whether a machine-readable mark was detected in one named output, by named methods, at one time. Detection, never a conformity opinion. '402': content: application/json: example: accepts: - amount: '10000' asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' csoai_pricing: campaign_id: csoai-launch-30d-20260911 ends_at: '2026-10-11T00:00:00Z' fresh_compute_excluded: true normal_amount_atomic: '25000000' offered_amount_atomic: '10000' pricing_basis: PROMO_EXISTING_DATA product_id: csoai.product.art50_marking_evidence sku_id: art50_marking_evidence starts_at: '2026-09-11T00:00:00Z' tier: pack description: A signed card recording whether a machine-readable mark was detected in one named output, by named methods, at one time. Detection, never a conformity opinion. extra: decimals: 6 name: USD Coin symbol: USDC version: '2' maxAmountRequired: '10000' maxTimeoutSeconds: 300 mimeType: application/json network: eip155:8453 payTo: '0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31' resource: https://councilof.ai/api/art50/marking-evidence scheme: exact error: Payment required extensions: bazaar: info: input: method: GET queryParams: url: https://councilof.ai/og-image.png type: http output: example: payload: checked: - method: c2pa.manifest-store result: NOT_DETECTED kind: csoai.art50.marking-evidence/0.1 statements: - marking not detected by method c2pa.manifest-store schema: https://councilof.ai/schema/card-v0.json sig_ed25519: surface: art50.marking-evidence unmeasured: - root_inclusion - watermark.synthid type: json schema: $schema: https://json-schema.org/draft/2020-12/schema properties: input: additionalProperties: false properties: method: enum: - GET - HEAD - DELETE type: string queryParams: properties: preview: description: 1 = free unsigned measurement type: string url: description: Public URL of the generative output to measure (≤ 20 MiB); or POST the bytes type: string required: - url type: object type: const: http type: string required: - type - method type: object output: properties: example: type: object type: type: string required: - type type: object required: - input type: object offer-receipt: info: offers: - acceptIndex: 0 format: jws signature: eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDp3ZWI6Y3NvYWkub3JnI2JvYXJkLWF0dGVzdGF0aW9uLTEifQ.eyJhbW91bnQiOiIxMDAwMCIsImFzc2V0IjoiMHg4MzM1ODlmQ0Q2ZURiNkUwOGY0YzdDMzJENGY3MWI1NGJkQTAyOTEzIiwibmV0d29yayI6ImVpcDE1NTo4NDUzIiwicGF5VG8iOiIweDIxMjY4NjQwNEE3RDFFMWZEODhGMzVlRDYyMDBjM2FGN0E3OGFlMzEiLCJyZXNvdXJjZVVybCI6Imh0dHBzOi8vY291bmNpbG9mLmFpL2FwaS9hcnQ1MC9tYXJraW5nLWV2aWRlbmNlIiwic2NoZW1lIjoiZXhhY3QiLCJ2YWxpZFVudGlsIjoxNzg5MzE1MTc4LCJ2ZXJzaW9uIjoxfQ.JNBclDT1djyPZmETtHdWB5r2IUf-epi_l7VdIfHWXraeaITe-rT0R6s5sTbYZXYMcf1MrWMeydhzu8y6Wa2cAQ schema: $schema: https://json-schema.org/draft/2020-12/schema properties: offers: items: properties: acceptIndex: type: integer format: const: jws type: string signature: description: JWS compact serialization containing the offer payload type: string required: - format - signature type: object type: array required: - offers type: object resource: description: A signed card recording whether a machine-readable mark was detected in one named output, by named methods, at one time. Detection, never a conformity opinion. mimeType: application/json serviceName: CSOAI Article 50 marking evidenc tags: - article-50 - c2pa - marking - measurement - x402 url: https://councilof.ai/api/art50/marking-evidence x402Version: 2 schema: $ref: '#/components/schemas/X402PaymentRequired' description: Payment required — the x402 v2 challenge. The same JSON is base64-encoded in the PAYMENT-REQUIRED response header. Pay accepts[0] (scheme exact, network eip155:8453, USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, payTo 0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31; amount in atomic units) and retry the same request with the X-PAYMENT header. Verification of the artefact stays free. headers: PAYMENT-REQUIRED: description: base64(JSON) of this challenge body schema: type: string summary: CSOAI Article 50 marking evidenc tags: - X402 x-csoai: challenge: amount_source: captured live 402 (challenges/art50_marking_evidence.json) captured: true payment_required_header_bytes: 6924 door: https://councilof.ai/api/art50/marking-evidence?url=https://councilof.ai/og-image.png free_preview: https://councilof.ai/api/art50/marking-evidence?url=https://councilof.ai/og-image.png&preview=1 paid_for: assembly x-payment-info: protocols: - x402 /api/eunomia-data: get: description: A signed JSON feed of enforcement and measurement artefacts already on the public root. Data only — no scores, no ranking. Bare path (no query) is the free preview tier (HTTP 200). Paid signed feed requires feed=1 (HTTP 402). operationId: x402_eunomia_data parameters: - description: Paid-tier gate. Must be the string 1 to request the signed feed (HTTP 402). Omit for free preview on the bare path (HTTP 200). example: '1' in: query name: feed required: true schema: const: '1' type: string responses: '200': content: application/json: schema: description: A signed JSON feed of enforcement and measurement artefacts already on the public root. Data only — no scores, no ranking. type: object description: A signed JSON feed of enforcement and measurement artefacts already on the public root. Data only — no scores, no ranking. '402': content: application/json: example: accepts: - amount: '10000' asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' csoai_pricing: campaign_id: csoai-launch-30d-20260911 ends_at: '2026-10-11T00:00:00Z' fresh_compute_excluded: true normal_amount_atomic: '20000' offered_amount_atomic: '10000' pricing_basis: PROMO_EXISTING_DATA product_id: csoai.product.issuance sku_id: issuance starts_at: '2026-09-11T00:00:00Z' tier: reserve description: A signed JSON feed of enforcement and measurement artefacts already on the public root. Data only — no scores, no ranking. extra: decimals: 6 name: USD Coin symbol: USDC version: '2' maxAmountRequired: '10000' maxTimeoutSeconds: 300 mimeType: application/json network: eip155:8453 payTo: '0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31' resource: https://councilof.ai/api/eunomia-data?feed=1 scheme: exact error: Payment required extensions: bazaar: info: input: method: GET queryParams: feed: '1' type: http output: example: blocks: card_index: {} first_fine_watch: {} root: {} signals: {} kind: feed schema: csoai.eunomia-data/0.2 type: json schema: $schema: https://json-schema.org/draft/2020-12/schema properties: input: additionalProperties: false properties: method: enum: - GET - HEAD - DELETE type: string queryParams: properties: feed: const: '1' type: string required: - feed type: object type: const: http type: string required: - type - method type: object output: properties: example: type: object type: type: string required: - type type: object required: - input type: object offer-receipt: info: offers: - acceptIndex: 0 format: jws signature: eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDp3ZWI6Y3NvYWkub3JnI2JvYXJkLWF0dGVzdGF0aW9uLTEifQ.eyJhbW91bnQiOiIxMDAwMCIsImFzc2V0IjoiMHg4MzM1ODlmQ0Q2ZURiNkUwOGY0YzdDMzJENGY3MWI1NGJkQTAyOTEzIiwibmV0d29yayI6ImVpcDE1NTo4NDUzIiwicGF5VG8iOiIweDIxMjY4NjQwNEE3RDFFMWZEODhGMzVlRDYyMDBjM2FGN0E3OGFlMzEiLCJyZXNvdXJjZVVybCI6Imh0dHBzOi8vY291bmNpbG9mLmFpL2FwaS9ldW5vbWlhLWRhdGEiLCJzY2hlbWUiOiJleGFjdCIsInZhbGlkVW50aWwiOjE3ODkzMTUxNzgsInZlcnNpb24iOjF9.RBiS9ieHUd4yCGlZJKTVHusAxj_n1fbHjwfNeGBKi4u36Kwznu-CyHfLRXvJWl4fT40V-JFOcKvcPHUiDWaDCA schema: $schema: https://json-schema.org/draft/2020-12/schema properties: offers: items: properties: acceptIndex: type: integer format: const: jws type: string signature: description: JWS compact serialization containing the offer payload type: string required: - format - signature type: object type: array required: - offers type: object resource: description: A signed JSON feed of enforcement and measurement artefacts already on the public root. Data only — no scores, no ranking. mimeType: application/json serviceName: CSOAI Data Feed tags: - data - feed - enforcement - signed - x402 url: https://councilof.ai/api/eunomia-data?feed=1 x402Version: 2 schema: $ref: '#/components/schemas/X402PaymentRequired' description: Payment required — the x402 v2 challenge. The same JSON is base64-encoded in the PAYMENT-REQUIRED response header. Pay accepts[0] (scheme exact, network eip155:8453, USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, payTo 0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31; amount in atomic units) and retry the same request with the X-PAYMENT header. Verification of the artefact stays free. headers: PAYMENT-REQUIRED: description: base64(JSON) of this challenge body schema: type: string summary: Signed data feed (assembly + cadence) tags: - X402 x-csoai: challenge: amount_source: captured live 402 (challenges/eunomia_data.json) captured: true payment_required_header_bytes: 6924 door: https://councilof.ai/api/eunomia-data?feed=1 free_preview: https://councilof.ai/api/eunomia-data never: - scores as a product - a ranking - a rating paid_for: assembly tier: data_feed x-payment-info: protocols: - x402 /api/evidence-bundle: get: description: An OSCAL 1.1.0 assessment-results bundle of already-signed CSOAI cards, mapped to EU-AI-ACT-50. Not a conformity determination. Preview = obligation(+subject) without bundle=1. Paid tier requires obligation + bundle=1 (HTTP 402). Incomplete bundle alone stays HTTP 400. operationId: x402_evidence_bundle parameters: - description: Obligation the evidence bundle maps to (required with bundle=1 for the paid tier). Incomplete probes (bundle alone) stay HTTP 400. example: article-50 in: query name: obligation required: true schema: const: article-50 enum: - article-50 - article-53 - dora - cra type: string - description: Paid-tier gate. Must be the string 1 together with the other required params to request the paid artefact (HTTP 402). Without bundle=1 the door stays on free preview / validation. example: '1' in: query name: bundle required: true schema: const: '1' type: string - description: Subject the cards must name (model id / instrument / vendor) in: query name: subject required: false schema: type: string responses: '200': content: application/json: schema: description: An OSCAL 1.1.0 assessment-results bundle of already-signed CSOAI cards, mapped to one named obligation. Not a conformity determination. type: object description: An OSCAL 1.1.0 assessment-results bundle of already-signed CSOAI cards, mapped to one named obligation. Not a conformity determination. '402': content: application/json: example: accepts: - amount: '10000' asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' csoai_pricing: campaign_id: csoai-launch-30d-20260911 ends_at: '2026-10-11T00:00:00Z' fresh_compute_excluded: true normal_amount_atomic: '250000000' offered_amount_atomic: '10000' pricing_basis: PROMO_EXISTING_DATA product_id: csoai.product.evidence_bundle sku_id: evidence_bundle starts_at: '2026-09-11T00:00:00Z' tier: bundle description: An OSCAL 1.1.0 assessment-results bundle of already-signed CSOAI cards, mapped to EU-AI-ACT-50. Not a conformity determination. extra: decimals: 6 name: USD Coin symbol: USDC version: '2' maxAmountRequired: '10000' maxTimeoutSeconds: 300 mimeType: application/json network: eip155:8453 payTo: '0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31' resource: https://councilof.ai/api/evidence-bundle?obligation=article-50&bundle=1 scheme: exact error: Payment required extensions: bazaar: info: input: method: GET queryParams: bundle: '1' obligation: article-50 type: http output: example: cards: {} kind: bundle manifest_card: surface: evidence.bundle oscal: assessment-results: {} schema: csoai.evidence-bundle/0.1 type: json schema: $schema: https://json-schema.org/draft/2020-12/schema properties: input: additionalProperties: false properties: method: enum: - GET - HEAD - DELETE type: string queryParams: properties: bundle: const: '1' type: string obligation: enum: - article-50 - article-53 - dora - cra type: string subject: description: Subject the cards must name (model id / instrument / vendor) type: string required: - obligation - bundle type: object type: const: http type: string required: - type - method type: object output: properties: example: type: object type: type: string required: - type type: object required: - input type: object offer-receipt: info: offers: - acceptIndex: 0 format: jws signature: eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDp3ZWI6Y3NvYWkub3JnI2JvYXJkLWF0dGVzdGF0aW9uLTEifQ.eyJhbW91bnQiOiIxMDAwMCIsImFzc2V0IjoiMHg4MzM1ODlmQ0Q2ZURiNkUwOGY0YzdDMzJENGY3MWI1NGJkQTAyOTEzIiwibmV0d29yayI6ImVpcDE1NTo4NDUzIiwicGF5VG8iOiIweDIxMjY4NjQwNEE3RDFFMWZEODhGMzVlRDYyMDBjM2FGN0E3OGFlMzEiLCJyZXNvdXJjZVVybCI6Imh0dHBzOi8vY291bmNpbG9mLmFpL2FwaS9ldmlkZW5jZS1idW5kbGUiLCJzY2hlbWUiOiJleGFjdCIsInZhbGlkVW50aWwiOjE3ODkzMTUxNzgsInZlcnNpb24iOjF9.Eswe84kz0J16Z3l9E-crNBXktVUvx-ECBWTHn76Ben0hdjMMkWwjp6yiLmSBV_K2SZdOVsrhq_JRuMVkbry0Aw schema: $schema: https://json-schema.org/draft/2020-12/schema properties: offers: items: properties: acceptIndex: type: integer format: const: jws type: string signature: description: JWS compact serialization containing the offer payload type: string required: - format - signature type: object type: array required: - offers type: object resource: description: An OSCAL 1.1.0 assessment-results bundle of already-signed CSOAI cards, mapped to EU-AI-ACT-50. Not a conformity determination. mimeType: application/json serviceName: CSOAI Evidence Bundle tags: - evidence - oscal - eu-ai-act - dora - cra url: https://councilof.ai/api/evidence-bundle?obligation=article-50&bundle=1 x402Version: 2 schema: $ref: '#/components/schemas/X402PaymentRequired' description: Payment required — the x402 v2 challenge. The same JSON is base64-encoded in the PAYMENT-REQUIRED response header. Pay accepts[0] (scheme exact, network eip155:8453, USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, payTo 0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31; amount in atomic units) and retry the same request with the X-PAYMENT header. Verification of the artefact stays free. headers: PAYMENT-REQUIRED: description: base64(JSON) of this challenge body schema: type: string summary: Evidence bundle mapped to an obligation tags: - X402 x-csoai: challenge: amount_source: captured live 402 (challenges/evidence_bundle.json) captured: true payment_required_header_bytes: 6912 door: https://councilof.ai/api/evidence-bundle?obligation=article-50&bundle=1 free_preview: https://councilof.ai/api/evidence-bundle?obligation=&subject= never: - a conformity determination - satisfied/not-satisfied findings - a certificate paid_for: assembly tier: evidence_bundle x-payment-info: protocols: - x402 /api/feeds/provider-diff: get: description: Every hash-only provider-document diff leaf to date, each with its inclusion proof to the signed root. Hashes only — no page content, no verdict. Bare path is free recent diffs (HTTP 200). Paid historical batch requires history=1 (HTTP 402). operationId: x402_feeds_provider_diff parameters: - description: Paid-tier gate. Must be the string 1 to request the signed historical batch (HTTP 402). Omit for free recent diffs on the bare path (HTTP 200). Optional since narrows the window. example: '1' in: query name: history required: true schema: const: '1' type: string - description: ISO-8601 instant; return only diffs newer than this in: query name: since required: false schema: type: string responses: '200': content: application/json: schema: description: Every hash-only provider-document diff leaf to date, each with its inclusion proof to the signed root. Hashes only — no page content, no verdict. type: object description: Every hash-only provider-document diff leaf to date, each with its inclusion proof to the signed root. Hashes only — no page content, no verdict. '402': content: application/json: example: accepts: - amount: '10000' asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' csoai_pricing: campaign_id: csoai-launch-30d-20260911 ends_at: '2026-10-11T00:00:00Z' fresh_compute_excluded: true normal_amount_atomic: '25000000' offered_amount_atomic: '10000' pricing_basis: PROMO_EXISTING_DATA product_id: csoai.product.provider_diff_feed sku_id: provider_diff_feed starts_at: '2026-09-11T00:00:00Z' tier: history_batch description: Every hash-only provider-document diff leaf to date, each with its inclusion proof to the signed root. Hashes only — no page content, no verdict. extra: decimals: 6 name: USD Coin symbol: USDC version: '2' maxAmountRequired: '10000' maxTimeoutSeconds: 300 mimeType: application/json network: eip155:8453 payTo: '0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31' resource: https://councilof.ai/api/feeds/provider-diff?history=1 scheme: exact error: Payment required extensions: bazaar: info: input: method: GET queryParams: history: '1' type: http output: example: diffs: [] kind: history leaves: {} root: {} schema: csoai.feeds.provider-diff/0.1 type: json schema: $schema: https://json-schema.org/draft/2020-12/schema properties: input: additionalProperties: false properties: method: enum: - GET - HEAD - DELETE type: string queryParams: properties: history: const: '1' type: string since: description: ISO-8601 instant; return only diffs newer than this type: string required: - history type: object type: const: http type: string required: - type - method type: object output: properties: example: type: object type: type: string required: - type type: object required: - input type: object offer-receipt: info: offers: - acceptIndex: 0 format: jws signature: eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDp3ZWI6Y3NvYWkub3JnI2JvYXJkLWF0dGVzdGF0aW9uLTEifQ.eyJhbW91bnQiOiIxMDAwMCIsImFzc2V0IjoiMHg4MzM1ODlmQ0Q2ZURiNkUwOGY0YzdDMzJENGY3MWI1NGJkQTAyOTEzIiwibmV0d29yayI6ImVpcDE1NTo4NDUzIiwicGF5VG8iOiIweDIxMjY4NjQwNEE3RDFFMWZEODhGMzVlRDYyMDBjM2FGN0E3OGFlMzEiLCJyZXNvdXJjZVVybCI6Imh0dHBzOi8vY291bmNpbG9mLmFpL2FwaS9mZWVkcy9wcm92aWRlci1kaWZmIiwic2NoZW1lIjoiZXhhY3QiLCJ2YWxpZFVudGlsIjoxNzg5MzE1MTc4LCJ2ZXJzaW9uIjoxfQ.71LjmG10AJNho_I6LtCfr7ucJDvmdObUU_FxF1n5vW4MIIUFyD_KLt15LKszbBmawvG-A8IT4a7gO7JhE36sAg schema: $schema: https://json-schema.org/draft/2020-12/schema properties: offers: items: properties: acceptIndex: type: integer format: const: jws type: string signature: description: JWS compact serialization containing the offer payload type: string required: - format - signature type: object type: array required: - offers type: object resource: description: Every hash-only provider-document diff leaf to date, each with its inclusion proof to the signed root. Hashes only — no page content, no verdict. mimeType: application/json serviceName: CSOAI Provider Diff Feed tags: - diff - terms - model-card - article-50 - x402 url: https://councilof.ai/api/feeds/provider-diff?history=1 x402Version: 2 schema: $ref: '#/components/schemas/X402PaymentRequired' description: Payment required — the x402 v2 challenge. The same JSON is base64-encoded in the PAYMENT-REQUIRED response header. Pay accepts[0] (scheme exact, network eip155:8453, USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, payTo 0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31; amount in atomic units) and retry the same request with the X-PAYMENT header. Verification of the artefact stays free. headers: PAYMENT-REQUIRED: description: base64(JSON) of this challenge body schema: type: string summary: Provider document diff feed (signed historical batch / bespoke partner feed) tags: - X402 x-csoai: challenge: amount_source: captured live 402 (challenges/feeds_provider_diff.json) captured: true payment_required_header_bytes: 6388 door: https://councilof.ai/api/feeds/provider-diff?history=1 free_preview: https://councilof.ai/api/feeds/provider-diff never: - a verdict on any change - the content of any page (never captured) - a grade paid_for: assembly tier: provider_diff_feed x-payment-info: protocols: - x402 /api/free-door: get: description: 'CSOAI free door: the live GSPC board totals and the public signed root, at a price of zero because it is free forever. That is the real price, not a promotion — a grade is never sold. Paid artefacts are catalogued at https://councilof.ai/api/x402. Measurement, not certification.' operationId: x402_free_door parameters: [] responses: '200': content: application/json: schema: description: 'CSOAI free door: the live GSPC board totals and the public signed root, at a price of zero because it is free forever. That is the real price, not a promotion — a grade is never sold. Paid artefacts are catalogued at https://councilof.ai/api/x402. Measurement, not certification.' type: object description: 'CSOAI free door: the live GSPC board totals and the public signed root, at a price of zero because it is free forever. That is the real price, not a promotion — a grade is never sold. Paid artefacts are catalogued at https://councilof.ai/api/x402. Measurement, not certification.' '402': content: application/json: example: accepts: - amount: '0' asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' csoai_pricing: campaign_id: null fresh_compute_excluded: true normal_amount_atomic: '0' offered_amount_atomic: '0' pricing_basis: STANDARD product_id: csoai.product.request_attestation sku_id: request_attestation tier: per_request description: 'CSOAI free door: the live GSPC board totals and the public signed root, at a price of zero because it is free forever. That is the real price, not a promotion — a grade is never sold. Paid artefacts are catalogued at https://councilof.ai/api/x402. Measurement, not certification.' extra: decimals: 6 name: USD Coin symbol: USDC version: '2' maxAmountRequired: '0' maxTimeoutSeconds: 300 mimeType: application/json network: eip155:8453 payTo: '0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31' resource: https://councilof.ai/api/free-door scheme: exact error: Payment required extensions: bazaar: info: input: method: GET type: http output: example: board: https://councilof.ai/api/gspc price_usdc: 0 root: https://councilof.ai/root.json schema: csoai.free-door/0.1 verify: https://councilof.ai/gspc-verify type: json schema: $schema: https://json-schema.org/draft/2020-12/schema properties: input: additionalProperties: false properties: method: enum: - GET type: string type: const: http type: string required: - type - method type: object output: properties: type: type: string required: - type type: object required: - input type: object offer-receipt: info: offers: - acceptIndex: 0 format: jws signature: eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDp3ZWI6Y3NvYWkub3JnI2JvYXJkLWF0dGVzdGF0aW9uLTEifQ.eyJhbW91bnQiOiIwIiwiYXNzZXQiOiIweDgzMzU4OWZDRDZlRGI2RTA4ZjRjN0MzMkQ0ZjcxYjU0YmRBMDI5MTMiLCJuZXR3b3JrIjoiZWlwMTU1Ojg0NTMiLCJwYXlUbyI6IjB4MjEyNjg2NDA0QTdEMUUxZkQ4OEYzNWVENjIwMGMzYUY3QTc4YWUzMSIsInJlc291cmNlVXJsIjoiaHR0cHM6Ly9jb3VuY2lsb2YuYWkvYXBpL2ZyZWUtZG9vciIsInNjaGVtZSI6ImV4YWN0IiwidmFsaWRVbnRpbCI6MTc4OTMxNTE3NywidmVyc2lvbiI6MX0.lW-HS7lvIRiLxgPjAxxF7sRm-N__mBM-ZwJpwhd3jainz_LP-xj4UaVi47S4tMQc5cnqCsaOr6IWIEOP2YbOCw schema: $schema: https://json-schema.org/draft/2020-12/schema properties: offers: items: properties: acceptIndex: type: integer format: const: jws type: string signature: description: JWS compact serialization containing the offer payload type: string required: - format - signature type: object type: array required: - offers type: object resource: description: 'CSOAI free door: the live GSPC board totals and the public signed root, at a price of zero because it is free forever. That is the real price, not a promotion — a grade is never sold. Paid artefacts are catalogued at https://councilof.ai/api/x402. Measurement, not certification.' mimeType: application/json serviceName: CSOAI Free Door url: https://councilof.ai/api/free-door x402Version: 2 schema: $ref: '#/components/schemas/X402PaymentRequired' description: Payment required — the x402 v2 challenge. The same JSON is base64-encoded in the PAYMENT-REQUIRED response header. Pay accepts[0] (scheme exact, network eip155:8453, USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, payTo 0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31; amount in atomic units) and retry the same request with the X-PAYMENT header. Verification of the artefact stays free. headers: PAYMENT-REQUIRED: description: base64(JSON) of this challenge body schema: type: string summary: CSOAI Free Door tags: - X402 x-csoai: challenge: amount_source: captured live 402 (challenges/free_door.json) captured: true payment_required_header_bytes: 5380 door: https://councilof.ai/api/free-door indexed_in: x402 Bazaar (PayAI) paid_for: null x-payment-info: protocols: - x402 /api/proof: get: description: Inclusion proof bundle for leaves available in the last published Merkle root, with leaf hashes, indexes, proof paths, the Merkle root and signed card count. Not a grade. Bare path is validation (HTTP 400 naming sha or bundle). Free inclusion via optional sha. Paid root bundle when bundle=1 (HTTP 402). operationId: x402_proof parameters: - description: Must be 1 to request the paid proof bundle example: '1' in: query name: bundle required: true schema: const: '1' type: string - description: Free inclusion proof for one known leaf (64-hex). Omit; use bundle=1 for the paid root bundle. in: query name: sha required: false schema: pattern: ^[0-9a-f]{64}$ type: string responses: '200': content: application/json: schema: description: Inclusion proof bundle for leaves available in the last published Merkle root, with leaf hashes, indexes, proof paths, the Merkle root and signed card count. Not a grade. type: object description: Inclusion proof bundle for leaves available in the last published Merkle root, with leaf hashes, indexes, proof paths, the Merkle root and signed card count. Not a grade. '402': content: application/json: example: accepts: - amount: '10000' asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' csoai_pricing: campaign_id: csoai-launch-30d-20260911 ends_at: '2026-10-11T00:00:00Z' fresh_compute_excluded: true normal_amount_atomic: '20000' offered_amount_atomic: '10000' pricing_basis: PROMO_EXISTING_DATA product_id: csoai.product.issuance sku_id: issuance starts_at: '2026-09-11T00:00:00Z' tier: reserve description: Inclusion proof bundle for leaves available in the last published Merkle root, with leaf hashes, indexes, proof paths, the Merkle root and signed card count. Not a grade. extra: decimals: 6 name: USD Coin symbol: USDC version: '2' maxAmountRequired: '10000' maxTimeoutSeconds: 300 mimeType: application/json network: eip155:8453 payTo: '0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31' resource: https://councilof.ai/api/proof?bundle=1 scheme: exact error: Payment required extensions: bazaar: info: input: method: GET queryParams: bundle: '1' type: http output: example: kind: bundle merkle_root: n: 0 note: Paid bundle of inclusion proofs. Not a grade. proofs: [] schema: csoai.public-root-proof/0.1 type: json schema: $schema: https://json-schema.org/draft/2020-12/schema properties: input: additionalProperties: false properties: method: enum: - GET - HEAD - DELETE type: string queryParams: properties: bundle: const: '1' description: Must be 1 to request the paid proof bundle type: string required: - bundle type: object type: const: http type: string required: - type - method type: object output: properties: example: type: object type: type: string required: - type type: object required: - input type: object offer-receipt: info: offers: - acceptIndex: 0 format: jws signature: eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDp3ZWI6Y3NvYWkub3JnI2JvYXJkLWF0dGVzdGF0aW9uLTEifQ.eyJhbW91bnQiOiIxMDAwMCIsImFzc2V0IjoiMHg4MzM1ODlmQ0Q2ZURiNkUwOGY0YzdDMzJENGY3MWI1NGJkQTAyOTEzIiwibmV0d29yayI6ImVpcDE1NTo4NDUzIiwicGF5VG8iOiIweDIxMjY4NjQwNEE3RDFFMWZEODhGMzVlRDYyMDBjM2FGN0E3OGFlMzEiLCJyZXNvdXJjZVVybCI6Imh0dHBzOi8vY291bmNpbG9mLmFpL2FwaS9wcm9vZiIsInNjaGVtZSI6ImV4YWN0IiwidmFsaWRVbnRpbCI6MTc4OTMxNTE3OCwidmVyc2lvbiI6MX0.QSUbgKFAV5ThdBPFtm6gUG2SP8nVIem_IW79EllNBH0VdyqJqCdhNY6iKCiX80Wp0gT1JN8sKkKHr2Un6V0OCQ schema: $schema: https://json-schema.org/draft/2020-12/schema properties: offers: items: properties: acceptIndex: type: integer format: const: jws type: string signature: description: JWS compact serialization containing the offer payload type: string required: - format - signature type: object type: array required: - offers type: object resource: description: Inclusion proof bundle for leaves available in the last published Merkle root, with leaf hashes, indexes, proof paths, the Merkle root and signed card count. Not a grade. mimeType: application/json serviceName: CSOAI Proof Bundle tags: - proof - merkle - measurement - attestation url: https://councilof.ai/api/proof?bundle=1 x402Version: 2 schema: $ref: '#/components/schemas/X402PaymentRequired' description: Payment required — the x402 v2 challenge. The same JSON is base64-encoded in the PAYMENT-REQUIRED response header. Pay accepts[0] (scheme exact, network eip155:8453, USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, payTo 0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31; amount in atomic units) and retry the same request with the X-PAYMENT header. Verification of the artefact stays free. headers: PAYMENT-REQUIRED: description: base64(JSON) of this challenge body schema: type: string summary: CSOAI Proof Bundle tags: - X402 x-csoai: challenge: amount_source: captured live 402 (challenges/proof.json) captured: true payment_required_header_bytes: 6416 door: https://councilof.ai/api/proof?bundle=1 free_forever_on_this_path: - https://councilof.ai/api/proof?sha=<64-hex> paid_for: assembly x-payment-info: protocols: - x402 /api/receipts/batch: get: description: Historical measurement-card batch from published roots for a requested time window, capped at 200 leaves, with inclusion paths and carrying roots. Not payment or settlement receipts. preview=1 is free digest. Paid leaves require from (HTTP 402). operationId: x402_receipts_batch parameters: - description: Window start (ISO-8601). Required. example: '2026-01-01T00:00:00Z' in: query name: from required: true schema: const: '2026-01-01T00:00:00Z' format: date-time type: string - description: 'Free: count, span and the sha256 of the batch bytes, without the leaves' in: query name: preview required: false schema: const: '1' type: string - description: Window end (ISO-8601). Defaults to now. example: '2026-09-13T15:44:39Z' in: query name: to required: false schema: format: date-time type: string responses: '200': content: application/json: schema: description: Historical measurement-card batch from published roots for a requested time window, capped at 200 leaves, with inclusion paths and carrying roots. Not payment or settlement receipts. type: object description: Historical measurement-card batch from published roots for a requested time window, capped at 200 leaves, with inclusion paths and carrying roots. Not payment or settlement receipts. '402': content: application/json: example: accepts: - amount: '10000' asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' csoai_pricing: campaign_id: csoai-launch-30d-20260911 ends_at: '2026-10-11T00:00:00Z' fresh_compute_excluded: true normal_amount_atomic: '100000' offered_amount_atomic: '10000' pricing_basis: PROMO_EXISTING_DATA product_id: csoai.product.receipts_batch sku_id: receipts_batch starts_at: '2026-09-11T00:00:00Z' tier: per_batch description: Historical measurement-card batch from published roots for a requested time window, capped at 200 leaves, with inclusion paths and carrying roots. Not payment or settlement receipts. extra: decimals: 6 name: USD Coin symbol: USDC version: '2' maxAmountRequired: '10000' maxTimeoutSeconds: 300 mimeType: application/json network: eip155:8453 payTo: '0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31' resource: https://councilof.ai/api/receipts/batch?from=2026-01-01T00%3A00%3A00Z&to=2026-09-13T15%3A44%3A39Z scheme: exact error: Payment required extensions: bazaar: info: input: method: GET queryParams: from: '2026-01-01T00:00:00Z' to: '2026-09-13T15:44:39Z' type: http output: example: batch: cap: 200 count: 0 items: [] roots: [] window: from: to: batch_sha256: <64-hex> kind: batch manifest_card: sig_ed25519: surface: receipts.batch schema: csoai.receipts.batch/0.1 type: json schema: $schema: https://json-schema.org/draft/2020-12/schema properties: input: additionalProperties: false properties: method: enum: - GET - HEAD - DELETE type: string queryParams: properties: from: description: Window start (ISO-8601). Required. format: date-time type: string preview: const: '1' description: 'Free: count, span and the sha256 of the batch bytes, without the leaves' type: string to: description: Window end (ISO-8601). Defaults to now. format: date-time type: string required: - from type: object type: const: http type: string required: - type - method type: object output: properties: example: type: object type: type: string required: - type type: object required: - input type: object offer-receipt: info: offers: - acceptIndex: 0 format: jws signature: eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDp3ZWI6Y3NvYWkub3JnI2JvYXJkLWF0dGVzdGF0aW9uLTEifQ.eyJhbW91bnQiOiIxMDAwMCIsImFzc2V0IjoiMHg4MzM1ODlmQ0Q2ZURiNkUwOGY0YzdDMzJENGY3MWI1NGJkQTAyOTEzIiwibmV0d29yayI6ImVpcDE1NTo4NDUzIiwicGF5VG8iOiIweDIxMjY4NjQwNEE3RDFFMWZEODhGMzVlRDYyMDBjM2FGN0E3OGFlMzEiLCJyZXNvdXJjZVVybCI6Imh0dHBzOi8vY291bmNpbG9mLmFpL2FwaS9yZWNlaXB0cy9iYXRjaCIsInNjaGVtZSI6ImV4YWN0IiwidmFsaWRVbnRpbCI6MTc4OTMxNTE3OSwidmVyc2lvbiI6MX0.6yF463Z2mGZP3jfMAMkiLG3-r5GmW19hWW-E37uWPDPSZzAa0fUO5vOkvUlDB2S_BGCtDFv5jGawrjUcFWT4Cw schema: $schema: https://json-schema.org/draft/2020-12/schema properties: offers: items: properties: acceptIndex: type: integer format: const: jws type: string signature: description: JWS compact serialization containing the offer payload type: string required: - format - signature type: object type: array required: - offers type: object resource: description: Historical measurement-card batch from published roots for a requested time window, capped at 200 leaves, with inclusion paths and carrying roots. Not payment or settlement receipts. mimeType: application/json serviceName: CSOAI Receipts Batch tags: - receipts - merkle - history - attestation - x402 url: https://councilof.ai/api/receipts/batch?from=2026-01-01T00%3A00%3A00Z&to=2026-09-13T15%3A44%3A39Z x402Version: 2 schema: $ref: '#/components/schemas/X402PaymentRequired' description: Payment required — the x402 v2 challenge. The same JSON is base64-encoded in the PAYMENT-REQUIRED response header. Pay accepts[0] (scheme exact, network eip155:8453, USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, payTo 0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31; amount in atomic units) and retry the same request with the X-PAYMENT header. Verification of the artefact stays free. headers: PAYMENT-REQUIRED: description: base64(JSON) of this challenge body schema: type: string summary: Receipts batch — historical measurement leaves for a window (assembly) tags: - X402 x-csoai: challenge: amount_source: captured live 402 (challenges/receipts_batch.json) captured: true payment_required_header_bytes: 7192 door: https://councilof.ai/api/receipts/batch?from=2026-01-01T00:00:00Z free_forever_on_this_path: - https://councilof.ai/api/receipts/batch?from=&preview=1 free_preview: https://councilof.ai/api/receipts/batch?from=2026-01-01T00:00:00Z&preview=1 never: - a conclusion about any leaf - a grade - a certificate - a settlement-receipt claim paid_for: assembly tier: receipts_batch x-payment-info: protocols: - x402 /api/request-attestation: get: description: A card-v0 commission receipt for one named subject, signed when the Pages signing key is available, plus references to up to 24 signed measurement cards whose model field contains the requested subject text. reserve_count reports the full match count. Payment never mints a MEASURED cell. operationId: x402_request_attestation parameters: - description: Subject to commission (model id, instrument id, or card sha) example: model-or-subject-id in: query name: subject required: true schema: const: model-or-subject-id type: string - description: Optional axis slug; omit for the subject-level commission in: query name: axis required: false schema: type: string responses: '200': content: application/json: schema: description: A card-v0 commission receipt for one named subject, signed when the Pages signing key is available, plus references to up to 24 signed measurement cards whose model field contains the requested subject text. reserve_count reports the full match count. Payment never mints a MEASURED cell. type: object description: A card-v0 commission receipt for one named subject, signed when the Pages signing key is available, plus references to up to 24 signed measurement cards whose model field contains the requested subject text. reserve_count reports the full match count. Payment never mints a MEASURED cell. '402': content: application/json: example: accepts: - amount: '10000' asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' csoai_pricing: campaign_id: csoai-launch-30d-20260911 ends_at: '2026-10-11T00:00:00Z' fresh_compute_excluded: true normal_amount_atomic: '20000' offered_amount_atomic: '10000' pricing_basis: PROMO_EXISTING_DATA product_id: csoai.product.request_attestation sku_id: request_attestation starts_at: '2026-09-11T00:00:00Z' tier: per_request description: A card-v0 commission receipt for one named subject, signed when the Pages signing key is available, plus references to up to 24 signed measurement cards whose model field contains the requested subject text. reserve_count reports the full match count. Payment never mints a MEASURED cell. extra: decimals: 6 name: USD Coin symbol: USDC version: '2' maxAmountRequired: '10000' maxTimeoutSeconds: 300 mimeType: application/json network: eip155:8453 payTo: '0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31' resource: https://councilof.ai/api/request-attestation scheme: exact error: Payment required extensions: bazaar: info: input: method: GET queryParams: subject: model-or-subject-id type: http output: example: payload: fresh_run: UNMEASURED reserve: [] status: COMMISSIONED schema: https://councilof.ai/schema/card-v0.json sig_ed25519: subject: model-or-subject-id surface: ras.commission unmeasured: - root_inclusion type: json schema: $schema: https://json-schema.org/draft/2020-12/schema properties: input: additionalProperties: false properties: method: enum: - GET - HEAD - DELETE type: string queryParams: properties: axis: description: Optional axis slug; omit for the subject-level commission type: string subject: description: Subject to commission (model id, instrument id, or card sha) type: string required: - subject type: object type: const: http type: string required: - type - method type: object output: properties: example: type: object type: type: string required: - type type: object required: - input type: object offer-receipt: info: offers: - acceptIndex: 0 format: jws signature: eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDp3ZWI6Y3NvYWkub3JnI2JvYXJkLWF0dGVzdGF0aW9uLTEifQ.eyJhbW91bnQiOiIxMDAwMCIsImFzc2V0IjoiMHg4MzM1ODlmQ0Q2ZURiNkUwOGY0YzdDMzJENGY3MWI1NGJkQTAyOTEzIiwibmV0d29yayI6ImVpcDE1NTo4NDUzIiwicGF5VG8iOiIweDIxMjY4NjQwNEE3RDFFMWZEODhGMzVlRDYyMDBjM2FGN0E3OGFlMzEiLCJyZXNvdXJjZVVybCI6Imh0dHBzOi8vY291bmNpbG9mLmFpL2FwaS9yZXF1ZXN0LWF0dGVzdGF0aW9uIiwic2NoZW1lIjoiZXhhY3QiLCJ2YWxpZFVudGlsIjoxNzg5MzE1MTc3LCJ2ZXJzaW9uIjoxfQ.DtunHm4mvTVLpUH9Kb0tiV8cClXdHxJcw9jRklSGmPFKMv2E6_5pbtTf_Ct355hshvsySCaAin5cOjrTLtZ0BA schema: $schema: https://json-schema.org/draft/2020-12/schema properties: offers: items: properties: acceptIndex: type: integer format: const: jws type: string signature: description: JWS compact serialization containing the offer payload type: string required: - format - signature type: object type: array required: - offers type: object resource: description: A card-v0 commission receipt for one named subject, signed when the Pages signing key is available, plus references to up to 24 signed measurement cards whose model field contains the requested subject text. reserve_count reports the full match count. Payment never mints a MEASURED cell. mimeType: application/json serviceName: CSOAI Request Attest tags: - attestation - ras - measurement - x402 url: https://councilof.ai/api/request-attestation x402Version: 2 schema: $ref: '#/components/schemas/X402PaymentRequired' description: Payment required — the x402 v2 challenge. The same JSON is base64-encoded in the PAYMENT-REQUIRED response header. Pay accepts[0] (scheme exact, network eip155:8453, USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, payTo 0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31; amount in atomic units) and retry the same request with the X-PAYMENT header. Verification of the artefact stays free. headers: PAYMENT-REQUIRED: description: base64(JSON) of this challenge body schema: type: string summary: Commission a signed card (request-attestation) tags: - X402 x-csoai: challenge: amount_source: captured live 402 (challenges/request_attestation.json) captured: true payment_required_header_bytes: 7064 door: https://councilof.ai/api/request-attestation?subject=model-or-subject-id free_preview: https://councilof.ai/api/request-attestation?subject= never: - a score - a rank - a certificate - a MEASURED cell minted by payment paid_for: issuance tier: issuance x-payment-info: protocols: - x402 /api/rwa/evidence: get: description: 'A signed XRPL evidence card for RLUSD: AccountRoot flags, Domain, two-way TOML check, and cited raw-fetch hashes. Historical state — not a rating or a guarantee. preview=1 is free unsigned. Paid signed card requires asset (HTTP 402).' operationId: x402_rwa_evidence parameters: - description: XRPL issued-asset symbol (see /api/xrpl) or issuer r-address example: RLUSD in: query name: asset required: true schema: const: RLUSD type: string - description: 'Free preview: same request, no payment, no signature' in: query name: preview required: false schema: const: '1' type: string responses: '200': content: application/json: schema: description: 'A signed XRPL evidence card: AccountRoot flags, Domain, two-way TOML check, and cited raw-fetch hashes. Historical state — not a rating or a guarantee.' type: object description: 'A signed XRPL evidence card: AccountRoot flags, Domain, two-way TOML check, and cited raw-fetch hashes. Historical state — not a rating or a guarantee.' '402': content: application/json: example: accepts: - amount: '10000' asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' csoai_pricing: campaign_id: csoai-launch-30d-20260911 ends_at: '2026-10-11T00:00:00Z' fresh_compute_excluded: true normal_amount_atomic: '20000' offered_amount_atomic: '10000' pricing_basis: PROMO_EXISTING_DATA product_id: csoai.product.request_attestation sku_id: request_attestation starts_at: '2026-09-11T00:00:00Z' tier: per_request description: 'A signed XRPL evidence card for RLUSD: AccountRoot flags, Domain, two-way TOML check, and cited raw-fetch hashes. Historical state — not a rating or a guarantee.' extra: decimals: 6 name: USD Coin symbol: USDC version: '2' maxAmountRequired: '10000' maxTimeoutSeconds: 300 mimeType: application/json network: eip155:8453 payTo: '0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31' resource: https://councilof.ai/api/rwa/evidence?asset=RLUSD scheme: exact error: Payment required extensions: bazaar: info: input: method: GET queryParams: asset: RLUSD type: http output: example: payload: account_root: flags_decoded: {} inputs_sha256: kind: csoai.eater.xrpl-issuer/0.1 onchain_obligation: {} state: PROBED schema: https://councilof.ai/schema/card-v0.json sha256: sig_ed25519: subject: XRPL () two-way domain + on-chain obligation surface: public.notice unmeasured: [] type: json schema: $schema: https://json-schema.org/draft/2020-12/schema properties: input: additionalProperties: false properties: method: enum: - GET - HEAD - DELETE type: string queryParams: properties: asset: description: XRPL issued-asset symbol (see /api/xrpl) or issuer r-address type: string required: - asset type: object type: const: http type: string required: - type - method type: object output: properties: example: type: object type: type: string required: - type type: object required: - input type: object offer-receipt: info: offers: - acceptIndex: 0 format: jws signature: eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDp3ZWI6Y3NvYWkub3JnI2JvYXJkLWF0dGVzdGF0aW9uLTEifQ.eyJhbW91bnQiOiIxMDAwMCIsImFzc2V0IjoiMHg4MzM1ODlmQ0Q2ZURiNkUwOGY0YzdDMzJENGY3MWI1NGJkQTAyOTEzIiwibmV0d29yayI6ImVpcDE1NTo4NDUzIiwicGF5VG8iOiIweDIxMjY4NjQwNEE3RDFFMWZEODhGMzVlRDYyMDBjM2FGN0E3OGFlMzEiLCJyZXNvdXJjZVVybCI6Imh0dHBzOi8vY291bmNpbG9mLmFpL2FwaS9yd2EvZXZpZGVuY2UiLCJzY2hlbWUiOiJleGFjdCIsInZhbGlkVW50aWwiOjE3ODkzMTUxNzgsInZlcnNpb24iOjF9.D69jVlO8tHeoilx9Ek6YULEV_pcFjV85i8J5C3KSWl4yfW-n8efmu-10TSSxsPD3CBpA74yDk_GreoIHzvxbCg schema: $schema: https://json-schema.org/draft/2020-12/schema properties: offers: items: properties: acceptIndex: type: integer format: const: jws type: string signature: description: JWS compact serialization containing the offer payload type: string required: - format - signature type: object type: array required: - offers type: object resource: description: 'A signed XRPL evidence card for RLUSD: AccountRoot flags, Domain, two-way TOML check, and cited raw-fetch hashes. Historical state — not a rating or a guarantee.' mimeType: application/json serviceName: CSOAI RWA Evidence tags: - rwa - xrpl - evidence - attestation - x402 url: https://councilof.ai/api/rwa/evidence?asset=RLUSD x402Version: 2 schema: $ref: '#/components/schemas/X402PaymentRequired' description: Payment required — the x402 v2 challenge. The same JSON is base64-encoded in the PAYMENT-REQUIRED response header. Pay accepts[0] (scheme exact, network eip155:8453, USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, payTo 0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31; amount in atomic units) and retry the same request with the X-PAYMENT header. Verification of the artefact stays free. headers: PAYMENT-REQUIRED: description: base64(JSON) of this challenge body schema: type: string summary: XRPL asset evidence card (per request) tags: - X402 x-csoai: challenge: amount_source: captured live 402 (challenges/rwa_evidence.json) captured: true payment_required_header_bytes: 6736 door: https://councilof.ai/api/rwa/evidence?asset=RLUSD free_preview: https://councilof.ai/api/rwa/evidence?asset=&preview=1 never: - a rating - a guarantee - a verdict - a rank - a paywall on /api/xrpl or /root.json paid_for: issuance tier: rwa_evidence x-payment-info: protocols: - x402 /api/wrapper: get: description: 'A signed wrapped-asset parity card for usdc.e:arbitrum: wrapped totalSupply on its chain and the canonical token''s bridge-escrow balance on the origin chain, both at pinned finalized blocks, raw reads sha256''d. A ratio — not a rate, a grade or a reserve attestation. preview=1 is free unsigned. Paid signed card requires id (HTTP 402).' operationId: x402_wrapper parameters: - description: roster id :, e.g. usdc.e:arbitrum (free ledger lists them) example: usdc.e:arbitrum in: query name: id required: true schema: const: usdc.e:arbitrum type: string - description: 'Free preview: same request, no payment, no signature' in: query name: preview required: false schema: const: '1' type: string responses: '200': content: application/json: schema: description: 'A signed wrapped-asset parity card: wrapped totalSupply on its chain and the canonical token''s bridge-escrow balance on the origin chain at pinned finalized blocks, raw reads sha256''d, BigInt ratio. A read — not a rate, a grade or a reserve attestation.' type: object description: 'A signed wrapped-asset parity card: wrapped totalSupply on its chain and the canonical token''s bridge-escrow balance on the origin chain at pinned finalized blocks, raw reads sha256''d, BigInt ratio. A read — not a rate, a grade or a reserve attestation.' '402': content: application/json: example: accepts: - amount: '10000' asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' csoai_pricing: campaign_id: csoai-launch-30d-20260911 ends_at: '2026-10-11T00:00:00Z' fresh_compute_excluded: true normal_amount_atomic: '20000' offered_amount_atomic: '10000' pricing_basis: PROMO_EXISTING_DATA product_id: csoai.product.request_attestation sku_id: request_attestation starts_at: '2026-09-11T00:00:00Z' tier: per_request description: 'A signed wrapped-asset parity card for usdc.e:arbitrum: wrapped totalSupply on its chain and the canonical token''s bridge-escrow balance on the origin chain, both at pinned finalized blocks, raw reads sha256''d. A ratio — not a rate, a grade or a reserve attestation.' extra: decimals: 6 name: USD Coin symbol: USDC version: '2' maxAmountRequired: '10000' maxTimeoutSeconds: 300 mimeType: application/json network: eip155:8453 payTo: '0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31' resource: https://councilof.ai/api/wrapper?id=usdc.e%3Aarbitrum scheme: exact error: Payment required extensions: bazaar: info: input: method: GET queryParams: id: usdc.e:arbitrum type: http output: example: payload: escrow_over_wrapped: inputs_sha256: kind: csoai.wrapper.parity/0.1 reads: escrow_balance: {} wrapped_total_supply: {} state: ESCROW_PARITY_READ schema: https://councilof.ai/schema/card-v0.json sha256: sig_ed25519: subject: wrapped on vs — ESCROW_PARITY_READ surface: public.notice unmeasured: [] type: json schema: $schema: https://json-schema.org/draft/2020-12/schema properties: input: additionalProperties: false properties: method: enum: - GET - HEAD - DELETE type: string queryParams: properties: id: description: roster id :, e.g. usdc.e:arbitrum (free ledger lists them) type: string required: - id type: object type: const: http type: string required: - type - method type: object output: properties: example: type: object type: type: string required: - type type: object required: - input type: object offer-receipt: info: offers: - acceptIndex: 0 format: jws signature: eyJhbGciOiJFZERTQSIsImtpZCI6ImRpZDp3ZWI6Y3NvYWkub3JnI2JvYXJkLWF0dGVzdGF0aW9uLTEifQ.eyJhbW91bnQiOiIxMDAwMCIsImFzc2V0IjoiMHg4MzM1ODlmQ0Q2ZURiNkUwOGY0YzdDMzJENGY3MWI1NGJkQTAyOTEzIiwibmV0d29yayI6ImVpcDE1NTo4NDUzIiwicGF5VG8iOiIweDIxMjY4NjQwNEE3RDFFMWZEODhGMzVlRDYyMDBjM2FGN0E3OGFlMzEiLCJyZXNvdXJjZVVybCI6Imh0dHBzOi8vY291bmNpbG9mLmFpL2FwaS93cmFwcGVyIiwic2NoZW1lIjoiZXhhY3QiLCJ2YWxpZFVudGlsIjoxNzg5MzE1MTc4LCJ2ZXJzaW9uIjoxfQ.SdV8dTMTTepF1pLyCWf88nwHGQKx59EwZZEN8HmnokeS5GYLhYoc9v-bJr-QUJd8mJkTw4kt5YsCUWSEk0u0Dg schema: $schema: https://json-schema.org/draft/2020-12/schema properties: offers: items: properties: acceptIndex: type: integer format: const: jws type: string signature: description: JWS compact serialization containing the offer payload type: string required: - format - signature type: object type: array required: - offers type: object resource: description: 'A signed wrapped-asset parity card for usdc.e:arbitrum: wrapped totalSupply on its chain and the canonical token''s bridge-escrow balance on the origin chain, both at pinned finalized blocks, raw reads sha256''d. A ratio — not a rate, a grade or a reserve attestation.' mimeType: application/json serviceName: CSOAI Wrapped-Asset Parity tags: - stablecoin - bridge - wrapped - parity - evidence url: https://councilof.ai/api/wrapper?id=usdc.e%3Aarbitrum x402Version: 2 schema: $ref: '#/components/schemas/X402PaymentRequired' description: Payment required — the x402 v2 challenge. The same JSON is base64-encoded in the PAYMENT-REQUIRED response header. Pay accepts[0] (scheme exact, network eip155:8453, USDC 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, payTo 0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31; amount in atomic units) and retry the same request with the X-PAYMENT header. Verification of the artefact stays free. headers: PAYMENT-REQUIRED: description: base64(JSON) of this challenge body schema: type: string summary: Wrapped-asset parity card (per pair) tags: - X402 x-csoai: challenge: amount_source: captured live 402 (challenges/wrapper.json) captured: true payment_required_header_bytes: 7100 door: https://councilof.ai/api/wrapper?id=usdc.e:arbitrum free_preview: https://councilof.ai/api/wrapper?id=&preview=1 never: - a rating - a guarantee - a verdict - a rank - a reserve attestation - a paywall on the free ledger or /root.json paid_for: issuance tier: wrapper_parity x-payment-info: protocols: - x402 components: schemas: X402PaymentRequired: properties: accepts: items: $ref: '#/components/schemas/X402Accept' minItems: 1 type: array error: type: string extensions: description: extensions.bazaar carries info.input (a sample request) and schema (input/output JSON Schema). extensions['offer-receipt'].info.offers[] carries one server-signed offer per accepts[] entry, format 'jws' — a compact EdDSA JWS whose payload is the offer (x402 Offer & Receipt extension §4.1). It is present only when the edge holds its signing key; csoai.offer_receipt.signed says which, and why, on every 402. properties: offer-receipt: properties: info: properties: offers: items: properties: acceptIndex: description: unsigned convenience field; match offers to accepts[] by payload fields, never by index (§4.1.1) type: integer format: const: jws type: string signature: description: JWS compact serialization containing the offer payload type: string required: - format - signature type: object type: array type: object type: object type: object resource: properties: description: type: string mimeType: type: string serviceName: type: string tags: items: type: string type: array url: type: string type: object x402Version: const: 2 type: integer required: - x402Version - accepts type: object X402Accept: properties: amount: description: atomic units (x402 v2) pattern: ^[0-9]+$ type: string asset: const: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' description: USDC contract, 6 decimals type: string extra: description: EIP-712 domain of the asset properties: name: type: string version: type: string type: object maxAmountRequired: description: atomic units (x402 v1 name for the same figure) pattern: ^[0-9]+$ type: string maxTimeoutSeconds: type: integer network: const: eip155:8453 description: CAIP-2 type: string payTo: const: '0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31' type: string scheme: const: exact type: string required: - scheme - network - asset - payTo - amount - maxTimeoutSeconds type: object securitySchemes: ed25519: description: Ed25519 signature of canonical body, under did:web:csoai.org#card-attestation-1 in: header name: X-CSOAI-Signed-Card type: apiKey githubOidc: bearerFormat: JWT description: GitHub Actions OIDC token satisfying the handler's issuer, audience, repository and workflow checks. scheme: bearer type: http operatorBearer: description: Operation-specific configured operator or writer credential. Not interchangeable across operations. scheme: bearer type: http x-x402: amounts: only inside each resource's 402 challenge (accepts[].amount) — never on this catalog, never in prose asset: contract: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' decimals: 6 symbol: USDC catalog: https://councilof.ai/api/x402 doors: - /api/free-door - /api/request-attestation - /api/evidence-bundle - /api/eunomia-data - /api/proof - /api/rwa/evidence - /api/wrapper - /api/art50/marking-evidence - /api/feeds/provider-diff - /api/receipts/batch facilitator: configured: true note: the facilitator URL is a Cloudflare Pages env var (X402_FACILITATOR_URL) that no public surface publishes; /api/x402 reports only whether one is configured url: null mcp: https://councilof.ai/mcp mode: live mode_note: A settled receipt (facilitator /verify then /settle) unlocks the paid artefact. Verification of every artefact stays free. network: eip155:8453 not: - score - certificate - filled-cells - pay-to-pass - rank offer_receipt: alg: EdDSA did_document: https://csoai.org/.well-known/did.json formats_emitted: - jws formats_not_emitted: - eip712 kid: did:web:csoai.org#board-attestation-1 receipts_by_payer: https://councilof.ai/api/receipts?payer=0x… spec: https://github.com/x402-foundation/x402/blob/69652a69798f0b08f95bef33318896e36e210f7e/specs/extensions/extension-offer-and-receipt.md spec_commit: 69652a69798f0b08f95bef33318896e36e210f7e supported: true verify_hosted: https://councilof.ai/api/receipts/verify verify_offline: scripts/verify_receipt.py why_no_eip712: the edge holds one Ed25519 signing key (a Cloudflare Pages secret) and no secp256k1 signer; eip712 would require a key nobody has provisioned, so we emit none rather than a format we cannot produce payTo: '0x212686404A7D1E1fD88F35eD6200c3aF7A78ae31' public_operations: 104 quarantined: - buyable: false free_status: https://councilof.ai/api/witness/status?sha256=<64-hex> lifecycle: QUARANTINED_PRE_RELEASE reason: paid witness issuance is disabled until a release gate verifies leaf → signed root → sidecar → Rekor → OpenTimestamps url: https://councilof.ai/api/witness?sha256=<64-hex> revenue_truth: https://councilof.ai/api/revenue schema_of_source: catalog: csoai.x402-catalog/0.2 well_known: csoai.x402/0.2 scheme: exact well_known: https://councilof.ai/.well-known/x402.json