Ascend API
Give your coaching practice, app, or integration access to a seeker's Arc data — with their explicit consent.
The Ascend API exposes three core data objects: a seeker's Arc Status (where they are in their 30-day transformation), Athena's Context (the behavioral intelligence Athena has built about this person), and their Moat Score (how deeply personalized their experience has become).
Every API call requires an API key generated by the seeker themselves — they own their data and explicitly grant access to each integration.
https://www.asyouascend.com/.netlify/functions/ — All endpoints require Authorization: Bearer ascend_live_...All API requests are authenticated with an API key. Keys are generated by seekers in their Ascend Settings → Integrations panel (Sovereign and Circle tiers only). Each key is tied to one seeker's data and one set of scopes.
Authorization: Bearer ascend_live_a1b2c3d4e5f6...
curl https://www.asyouascend.com/.netlify/functions/api-arc-status \ -H "Authorization: Bearer ascend_live_YOUR_KEY"
Each API key has one or more scopes that control what data it can access. Seekers choose scopes when generating a key.
| Scope | Access | Tier Required |
|---|---|---|
read:arc |
Arc day, phase, streak, sovereign score, pillar scores, next milestone | Sovereign+ |
read:sophia |
Athena's behavioral intelligence: identity words, emotional arc, resonance style, Athena summary | Circle only |
read:moat |
Moat score, breakdown, switching cost, trend | Sovereign+ |
write:moat |
Submit external observations (session notes, behaviors, milestones) that enrich the behavioral fingerprint | Circle only |
Returns a seeker's current position in their transformation Arc — day, phase, streak, scores, and next milestone.
| Field | Type | Description |
|---|---|---|
| seeker_id | string | Anonymized public ID (e.g. ask_a1b2c3d4e5f6) |
| arc_day | number | Current day in the 30-day Arc (1–365+) |
| arc_phase | string | ignition | momentum | identity | mastery | legacy |
| streak | number | Current consecutive engagement streak (days) |
| sovereign_score | number | Overall transformation score 0–100 |
| moat_score | number | Behavioral personalization depth 0–100 |
| focus_pillar | string | Their primary pillar: mind | body | spirit | wealth | love |
| pillars | object | Score 0–100 for each of the 5 pillars |
| intention | string | Their stated transformation intention |
| arc_velocity | string | accelerating | steady | plateauing | at_risk |
| next_milestone | object | { day, label, days_away } — e.g. Day 14 Identity Shift |
{
"seeker_id": "ask_a1b2c3d4e5f6",
"arc_day": 22,
"arc_phase": "identity",
"streak": 18,
"sovereign_score": 74,
"moat_score": 61,
"moat_level": "Personalized",
"focus_pillar": "wealth",
"last_active": "2026-06-26T20:14:00Z",
"pillars": {
"mind": 68, "body": 55,
"spirit": 72, "wealth": 74,
"love": 48, "habits": 61
},
"intention": "Build my first $10k month without burning out.",
"arc_velocity": "accelerating",
"next_milestone": {
"day": 30, "label": "The Seal", "days_away": 8
},
"_meta": { "api_version": "1.0", "generated_at": "2026-06-26T..." }
}
Returns Athena's distilled behavioral intelligence about a seeker — the data layer that makes Ascend's moat. Requires explicit read:sophia scope (Circle tier only).
| Field | Type | Description |
|---|---|---|
| emotional_arc | array | Last 7 mood snapshots with pillar and timestamp |
| identity_words | string[] | Words they use repeatedly about themselves across journals and Athena chats |
| commitment_words | string[] | Actions they've committed to in Athena conversations |
| pillar_narrative | object | One-sentence Athena read per pillar (e.g. "wealth is accelerating — high momentum window") |
| resonance_style | string | reflective | action | emotional | analytical |
| friction_points | string[] | Pillars or patterns where they consistently drop off |
| breakthrough_moments | array | Sealed quests and milestone completions |
| sophia_summary | string | Athena's 3-sentence AI-generated read of this person (Claude Haiku) |
| _meta.data_depth | string | How rich the data is: early → deep |
{
"seeker_id": "ask_a1b2c3d4e5f6",
"arc_day": 22,
"identity_words": ["builder", "provider", "disciplined"],
"commitment_words": ["deep work blocks", "morning ritual"],
"resonance_style": "action",
"friction_points": ["love pillar drops after high-stress weeks"],
"pillar_narrative": {
"wealth": "accelerating — high momentum window (primary focus)",
"mind": "building steadily",
"love": "declining — needs attention"
},
"sophia_summary": "This seeker is in a high-momentum wealth window, connecting morning ritual to deep work blocks with unusual consistency. Their identity is shifting from 'trying to build' to 'I am a builder' — the language changed 9 days ago. Watch the love pillar: it drops predictably after high-output weeks.",
"_meta": { "data_depth": "rich — 2-4 weeks", "sophia_sessions": 34 }
}
Returns the seeker's Moat Score — Ascend's proprietary measure of behavioral personalization depth. Also accepts POST to submit external observations that enrich the fingerprint.
| Field | Type | Description |
|---|---|---|
| moat_score | number | 0–100. The switching cost in a single number. |
| moat_level | string | Generic → Familiar → Personalized → Irreplaceable → Sovereign Intelligence |
| moat_breakdown | object | 8 sub-dimensions: behavioral_data, streak_depth, sophia_sessions, identity_markers, pattern_richness, growth_velocity, friction_mapped, resonance_depth |
| switching_cost | string | Plain-English explanation of what the seeker would lose by leaving |
| days_to_next_level | number | Estimated days to reach next Moat level at current engagement rate |
| trend | string | rising | stable | declining |
Submit an external observation (coach session note, behavior logged in a partner app, milestone, or risk flag) that enriches the seeker's behavioral fingerprint.
| Field | Type | Required | Description |
|---|---|---|---|
| observation_type | string | required | session_note | behavior | milestone | risk |
| pillar | string | optional | Which pillar this observation relates to |
| value | number | optional | -100 to 100. Positive = growth signal. Used to nudge moat score. |
| note | string | optional | Free-text observation (max 1000 chars) |
curl -X POST \ https://www.asyouascend.com/.netlify/functions/api-moat-score \ -H "Authorization: Bearer ascend_live_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{ "observation_type": "milestone", "pillar": "wealth", "value": 80, "note": "Client closed first $5k deal during our session." }'
201 Created with { "accepted": true, "observation_type": "milestone", "pillar": "wealth" }Seekers generate API keys in their Ascend Settings → Integrations panel, or programmatically via this endpoint using their Supabase session JWT.
| Field | Type | Required | Description |
|---|---|---|---|
| label | string | optional | Human-readable name for this key (e.g. "My Coach Integration") |
| scopes | string[] | optional | Default: ["read:arc"]. Available: read:arc, read:sophia, read:moat, write:moat |
{
"id": "uuid-here",
"key_prefix": "ascend_live_a1b2c3...",
"label": "My Coach Integration",
"scopes": ["read:arc", "read:moat"],
"raw_key": "ascend_live_a1b2c3d4e5f6...",
"warning": "This is the only time your raw API key will be shown. Store it securely."
}
| Status | Code | Meaning |
|---|---|---|
| 401 | Unauthorized | Missing or invalid API key |
| 403 | Forbidden | Valid key but missing required scope or tier |
| 404 | Not Found | Seeker not found (key may be misconfigured) |
| 405 | Method Not Allowed | Wrong HTTP method for this endpoint |
| 429 | Too Many Requests | Rate limit exceeded or max keys reached |
| 500 | Server Error | Database or AI error — retry with backoff |
"docs": "https://www.asyouascend.com/api/docs" for easy debugging.| Tier | Calls / hour | Calls / day |
|---|---|---|
| Sovereign | 60 | 500 |
| Circle | 300 | 5,000 |
| Enterprise | Custom | Custom |