Funnels (public render)
4 endpoints from the published OpenAPI import.
Fetch a funnel's unified public render payload
Returns the unified render payload for any kind (page/form/funnel/booking): the node graph, public-safe settings, inlined page snapshots, and the universal Liquid context namespaces (flow/form/funnel/booking/idap/page/question). Public + IP-rate-limited; tenancy resolved from flow_id. Append ?format=llm for an agent guidance envelope.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
flow_id | path | string | true | |
current_node | query | any | false | Node slug being rendered; defaults to the first page node. May be a composite inline-embed slug (<embed_slug>~<inner_slug>). |
include_pages | query | boolean | false | Inline page-node snapshots (set false to skip). |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/funnels/{flow_id}' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/funnels/{flow_id}",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/funnels/{flow_id}", {
method: "GET",
headers: { "Authorization": "Bearer <token>" }
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://spideriq.ai/api/v1/funnels/{flow_id}", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
404 | Flow not found (RESOURCE_NOT_FOUND envelope) |
429 | Rate limited |
503 | Database unavailable |
422 | Validation Error |
Read the caller's active flow session state
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
flow_id | path | string | true |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/funnels/{flow_id}/session' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/funnels/{flow_id}/session",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/funnels/{flow_id}/session", {
method: "GET",
headers: { "Authorization": "Bearer <token>" }
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://spideriq.ai/api/v1/funnels/{flow_id}/session", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
404 | No active session for this flow |
422 | Validation Error |
Merge field/variable updates into the active flow session
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
flow_id | path | string | true |
Try it
Examples
cURL
curl -X PATCH 'https://spideriq.ai/api/v1/funnels/{flow_id}/session' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"fields": {},
"questions": {},
"variables": {}
}'Python
import httpx
resp = httpx.patch(
"https://spideriq.ai/api/v1/funnels/{flow_id}/session",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={"fields": {}, "questions": {}, "variables": {}},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/funnels/{flow_id}/session", {
method: "PATCH",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({"fields": {}, "questions": {}, "variables": {}})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"fields": {}, "questions": {}, "variables": {}}`)
req, _ := http.NewRequest("PATCH", "https://spideriq.ai/api/v1/funnels/{flow_id}/session", body)
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
404 | No active session for this flow |
422 | Validation Error |
Fire a flow event; returns the next-node transition (200) or 204 if none
Records a flow event (submit/click/timer/scroll_milestone/entry/field_change) against the caller's session, evaluates the node's outgoing edges, and returns {next_node|end_flow, redirect_url} (200) when a branch fires — branching WINS over the renderer's sequential nav. Returns 204 when no edge matches (client navigates sequentially). An 'entry' event with no session cookie starts a fresh session and sets the signed funnel_session_id cookie.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
flow_id | path | string | true |
Try it
Examples
cURL
curl -X POST 'https://spideriq.ai/api/v1/funnels/{flow_id}/event' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"event": "click",
"current_node": "string",
"field": "string",
"value": null,
"fields": {},
"hidden": {}
}'Python
import httpx
resp = httpx.post(
"https://spideriq.ai/api/v1/funnels/{flow_id}/event",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={"event": "click", "current_node": "string", "field": "string", "value": null, "fields": {}, "hidden": {}},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/funnels/{flow_id}/event", {
method: "POST",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({"event": "click", "current_node": "string", "field": "string", "value": null, "fields": {}, "hidden": {}})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"event": "click", "current_node": "string", "field": "string", "value": null, "fields": {}, "hidden": {}}`)
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/v1/funnels/{flow_id}/event", body)
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | A branch fired — next_node/end_flow returned |
204 | No branch fired — navigate sequentially |
404 | Flow not found |
422 | Validation Error |