Auth Profile
8 endpoints from the published OpenAPI import.
Get User Me
Get current user's full profile including brand memberships.
This endpoint is used by the settings page to display user info and the list of brands the user belongs to.
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/auth/me' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/auth/me",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/auth/me", {
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/auth/me", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
Update Profile
Update the current user's profile fields.
Updatable fields: firstname, lastname, mobile
Try it
Examples
cURL
curl -X PATCH 'https://spideriq.ai/api/v1/auth/profile' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"firstname": "string",
"lastname": "string",
"mobile": "string"
}'Python
import httpx
resp = httpx.patch(
"https://spideriq.ai/api/v1/auth/profile",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={"firstname": "string", "lastname": "string", "mobile": "string"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/auth/profile", {
method: "PATCH",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({"firstname": "string", "lastname": "string", "mobile": "string"})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"firstname": "string", "lastname": "string", "mobile": "string"}`)
req, _ := http.NewRequest("PATCH", "https://spideriq.ai/api/v1/auth/profile", 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 |
Upload Profile Photo
Upload a profile photo.
Accepts: image/png, image/jpeg, image/gif, image/svg+xml Max size: 2MB Stored as base64 data URL in database.
Try it
Examples
cURL
curl -X POST 'https://spideriq.ai/api/v1/auth/profile/photo' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"file": "string"
}'Python
import httpx
resp = httpx.post(
"https://spideriq.ai/api/v1/auth/profile/photo",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={"file": "string"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/auth/profile/photo", {
method: "POST",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({"file": "string"})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"file": "string"}`)
req, _ := http.NewRequest("POST", "https://spideriq.ai/api/v1/auth/profile/photo", 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 |
Remove Profile Photo
Remove the current user's profile photo.
Try it
Examples
cURL
curl -X DELETE 'https://spideriq.ai/api/v1/auth/profile/photo' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.delete(
"https://spideriq.ai/api/v1/auth/profile/photo",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/auth/profile/photo", {
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/auth/profile/photo", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
Get Connectors
Get list of OAuth providers connected to this account.
Returns providers like 'google', 'github' with connection status.
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/auth/connectors' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/auth/connectors",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/auth/connectors", {
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/auth/connectors", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
List projects the caller can operate on
Returns every workspace (project) the authenticated caller has access to. Used by spideriq use <project> to resolve a project name and write ./spideriq.json for per-session binding (Phase 11+12 Lock 3).
- api_client / PAT: returns the single client the token is scoped to.
- client_user / brand_admin: returns clients they are provisioned for.
- super_admin: returns all active clients.
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/auth/workspaces' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/auth/workspaces",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/auth/workspaces", {
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/auth/workspaces", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
Who am I + which project is my token bound to?
Unified identity endpoint for agents and dashboard users. Returns the current client_id plus human-readable project_name so an agent can verify its binding before a destructive deploy. Expired PATs receive a distinguishable {error: 'token_expired'} 401 instead of a generic 'invalid token' message.
Try it
Examples
cURL
curl -X GET 'https://spideriq.ai/api/v1/auth/whoami' \
-H 'Authorization: Bearer <token>'Python
import httpx
resp = httpx.get(
"https://spideriq.ai/api/v1/auth/whoami",
headers={"Authorization": "Bearer <token>"},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/auth/whoami", {
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/auth/whoami", nil)
req.Header.Set("Authorization", "Bearer <token>")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
}Responses
| Status | Description |
|---|---|
200 | Successful Response |
Patch Notifications Dnd
Update the caller's DND/timezone fields on dashboard_users.
Used by the Notifications settings tab Card 1. Quiet hours are interpreted in the user's timezone by the sidecar (slice 3.2), so all three (tz, start, end) move together — clients re-send the timezone whenever they change it, but absent fields preserve the existing value. Setting clear_window=true clears both dnd_start and dnd_end together (the only way to disable quiet hours).
Try it
Examples
cURL
curl -X PATCH 'https://spideriq.ai/api/v1/auth/me/notifications-dnd' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"timezone": "string",
"dnd_start": "string",
"dnd_end": "string",
"dnd_days_off": 0,
"clear_window": false
}'Python
import httpx
resp = httpx.patch(
"https://spideriq.ai/api/v1/auth/me/notifications-dnd",
headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
json={"timezone": "string", "dnd_start": "string", "dnd_end": "string", "dnd_days_off": 0, "clear_window": false},
)
resp.raise_for_status()
print(resp.json())JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/auth/me/notifications-dnd", {
method: "PATCH",
headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
body: JSON.stringify({"timezone": "string", "dnd_start": "string", "dnd_end": "string", "dnd_days_off": 0, "clear_window": false})
});
const data = await resp.json();
console.log(data);Go
package main
import (
"net/http"
"strings"
)
func main() {
body := strings.NewReader(`{"timezone": "string", "dnd_start": "string", "dnd_end": "string", "dnd_days_off": 0, "clear_window": false}`)
req, _ := http.NewRequest("PATCH", "https://spideriq.ai/api/v1/auth/me/notifications-dnd", 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 |