Auth Profile

Base URL https://api.example.com
GET /api/v1/auth/me

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.

Responses
  • 200Successful Response
GET /api/v1/auth/me
curl -X GET 'https://api.example.com/api/v1/auth/me' \
  -H 'Authorization: Bearer '
import httpx

resp = httpx.get(
    "https://api.example.com/api/v1/auth/me",
    headers={"Authorization": "Bearer "},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.example.com/api/v1/auth/me", {
  method: "GET",
  headers: { "Authorization": "Bearer " }
});
const data = await resp.json();
console.log(data);
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://api.example.com/api/v1/auth/me", nil)
	req.Header.Set("Authorization", "Bearer ")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}
PATCH /api/v1/auth/profile

Update Profile

Update the current user's profile fields. Updatable fields: firstname, lastname, mobile

Responses
  • 200Successful Response
  • 422Validation Error
PATCH /api/v1/auth/profile
curl -X PATCH 'https://api.example.com/api/v1/auth/profile' \
  -H 'Authorization: Bearer ' \
  -H 'Content-Type: application/json' \
  -d '{
  "firstname": "string",
  "lastname": "string",
  "mobile": "string"
}'
import httpx

resp = httpx.patch(
    "https://api.example.com/api/v1/auth/profile",
    headers={"Authorization": "Bearer ", "Content-Type": "application/json"},
    json={"firstname": "string", "lastname": "string", "mobile": "string"},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.example.com/api/v1/auth/profile", {
  method: "PATCH",
  headers: { "Authorization": "Bearer ", "Content-Type": "application/json" },
  body: JSON.stringify({"firstname": "string", "lastname": "string", "mobile": "string"})
});
const data = await resp.json();
console.log(data);
package main

import (
	"net/http"
	"strings"
)

func main() {
	body := strings.NewReader(`{"firstname": "string", "lastname": "string", "mobile": "string"}`)
	req, _ := http.NewRequest("PATCH", "https://api.example.com/api/v1/auth/profile", body)
	req.Header.Set("Authorization", "Bearer ")
	req.Header.Set("Content-Type", "application/json")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}
Request body
{"mobile":"string","lastname":"string","firstname":"string"}
POST /api/v1/auth/profile/photo

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.

Responses
  • 200Successful Response
  • 422Validation Error
POST /api/v1/auth/profile/photo
curl -X POST 'https://api.example.com/api/v1/auth/profile/photo' \
  -H 'Authorization: Bearer ' \
  -H 'Content-Type: application/json' \
  -d '{
  "file": "string"
}'
import httpx

resp = httpx.post(
    "https://api.example.com/api/v1/auth/profile/photo",
    headers={"Authorization": "Bearer ", "Content-Type": "application/json"},
    json={"file": "string"},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.example.com/api/v1/auth/profile/photo", {
  method: "POST",
  headers: { "Authorization": "Bearer ", "Content-Type": "application/json" },
  body: JSON.stringify({"file": "string"})
});
const data = await resp.json();
console.log(data);
package main

import (
	"net/http"
	"strings"
)

func main() {
	body := strings.NewReader(`{"file": "string"}`)
	req, _ := http.NewRequest("POST", "https://api.example.com/api/v1/auth/profile/photo", body)
	req.Header.Set("Authorization", "Bearer ")
	req.Header.Set("Content-Type", "application/json")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}
Request body
{"file":"string"}
DELETE /api/v1/auth/profile/photo

Remove Profile Photo

Remove the current user's profile photo.

Responses
  • 200Successful Response
DELETE /api/v1/auth/profile/photo
curl -X DELETE 'https://api.example.com/api/v1/auth/profile/photo' \
  -H 'Authorization: Bearer '
import httpx

resp = httpx.delete(
    "https://api.example.com/api/v1/auth/profile/photo",
    headers={"Authorization": "Bearer "},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.example.com/api/v1/auth/profile/photo", {
  method: "DELETE",
  headers: { "Authorization": "Bearer " }
});
const data = await resp.json();
console.log(data);
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("DELETE", "https://api.example.com/api/v1/auth/profile/photo", nil)
	req.Header.Set("Authorization", "Bearer ")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}
GET /api/v1/auth/connectors

Get Connectors

Get list of OAuth providers connected to this account. Returns providers like 'google', 'github' with connection status.

Responses
  • 200Successful Response
GET /api/v1/auth/connectors
curl -X GET 'https://api.example.com/api/v1/auth/connectors' \
  -H 'Authorization: Bearer '
import httpx

resp = httpx.get(
    "https://api.example.com/api/v1/auth/connectors",
    headers={"Authorization": "Bearer "},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.example.com/api/v1/auth/connectors", {
  method: "GET",
  headers: { "Authorization": "Bearer " }
});
const data = await resp.json();
console.log(data);
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://api.example.com/api/v1/auth/connectors", nil)
	req.Header.Set("Authorization", "Bearer ")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}
GET /api/v1/auth/workspaces

List projects the caller can operate on

Returns every workspace (project) the authenticated caller has access to. Used by `spideriq use ` 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.

Responses
  • 200Successful Response
GET /api/v1/auth/workspaces
curl -X GET 'https://api.example.com/api/v1/auth/workspaces' \
  -H 'Authorization: Bearer '
import httpx

resp = httpx.get(
    "https://api.example.com/api/v1/auth/workspaces",
    headers={"Authorization": "Bearer "},
)
resp.raise_for_status()
print(resp.json())
const resp = await fetch("https://api.example.com/api/v1/auth/workspaces", {
  method: "GET",
  headers: { "Authorization": "Bearer " }
});
const data = await resp.json();
console.log(data);
package main

import (
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://api.example.com/api/v1/auth/workspaces", nil)
	req.Header.Set("Authorization", "Bearer ")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}