Content Studio - Agent Skins
6 endpoints from the published OpenAPI import.
Import Agent Skin
Transform a WidgetTheme → a GLOBAL marketplace agent skin and persist it (delegates to create_component). Admin/authoring-brand only. 201 on create; preview envelope on dry_run.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
dry_run | query | boolean | false | Preview the create + receive a confirm_token without mutating. |
confirm_token | query | any | false | Consume a prior preview token and perform the create. |
Try it
Examples
cURL
curl -X POST 'https://spideriq.ai/api/v1/dashboard/content/agent-skins' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"theme": {
"version": 1,
"id": "string",
"name": "string",
"colors": {
"primary": "string",
"primaryHover": "string",
"background": "string",
"backgroundSecondary": "string",
"text": "string",
"textSecondary": "string",
"border": "string",
"userBubble": "string",
"userText": "string",
"botBubble": "string",
"botText": "string"
},
"fonts": {
"body": {},
"heading": {}
},
"borders": {
"radius": {}
},
"extensions": {
"radius": {},
"fontBody": {},
"fontHeading": {},
"personaBg": {},
"personaFg": {},
"personaAccent": {},
"launcherSize": {}
}
},
"form_factor": "section",
"name": "string",
"description": "string",
"role": "sdr",
"widgets": [
"lead-list"
]
}'Python
import httpx
resp = httpx.post(
"https://spideriq.ai/api/v1/dashboard/content/agent-skins",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={"theme": {"version": 1, "id": "string", "name": "string", "colors": {"primary": "string", "primaryHover": "string", "background": "string", "backgroundSecondary": "string", "text": "string", "textSecondary": "string", "border": "string", "userBubble": "string", "userText": "string", "botBubble": "string", "botText": "string"}, "fonts": {"body": {}, "heading": {}}, "borders": {"radius": {}}, "extensions": {"radius": {}, "fontBody": {}, "fontHeading": {}, "personaBg": {}, "personaFg": {}, "personaAccent": {}, "launcherSize": {}}}, "form_factor": "section", "name": "string", "description": "string", "role": "sdr", "widgets": ["lead-list"]},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/content/agent-skins", {
method: "POST",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({"theme": {"version": 1, "id": "string", "name": "string", "colors": {"primary": "string", "primaryHover": "string", "background": "string", "backgroundSecondary": "string", "text": "string", "textSecondary": "string", "border": "string", "userBubble": "string", "userText": "string", "botBubble": "string", "botText": "string"}, "fonts": {"body": {}, "heading": {}}, "borders": {"radius": {}}, "extensions": {"radius": {}, "fontBody": {}, "fontHeading": {}, "personaBg": {}, "personaFg": {}, "personaAccent": {}, "launcherSize": {}}}, "form_factor": "section", "name": "string", "description": "string", "role": "sdr", "widgets": ["lead-list"]})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"theme": {"version": 1, "id": "string", "name": "string", "colors": {"primary": "string", "primaryHover": "string", "background": "string", "backgroundSecondary": "string", "text": "string", "textSecondary": "string", "border": "string", "userBubble": "string", "userText": "string", "botBubble": "string", "botText": "string"}, "fonts": {"body": {}, "heading": {}}, "borders": {"radius": {}}, "extensions": {"radius": {}, "fontBody": {}, "fontHeading": {}, "personaBg": {}, "personaFg": {}, "personaAccent": {}, "launcherSize": {}}}, "form_factor": "section", "name": "string", "description": "string", "role": "sdr", "widgets": ["lead-list"]}`)
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/v1/dashboard/content/agent-skins", 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 |
List My Agent Skins
D.2 — list the caller tenant's OWN agent skins (per-tenant rows). Filters by category='agent' with include_global=False so ONLY this client's own rows come back — never the global marketplace baseline, and never another tenant's skins (cross-tenant isolation).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
limit | query | integer | false | |
offset | query | integer | false |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/content/agent-skins/mine' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/dashboard/content/agent-skins/mine",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/content/agent-skins/mine", {
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/agent-skins/mine", 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 |
Import My Agent Skin
D.2 — a CLIENT designs a skin for THEIR OWN agent. Same transform as the admin lane, but the owner is the caller's OWN brand → the row stays per-tenant (is_global=false); it never enters the global marketplace. 201 on create; preview envelope on dry_run.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
dry_run | query | boolean | false | Preview the create + receive a confirm_token without mutating. |
confirm_token | query | any | false | Consume a prior preview token and perform the create. |
Try it
Examples
cURL
curl -X POST 'https://spideriq.ai/api/v1/dashboard/content/agent-skins/mine' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"theme": {
"version": 1,
"id": "string",
"name": "string",
"colors": {
"primary": "string",
"primaryHover": "string",
"background": "string",
"backgroundSecondary": "string",
"text": "string",
"textSecondary": "string",
"border": "string",
"userBubble": "string",
"userText": "string",
"botBubble": "string",
"botText": "string"
},
"fonts": {
"body": {},
"heading": {}
},
"borders": {
"radius": {}
},
"extensions": {
"radius": {},
"fontBody": {},
"fontHeading": {},
"personaBg": {},
"personaFg": {},
"personaAccent": {},
"launcherSize": {}
}
},
"form_factor": "section",
"name": "string",
"description": "string",
"role": "sdr",
"widgets": [
"lead-list"
]
}'Python
import httpx
resp = httpx.post(
"https://spideriq.ai/api/v1/dashboard/content/agent-skins/mine",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={"theme": {"version": 1, "id": "string", "name": "string", "colors": {"primary": "string", "primaryHover": "string", "background": "string", "backgroundSecondary": "string", "text": "string", "textSecondary": "string", "border": "string", "userBubble": "string", "userText": "string", "botBubble": "string", "botText": "string"}, "fonts": {"body": {}, "heading": {}}, "borders": {"radius": {}}, "extensions": {"radius": {}, "fontBody": {}, "fontHeading": {}, "personaBg": {}, "personaFg": {}, "personaAccent": {}, "launcherSize": {}}}, "form_factor": "section", "name": "string", "description": "string", "role": "sdr", "widgets": ["lead-list"]},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/content/agent-skins/mine", {
method: "POST",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({"theme": {"version": 1, "id": "string", "name": "string", "colors": {"primary": "string", "primaryHover": "string", "background": "string", "backgroundSecondary": "string", "text": "string", "textSecondary": "string", "border": "string", "userBubble": "string", "userText": "string", "botBubble": "string", "botText": "string"}, "fonts": {"body": {}, "heading": {}}, "borders": {"radius": {}}, "extensions": {"radius": {}, "fontBody": {}, "fontHeading": {}, "personaBg": {}, "personaFg": {}, "personaAccent": {}, "launcherSize": {}}}, "form_factor": "section", "name": "string", "description": "string", "role": "sdr", "widgets": ["lead-list"]})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"theme": {"version": 1, "id": "string", "name": "string", "colors": {"primary": "string", "primaryHover": "string", "background": "string", "backgroundSecondary": "string", "text": "string", "textSecondary": "string", "border": "string", "userBubble": "string", "userText": "string", "botBubble": "string", "botText": "string"}, "fonts": {"body": {}, "heading": {}}, "borders": {"radius": {}}, "extensions": {"radius": {}, "fontBody": {}, "fontHeading": {}, "personaBg": {}, "personaFg": {}, "personaAccent": {}, "launcherSize": {}}}, "form_factor": "section", "name": "string", "description": "string", "role": "sdr", "widgets": ["lead-list"]}`)
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/v1/dashboard/content/agent-skins/mine", 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 |
Import Agent Skin
Transform a WidgetTheme → a GLOBAL marketplace agent skin and persist it (delegates to create_component). Admin/authoring-brand only. 201 on create; preview envelope on dry_run.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
dry_run | query | boolean | false | Preview the create + receive a confirm_token without mutating. |
confirm_token | query | any | false | Consume a prior preview token and perform the create. |
Try it
Examples
cURL
curl -X POST 'https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/agent-skins' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"theme": {
"version": 1,
"id": "string",
"name": "string",
"colors": {
"primary": "string",
"primaryHover": "string",
"background": "string",
"backgroundSecondary": "string",
"text": "string",
"textSecondary": "string",
"border": "string",
"userBubble": "string",
"userText": "string",
"botBubble": "string",
"botText": "string"
},
"fonts": {
"body": {},
"heading": {}
},
"borders": {
"radius": {}
},
"extensions": {
"radius": {},
"fontBody": {},
"fontHeading": {},
"personaBg": {},
"personaFg": {},
"personaAccent": {},
"launcherSize": {}
}
},
"form_factor": "section",
"name": "string",
"description": "string",
"role": "sdr",
"widgets": [
"lead-list"
]
}'Python
import httpx
resp = httpx.post(
"https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/agent-skins",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={"theme": {"version": 1, "id": "string", "name": "string", "colors": {"primary": "string", "primaryHover": "string", "background": "string", "backgroundSecondary": "string", "text": "string", "textSecondary": "string", "border": "string", "userBubble": "string", "userText": "string", "botBubble": "string", "botText": "string"}, "fonts": {"body": {}, "heading": {}}, "borders": {"radius": {}}, "extensions": {"radius": {}, "fontBody": {}, "fontHeading": {}, "personaBg": {}, "personaFg": {}, "personaAccent": {}, "launcherSize": {}}}, "form_factor": "section", "name": "string", "description": "string", "role": "sdr", "widgets": ["lead-list"]},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/agent-skins", {
method: "POST",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({"theme": {"version": 1, "id": "string", "name": "string", "colors": {"primary": "string", "primaryHover": "string", "background": "string", "backgroundSecondary": "string", "text": "string", "textSecondary": "string", "border": "string", "userBubble": "string", "userText": "string", "botBubble": "string", "botText": "string"}, "fonts": {"body": {}, "heading": {}}, "borders": {"radius": {}}, "extensions": {"radius": {}, "fontBody": {}, "fontHeading": {}, "personaBg": {}, "personaFg": {}, "personaAccent": {}, "launcherSize": {}}}, "form_factor": "section", "name": "string", "description": "string", "role": "sdr", "widgets": ["lead-list"]})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"theme": {"version": 1, "id": "string", "name": "string", "colors": {"primary": "string", "primaryHover": "string", "background": "string", "backgroundSecondary": "string", "text": "string", "textSecondary": "string", "border": "string", "userBubble": "string", "userText": "string", "botBubble": "string", "botText": "string"}, "fonts": {"body": {}, "heading": {}}, "borders": {"radius": {}}, "extensions": {"radius": {}, "fontBody": {}, "fontHeading": {}, "personaBg": {}, "personaFg": {}, "personaAccent": {}, "launcherSize": {}}}, "form_factor": "section", "name": "string", "description": "string", "role": "sdr", "widgets": ["lead-list"]}`)
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/agent-skins", 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 |
List My Agent Skins
D.2 — list the caller tenant's OWN agent skins (per-tenant rows). Filters by category='agent' with include_global=False so ONLY this client's own rows come back — never the global marketplace baseline, and never another tenant's skins (cross-tenant isolation).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
limit | query | integer | false | |
offset | query | integer | false |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/agent-skins/mine' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/agent-skins/mine",
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/agent-skins/mine", {
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/agent-skins/mine", 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 |
Import My Agent Skin
D.2 — a CLIENT designs a skin for THEIR OWN agent. Same transform as the admin lane, but the owner is the caller's OWN brand → the row stays per-tenant (is_global=false); it never enters the global marketplace. 201 on create; preview envelope on dry_run.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
dry_run | query | boolean | false | Preview the create + receive a confirm_token without mutating. |
confirm_token | query | any | false | Consume a prior preview token and perform the create. |
Try it
Examples
cURL
curl -X POST 'https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/agent-skins/mine' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"theme": {
"version": 1,
"id": "string",
"name": "string",
"colors": {
"primary": "string",
"primaryHover": "string",
"background": "string",
"backgroundSecondary": "string",
"text": "string",
"textSecondary": "string",
"border": "string",
"userBubble": "string",
"userText": "string",
"botBubble": "string",
"botText": "string"
},
"fonts": {
"body": {},
"heading": {}
},
"borders": {
"radius": {}
},
"extensions": {
"radius": {},
"fontBody": {},
"fontHeading": {},
"personaBg": {},
"personaFg": {},
"personaAccent": {},
"launcherSize": {}
}
},
"form_factor": "section",
"name": "string",
"description": "string",
"role": "sdr",
"widgets": [
"lead-list"
]
}'Python
import httpx
resp = httpx.post(
"https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/agent-skins/mine",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={"theme": {"version": 1, "id": "string", "name": "string", "colors": {"primary": "string", "primaryHover": "string", "background": "string", "backgroundSecondary": "string", "text": "string", "textSecondary": "string", "border": "string", "userBubble": "string", "userText": "string", "botBubble": "string", "botText": "string"}, "fonts": {"body": {}, "heading": {}}, "borders": {"radius": {}}, "extensions": {"radius": {}, "fontBody": {}, "fontHeading": {}, "personaBg": {}, "personaFg": {}, "personaAccent": {}, "launcherSize": {}}}, "form_factor": "section", "name": "string", "description": "string", "role": "sdr", "widgets": ["lead-list"]},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/agent-skins/mine", {
method: "POST",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({"theme": {"version": 1, "id": "string", "name": "string", "colors": {"primary": "string", "primaryHover": "string", "background": "string", "backgroundSecondary": "string", "text": "string", "textSecondary": "string", "border": "string", "userBubble": "string", "userText": "string", "botBubble": "string", "botText": "string"}, "fonts": {"body": {}, "heading": {}}, "borders": {"radius": {}}, "extensions": {"radius": {}, "fontBody": {}, "fontHeading": {}, "personaBg": {}, "personaFg": {}, "personaAccent": {}, "launcherSize": {}}}, "form_factor": "section", "name": "string", "description": "string", "role": "sdr", "widgets": ["lead-list"]})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"theme": {"version": 1, "id": "string", "name": "string", "colors": {"primary": "string", "primaryHover": "string", "background": "string", "backgroundSecondary": "string", "text": "string", "textSecondary": "string", "border": "string", "userBubble": "string", "userText": "string", "botBubble": "string", "botText": "string"}, "fonts": {"body": {}, "heading": {}}, "borders": {"radius": {}}, "extensions": {"radius": {}, "fontBody": {}, "fontHeading": {}, "personaBg": {}, "personaFg": {}, "personaAccent": {}, "launcherSize": {}}}, "form_factor": "section", "name": "string", "description": "string", "role": "sdr", "widgets": ["lead-list"]}`)
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/v1/dashboard/projects/{project_id}/content/agent-skins/mine", 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 |