{"openapi":"3.1.0","info":{"title":"ThreadCamp API","version":"1.0.0","description":"The email API for AI agents: programmatic inboxes, Resend-compatible sending, forwarding Routes and human-in-the-loop approvals. Public sandbox key: sk_test_sandbox_threadcamp_public_demo. Every response returns x-request-id and x-ratelimit-limit/remaining/reset headers; a 429 rate_limit_error carries retry-after. Idempotency via client_id on POST /inboxes and POST /emails. Errors are structured objects with a stable error.type an agent can branch on.","contact":{"url":"https://www.threadcamp.com"}},"servers":[{"url":"https://www.threadcamp.com/v1"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"sk_live_... / sk_test_..."}}},"paths":{"/inboxes":{"get":{"summary":"List inboxes","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"A list object","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string"},"data":{"type":"array","items":{"type":"object"}}}}}}}}},"post":{"summary":"Create an inbox","security":[{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"display_name":{"type":"string"},"username":{"type":"string"},"domain":{"type":"string"},"autonomy":{"type":"string","enum":["auto","approve-first","notify"]},"client_id":{"type":"string","description":"Idempotency key"}}}}}},"responses":{"201":{"description":"Inbox created"}}}},"/inboxes/{id}":{"get":{"summary":"Get an inbox","security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Inbox"}}},"delete":{"summary":"Delete an inbox","security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted"}}}},"/inboxes/{id}/messages":{"get":{"summary":"List messages in an inbox","security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"A list object","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string"},"data":{"type":"array","items":{"type":"object"}}}}}}}}}},"/messages/{id}":{"get":{"summary":"Get a message","security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Message"}}}},"/emails":{"post":{"summary":"Send an email (Resend-compatible)","security":[{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","required":["from","to","subject"],"properties":{"from":{"type":"string"},"to":{"type":"array","items":{"type":"string"}},"cc":{"type":"array","items":{"type":"string"}},"subject":{"type":"string"},"text":{"type":"string"},"html":{"type":"string"},"scheduled_at":{"type":"string","format":"date-time"},"client_id":{"type":"string"}}}}}},"responses":{"201":{"description":"Sent"},"202":{"description":"Held for approval or scheduled"}}}},"/emails/batch":{"post":{"summary":"Send a batch of emails (Resend-compatible, up to 100)","security":[{"BearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"array","maxItems":100,"items":{"type":"object","required":["from","to","subject"],"properties":{"from":{"type":"string"},"to":{"type":"array","items":{"type":"string"}},"subject":{"type":"string"},"text":{"type":"string"},"html":{"type":"string"},"scheduled_at":{"type":"string","format":"date-time"},"client_id":{"type":"string"}}}}}}},"responses":{"200":{"description":"Batch processed; per-item results in data[]"},"400":{"description":"Empty/oversized batch, or every item failed"}}}},"/domains":{"get":{"summary":"List domains","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"A list object","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string"},"data":{"type":"array","items":{"type":"object"}}}}}}}}},"post":{"summary":"Add a domain (returns DNS records)","security":[{"BearerAuth":[]}],"responses":{"201":{"description":"Domain added"}}}},"/domains/{id}/verify":{"post":{"summary":"Verify a domain","security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Verified"}}}},"/routes":{"get":{"summary":"List routes","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"A list object","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string"},"data":{"type":"array","items":{"type":"object"}}}}}}}}},"post":{"summary":"Create a forwarding route","security":[{"BearerAuth":[]}],"responses":{"201":{"description":"Route created"}}}},"/routes/{id}":{"delete":{"summary":"Delete a route","security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Deleted"}}}},"/webhooks":{"get":{"summary":"List webhooks","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"A list object","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string"},"data":{"type":"array","items":{"type":"object"}}}}}}}}},"post":{"summary":"Register a webhook","security":[{"BearerAuth":[]}],"responses":{"201":{"description":"Webhook created"}}}},"/approvals":{"get":{"summary":"List approvals (HITL queue)","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"A list object","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string"},"data":{"type":"array","items":{"type":"object"}}}}}}}}}},"/approvals/{id}":{"post":{"summary":"Approve or reject a held send","security":[{"BearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Resolved"}}}},"/events":{"get":{"summary":"Event/request log","security":[{"BearerAuth":[]}],"responses":{"200":{"description":"A list object","content":{"application/json":{"schema":{"type":"object","properties":{"object":{"type":"string"},"data":{"type":"array","items":{"type":"object"}}}}}}}}}}}}