Dashboard Client
17 endpoints from the published OpenAPI import.
Submit Spider Maps Job
Submit a SpiderMaps job via dashboard session auth.
This wraps the existing job submission logic but uses session cookies instead of Bearer token authentication.
Try it
Examples
cURL
curl -X POST 'https://spideriq.ai/api/v1/dashboard/client/jobs/spiderMaps/submit' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{}'Python
import httpx
resp = httpx.post(
"https://spideriq.ai/api/v1/dashboard/client/jobs/spiderMaps/submit",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/client/jobs/spiderMaps/submit", {
method: "POST",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{}`)
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/v1/dashboard/client/jobs/spiderMaps/submit", 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 |
List Client Jobs
List jobs for the authenticated client user.
Multi-tenant scoping per resolve_client_scope:
- super_admin without scope header → all jobs (unfiltered)
- super_admin + X-Selected-Client-Id → that client's jobs
- super_admin + X-Brand-ID → all jobs in that brand
- non-super_admin with client_id → that client's jobs
- non-super_admin with brand_id → all jobs in their brand
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | false | |
page_size | query | integer | false | |
type_filter | query | any | false | |
status_filter | query | any | false |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/client/jobs' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/dashboard/client/jobs",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/client/jobs", {
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/client/jobs", 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 |
Get Job Status
Get status for a specific job.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
job_id | path | string | true |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/client/jobs/{job_id}/status' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/dashboard/client/jobs/{job_id}/status",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/client/jobs/{job_id}/status", {
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/client/jobs/{job_id}/status", 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 |
Get Job Results
Get results for a completed job.
Multi-tenant scoping per resolve_client_scope:
- super_admin (any scope) → any job
- non-super_admin with client_id or brand_id → only their client/brand
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
job_id | path | string | true |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/client/jobs/{job_id}/results' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/dashboard/client/jobs/{job_id}/results",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/client/jobs/{job_id}/results", {
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/client/jobs/{job_id}/results", 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 |
Cancel Job
Cancel a queued or processing job.
Multi-tenant scoping per resolve_client_scope:
- super_admin (any scope) → any job
- non-super_admin with client_id or brand_id → only their client/brand
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
job_id | path | string | true |
Try it
Examples
cURL
curl -X POST 'https://spideriq.ai/api/v1/dashboard/client/jobs/{job_id}/cancel' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.post(
"https://spideriq.ai/api/v1/dashboard/client/jobs/{job_id}/cancel",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/client/jobs/{job_id}/cancel", {
method: "POST",
headers: { "Authorization": "Bearer <token>" }
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
)
func main() {
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/v1/dashboard/client/jobs/{job_id}/cancel", 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 |
Submit Company Research
Submit a company research job via dashboard session auth.
Supports both super_admin (with X-Selected-Client-Id header) and client users.
Try it
Examples
cURL
curl -X POST 'https://spideriq.ai/api/v1/dashboard/client/research/submit' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{}'Python
import httpx
resp = httpx.post(
"https://spideriq.ai/api/v1/dashboard/client/research/submit",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/client/research/submit", {
method: "POST",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{}`)
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/v1/dashboard/client/research/submit", 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 |
List Company Research
List company research jobs for the authenticated user.
Multi-tenant scoping per resolve_client_scope:
- super_admin without scope → all research jobs
- super_admin + X-Selected-Client-Id → that client's research
- super_admin + X-Brand-ID → all research in brand
- non-super_admin with client_id → that client's research
- non-super_admin with brand_id → all research in their brand
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | false | |
page_size | query | integer | false | |
status | query | any | false |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/client/research' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/dashboard/client/research",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/client/research", {
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/client/research", 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 |
Get Research Status
Get status for a specific research job.
Multi-tenant scoping per resolve_client_scope:
- super_admin (any scope) → any research
- non-super_admin → only their client's or brand's research
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
research_id | path | string | true |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/client/research/{research_id}/status' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/dashboard/client/research/{research_id}/status",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/client/research/{research_id}/status", {
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/client/research/{research_id}/status", 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 |
Get Research Results
Get results for a completed research job.
Multi-tenant scoping per resolve_client_scope:
- super_admin (any scope) → any research
- non-super_admin → only their client's or brand's research
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
research_id | path | string | true |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/client/research/{research_id}/results' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/dashboard/client/research/{research_id}/results",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/client/research/{research_id}/results", {
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/client/research/{research_id}/results", 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 |
Pause Research
Pause a running research job.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
research_id | path | string | true |
Try it
Examples
cURL
curl -X POST 'https://spideriq.ai/api/v1/dashboard/client/research/{research_id}/pause' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.post(
"https://spideriq.ai/api/v1/dashboard/client/research/{research_id}/pause",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/client/research/{research_id}/pause", {
method: "POST",
headers: { "Authorization": "Bearer <token>" }
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
)
func main() {
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/v1/dashboard/client/research/{research_id}/pause", 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 |
Resume Research
Resume a paused research job.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
research_id | path | string | true |
Try it
Examples
cURL
curl -X POST 'https://spideriq.ai/api/v1/dashboard/client/research/{research_id}/resume' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.post(
"https://spideriq.ai/api/v1/dashboard/client/research/{research_id}/resume",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/client/research/{research_id}/resume", {
method: "POST",
headers: { "Authorization": "Bearer <token>" }
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
)
func main() {
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/v1/dashboard/client/research/{research_id}/resume", 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 |
Cancel Research
Cancel a research job.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
research_id | path | string | true |
Try it
Examples
cURL
curl -X POST 'https://spideriq.ai/api/v1/dashboard/client/research/{research_id}/cancel' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.post(
"https://spideriq.ai/api/v1/dashboard/client/research/{research_id}/cancel",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/client/research/{research_id}/cancel", {
method: "POST",
headers: { "Authorization": "Bearer <token>" }
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
)
func main() {
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/v1/dashboard/client/research/{research_id}/cancel", 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 Countries Dashboard
List all available countries with location counts.
Used for campaign creation country dropdown.
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/client/locations/countries' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/dashboard/client/locations/countries",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/client/locations/countries", {
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/client/locations/countries", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
List Selectable Units Dashboard
Flat, alphabetically merged list of selectable geo units for searchable pickers (the "smart box" typeahead).
Each unit is either a whole country (kind="country") or a US state (kind="state"). When states_as_units is true the US country row is omitted and its states are injected as top-level units, side by side with countries — type "flor" → Florida, "germ" → Germany. This makes selecting "the whole USA" impossible by construction (the volume guard is the backstop). When false, every country (US included) is returned as-is.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
states_as_units | query | boolean | false | When true, countries in the states-as-units set (US) are dropped and replaced by their admin regions (states) as top-level selectable units — so 'all of USA' cannot be picked for a ZIP campaign. When false, returns plain countries (US included as a whole) — for address/attribute pickers where the country is the correct unit. |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/client/locations/selectable-units' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/dashboard/client/locations/selectable-units",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/client/locations/selectable-units", {
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/client/locations/selectable-units", 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 Regions Dashboard
List all admin regions (states/provinces) for a country.
Used for campaign creation region filter.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
country_code | query | string | true |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/client/locations/regions' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/dashboard/client/locations/regions",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/client/locations/regions", {
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/client/locations/regions", 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 |
Get Country Stats Dashboard
Get location statistics for a country.
Used to show how many locations match different filter modes.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
country_code | query | string | true |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/client/locations/stats' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/dashboard/client/locations/stats",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/client/locations/stats", {
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/client/locations/stats", 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 Locations Dashboard
List locations with filtering and pagination.
Used for campaign creation location selection (custom mode).
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
country_code | query | any | false | |
search | query | any | false | |
location_type | query | any | false | |
page | query | integer | false | |
page_size | query | integer | false |
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/dashboard/client/locations' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/dashboard/client/locations",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/dashboard/client/locations", {
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/client/locations", 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 |