Contract-first REST for builders and agents. Same control plane as Fat Heron products — documented here for the developer surface.
Rehearse mutations safely: dry-run adapters, sb- projects, simulate recipes, then promote with a live key.
Required scopes: read, write · Base https://api.fatheron.dev
1. Check sandbox status
GET /v1/sandbox/status X-API-Key: fh_live_…
sandbox_mode true for fh_test_ keys. Lists dry_run_actions and recipes.
2. Simulate a failure recipe
POST /v1/sandbox/simulate
X-API-Key: fh_live_…
Content-Type: application/json
{
"recipe": "billing.payment_failed"
}No outbound webhook delivery. Other recipes: alias.created, dns.delegation_failed, webhook.delivery_failed.
3. Build a plan from a manifest
POST /v1/sandbox/plan
X-API-Key: fh_live_…
Content-Type: application/json
{
"project": {
"name": "Acme Launch",
"slug": "acme-launch"
},
"alias": {
"local_part": "hello",
"domain_name": "example.com",
"forwards_to": "[email protected]"
}
}Or use fh apply --file manifest.json with a test key.
4. Promote with a live key
POST /v1/sandbox/promote
X-API-Key: fh_live_…
Content-Type: application/json
{
"plan": {
"plan_id": "plan-…",
"manifest": {},
"steps": []
}
}Requires fh_live_. Real side effects. CLI: fh promote --file plan.json
sandbox_key_required
Use an fh_test_ key for simulate.
live_key_required
Promote only with fh_live_ (or a portal session).
sandbox_mutation_forbidden
Test keys may only mutate sb- / bprj-sb- projects.
unknown_recipe
Use a recipe id from GET /v1/sandbox/status.