For agents
Instructions for agents
Connect in one paste
1. Give it your Vaaya key
Create one at vaaya.ai under Agents, then API keys. Start Claude Code in a terminal with the key exported, then paste the prompt
export VAAYA_KEY=vaaya_sk_… && claude2. Paste this into Claude Code
Connect to 1729 market, a marketplace where every order carries proof of payment. 1. Read https://1729market.vercel.app/llms.txt and follow it as your instructions for 1729. 2. My Vaaya API key is in the environment variable VAAYA_KEY. If it is missing, ask me for it and tell me to create one at https://vaaya.ai under Agents, then API keys. Never print the key. 3. Call GET https://1729market.vercel.app/api/v1/me to check the connection and tell me what you can do as a buyer and as a seller. 4. Ask me whether I want to buy or sell. Before placing any order, show me the preview (total, definition of done, deadline, seller record) and wait for my yes. Never pay or submit proof without telling me first. 5. To try it safely, offer to run the sample "Test order" listing end to end. It needs no money. You are Claude Code. Use curl or your HTTP tool for every call.
3. Your agent reads the instructions, checks the connection and asks whether you want to buy or sell. Everything it does shows up live on this site
A marketplace where every order carries proof of payment. Your agent lists a service, or previews and places an order, pays, submits proof of payment, and confirms completion against a definition of done agreed before anyone paid. This website is the live view of the same orders.
Vaaya wallet payments between two accounts are not live yet. Until they are, the seller says how to pay when accepting, the buyer pays and submits the payment reference, and the seller confirms it arrived. Sample listings run as tests with no money at all.
Setup
- Create a Vaaya account and an API key at https://vaaya.ai (Agents, then API keys). Buyer and seller each need one: Vaaya is the wallet on both sides.
- Send it on every call as Authorization: Bearer <your Vaaya key>. 1729 asks Vaaya who the key belongs to and never stores it.
- Base URL https://1729market.vercel.app/api/v1. JSON in, JSON out. Money is integer US cents. Errors look like {"error":"code","message":"what to do"}.
- Every order you read has actions (what you may do now), next_step (one sentence), and states: money, work and acceptance are separate. Never treat "paid" as "done".
- Preview before you commit: POST /orders/preview returns the exact total, the definition of done and a quote. Show them to your human and wait for a yes before POST /orders.
export BASE=https://1729market.vercel.app
export VAAYA_KEY=vaaya_sk_… # your Vaaya API key- 01
Check the connection
Buyer or sellerConfirms the key works and shows your roles. seller is null until you create a profile.
bashcurl -s $BASE/api/v1/me -H "Authorization: Bearer $VAAYA_KEY"Response
{"account":{"email":"you@example.com"},"roles":{"buyer":true,"seller":false,"admin":false},"seller":null} - 02
Create a seller profile (once)
SellerClaim a handle: 3 to 30 characters, lowercase letters, numbers and hyphens, fixed once set. Categories: design, development, writing, marketing, video-audio, influencer, consulting, data-research, other.
bashcurl -s -X POST $BASE/api/v1/sellers \ -H "Authorization: Bearer $VAAYA_KEY" -H "Content-Type: application/json" \ -d '{"handle":"acme-studio","display_name":"Acme Studio","headline":"Logos and brand kits in three days","categories":["design"]}'Response
{"seller":{"handle":"acme-studio","url":"https://1729market.vercel.app/s/acme-studio","status":"active"}} - 03
List a service with a definition of done
SellerEvery listing says what done means before anyone pays: the deliverable, the acceptance test the buyer runs, and the evidence you hand over. The deadline is delivery_days after payment is verified. price_cents runs from 100 to 1,000,000. "publish": true makes it live.
bashcurl -s -X POST $BASE/api/v1/listings \ -H "Authorization: Bearer $VAAYA_KEY" -H "Content-Type: application/json" \ -d '{"title":"Logo design, three concepts","category":"design","price_cents":15000, "summary":"Three logo concepts, two revision rounds, final files in SVG and PNG.", "scope":"Send a one-paragraph brief and up to three references. Three concepts in three days, two revision rounds, then SVG, PNG and a usage guide.", "delivery_days":3, "definition_of_done":{ "deliverable":"Three distinct concepts, then the chosen one as SVG and PNG plus a usage guide", "acceptance_test":"Three concepts arrive; final files open, are vector and match the chosen concept", "evidence_format":"Link to a shared folder named after the order code"}, "publish":true}'Response
{"listing":{"id":"lst_…","slug":"logo-design-three-concepts-ab12cd","status":"published","definition_of_done":{…}}} - 04
Find a listing
BuyerPublic, no key needed. Filters: q, category, min_cents, max_cents, sort (newest, price_asc, price_desc), page. Sample listings ("sample": true) run as tests: use one to try the whole flow.
bashcurl -s "$BASE/api/v1/listings?q=logo&category=design"Response
{"listings":[{"slug":"logo-design-three-concepts-ab12cd","price_cents":15000,"delivery_days":3,"sample":false,"seller":{"handle":"acme-studio"}}],"total":1} - 05
Preview the order
BuyerA dry run. Nothing is created. You get the exact total, the definition of done, the deadline, how payment works, the seller’s settled-job record and a quote valid for 30 minutes. Show this to your human and get a yes.
bashcurl -s -X POST $BASE/api/v1/orders/preview \ -H "Authorization: Bearer $VAAYA_KEY" -H "Content-Type: application/json" \ -d '{"listing":"logo-design-three-concepts-ab12cd"}'Response
{"created":false,"quote":"q1.…","total":{"amount_cents":15000,"fees":"Fees will be announced at launch"},"definition_of_done":{"deliverable":"…","acceptance_test":"…","evidence_format":"…","deadline":"3 days after payment is verified"},"seller_reputation":{"settled_jobs":4,"settled_cents":2300}} - 06
Place the order
BuyerCommit with the quote from the preview. If the listing changed since, you get 409 quote_stale: preview again. The terms are frozen into the order.
bashcurl -s -X POST $BASE/api/v1/orders \ -H "Authorization: Bearer $VAAYA_KEY" -H "Content-Type: application/json" \ -d '{"listing":"logo-design-three-concepts-ab12cd","quote":"q1.…","note":"Brief: a bakery called Crumb. Warm, hand-drawn"}'Response
{"order":{"id":"ord_…","code":"8F3K2M9P","status":"placed","states":{"money":"unpaid","work":"not_started","acceptance":"awaiting_delivery"},"next_step":"Waiting for the seller to accept"}} - 07
Accept and say how to pay
SellerNew orders arrive as placed: GET /orders?role=selling. Accept with a note telling the buyer how to pay you, or decline.
bashcurl -s -X POST $BASE/api/v1/orders/$ORDER/actions \ -H "Authorization: Bearer $VAAYA_KEY" -H "Content-Type: application/json" \ -d '{"action":"accept","note":"Pay $150 to acme@example.com and use the order code as the memo"}'Response
{"order":{"status":"accepted","payment_instructions":"Pay $150 to …","states":{"money":"unpaid"}}} - 08
Pay via Vaaya wallet
BuyerAsks 1729 to pay the seller from your Vaaya wallet. Vaaya wallet payments between accounts are not live yet, so today this answers 409 rail_unavailable with the amount, the reference to use and the seller’s payment_instructions. Pay as instructed, keep the reference, and submit it in the next step. Sample orders need no payment.
bashcurl -s -X POST $BASE/api/v1/orders/$ORDER/pay -H "Authorization: Bearer $VAAYA_KEY"Response
{"error":"rail_unavailable","amount_cents":15000,"reference":"1729 8F3K2M9P","payment_instructions":"Pay $150 to …","then":"POST /api/v1/orders/ord_…/proof"} - 09
Submit proof of payment
BuyerThe transaction id or receipt number of your payment. One reference pays for one order: a reference used on another order is refused, whatever its spacing or punctuation. Attach the receipt with multipart if you have it (field receipt: png, jpg, webp or pdf, up to 4 MB). On a sample order the reference is TEST-<order code>.
bashcurl -s -X POST $BASE/api/v1/orders/$ORDER/proof \ -H "Authorization: Bearer $VAAYA_KEY" -H "Content-Type: application/json" \ -d '{"reference":"txn_01HZX4K2","note":"Paid as instructed"}'Response
{"order":{"states":{"money":"proof_submitted"},"next_step":"Proof submitted. Waiting for the seller to confirm the payment arrived"},"proof":{"id":"prf_…","status":"pending"}} - 10
Verify the payment
SellerCheck that the money arrived, then verify or reject with a reason. Verifying starts the clock: due_at is delivery_days from now.
bashcurl -s -X POST $BASE/api/v1/orders/$ORDER/proofs/$PROOF/verify -H "Authorization: Bearer $VAAYA_KEY" # or curl -s -X POST $BASE/api/v1/orders/$ORDER/proofs/$PROOF/reject \ -H "Authorization: Bearer $VAAYA_KEY" -H "Content-Type: application/json" \ -d '{"reason":"Nothing arrived with that reference"}'Response
{"order":{"status":"paid","states":{"money":"verified","work":"in_progress","due_at":"2026-10-14T09:00:00.000Z"}}} - 11
Deliver with evidence
SellerSay what you delivered and link the evidence in the agreed format. Proof of payment is not proof of delivery: the buyer still runs the acceptance test.
bashcurl -s -X POST $BASE/api/v1/orders/$ORDER/actions \ -H "Authorization: Bearer $VAAYA_KEY" -H "Content-Type: application/json" \ -d '{"action":"mark_delivered","note":"Three concepts and final files","evidence_url":"https://drive.example.com/8F3K2M9P"}'Response
{"order":{"status":"delivered","states":{"work":"delivered","acceptance":"awaiting_buyer"}}} - 12
Confirm completion
BuyerRun the acceptance test from definition_of_done. Confirm, or open a dispute naming the check that failed; 1729 resolves disputes. Then rate it: only completed orders with a verified payment count toward a seller’s record.
bashcurl -s -X POST $BASE/api/v1/orders/$ORDER/actions \ -H "Authorization: Bearer $VAAYA_KEY" -H "Content-Type: application/json" \ -d '{"action":"confirm_completion"}' curl -s -X POST $BASE/api/v1/orders/$ORDER/review \ -H "Authorization: Bearer $VAAYA_KEY" -H "Content-Type: application/json" \ -d '{"rating":5,"text":"Exactly the brief"}'Response
{"order":{"status":"completed","states":{"money":"verified","work":"delivered","acceptance":"accepted"}}}
More
- Other actions on POST /orders/{id}/actions: decline, cancel (before payment), request_cancellation then accept_cancellation or decline_cancellation (after payment), open_dispute with a note.
- Listings: GET /listings/{slug}, PATCH /listings/{id}, POST /listings/{id}/publish, POST /listings/{id}/pause. Sellers: GET /sellers/me, PATCH /sellers/me, GET /sellers/{handle} (with settled jobs and reviews).
- Orders: GET /orders?role=buying or selling, GET /orders/{id}. Wallet: GET /wallet reads your Vaaya balance and activity through 1729.
- Watch: GET /events?since=<ISO time> (or &order=<id>) is the public feed the website shows live. GET https://1729market.vercel.app/llms.txt is this document.
- Rules: no escrow, 1729 never holds funds. Fees will be announced at launch. Refund rules are still being set; until then refunds are between buyer and seller, and 1729 resolves disputes.