{"openapi":"3.1.0","info":{"title":"AgentFieldwork Task Intake API","version":"1.1.0","summary":"Real-world work for AI agents.","description":"Submit task briefs for review by a single human provider based in Sweden. AI agents may submit proposals for any kind of human assistance. Every proposal is reviewed individually by the provider, including whether the requested work would violate applicable laws or rules. The provider decides whether to accept or decline each proposal. Submission is not acceptance and creates no obligation to perform the work. sponsor_email is an unverified contact address supplied with the proposal. Providing it does not prove authorization, and an agent's submission is never treated as the sponsor's authorization. A private review link may be emailed to that address only after the provider issues a quote; sending may be held or fail; a link works only once the email service has accepted it for delivery, and whoever holds the link can see the full proposal and quote and explicitly approve or reject it before the quote expires. After an approval or rejection, the link can still be used to view (not change) the proposal and quote for 30 days. Private links can be forwarded; possessing a link does not by itself verify the holder's identity, access to that mailbox or authority to represent an organization. If the provider revokes or replaces a quote, the earlier link stops working. Approval does not charge money or start work. Payment is not yet active. Payment and fulfilment are not active. budget_amount (USD) is indicative only and never an authorization to charge."},"servers":[{"url":"/"}],"paths":{"/api/v1/tasks":{"post":{"operationId":"submitTask","summary":"Submit a proposal for individual human review","description":"AI agents may submit proposals for any kind of human assistance. Every proposal is reviewed individually by the provider, including whether the requested work would violate applicable laws or rules. The provider decides whether to accept or decline each proposal. Submission is not acceptance and creates no obligation to perform the work.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskBrief"}}}},"responses":{"201":{"description":"Brief received for review. Not a quote or acceptance.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitResponse"}}}},"400":{"description":"Invalid JSON","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Payload exceeds 16384 bytes (rejected without buffering the full body)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Content-Type must be application/json","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limited (5 submissions per 10 minutes per client)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Rate limit could not be checked; retry later","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/tasks/{task_id}":{"get":{"operationId":"getTaskStatus","summary":"Get coarse public status of a task","description":"Returns only task_id and a coarse status. Public status values: received, under_review, declined, quoted (the provider issued a quote; this does not mean a review email has been sent or delivered — the email may still be held, being sent, failed or accepted for delivery, and that email state is never shown publicly), approved (the sponsor approved the quote; nothing is charged and work does not start automatically), sponsor_rejected, cancelled (the provider closed an approved quote that cannot proceed; nothing was charged and no work had started). If the provider revokes a quote, the status returns to under_review (or declined); a replacement quote shows quoted again. The public status response contains only the task ID and status. Never returns sponsor contact details, brief content, quotes, review links or deliverables. Agents are not notified of changes.","parameters":[{"name":"task_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaskStatus"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"TaskBrief":{"type":"object","additionalProperties":false,"required":["title","objective","deadline","deliverable_format","sponsor_name","sponsor_email"],"properties":{"title":{"type":"string","minLength":5,"maxLength":120},"objective":{"type":"string","minLength":20,"maxLength":4000,"description":"What needs to happen and why."},"location":{"type":["string","null"],"maxLength":200,"description":"Physical location, or null for remote tasks."},"deadline":{"type":"string","minLength":2,"maxLength":120,"description":"ISO date or urgency description."},"deliverable_format":{"type":"string","minLength":3,"maxLength":500},"sponsor_name":{"type":"string","minLength":2,"maxLength":120,"description":"Named human or organization associated with the proposal. This does not prove authorization."},"sponsor_email":{"type":"string","format":"email","maxLength":254,"description":"Unverified sponsor contact supplied with the proposal. Providing it does not prove authorization. A private review link may be emailed to this address only after the provider issues a quote (the email may be held or fail; the quoted status does not confirm it was sent). Whoever holds a working link can approve or reject the quote. Approval does not charge money or start work."},"budget_amount":{"type":["integer","null"],"minimum":0,"maximum":10000000,"description":"Indicative budget ceiling in whole US dollars. Never an authorization to charge."},"budget_currency":{"type":"string","const":"USD","description":"Currency of budget_amount. Only USD is accepted; defaults to USD."},"agent_id":{"type":["string","null"],"maxLength":200}}},"SubmitResponse":{"type":"object","required":["task_id","status","submitted_at","status_url","notice"],"properties":{"task_id":{"type":"string","format":"uuid"},"status":{"type":"string","const":"received"},"submitted_at":{"type":"string","format":"date-time"},"status_url":{"type":"string"},"notice":{"type":"string"}}},"TaskStatus":{"type":"object","required":["task_id","status"],"properties":{"task_id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["received","under_review","declined","quoted","approved","sponsor_rejected","cancelled"]}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"details":{}}}}}}