collections
22 endpoints from the published OpenAPI import.
List Collections
List every collection definition in the project.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
format | query | any | false | Response format. json (default) and llm return JSON; yaml returns text/yaml; md returns text/markdown. Any other value is a 422. |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/content/collections' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/dashboard/content/collections",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/content/collections", {
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/dashboard/content/collections", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
Create Collection
Create a collection definition (validates the field schema + route_base). Non-destructive create — no confirm gate. Enforces the max_collections cap.
Try it
Examples
cURL
curl -X POST 'https://spideriq.ai/api/v1/dashboard/content/collections' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"slug": "string",
"label": "string",
"schema_json": {},
"route_base": "string",
"is_public": false
}'Python
import httpx
resp = httpx.post(
"https://spideriq.ai/api/v1/dashboard/content/collections",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={"slug": "string", "label": "string", "schema_json": {}, "route_base": "string", "is_public": false},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/content/collections", {
method: "POST",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({"slug": "string", "label": "string", "schema_json": {}, "route_base": "string", "is_public": false})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"slug": "string", "label": "string", "schema_json": {}, "route_base": "string", "is_public": false}`)
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/v1/dashboard/content/collections", 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 |
|---|---|
201 | Successful Response |
422 | Validation Error |
Get Collection
Get one collection definition by slug.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | string | true | |
format | query | any | false | Response format. json (default) and llm return JSON; yaml returns text/yaml; md returns text/markdown. Any other value is a 422. |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/content/collections/{slug}' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/dashboard/content/collections/{slug}",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/content/collections/{slug}", {
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/dashboard/content/collections/{slug}", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
Update Collection
Update a collection definition (non-destructive — no confirm gate).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | string | true |
Try it
Examples
cURL
curl -X PATCH 'https://spideriq.ai/api/v1/dashboard/content/collections/{slug}' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"label": "string",
"schema_json": {},
"route_base": "string",
"is_public": true
}'Python
import httpx
resp = httpx.patch(
"https://spideriq.ai/api/v1/dashboard/content/collections/{slug}",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={"label": "string", "schema_json": {}, "route_base": "string", "is_public": true},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/content/collections/{slug}", {
method: "PATCH",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({"label": "string", "schema_json": {}, "route_base": "string", "is_public": true})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"label": "string", "schema_json": {}, "route_base": "string", "is_public": true}`)
req, _ := http.NewRequest("PATCH", "https://spideriq.ai/api/v1/dashboard/content/collections/{slug}", 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 |
422 | Validation Error |
Delete Collection
Delete a collection — DESTRUCTIVE (cascades to its records + edges). Gated: dry_run=true returns a preview + confirm_token; call again with the token to commit.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | string | true | |
dry_run | query | boolean | false | Preview the delete + receive a confirm_token without mutating. |
confirm_token | query | any | false | Consume a prior preview token and perform the delete. |
Try it
Examples
cURL
curl -X DELETE 'https://spideriq.ai/api/v1/dashboard/content/collections/{slug}' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.delete(
"https://spideriq.ai/api/v1/dashboard/content/collections/{slug}",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/content/collections/{slug}", {
method: "DELETE",
headers: { "Authorization": "Bearer <token>" }
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://spideriq.ai/api/v1/dashboard/content/collections/{slug}", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
List Records
List a page of a collection's records — drafts AND published (the author surface). Raises 404 for an unknown collection.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | string | true | |
limit | query | integer | false | |
offset | query | integer | false | |
sort | query | any | false | |
fields | query | any | false | Comma-separated field ids to keep in each record's data (e.g. 'name,install_cmd'). Omit for every field. A wide schema returns tens of thousands of characters per page — narrow the projection when you only need a few fields. Unknown ids are ignored. |
format | query | any | false | Response format. json (default) and llm return JSON; yaml returns text/yaml; md returns text/markdown. Any other value is a 422. |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records", {
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/dashboard/content/collections/{slug}/records", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
Create Record
Create ONE draft record (validates data against the schema). Non- destructive create — no confirm gate. Enforces the max_records cap.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | string | true |
Try it
Examples
cURL
curl -X POST 'https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"slug": "string",
"data": {},
"seo_title": "string",
"seo_description": "string",
"og_image_url": "string",
"sort": 0,
"publish_at": "string"
}'Python
import httpx
resp = httpx.post(
"https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={"slug": "string", "data": {}, "seo_title": "string", "seo_description": "string", "og_image_url": "string", "sort": 0, "publish_at": "string"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records", {
method: "POST",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({"slug": "string", "data": {}, "seo_title": "string", "seo_description": "string", "og_image_url": "string", "sort": 0, "publish_at": "string"})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"slug": "string", "data": {}, "seo_title": "string", "seo_description": "string", "og_image_url": "string", "sort": 0, "publish_at": "string"}`)
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records", 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 |
|---|---|
201 | Successful Response |
422 | Validation Error |
Bulk Create Records
Create 1–100 draft records ATOMICALLY (one transaction). Every record is validated before any insert — ANY failure 422s the whole batch and inserts nothing. Enforces the max_records cap for the full batch size.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | string | true |
Try it
Examples
cURL
curl -X POST 'https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records/bulk' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"records": [
{
"slug": "string",
"data": {},
"seo_title": "string",
"seo_description": "string",
"og_image_url": "string",
"sort": 0,
"publish_at": "string"
}
]
}'Python
import httpx
resp = httpx.post(
"https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records/bulk",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={"records": [{"slug": "string", "data": {}, "seo_title": "string", "seo_description": "string", "og_image_url": "string", "sort": 0, "publish_at": "string"}]},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records/bulk", {
method: "POST",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({"records": [{"slug": "string", "data": {}, "seo_title": "string", "seo_description": "string", "og_image_url": "string", "sort": 0, "publish_at": "string"}]})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"records": [{"slug": "string", "data": {}, "seo_title": "string", "seo_description": "string", "og_image_url": "string", "sort": 0, "publish_at": "string"}]}`)
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records/bulk", 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 |
|---|---|
201 | Successful Response |
422 | Validation Error |
Get Record
Get one record by its slug (drafts included — author surface).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | string | true | |
record_slug | path | string | true | |
format | query | any | false | Response format. json (default) and llm return JSON; yaml returns text/yaml; md returns text/markdown. Any other value is a 422. |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records/{record_slug}' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records/{record_slug}",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records/{record_slug}", {
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/dashboard/content/collections/{slug}/records/{record_slug}", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
Update Record
Update a record. Editing DRAFT fields (data / slug / seo / sort / publish_at) is non-destructive — no gate. A status change (publish / archive / unpublish) IS gated: pass dry_run=true for a preview + confirm_token, then call again with the token to apply.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | string | true | |
record_id | path | string | true | |
dry_run | query | boolean | false | For a status change: preview + receive a confirm_token without mutating. |
confirm_token | query | any | false | For a status change: consume a prior preview token and apply. |
Try it
Examples
cURL
curl -X PATCH 'https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records/{record_id}' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"slug": "string",
"data": {},
"seo_title": "string",
"seo_description": "string",
"og_image_url": "string",
"sort": 0,
"publish_at": "string",
"status": "string"
}'Python
import httpx
resp = httpx.patch(
"https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records/{record_id}",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={"slug": "string", "data": {}, "seo_title": "string", "seo_description": "string", "og_image_url": "string", "sort": 0, "publish_at": "string", "status": "string"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records/{record_id}", {
method: "PATCH",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({"slug": "string", "data": {}, "seo_title": "string", "seo_description": "string", "og_image_url": "string", "sort": 0, "publish_at": "string", "status": "string"})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"slug": "string", "data": {}, "seo_title": "string", "seo_description": "string", "og_image_url": "string", "sort": 0, "publish_at": "string", "status": "string"}`)
req, _ := http.NewRequest("PATCH", "https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records/{record_id}", 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 |
422 | Validation Error |
Delete Record
Delete one record — DESTRUCTIVE. Gated via dry_run/confirm_token.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | string | true | |
record_id | path | string | true | |
dry_run | query | boolean | false | Preview the delete + receive a confirm_token without mutating. |
confirm_token | query | any | false | Consume a prior preview token and perform the delete. |
Try it
Examples
cURL
curl -X DELETE 'https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records/{record_id}' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.delete(
"https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records/{record_id}",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records/{record_id}", {
method: "DELETE",
headers: { "Authorization": "Bearer <token>" }
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://spideriq.ai/api/v1/dashboard/content/collections/{slug}/records/{record_id}", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
List Collections
List every collection definition in the project.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
format | query | any | false | Response format. json (default) and llm return JSON; yaml returns text/yaml; md returns text/markdown. Any other value is a 422. |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections", {
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/dashboard/projects/{project_id}/content/collections", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
Create Collection
Create a collection definition (validates the field schema + route_base). Non-destructive create — no confirm gate. Enforces the max_collections cap.
Try it
Examples
cURL
curl -X POST 'https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"slug": "string",
"label": "string",
"schema_json": {},
"route_base": "string",
"is_public": false
}'Python
import httpx
resp = httpx.post(
"https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={"slug": "string", "label": "string", "schema_json": {}, "route_base": "string", "is_public": false},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections", {
method: "POST",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({"slug": "string", "label": "string", "schema_json": {}, "route_base": "string", "is_public": false})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"slug": "string", "label": "string", "schema_json": {}, "route_base": "string", "is_public": false}`)
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections", 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 |
|---|---|
201 | Successful Response |
422 | Validation Error |
Get Collection
Get one collection definition by slug.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | string | true | |
format | query | any | false | Response format. json (default) and llm return JSON; yaml returns text/yaml; md returns text/markdown. Any other value is a 422. |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}", {
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/dashboard/projects/{project_id}/content/collections/{slug}", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
Update Collection
Update a collection definition (non-destructive — no confirm gate).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | string | true |
Try it
Examples
cURL
curl -X PATCH 'https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"label": "string",
"schema_json": {},
"route_base": "string",
"is_public": true
}'Python
import httpx
resp = httpx.patch(
"https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={"label": "string", "schema_json": {}, "route_base": "string", "is_public": true},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}", {
method: "PATCH",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({"label": "string", "schema_json": {}, "route_base": "string", "is_public": true})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"label": "string", "schema_json": {}, "route_base": "string", "is_public": true}`)
req, _ := http.NewRequest("PATCH", "https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}", 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 |
422 | Validation Error |
Delete Collection
Delete a collection — DESTRUCTIVE (cascades to its records + edges). Gated: dry_run=true returns a preview + confirm_token; call again with the token to commit.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | string | true | |
dry_run | query | boolean | false | Preview the delete + receive a confirm_token without mutating. |
confirm_token | query | any | false | Consume a prior preview token and perform the delete. |
Try it
Examples
cURL
curl -X DELETE 'https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.delete(
"https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}", {
method: "DELETE",
headers: { "Authorization": "Bearer <token>" }
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
List Records
List a page of a collection's records — drafts AND published (the author surface). Raises 404 for an unknown collection.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | string | true | |
limit | query | integer | false | |
offset | query | integer | false | |
sort | query | any | false | |
fields | query | any | false | Comma-separated field ids to keep in each record's data (e.g. 'name,install_cmd'). Omit for every field. A wide schema returns tens of thousands of characters per page — narrow the projection when you only need a few fields. Unknown ids are ignored. |
format | query | any | false | Response format. json (default) and llm return JSON; yaml returns text/yaml; md returns text/markdown. Any other value is a 422. |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records", {
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/dashboard/projects/{project_id}/content/collections/{slug}/records", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
Create Record
Create ONE draft record (validates data against the schema). Non- destructive create — no confirm gate. Enforces the max_records cap.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | string | true |
Try it
Examples
cURL
curl -X POST 'https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"slug": "string",
"data": {},
"seo_title": "string",
"seo_description": "string",
"og_image_url": "string",
"sort": 0,
"publish_at": "string"
}'Python
import httpx
resp = httpx.post(
"https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={"slug": "string", "data": {}, "seo_title": "string", "seo_description": "string", "og_image_url": "string", "sort": 0, "publish_at": "string"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records", {
method: "POST",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({"slug": "string", "data": {}, "seo_title": "string", "seo_description": "string", "og_image_url": "string", "sort": 0, "publish_at": "string"})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"slug": "string", "data": {}, "seo_title": "string", "seo_description": "string", "og_image_url": "string", "sort": 0, "publish_at": "string"}`)
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records", 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 |
|---|---|
201 | Successful Response |
422 | Validation Error |
Bulk Create Records
Create 1–100 draft records ATOMICALLY (one transaction). Every record is validated before any insert — ANY failure 422s the whole batch and inserts nothing. Enforces the max_records cap for the full batch size.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | string | true |
Try it
Examples
cURL
curl -X POST 'https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records/bulk' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"records": [
{
"slug": "string",
"data": {},
"seo_title": "string",
"seo_description": "string",
"og_image_url": "string",
"sort": 0,
"publish_at": "string"
}
]
}'Python
import httpx
resp = httpx.post(
"https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records/bulk",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={"records": [{"slug": "string", "data": {}, "seo_title": "string", "seo_description": "string", "og_image_url": "string", "sort": 0, "publish_at": "string"}]},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records/bulk", {
method: "POST",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({"records": [{"slug": "string", "data": {}, "seo_title": "string", "seo_description": "string", "og_image_url": "string", "sort": 0, "publish_at": "string"}]})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"records": [{"slug": "string", "data": {}, "seo_title": "string", "seo_description": "string", "og_image_url": "string", "sort": 0, "publish_at": "string"}]}`)
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records/bulk", 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 |
|---|---|
201 | Successful Response |
422 | Validation Error |
Get Record
Get one record by its slug (drafts included — author surface).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | string | true | |
record_slug | path | string | true | |
format | query | any | false | Response format. json (default) and llm return JSON; yaml returns text/yaml; md returns text/markdown. Any other value is a 422. |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records/{record_slug}' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records/{record_slug}",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records/{record_slug}", {
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/dashboard/projects/{project_id}/content/collections/{slug}/records/{record_slug}", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |
Update Record
Update a record. Editing DRAFT fields (data / slug / seo / sort / publish_at) is non-destructive — no gate. A status change (publish / archive / unpublish) IS gated: pass dry_run=true for a preview + confirm_token, then call again with the token to apply.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | string | true | |
record_id | path | string | true | |
dry_run | query | boolean | false | For a status change: preview + receive a confirm_token without mutating. |
confirm_token | query | any | false | For a status change: consume a prior preview token and apply. |
Try it
Examples
cURL
curl -X PATCH 'https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records/{record_id}' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"slug": "string",
"data": {},
"seo_title": "string",
"seo_description": "string",
"og_image_url": "string",
"sort": 0,
"publish_at": "string",
"status": "string"
}'Python
import httpx
resp = httpx.patch(
"https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records/{record_id}",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={"slug": "string", "data": {}, "seo_title": "string", "seo_description": "string", "og_image_url": "string", "sort": 0, "publish_at": "string", "status": "string"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records/{record_id}", {
method: "PATCH",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({"slug": "string", "data": {}, "seo_title": "string", "seo_description": "string", "og_image_url": "string", "sort": 0, "publish_at": "string", "status": "string"})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"slug": "string", "data": {}, "seo_title": "string", "seo_description": "string", "og_image_url": "string", "sort": 0, "publish_at": "string", "status": "string"}`)
req, _ := http.NewRequest("PATCH", "https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records/{record_id}", 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 |
422 | Validation Error |
Delete Record
Delete one record — DESTRUCTIVE. Gated via dry_run/confirm_token.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
slug | path | string | true | |
record_id | path | string | true | |
dry_run | query | boolean | false | Preview the delete + receive a confirm_token without mutating. |
confirm_token | query | any | false | Consume a prior preview token and perform the delete. |
Try it
Examples
cURL
curl -X DELETE 'https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records/{record_id}' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.delete(
"https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records/{record_id}",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records/{record_id}", {
method: "DELETE",
headers: { "Authorization": "Bearer <token>" }
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
)
func main() {
req, _ := http.NewRequest("DELETE", "https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/collections/{slug}/records/{record_id}", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
422 | Validation Error |