Appearance
Presets
A preset is a named recipeConfig stored server-side — settings you save once and reuse, instead of sending the whole graph on every call.
Two kinds:
- System presets — shipped with the product, visible to everyone, read-only.
- Your presets — created, edited and deleted by you, visible only to your account.
Presets feed the settings-precedence chain on POST /jobs: name one per call with presetId, or bind one to an API key as its default so calls carry no settings at all. See Configuring your own settings.
Reads need the presets:read scope, writes need presets:write.
List presets
GET /presetsThe system presets plus your own.
Response — 200 OK
json
{
"presets": [
{
"id": "sys:full-refresh",
"name": "Full spoof",
"recipeConfig": { "global_settings": { … }, "nodes": [ … ], "edges": [ … ] },
"isSystem": true,
"createdAt": "2026-07-03T14:00:00Z"
}
]
}Get a preset
GET /presets/{id}One preset visible to you — a system preset or your own.
Errors
| Status | error | When |
|---|---|---|
404 | not_found | No such preset, or it isn't yours (the two are indistinguishable by design). |
Create a preset
POST /presetsBody
| Field | Type | Required | Notes |
|---|---|---|---|
name | string | yes | Trimmed, truncated to 120 characters. |
recipeConfig | object | yes | A full recipe graph. Validated on write — an invalid one never becomes a preset. |
bash
curl -s -X POST "$API/presets" \
-H "Authorization: Bearer $FLUIDGHOST_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Instagram carousel", "recipeConfig": { … } }'Response — 201 Created
The created preset.
Errors
| Status | error | When |
|---|---|---|
400 | bad_request | Missing name or recipeConfig; the recipe failed validation (findings in details.errors). |
Update a preset
PATCH /presets/{id}Send name, recipeConfig, or both. System presets are immutable.
Errors
| Status | error | When |
|---|---|---|
400 | bad_request | Neither field provided; the recipe failed validation. |
404 | not_found | No editable preset with that id — including a system preset, which cannot be edited. |
Delete a preset
DELETE /presets/{id}Response — 200 OK
json
{ "deleted": true, "id": "preset_…" }Errors
| Status | error | When |
|---|---|---|
404 | not_found | No editable preset with that id. |
Deleting a preset that a key uses as its default does not unbind the key. The next job on that key resolves no settings and returns
400— rebind the key or send settings per call.