{"uid":"cap_HA-YMZiVUz1Yq4W78837g","slug":"spoolis-outcome-verification-84b26eca","name":"Spoolis Outcome Verification","description":"Verify whether delivered work satisfied explicit acceptance criteria. One call, pay per verification, no account. Returns per-unit accepted/rejected counts, earned value, and a signed Outcome Receipt.","url":"https://spoolis.com/api/v1/verify/x402","method":"POST","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input","output"],"properties":{"input":{"type":"object","required":["type","method","bodyType","body","example"],"properties":{"body":{"type":"object"},"type":{"type":"string","const":"http"},"method":{"enum":["POST"],"type":"string"},"example":{"type":"object"},"bodyType":{"enum":["json"],"type":"string"}},"additionalProperties":true},"output":{"type":"object","required":["type","example"],"properties":{"type":{"type":"string","const":"application/json"},"example":{"type":"object","required":["spool_id","accepted","rejected","terminal"],"properties":{"accepted":{"type":"integer","minimum":0},"rejected":{"type":"integer","minimum":0},"spool_id":{"type":"string"},"terminal":{"type":"boolean"},"uncertain":{"type":"integer","minimum":0},"rejections":{"type":"array","items":{"type":"object","properties":{"unit":{"type":"integer"},"reason":{"type":"string"}}}},"receipt_url":{"type":"string"},"earned_cents":{"type":"integer","minimum":0},"unit_results":{"type":"array","items":{"type":"object","properties":{"unit":{"type":"integer"},"reasons":{"type":"array","items":{"type":"string"}},"verdict":{"enum":["pass","fail","uncertain"],"type":"string"}}}}}}}}}},"responseSchema":{"type":"application/json","example":{"accepted":9,"rejected":1,"spool_id":"spl_example123","terminal":true,"rejections":[{"unit":10,"reason":"The required status field was missing."}],"receipt_url":"https://spoolis.com/r/example","earned_cents":900}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.0101","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.0101/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.0101","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.0101","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_coTQLXvPHY9tluvqDwsKy","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.0101","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Verifies whether a unit of work fulfilled agreed-upon acceptance criteria and computes what was earned, enabling outcome-based payment settlement.","exampleAgentPrompt":"Can you run the fulfillment verification on this batch of completed work items and tell me how many passed acceptance criteria, which ones were rejected and why, and what the total earned amount comes out to?","exampleUseCases":[{"title":"Freelance task payout verification","prompt":"I have 10 completed microtasks submitted by a contractor — can you verify them against the acceptance criteria and tell me how many passed, which ones failed and the reason, and how many cents were actually earned so I can release the right payment?"},{"title":"Agentic pipeline quality gate","prompt":"My AI agent just finished processing a batch of records — before we pay out, can you check each result against the required criteria and give me a spool ID and receipt so I can audit what was accepted versus rejected?"},{"title":"Outcome-based SLA settlement","prompt":"We had 10 deliverables submitted under our outcome-based agreement — run the verification now and tell me the terminal result, which units were rejected and why, and the exact earned amount in cents so we can close out this sprint."}],"resultDescription":"Returns a JSON object with the number of accepted and rejected units, a unique spool_id for the verification run, a terminal boolean indicating if the spool is finalized, an array of rejection objects (unit index + reason), a receipt_url for auditing, and earned_cents representing the total amount earned for passing units.","failureModes":["Missing required fields in the request body cause unit rejection with a descriptive reason","Malformed JSON body returns a 400-level error","Non-POST methods are rejected","Payment via x402 fails if USDC balance is insufficient — call does not proceed","All units rejected if none meet acceptance criteria — earned_cents returns 0","Non-terminal spool may require re-querying if processing is asynchronous"],"whenToPreferThis":"Choose Spoolis when payment is contingent on whether work actually passed defined acceptance criteria — not just that it was submitted. Ideal for agentic workflows, outcome-based contracts, microtask marketplaces, or any scenario where a verifiable record of what passed, what failed, and what was earned is required before releasing funds. Prefer this over generic webhooks or payment rails when you need a structured rejection audit trail and a receipt URL per verification run.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-14T18:37:26.471Z","isFirstParty":false}