Alpha Covenant Holdings · AP contract ap-view/1 · 2026-10-25
Your AP or ERP system asks one question before release: is there a dated read of the exclusion files under this vendor's exact name and key? This contract answers it with the read itself — per source, answered with n rows or did not answer — and a hash you can replay. It does not answer "should we pay": that rule is yours, and the receipt is what your rule reads.
POST https://alphacovenantholdings.com/api/ap/check X-Api-Key: acv_…
{"name":"Example Vendor LLC","uei":"ABC123DEF456","partner_reference":"PO-44812"}
Same read as the free receipt and the batch; the view is stored under your key at GET /api/ap/view/{receipt_id}. For volume, POST the CSV to /api/batch with a webhook_url and call /view per receipt id.
{
"contract": "ap-view/1",
"receipt_id": "r_\u2026",
"read_at": "2026-10-11T00:00:00+00:00",
"name_as_submitted": "Example Vendor LLC",
"keys": {
"uei": "ABC123DEF456"
},
"sources": [
{
"source": "sam",
"state": "answered",
"exact_rows": 0,
"similar_shown": 2,
"similar_names": [
"EXAMPLE VENDORS INC",
"EXAMPLE VENDOR GROUP"
],
"official_url": "https://sam.gov/search/?index=ex"
},
{
"source": "leie",
"state": "did_not_answer",
"exact_rows": null,
"similar_shown": 0
}
],
"decision": null,
"decision_belongs_to": "payer",
"sha256": "\u2026"
}
pay only if a receipt dated this month shows sam.state == 'answered' and sam.exact_rows == 0 and leie.state == 'answered' and leie.exact_rows == 0 — decided by the payerrelease automatically only when all_list_sources_answered == true and exact_rows_total == 0; anything else routes to a person. The two fields are facts about the read, not a clearance — decided by the payerif any list source state == 'did_not_answer' → route to a person; do not treat as zero — decided by the payerif similar_shown > 0 → a person opens the official_url rows before release; the receipt records that they were shown — decided by the payerPOST https://alphacovenantholdings.com/api/ap/verify {"view": …, "sha256": "…"}SHA-256 of canonical JSON (keys sorted, non-JSON values via str(), UTF-8) of the view without its sha256 field. The underlying receipt has its own sha256 under the same rule and an Ed25519 certification at /api/receipts/{id}/certification/html.
201 — view returned; one receipt registered401 — missing or inactive X-Api-Key429 + Retry-After — either the key's monthly row limit, or 'at capacity' — 40 receipts are built at once and none finished within 10 s; retry after the header, the receipt is never thinned to make roomdid_not_answer — a source that rate-limited or timed out prints did_not_answer with exact_rows null — never 'no record'; for pre-payment runs over ~40 names use POST /api/batch, which paces reads and retries unanswered rows the next daymeasured_2026-10-11 — 100 simultaneous checks: 60 served (p50 28 s, p95 35 s), 40 answered 429 at capacity, 0 degraded views; a 100-row batch had every row built, every source answered, in 9 minPartner spec: https://alphacovenantholdings.com/api/batch/spec · JSON: https://alphacovenantholdings.com/api/ap/contract · Public-record evidence, not legal advice or a compliance determination.