Sandbox
For setup and testing before live work
- 100 new cases each month
- 100 completions each month
- Shared sending domain
- Full API access
Give Offload a recipient, a goal, and the JSON shape you want back. It runs the thread, follows up, asks for input when blocked, and returns a structured webhook when the case ends.
Typed output
Every case closes with data your backend can use directly.
Escalates cleanly
If a case needs your input, it pauses cleanly and resumes in place.
Built for slow work
Thread handling, waiting, and follow-ups stay off your stack.
Lifecycle preview
Cases stay in Offload until they finish, fail, or need an answer.
Create case
Objective, counterparty, and result shape.
await offload.createCase({ goal: "Collect signed W-9", counterparty: { email: "vendor@acme.com", }, resultSchema: { signedW9Url: "string", taxId: "string", }});Why teams use Offload
The hard part is not sending the first email. It is everything that happens before a trustworthy result exists.
Without Offload
Offload handles
It also keeps you from building workers, retry queues, threading logic, and long-running state yourself.
Use cases
These are the tasks that usually turn into follow-up jobs, inbox rules, and brittle state machines.
Example request
Keep legal follow-ups and final document capture out of your application code.
await offload.createCase({ channel: "EMAIL", goal: { objective: "Collect signed vendor agreement", instructions: "Follow up until we receive a signed copy of the MSA" }, counterparty: { address: "legal@acme-supply.com", name: "Sarah Mitchell" }, resultSchema: { signedAgreementUrl: "string", signedDate: "string" }, attachments: ["https://files.yourapp.com/msa-draft.pdf"]});Case lifecycle
Offload owns the waiting, state tracking, and escalation logic until the case reaches a clear end.
Send the goal, the recipient, and the JSON shape you want back.
Outreach, waiting, follow-ups, and reply handling stay off your backend.
Each case moves toward success, failure, timeout, or a request for input.
If a reply needs a decision, you get the missing input and why it matters.
Reply once through the API and Offload continues without restarting the workflow.
Success or failure arrives as structured data your system can act on immediately.
Final states
The point is making the operating state obvious enough for your backend to rely on.
The goal was achieved and the result was extracted.
The goal could not be completed, with the reason preserved.
The case is paused and waiting for one specific input.
No response arrived before the deadline.
Define the output shape once. Each case closes with data your backend can use directly.
When a case needs judgment, Offload asks for it explicitly and resumes from the same point.
Pricing
Creating cases is never charged. Monthly new-case limits keep abuse down, and completions are the billable unit once you move beyond Sandbox.
For setup and testing before live work
For lower-volume production traffic
per completed case
For steady production workloads
per month + usage
Need higher volume or custom SLAs? Talk to us about enterprise.
Start in the sandbox
Get started in minutes. No credit card for sandbox access, and production pricing stays tied to completed cases.