Account overview (plan, usage, billing, api-key counts)
curl --request GET \
--url https://api.signuprisk.com/v1/dashboard/overview \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.signuprisk.com/v1/dashboard/overview', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.signuprisk.com/v1/dashboard/overview"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.signuprisk.com/v1/dashboard/overview"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"account": {
"id": "<string>",
"name": "<string>",
"status": "<string>",
"created_at": "2023-11-07T05:31:56Z"
},
"plan": {
"name": "<string>",
"billing_interval": "<string>",
"entitlement_status": "<string>",
"reason": "<string>"
},
"usage": {
"requests_used": 123,
"requests_remaining": 123,
"explanations_used": 123,
"explanations_remaining": 123,
"window_start": "<string>",
"window_end": "<string>",
"requests_limit": 123,
"explanations_limit": 123
},
"billing": {
"subscription_status": "incomplete",
"cancel_at_period_end": true,
"current_period_end": "2023-11-07T05:31:56Z"
},
"api_keys": {
"active_count": 123,
"revoked_count": 123
},
"webhooks": {
"active_count": 123
}
}{
"error": {
"code": "MISSING_API_KEY",
"message": "<string>",
"type": "authentication_error",
"request_id": "<string>",
"retryable": true,
"details": {},
"action": {
"type": "upgrade_plan",
"url": "<string>",
"label": "<string>",
"required_plan": "<string>"
},
"field_errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"retry_after_seconds": 123,
"upgrade_required": true,
"required_plan": "<string>",
"recommended_plan": "<string>"
}
}Dashboard
Account overview (plan, usage, billing, api-key counts)
GET
/
v1
/
dashboard
/
overview
Account overview (plan, usage, billing, api-key counts)
curl --request GET \
--url https://api.signuprisk.com/v1/dashboard/overview \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.signuprisk.com/v1/dashboard/overview', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.signuprisk.com/v1/dashboard/overview"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.signuprisk.com/v1/dashboard/overview"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"account": {
"id": "<string>",
"name": "<string>",
"status": "<string>",
"created_at": "2023-11-07T05:31:56Z"
},
"plan": {
"name": "<string>",
"billing_interval": "<string>",
"entitlement_status": "<string>",
"reason": "<string>"
},
"usage": {
"requests_used": 123,
"requests_remaining": 123,
"explanations_used": 123,
"explanations_remaining": 123,
"window_start": "<string>",
"window_end": "<string>",
"requests_limit": 123,
"explanations_limit": 123
},
"billing": {
"subscription_status": "incomplete",
"cancel_at_period_end": true,
"current_period_end": "2023-11-07T05:31:56Z"
},
"api_keys": {
"active_count": 123,
"revoked_count": 123
},
"webhooks": {
"active_count": 123
}
}{
"error": {
"code": "MISSING_API_KEY",
"message": "<string>",
"type": "authentication_error",
"request_id": "<string>",
"retryable": true,
"details": {},
"action": {
"type": "upgrade_plan",
"url": "<string>",
"label": "<string>",
"required_plan": "<string>"
},
"field_errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
],
"retry_after_seconds": 123,
"upgrade_required": true,
"required_plan": "<string>",
"recommended_plan": "<string>"
}
}Authorizations
Clerk dashboard session JWT. Used on dashboard, billing, playground, and admin console routes only:
Authorization: Bearer <Clerk session JWT>
These are human-session credentials, not API keys. The dashboard
frontend must never send authoritative account IDs, plan values, quota
counters, Stripe IDs, or API-key actor fields — the server derives
ownership from the session. Admin console routes additionally require
the custom admin_role claim (admin or support) on the same
verified session JWT; writes require admin.
Response
Overview.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Webhook count summary (APP-008). Counts only — never the signing secret, URL, or events.
Show child attributes
Show child attributes