SSpiderIQ
SSpiderIQ

Docs / api-reference/content-studio-agent-skins

Content Studio - Agent Skins

6 endpoints from the published OpenAPI import.

POST/api/v1/dashboard/content/agent-skins

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

NameInTypeRequiredDescription
dry_runquerybooleanfalsePreview the create + receive a confirm_token without mutating.
confirm_tokenqueryanyfalseConsume a prior preview token and perform the create.
Try it
Query

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

StatusDescription
201Successful Response
422Validation Error
GET/api/v1/dashboard/content/agent-skins/mine

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

NameInTypeRequiredDescription
limitqueryintegerfalse
offsetqueryintegerfalse
Try it
Query

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

StatusDescription
200Successful Response
422Validation Error
POST/api/v1/dashboard/content/agent-skins/mine

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

NameInTypeRequiredDescription
dry_runquerybooleanfalsePreview the create + receive a confirm_token without mutating.
confirm_tokenqueryanyfalseConsume a prior preview token and perform the create.
Try it
Query

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

StatusDescription
201Successful Response
422Validation Error
POST/api/v1/dashboard/projects/{project_id}/content/agent-skins

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

NameInTypeRequiredDescription
dry_runquerybooleanfalsePreview the create + receive a confirm_token without mutating.
confirm_tokenqueryanyfalseConsume a prior preview token and perform the create.
Try it
Query

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

StatusDescription
201Successful Response
422Validation Error
GET/api/v1/dashboard/projects/{project_id}/content/agent-skins/mine

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

NameInTypeRequiredDescription
limitqueryintegerfalse
offsetqueryintegerfalse
Try it
Query

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

StatusDescription
200Successful Response
422Validation Error
POST/api/v1/dashboard/projects/{project_id}/content/agent-skins/mine

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

NameInTypeRequiredDescription
dry_runquerybooleanfalsePreview the create + receive a confirm_token without mutating.
confirm_tokenqueryanyfalseConsume a prior preview token and perform the create.
Try it
Query

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

StatusDescription
201Successful Response
422Validation Error