Skip to content

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 /presets

The 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

StatuserrorWhen
404not_foundNo such preset, or it isn't yours (the two are indistinguishable by design).

Create a preset

POST /presets

Body

FieldTypeRequiredNotes
namestringyesTrimmed, truncated to 120 characters.
recipeConfigobjectyesA 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

StatuserrorWhen
400bad_requestMissing 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

StatuserrorWhen
400bad_requestNeither field provided; the recipe failed validation.
404not_foundNo 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

StatuserrorWhen
404not_foundNo 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.

FluidGhost API — part of the Fluidvip ecosystem.