{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-docs/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Getting started","projectTitle":"Frontline Documentation","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"getting-started","__idx":0},"children":["Getting started"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This page walks you through your first authenticated request to the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Frontline Public API"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"1-generate-an-api-key","__idx":1},"children":["1. Generate an API key"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Frontline issues two kinds of API key. Pick the one that matches what you're building (see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/authentication"},"children":["Authentication"]}," for the full breakdown of which endpoints accept which):"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"personal-api-key--user-","__idx":2},"children":["Personal API key (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["USER"]},")"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use this when your integration acts on behalf of a specific user — creating agents, updating settings, publishing flows, building flow/workflow graphs, etc."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["In the Frontline app, click your ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["user name in the bottom-left of the sidebar"]},", then ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Settings"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["In the settings sidebar, under ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["My settings"]},", open ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Bring your own Agent"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create personal API key"]},", name it, and confirm."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Copy the key now"]}," — Frontline only stores its hash, so it can never be displayed again. If you lose it, delete that key and create a new one."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Each user can hold up to ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["5 personal keys"]}," at a time; the same screen shows the current count (e.g. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["1/5 personal keys used"]},")."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"account-api-key--general-","__idx":3},"children":["Account API key (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GENERAL"]},")"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use this for account-wide, machine-to-machine integrations that don't need to be attributed to a specific user (dashboards, read-only sync, etc.). ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GENERAL"]}," keys do ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["not"]}," work on endpoints that require ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["USER"]}," scope."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Open ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Settings"]}," in the Frontline app (same path as above)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["In the settings sidebar, under ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Account settings"]},", open ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Developer"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Create API key"]},", give it a memorable name, and confirm."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Copy the key now"]}," — same one-time-display rule as the personal key."]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Treat API keys like passwords. Don't commit them to git, paste them in chat, or embed them in client-side code. In CI/CD inject them via secrets."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"2-set-the-base-url","__idx":4},"children":["2. Set the base URL"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All Public API endpoints live under:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"https://prod-api.getfrontline.ai/public/v1\n"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"3-make-your-first-request","__idx":5},"children":["3. Make your first request"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Hit ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /public/v1/me"]}," to confirm your key works. It returns the account (and user, if you used a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["USER"]}," key) associated with the key."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl https://prod-api.getfrontline.ai/public/v1/me \\\n  -H \"Authorization: Bearer $FRONTLINE_API_KEY\"\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A successful response looks like:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n    \"ok\": true,\n    \"data\": {\n        \"account\": {\n            \"id\": 1234,\n            \"name\": \"Acme Inc.\",\n            \"namespace\": \"acme\"\n        },\n        \"user\": {\n            \"id\": 56,\n            \"email\": \"you@acme.com\"\n        }\n    }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you used a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GENERAL"]}," key the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user"]}," field will be ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"4-list-your-agents","__idx":6},"children":["4. List your agents"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl https://prod-api.getfrontline.ai/public/v1/agents \\\n  -H \"Authorization: Bearer $FRONTLINE_API_KEY\"\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n    \"results\": [{ \"id\": \"uuid-...\", \"name\": \"Support Agent\", \"isOffline\": false }]\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"5-same-call-from-node-and-python","__idx":7},"children":["5. Same call from Node and Python"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"js","header":{"controls":{"copy":{}}},"source":"// Node 18+ — native fetch\nconst res = await fetch(\"https://prod-api.getfrontline.ai/public/v1/agents\", {\n    headers: { Authorization: `Bearer ${process.env.FRONTLINE_API_KEY}` },\n});\nconst { results } = await res.json();\nconsole.log(results);\n","lang":"js"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","header":{"controls":{"copy":{}}},"source":"# Python 3 — requests\nimport os, requests\n\nres = requests.get(\n    \"https://prod-api.getfrontline.ai/public/v1/agents\",\n    headers={\"Authorization\": f\"Bearer {os.environ['FRONTLINE_API_KEY']}\"},\n)\nres.raise_for_status()\nprint(res.json()[\"results\"])\n","lang":"python"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"next-steps","__idx":8},"children":["Next steps"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Read the full ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/authentication"},"children":["Authentication"]}]}," reference for ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["USER"]}," vs ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GENERAL"]}," key rules."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Learn the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/rate-limits"},"children":["Rate limits"]}]}," before going to production."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Browse the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/reference/openapi"},"children":["API Reference"]}]}," for every endpoint and schema."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Prefer a terminal workflow? The ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/cli"},"children":["CLI"]}]}," wraps the same endpoints."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"need-help-using-the-platform-itself","__idx":9},"children":["Need help using the platform itself?"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["These docs cover the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Public API and CLI"]},". For walkthroughs of the Frontline app — setting up channels, configuring agents in the UI, managing your team, billing in-product, troubleshooting — head to ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://help.getfrontline.ai"},"children":["https://help.getfrontline.ai"]},"."]}]},"headings":[{"value":"Getting started","id":"getting-started","depth":1},{"value":"1. Generate an API key","id":"1-generate-an-api-key","depth":2},{"value":"Personal API key ( USER )","id":"personal-api-key--user-","depth":3},{"value":"Account API key ( GENERAL )","id":"account-api-key--general-","depth":3},{"value":"2. Set the base URL","id":"2-set-the-base-url","depth":2},{"value":"3. Make your first request","id":"3-make-your-first-request","depth":2},{"value":"4. List your agents","id":"4-list-your-agents","depth":2},{"value":"5. Same call from Node and Python","id":"5-same-call-from-node-and-python","depth":2},{"value":"Next steps","id":"next-steps","depth":2},{"value":"Need help using the platform itself?","id":"need-help-using-the-platform-itself","depth":2}],"frontmatter":{"seo":{"title":"Getting started"}},"lastModified":"2026-05-28T14:34:48.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/getting-started","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}