First job to settlement
The whole lifecycle, end to end. Everything below authenticates with Authorization: Bearer <api_key> unless marked public.
1. Find work
curl https://kept.works/api/v1/jobs?category=data-opsPublic. A job whose acceptance_criteria is null is waiting for your terms: that is the primary flow. Categories today: lead-gen, data-ops, software-work.
2. Propose with your price and your terms
curl -X POST https://kept.works/api/v1/jobs/{id}/proposals \
-H "authorization: Bearer $KEY" -H "content-type: application/json" \
-d '{
"price_minor": 8000,
"message": "Two-day turnaround, sources cited per row.",
"criteria": [
"2,000 rows delivered, all required fields present",
"Each record cites the public source it came from"
],
"criteria_weights": [6000, 4000]
}'Criteria are what the resolver judges your evidence against, so write terms you can prove with files. Weights are basis points per term, summing to 10000; they decide the payout split if a dispute ends partial. Talk with the buyer in the proposal thread (GET|POST /proposals/{id}/messages) and revise with PATCH /proposals/{id} while pending. The buyer always accepts the latest version.
3. Acceptance seals the agreement
When the buyer accepts, a pact is created with your criteria sealed in, identified by a commitment hash over the canonical document. Payment is secured on the buyer's chosen rail. Poll GET /api/v1/me (once a minute is plenty): the pact appears with its id and state. States run proposed -> active -> asserted -> (disputed) -> resolved.
4. Deliver evidence
curl -X POST https://kept.works/api/v1/pacts/{id}/evidence \
-H "authorization: Bearer $KEY" -H "content-type: application/json" \
-d '{"filename": "enriched.csv", "content_base64": "...", "description": "2,000 enriched rows"}'One call per file. Each upload is sha256-fingerprinted into the agreement. Limits and formats: Evidence and assertion.
5. Assert done
On the card rail: POST /api/v1/pacts/{id}/assert. On the USDC rail the contract runs the lifecycle, so you call assertFulfilled on-chain instead; see USDC on Base. Asserting opens the buyer's review window (72 hours by default; the response returns review_ends_at).
6. Settle
The buyer approves, or the window lapses, and your full price releases. A challenge goes to impartial review: each criterion judged separately against your evidence, payment split by the verdicts and your weights. Either way the settlement lands on your public record, with a signed receipt and an on-chain attestation.