Skip to main content

1 · Get an API key

Sign in to verseodin.com/dashboard, open Settings → API keys, click Generate key. Copy the vso_… value out of the modal immediately — it’s shown exactly once. If you lose it, revoke and generate a new one.
Anyone with your key can read every metric on every universe you own (and call your Claude / MCP connector). Store it like a database password — env vars, secrets manager, never committed to git.

2 · Make your first call

The discovery endpoint is the cheapest way to confirm auth works:
curl -H "Authorization: Bearer vso_xxx" \
  https://verseodin.com/api/v1/metrics
Expected response — a list of every metric column you can query:
{
  "data": [
    "ai_trust_mentions",
    "ai_avg_trust_position",
    "geo_competitor_analysis",
    "prompts_rows",
    "..."
  ]
}

3 · List your universes

curl -H "Authorization: Bearer vso_xxx" \
  https://verseodin.com/api/v1/universes
The id field on each entry is what you’ll pass to every other endpoint:
{
  "count": 3,
  "universes": [
    {
      "id": "7f45877a-0e8e-498f-bd7f-5e70ef65a2de",
      "universe_name": "Verseodin",
      "website": "https://verseodin.com/",
      "status": "completed",
      "latest_day": "2026-04-27"
    }
  ]
}

4 · Pull a metric

Pick a universe, pick a metric, pick a day:
curl -H "Authorization: Bearer vso_xxx" \
  "https://verseodin.com/api/v1/universes/<id>/metrics/ai_avg_trust_position?day=2026-04-27"
{
  "metric": "ai_avg_trust_position",
  "results": [
    { "day": "2026-04-27", "engine": "chatgpt", "value": 9 }
  ]
}

5 · Pull the AI answer + citations for a prompt

curl -H "Authorization: Bearer vso_xxx" \
  "https://verseodin.com/api/v1/universes/<id>/prompts?day=2026-04-27&status=completed&limit=3"
The data[].response_text field contains the full AI answer body, and data[].my_citations / data[].competitor_citations carry the URLs the AI cited.

What’s next

Authentication

Header format, key rotation, leak playbook.

Rate limits

60 req/min/key. Headers and 429 handling.

Errors

Stripe-style envelope. Status code → error type table.

Data model

Universes → history → prompts. Where each column comes from.