The MyAgentFace API.

Every MyAgentFace coach β€” the directory, the categories, the prompts your account owns, embed cards and the Find Your Face quiz matcher β€” behind one API key. Build a coach picker into your app, embed a coach card on your site, or run our quiz matching in your own product.

Try it right now

This demo runs on a shared demo key with a small monthly cap β€” the same call your own key makes. It fetches the free coaches, live:

Get a key (2 minutes, free)

  1. Create a free MyAgentFace account.
  2. Open your account page and find the Developers panel.
  3. Tap Create a key. The full key is shown once β€” copy it then. Only a scrambled hash of it is ever stored, so a lost key can't be recovered; revoke it and make a new one.

Every key starts on the free plan: 1,000 calls a month per key, counted across all endpoints. Send the key on every call:

Authorization: Bearer maf_your_key_here

Base URL: https://myagentface.com/v1. Everything returns JSON. Keep your key secret β€” treat it like a password. (The demo key on this page is the one exception: it is public on purpose, capped low, and can only read public data.)

The endpoints

GET /v1/coaches β€” the whole directory

All coaches currently live on the site. Optional filters: category, rarity, free=true|false, and q (matches the coach's name and the plain phrases people search for it by).

curl "https://myagentface.com/v1/coaches?category=Money" \
  -H "Authorization: Bearer maf_your_key_here"
{
  "ok": true,
  "count": 6,
  "coaches": [
    {
      "slug": "money-coach",
      "name": "Money Coach",
      "category": "Money",
      "rarity": "Legendary",
      "price_coins": 150,
      "free": false,
      "blurb": "Calm, clear money guidance. No jargon, no panic.",
      "kw": "AI money coach to get out of debt",
      "avatar_url": "https://myagentface.com/assets/avatars/money-coach-ai-agent-avatar.webp",
      "page_url": "https://myagentface.com/prompts/money-coach/"
    }
  ]
}

GET /v1/categories β€” categories with coach counts

curl "https://myagentface.com/v1/categories" \
  -H "Authorization: Bearer maf_your_key_here"
{
  "ok": true,
  "categories": [
    { "name": "Business", "coaches": 7 },
    { "name": "Health", "coaches": 9 },
    { "name": "Love", "coaches": 4 },
    { "name": "Life Admin", "coaches": 13 },
    { "name": "Money", "coaches": 6 },
    { "name": "Learning", "coaches": 4 },
    { "name": "Creativity", "coaches": 8 }
  ]
}

GET /v1/coaches/:slug β€” one coach, in full

The directory fields, plus the coach's public search phrases, what it does, its weekly rhythm, and its real first message.

curl "https://myagentface.com/v1/coaches/cofounder" \
  -H "Authorization: Bearer maf_your_key_here"

GET /v1/coaches/:slug/prompt β€” the full prompt

The ownership rule, in plain words: a free coach's prompt is open to every key. A premium coach's prompt is the product people buy β€” so this endpoint serves it only to a key whose MyAgentFace account owns that face (bought with coins or money, or via an active Prompt Pass). If the account doesn't own it, you get 403 not_owned and a link to the coach's page. There is no key β€” paid tiers included β€” that unlocks other people's premium prompts.

curl "https://myagentface.com/v1/coaches/gym-buddy/prompt" \
  -H "Authorization: Bearer maf_your_key_here"

{
  "ok": true,
  "slug": "gym-buddy",
  "access": "free",
  "prompt": "You are my Gym Buddy β€” energetic, funny, and impossible to argue with. Your job: get me moving, consistently. …"
}

POST /v1/ask β€” a coach's starter answer Builder plan

Send a coach slug and a question (up to 500 characters). You get back that coach's starter kit: its real first message in its own voice, the first steps it would start with, its starter questions and its weekly rhythm β€” all composed from the coach's public page material. Be clear-eyed about what this is: there is no live AI behind it and it is not a conversation. The coach's full prompt is what owners paste into their own AI chat; this endpoint gives your users a true taste of the coach's voice and method, with a link to continue on its page.

curl -X POST "https://myagentface.com/v1/ask" \
  -H "Authorization: Bearer maf_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"coach": "boss-mode", "question": "I end every day busy but nothing important got done. Where do I start?"}'

{
  "ok": true,
  "coach": { "slug": "boss-mode", "name": "Boss Mode", "...": "..." },
  "answer": "Let's skip the motivation speech. What are the three things that actually move the needle today?\n\nYou asked: \"I end every day busy but nothing important got done. Where do I start?\"\n\nHere's my starter kit for that:\nFirst step: Sets your top 3 priorities every morning β€” no 20-item lists\nThen: Calls out procrastination, kindly but directly\n…\n\nMy rhythm: Daily 7:30 β€” Top 3 priorities Β· Fri β€” Scorecard.",
  "starter_questions": ["What are the three things that actually move the needle today?"],
  "first_step": "Sets your top 3 priorities every morning β€” no 20-item lists",
  "kind": "starter_kit",
  "continue_url": "https://myagentface.com/prompts/boss-mode/"
}

GET /v1/embed/:slug β€” card data for embeds

Everything a coach card needs: name, avatar, one-liner, the Free/coins badge, the coach's page, and the quiz URL β€” render it in your own design.

curl "https://myagentface.com/v1/embed/cofounder" \
  -H "Authorization: Bearer maf_your_key_here"

{
  "ok": true,
  "slug": "cofounder",
  "name": "Startup Cofounder",
  "avatar_url": "https://myagentface.com/assets/avatars/startup-cofounder-ai-agent-avatar.webp",
  "one_liner": "Turns your idea into one clear step, every single day.",
  "rarity": "Mythic",
  "price_coins": 200,
  "free": false,
  "badge": "200 coins",
  "page_url": "https://myagentface.com/prompts/cofounder/",
  "quiz_url": "https://myagentface.com/quiz/"
}

POST /v1/quiz β€” Find Your Face matching

The exact matcher the site's own quiz runs β€” same questions, same weights. Send the five answers as option indexes (0-based) keyed by question id, or as a plain array of five indexes. You get the match and up to two alternates.

curl -X POST "https://myagentface.com/v1/quiz" \
  -H "Authorization: Bearer maf_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{"answers": {"q1": 2, "q2": 2, "q3": 0, "q4": 1, "q5": 0}}'

{
  "ok": true,
  "match": { "slug": "salary-negotiation-coach", "name": "Salary Negotiation Coach", "category": "Business", "page_url": "https://myagentface.com/prompts/salary-negotiation-coach/", "result_url": "https://myagentface.com/quiz/result/salary-negotiation-coach/" },
  "alternates": [
    { "slug": "boss-mode", "name": "Boss Mode", "category": "Business", "page_url": "https://myagentface.com/prompts/boss-mode/", "result_url": "https://myagentface.com/quiz/result/boss-mode/" },
    { "slug": "etsy-seller-coach", "name": "Etsy Seller Coach", "category": "Business", "page_url": "https://myagentface.com/prompts/etsy-seller-coach/", "result_url": "https://myagentface.com/quiz/result/etsy-seller-coach/" }
  ]
}

Limits & errors

ThingFree planBuilder plan
Calls per month (per key)1,00050,000
Burst limit60 calls per minute per key (best effort)
POST /v1/askNot included (403 plan_required)Included
Directory, categories, embed, quizIncluded
Premium promptsOnly for faces your account owns β€” on every plan

Errors are plain JSON with a stable error code:

{ "ok": false, "error": "quota_exceeded", "plan": "free", "cap": 1000,
  "used": 1000, "month": "2026-10", "resets_on": "2026-11-01",
  "message": "Monthly call cap reached for this key..." }
StatuserrorMeans
401key_required / key_invalid / key_revokedNo key sent, the key doesn't exist, or it was revoked.
403not_ownedPremium prompt, and your account doesn't own that face.
403plan_requiredThat endpoint needs the Builder plan.
429quota_exceeded / rate_limitedMonthly cap reached, or more than 60 calls in a minute.
400 / 404invalid_question, invalid_answers, unknown_coachBad input β€” the body says what to fix.

Builder β€” $19/month

One paid tier, and it applies to your account, so every key you own gets it:

Upgrade: account page β†’ Developers panel β†’ β€œUpgrade to Builder β€” $19/month” β†’ secure Stripe checkout. The plan flips on the moment Stripe confirms payment (your account page notices on its own). Manage or cancel: the same panel opens the Stripe billing portal. Cancelling keeps Builder until the paid period ends, then your keys return to the free cap of 1,000 calls a month β€” stated plainly: if a key already used more than 1,000 calls that month, it pauses until the 1st and tells you the plan dropped to free.

Get your key β€” or upgrade β€” in your account

The fine print

Keys are per-account and revocable any time from the account page; a revoked key stops working immediately. Usage is counted per key, per day, per endpoint, in the America/Chicago timezone, and the month resets on the 1st. The API serves the same public catalog the website shows β€” coaches in an unreleased drop appear when the drop opens, for everyone at once. Questions about the API: contact us.