[{"data":1,"prerenderedAt":1757},["ShallowReactive",2],{"docs-nav":3,"doc-workspace-and-account-api-keys":483},{"categories":4,"settings":397,"tools":422},[5,34,72,98,138,182,252,293,313,333,350],{"_id":6,"blurb":7,"order":8,"pages":9,"showDisclaimer":31,"slug":32,"title":33},"f3a96461-762f-4400-afaa-22792b774c55","Create your account, find your way around a workspace, and build and backtest your first strategy.",10,[10,16,21,26],{"_id":11,"group":12,"lastUpdated":12,"slug":13,"summary":14,"title":15},"5fc41c43-d229-4d53-8a8e-d555d2398c18",null,"sign-up","Create an Orbital account with an email and password or with Google, sign in, reset a lost password, and join a workspace from an invitation email.","Sign up and sign in",{"_id":17,"group":12,"lastUpdated":12,"slug":18,"summary":19,"title":20},"fbaf2a74-2afb-4d57-b33a-f6c96e26b624","workspaces-and-projects","What a workspace and a project each hold, what signup creates for you, how to switch between them, and how a connected assistant is bound to one project.","Workspaces and projects",{"_id":22,"group":12,"lastUpdated":12,"slug":23,"summary":24,"title":25},"88a2268d-a124-46c7-b029-c2d4f7ff775d","your-first-strategy","Build a rule-card strategy in the workflow editor, walked through with a golden cross on SPY, and see it listed in Backtesting ready to run.","Your first strategy",{"_id":27,"group":12,"lastUpdated":12,"slug":28,"summary":29,"title":30},"47e1ce39-c0a1-4cef-9e90-b8dd33cc8ee1","your-first-backtest","Run a strategy over past data, read the estimate before it starts, follow its progress, and understand the figures, chart and trade log it produces.","Your first backtest",false,"getting-started","Getting started",{"_id":35,"blurb":36,"order":37,"pages":38,"showDisclaimer":69,"slug":70,"title":71},"657bcd3b-cc2a-44ed-9f84-03643c99c547","Connect an AI assistant to your Orbital project so it can create strategies and run backtests for you.",20,[39,44,49,54,59,64],{"_id":40,"group":12,"lastUpdated":12,"slug":41,"summary":42,"title":43},"3bad212d-95fa-478c-948f-0596407ca16e","connecting","Add Orbital AI to Claude or Claude Code, sign in, approve the connection for one workspace and project, and start asking Claude to build and backtest strategies.","Connect Claude to Orbital",{"_id":45,"group":12,"lastUpdated":12,"slug":46,"summary":47,"title":48},"4e342515-cd92-471f-80c0-67a319c2ac1e","tools","The eleven tools Claude can call in your Orbital project: how a session uses them, the permission each needs, and the refusals any tool can give.","The eleven tools",{"_id":50,"group":12,"lastUpdated":12,"slug":51,"summary":52,"title":53},"c57bc136-30d6-4b59-9b69-463dc5ea5c13","rule-cards-and-programs","The two kinds of strategy Claude can write in your project: rule cards built from Orbital's strategy nodes, and Programs, Rust code Orbital compiles for logic the cards cannot express.","Rule cards and Programs",{"_id":55,"group":12,"lastUpdated":12,"slug":56,"summary":57,"title":58},"74e28c3b-d4df-498f-8961-13dd42f5b27a","troubleshooting","What to do when Claude asks you to sign in, a tool is refused, a run will not start or cancel, or the connection stops working. Each symptom with its cause and its fix.","Troubleshooting",{"_id":60,"group":12,"lastUpdated":12,"slug":61,"summary":62,"title":63},"d1a9691c-b38a-44ac-9741-a100d411692f","faq","Short answers about what Claude can and cannot do in your Orbital project: trades, projects, data, teammates, apps, ChatGPT, advice and disconnecting.","FAQ",{"_id":65,"group":12,"lastUpdated":12,"slug":66,"summary":67,"title":68},"b8c41c3e-ea55-41e8-9bbc-273f82e26633","chatgpt","Orbital AI for ChatGPT is coming. Until it ships, Claude and Claude Code are the assistants Orbital supports.","ChatGPT",true,"claude-and-chatgpt","Claude & ChatGPT",{"_id":73,"blurb":74,"order":75,"pages":76,"showDisclaimer":31,"slug":97,"title":81},"b3972fa1-43ef-4d47-be02-d44097dda281","Ask about markets, your workspace and the web, and let Chat propose dashboards, workflows and strategies you approve.",30,[77,82,87,92],{"_id":78,"group":12,"lastUpdated":12,"slug":79,"summary":80,"title":81},"abf18936-5589-4ddb-8da1-4830374f145a","overview","Where Chat lives, what it can read and propose, how threads work, which model answers, and the request limits and turn clock it runs under.","Chat",{"_id":83,"group":12,"lastUpdated":12,"slug":84,"summary":85,"title":86},"06bc241c-5dc7-49fe-b61f-df14ec6837f4","asking-about-markets","Tag a ticker with $, get cited prices, history and screens from market data, chart it in the thread, pin a chart to a dashboard, and use the slash commands.","Ask about markets",{"_id":88,"group":12,"lastUpdated":12,"slug":89,"summary":90,"title":91},"e9b59bec-7c5a-4f8c-86c3-22945d7a7605","proposals-and-approvals","Everything Chat builds, edits or removes leaves a card in the thread. Routine changes apply at once, others wait for your Apply, and an agent permission waits for a workspace owner or admin.","Proposals and approvals",{"_id":93,"group":12,"lastUpdated":12,"slug":94,"summary":95,"title":96},"f7277dae-4c8a-4f1b-aa5a-e0fb82007b9a","documents-and-web","Attach documents and images to a chat, keep files in the Library and mention them with @, let Chat search the web, and talk to Orbital from Telegram.","Documents, the web and your phone","chat",{"_id":99,"blurb":100,"order":101,"pages":102,"showDisclaimer":31,"slug":137,"title":106},"06f1d75d-66bd-4d17-8a54-9c532c52164b","Give an agent a task and the permissions to do it, then approve what it proposes.",40,[103,107,112,117,122,127,132],{"_id":104,"group":12,"lastUpdated":12,"slug":79,"summary":105,"title":106},"94a1f453-8bb9-410c-be0d-54a49f236620","What an Orbital agent is, how the Agents page is laid out, what an agent may do on its own, what it asks you for, and where its runs and results go.","Agents",{"_id":108,"group":12,"lastUpdated":12,"slug":109,"summary":110,"title":111},"0463f2ef-6d61-4381-be44-00d32ab6c025","set-up-an-agent","Create an agent with New agent, answer its short setup interview and apply the card, then adjust its model, instructions, permissions, tools and limits in Agent settings.","Set up an agent",{"_id":113,"group":12,"lastUpdated":12,"slug":114,"summary":115,"title":116},"2e5b03e2-70e7-4862-b848-ce875bb51118","permissions-and-approvals","What an agent may do on its own: the four permissions, the Deny, Ask, Auto and Always approve modes, who can change them, and how to answer the card an agent leaves while it waits.","Permissions and approvals",{"_id":118,"group":12,"lastUpdated":12,"slug":119,"summary":120,"title":121},"7af877fb-44cb-4a34-8863-45a7dfbdc3b9","tasks","Give an agent, or a channel, a goal it keeps working at run after run: what done looks like, an optional budget, what to do when an idea fails, and the task bar that shows where it stands.","Tasks",{"_id":123,"group":12,"lastUpdated":12,"slug":124,"summary":125,"title":126},"5987c9d5-3610-43ac-ba0f-7378e10fdebb","automations","Start an agent when nobody is here: on a schedule, with a task that repeats or starts on a market event, or when a monitor's signal fires.","Automations",{"_id":128,"group":12,"lastUpdated":12,"slug":129,"summary":130,"title":131},"1a36f6b4-3d37-4603-bbeb-af7619438db9","teams","Put several agents in one channel, address one with @name or all at once, give the team a task the lead splits into sub-tasks, and bind the sources an agent can search.","Channels and teams",{"_id":133,"group":12,"lastUpdated":12,"slug":134,"summary":135,"title":136},"8eda3de1-589c-416e-ab81-890a77d35938","strategy-work","What an agent does with strategies: reads them, writes and edits rule cards, branches, makes a version main, builds a program, runs backtests and controls a deployment, and what each act needs.","Agents and strategies","agents",{"_id":139,"blurb":140,"order":141,"pages":142,"showDisclaimer":31,"slug":181,"title":146},"5aa5558d-e712-42de-a7bc-291c35b0f0f7","Build pipelines from nodes, run them on a schedule or a trigger, and route their outputs.",50,[143,147,152,157,162,167,172,177],{"_id":144,"group":12,"lastUpdated":12,"slug":79,"summary":145,"title":146},"a482b682-605b-44ed-aa42-69f659d5dfc6","What a workflow is, how the Workflows list and the editor are laid out, what a version is, and what every run leaves behind.","Workflows",{"_id":148,"group":12,"lastUpdated":12,"slug":149,"summary":150,"title":151},"d99cd71a-f5e3-4ca3-b000-24635997eb71","build-a-workflow","Create a workflow in the editor: add nodes, wire their ports, set each node, declare an Output, save, run it and read the Console.","Build a workflow",{"_id":153,"group":12,"lastUpdated":12,"slug":154,"summary":155,"title":156},"1c515e36-c132-471c-81b2-4c2f36fbca66","nodes","Every node in the workflow editor's Nodes panel, section by section: what each one does and which ones appear only when an app is on.","Node reference",{"_id":158,"group":12,"lastUpdated":12,"slug":159,"summary":160,"title":161},"b3bdb58f-06c5-48cb-9120-b221ac49c9dc","schedules","Run a workflow at set times: calendar or exchange timing, run times in a time zone, the run policy, and the version every scheduled run uses.","Schedules",{"_id":163,"group":12,"lastUpdated":12,"slug":164,"summary":165,"title":166},"b06b41c9-3274-4f3a-8181-7f3b32306992","webhooks-and-signals","Start a workflow from another system's request or from a market signal. Set up an incoming webhook or a signal monitor under Automations, with its checks, duplicate handling and limits.","Webhooks and signals",{"_id":168,"group":12,"lastUpdated":12,"slug":169,"summary":170,"title":171},"82fe3c34-ff39-4ccd-b25c-f16fb8367707","outputs-alerts-and-actions","Where a workflow's result goes: the Output node, the Alert node, watchlist and metric writes, HTTP calls and child workflows.","Outputs, alerts and actions",{"_id":173,"group":12,"lastUpdated":12,"slug":174,"summary":175,"title":176},"f2894fdf-2918-48a5-b268-b743915648b3","runs-and-versions","What each run status means, how to read Run History, what the timeouts and On node failure do, and how versions and main decide what a run executes.","Runs and versions",{"_id":178,"group":12,"lastUpdated":12,"slug":56,"summary":179,"title":180},"cf91d9a3-1bc2-4dd0-97c6-0c7d1594b0c4","Symptom by symptom: a failed, paused, held or timed-out run, a scheduled run that did not start, a workflow marked Needs attention, a refused webhook, and a node whose app is off.","Troubleshooting workflows","workflows",{"_id":183,"blurb":184,"order":185,"pages":186,"showDisclaimer":69,"slug":251,"title":190},"a560aeb6-d8cc-4a14-95d9-5e526ea41a39","Rule-card and Rust program strategies, versions, runs, cost profiles and forward tests.",60,[187,191,196,201,206,212,217,222,227,232,237,242,247],{"_id":188,"group":12,"lastUpdated":12,"slug":79,"summary":189,"title":190},"4b8c23fd-eba6-42f1-b15b-ce459a4381ff","What a strategy, a version, a run and a forward test are, how the Strategies list, the strategy page and Compare are laid out, and where results live.","Backtesting",{"_id":192,"group":12,"lastUpdated":12,"slug":193,"summary":194,"title":195},"b3af053f-e2a8-41b2-9d7e-6e60ebf9ced8","rule-card-strategies","Every Strategy node in the workflow editor, field by field: the universe, indicators, rules, sizing, filters, the Program node, the Output and run parameters.","Rule-card strategies",{"_id":197,"group":12,"lastUpdated":12,"slug":198,"summary":199,"title":200},"b0104237-5e9c-4aa4-a152-a6dc852c3d11","program-strategies","Write a strategy as a Rust program: the editor, Build and Test, the on_bar function and the host interface, the Program node's settings, fuel and limits, and how Claude or an agent builds one.","Program strategies in Rust",{"_id":202,"group":12,"lastUpdated":12,"slug":203,"summary":204,"title":205},"7ba46c72-f20a-440b-b09f-0b1d4d4ee46b","run-a-backtest","Every field of the Run dialog, the estimate and its checks, the run quotas, progress, cancelling a run, and what a completed run records.","Run a backtest",{"_id":207,"group":208,"lastUpdated":12,"slug":209,"summary":210,"title":211},"5d61dd3c-078f-4660-92cd-944c832d2b14","Reference","reading-results","The strategy page after a run: the Overview chart and tiles, the Report, the Runs and Trades views, what each metric and column means, open positions and exit reasons.","Reading results",{"_id":213,"group":12,"lastUpdated":12,"slug":214,"summary":215,"title":216},"d25d0e47-82dc-4c2e-bb3d-696bfab45f67","cost-profiles","The four cost profiles and which ones a run can use, the default slippage and commission, what the report says about costs, and the costs no profile models.","Cost profiles",{"_id":218,"group":12,"lastUpdated":12,"slug":219,"summary":220,"title":221},"6eb719e7-b922-44c1-b35d-77fbdef86525","versions","When a backtest makes a version, how a run's settings make configurations and the trial count, how main starts and moves, and the change note a run can record.","Versions",{"_id":223,"group":12,"lastUpdated":12,"slug":224,"summary":225,"title":226},"3b865ec7-ba81-4362-a657-59d4d3626778","forward-testing","Freeze a completed run and re-run it after each settled session, on the same chart and trade list. Start one, read it, and see what updates cost and how a test stops.","Forward testing",{"_id":228,"group":12,"lastUpdated":12,"slug":229,"summary":230,"title":231},"4f8815e4-e430-450d-8227-be0d964fb9d0","backtest-vs-forward-test-vs-paper","How a backtest, a forward test and a paper deployment differ, what the simulation leaves out, and the fill, margin and benchmark rules every result rests on.","Backtest, forward test and paper",{"_id":233,"group":12,"lastUpdated":12,"slug":234,"summary":235,"title":236},"2758dd0d-1721-446b-9ab5-0dd2afde2015","when-trades-happen","The exact timing of every decision and fill: the bar a strategy decides on, the bar it fills on, what an early close changes, and why paper fills differ from the backtest.","When trades happen",{"_id":238,"group":12,"lastUpdated":12,"slug":239,"summary":240,"title":241},"a0babc17-2ec5-4084-82f4-efb94470c5b9","avoiding-overfitting","A fitted backtest looks like a found one. Six rules, three warning bands, and how Orbital's trial count, deflated Sharpe and forward testing show how much of a result is luck.","Avoiding overfitting",{"_id":243,"group":12,"lastUpdated":12,"slug":244,"summary":245,"title":246},"8c238472-649e-4da4-b2ea-e827e9e53f91","manage-and-delete-strategies","Find strategies in the list, the gallery and the map, compare up to 20 on one chart, delete one or many, restore from Trash within 30 days, and what a running deployment locks.","Manage and delete strategies",{"_id":248,"group":12,"lastUpdated":12,"slug":56,"summary":249,"title":250},"09f05732-280c-4011-a599-a26082071408","Symptom by symptom: a run that stays queued, a run limit, a refused estimate, a program that does not build, a workflow that is not a strategy, odd results and a stopped forward test.","Troubleshooting backtests","backtesting",{"_id":253,"blurb":254,"order":255,"pages":256,"showDisclaimer":69,"slug":291,"title":292},"d4dcce27-8d92-4d3a-9da1-28bec555d0dd","Deploy a strategy to a paper account, set its budget and limits, and approve or stop what it does.",70,[257,261,266,271,276,281,286],{"_id":258,"group":12,"lastUpdated":12,"slug":79,"summary":259,"title":260},"f293b0c4-a19a-494c-a6cc-89efeccd1db2","What the Trade app shows, how paper trading on Alpaca works, what a deployment is, and what the account menu can pause, cancel and close.","Trade on paper",{"_id":262,"group":12,"lastUpdated":12,"slug":263,"summary":264,"title":265},"2b4a4b1e-c74d-47b2-9ab7-3bbd73f1f053","connect-alpaca","Connect an Alpaca paper account in Settings so the Trade app can place paper orders with it, then check it, sync it, reconnect it or disconnect it.","Connect Alpaca",{"_id":267,"group":12,"lastUpdated":12,"slug":268,"summary":269,"title":270},"37265f93-3219-4741-82b5-70e7935b67b3","deploy-a-strategy","Deploy a strategy's main version to an Alpaca paper account from Trade: the deploy review, why a deploy is refused, the orders it sends, the first run, and what an edit after deploy changes.","Deploy a strategy",{"_id":272,"group":12,"lastUpdated":12,"slug":273,"summary":274,"title":275},"ec6ec9a2-5f4f-4d0f-ae1b-03bb2c23709c","capital-sleeves","Each deployment on a paper account has its own budget, caps on its entries and profit and loss from its own fills. Pausing or stopping one leaves the rest running.","Budgets and limits",{"_id":277,"group":12,"lastUpdated":12,"slug":278,"summary":279,"title":280},"776a4e31-c1bd-4116-8e6d-05fb2a1a23f1","approvals-and-permissions","The trading permission a deployment runs under, what a held trade is and how long it waits, where approvals arrive, and how an agent's own permissions apply.","Approvals and permissions",{"_id":282,"group":12,"lastUpdated":12,"slug":283,"summary":284,"title":285},"18554807-50f3-4d66-b962-41b31a9b8fb1","manage-a-deployment","Pause, resume or stop one strategy, change its limits without stopping it, read the running-version notice, and use the account menu to pause, cancel or close everything on an account.","Manage a deployment",{"_id":287,"group":208,"lastUpdated":12,"slug":288,"summary":289,"title":290},"d99f07a9-3024-4147-b79e-2ed6a6883384","pnl-orders-and-activity","What each figure in Trade means and where it comes from: the Overview tiles, a deployment's Today, Realized gain and Trend, the Trades card, and the Positions, Orders and Activity tabs.","P&L, orders and activity","trade","Trade",{"_id":294,"blurb":295,"order":296,"pages":297,"showDisclaimer":31,"slug":312,"title":301},"02328bc7-dd08-4a14-8ba7-7fb4387879f5","Keep lists of symbols with notes and flags, and feed them to workflows and dashboards.",80,[298,302,307],{"_id":299,"group":12,"lastUpdated":12,"slug":79,"summary":300,"title":301},"2cccb4c0-847c-47e1-969c-cb31a53b1a23","Named lists of symbols with prices, sections and flags. Build them on the Watchlists page or from Chat, and feed them to workflows and dashboards.","Watchlists",{"_id":303,"group":12,"lastUpdated":12,"slug":304,"summary":305,"title":306},"a0a54c9e-5d7f-47ed-9ea8-2f62398d5f0f","notes-and-flags","Flag rows in a list with one of seven colours, keep a research note and price target per symbol, link straight to a note, and save notes from Chat.","Notes and flags",{"_id":308,"group":12,"lastUpdated":12,"slug":309,"summary":310,"title":311},"eb1ebfbb-fbd7-47a6-b506-9b14be8a3206","use-with-workflows-and-dashboards","Feed a list's symbols into a workflow, let a workflow update a list, manage both from the Watchlists page, and work through a list on a dashboard.","Use watchlists in workflows and dashboards","watchlists",{"_id":314,"blurb":315,"order":316,"pages":317,"showDisclaimer":31,"slug":332,"title":321},"ec4f70ac-7aeb-45bb-9a3b-a0c58274183d","Live widgets from market data and workflow outputs, with templates to start from.",90,[318,322,327],{"_id":319,"group":12,"lastUpdated":12,"slug":79,"summary":320,"title":321},"8fb8ba02-5404-4f63-b757-14a034d8fb1a","A grid of widgets fed by market data and your workflows. Create one blank, with Chat or from a template, then pick symbols in the sidebar and run the workflows behind it.","Dashboards",{"_id":323,"group":12,"lastUpdated":12,"slug":324,"summary":325,"title":326},"6d17e6dc-f4ee-4593-9330-292e517ee7d8","widgets","A widget is one tile on a dashboard: a type plus the data it draws. Add one from the gallery, bind it to a workflow or market data, see where its numbers came from, or pin one from Chat.","Widgets",{"_id":328,"group":12,"lastUpdated":12,"slug":329,"summary":330,"title":331},"06b0ae5d-4d7c-4891-9230-75af49970141","templates","Install a ready-made dashboard or workflow from the template gallery, see what each template creates and schedules, and change or update it after install.","Templates","dashboards",{"_id":334,"blurb":335,"order":336,"pages":337,"showDisclaimer":31,"slug":348,"title":349},"93aa62fe-8bc0-40fe-8fb2-194ed287174d","What fires, where it is delivered, and how to read your inbox.",100,[338,343],{"_id":339,"group":12,"lastUpdated":12,"slug":340,"summary":341,"title":342},"37d1c72c-0cbc-416d-afc6-2f340f9c13c2","notifications","Your inbox for fired alerts, failed runs, finished backtests and anything waiting on your approval, and the settings that also send them to your email.","Notifications",{"_id":344,"group":12,"lastUpdated":12,"slug":345,"summary":346,"title":347},"5930c9ef-0f6b-4405-a67e-dac6de1fab76","alerts-from-workflows","Raise an alert with a workflow's Alert node, start the workflow from a market signal with Monitor a signal, and review each alert and where it went in Notifications.","Alerts from workflows","alerts-and-notifications","Alerts & notifications",{"_id":351,"blurb":352,"order":353,"pages":354,"showDisclaimer":31,"slug":395,"title":396},"a6576f5f-6b1d-4456-95a7-ea27f1ba41df","Members and roles, apps and plugins, API keys, credits and billing.",110,[355,360,365,370,375,380,385,390],{"_id":356,"group":12,"lastUpdated":12,"slug":357,"summary":358,"title":359},"06b06aaa-b51a-4c5b-9a62-3122b621af07","profile-and-sign-in","Open Settings, edit your profile, connect Google, change or set a password, see what each change signs out, and delete your account.","Profile and sign-in",{"_id":361,"group":12,"lastUpdated":12,"slug":362,"summary":363,"title":364},"8d8580c6-2e78-4ea6-a569-be33225d4434","members-and-roles","The workspace and project roles Orbital uses and what each allows, what an invitation gives you, how to delete a workspace, and how many workspaces you can create.","Members and roles",{"_id":366,"group":12,"lastUpdated":12,"slug":367,"summary":368,"title":369},"3dd6675b-126b-419e-b231-6380f425e666","apps","Install Watchlists, Backtesting and Trade for your workspace, choose the projects that use each one, and read the permissions Trade asks for.","Apps",{"_id":371,"group":12,"lastUpdated":12,"slug":372,"summary":373,"title":374},"6e25f5a8-a49b-4dd4-9f3e-f475d940bf43","plugins","Connect outside services to your workspace in Settings: a Google Drive folder that syncs into your Library, and an Alpaca paper account for Trade.","Plugins",{"_id":376,"group":12,"lastUpdated":12,"slug":377,"summary":378,"title":379},"d991056d-a99d-49ec-8ba0-06dbc9eed3d6","api-keys","Create a key under Settings → Developers, call Orbital's API from your own code, and see what each switch, limit and error means and how to revoke a key.","API keys",{"_id":381,"group":12,"lastUpdated":12,"slug":382,"summary":383,"title":384},"03ac79c0-cd4f-421d-a9ad-3eae5f260f86","credits-and-billing","What credits are and what spends them, how to read Billing and Usage, buy credits, set up auto-reload and a spend limit, and change or cancel your plan.","Credits and billing",{"_id":386,"group":12,"lastUpdated":12,"slug":387,"summary":388,"title":389},"5850c64b-293f-4c4d-8f8e-72c579ec59f9","ai-models","Set the model new chats start on, choose which models people can pick, and add your own provider keys so your provider bills calls once credits run out.","AI models",{"_id":391,"group":12,"lastUpdated":12,"slug":392,"summary":393,"title":394},"d0b5aec8-827b-44c7-802c-1f69cbf03533","workspace-settings","What General holds and who can change it, how to delete a workspace, where notification settings live, and how Trash keeps deleted items for 30 days.","Workspace settings","workspace-and-account","Workspace & account",{"footerLine":398,"searchSuggestions":399,"startHere":416,"toolPageBanner":421},"Orbital is software, not a broker or investment adviser. Results shown in Orbital are hypothetical and are not investment advice. Brokerage services are provided by the broker you connect.",[400,402,404,406,408,410,412,414],{"path":401,"title":25},"/docs/getting-started/your-first-strategy",{"path":403,"title":30},"/docs/getting-started/your-first-backtest",{"path":405,"title":43},"/docs/claude-and-chatgpt/connecting",{"path":407,"title":48},"/docs/claude-and-chatgpt/tools",{"path":409,"title":205},"/docs/claude-and-chatgpt/tools/run_backtest",{"path":411,"title":205},"/docs/backtesting/run-a-backtest",{"path":413,"title":270},"/docs/trade/deploy-a-strategy",{"path":415,"title":121},"/docs/agents/tasks",[417,419,420],{"path":418,"summary":14,"title":15},"/docs/getting-started/sign-up",{"path":403,"summary":29,"title":30},{"path":405,"summary":42,"title":43},"This connector creates and backtests strategies. It cannot place trades.",[423,430,436,441,446,451,456,462,467,472,477],{"_id":424,"group":425,"kind":426,"name":427,"oneLiner":428,"order":8,"title":429},"b21a67fe-7e4a-4e57-96d5-cecb99a98c2a","strategies","read","get_authoring_guide","Returns the rule-card vocabulary or the Program manual that Claude reads before it writes a strategy.","Read the authoring guide",{"_id":431,"group":425,"kind":432,"name":433,"oneLiner":434,"order":37,"title":435},"b03fa4eb-9ea1-4a4e-9795-f48d9b785354","write","create_strategy","Saves a new strategy from the minimal nodes-and-connections spec and enrols it for backtesting.","Create a strategy",{"_id":437,"group":425,"kind":432,"name":438,"oneLiner":439,"order":75,"title":440},"c57f922b-b2dd-47f9-93f5-aa2c256603c3","build_program","Compiles a Program node's Rust source and stamps the built module on the node as a new version.","Build a Program",{"_id":442,"group":425,"kind":426,"name":443,"oneLiner":444,"order":101,"title":445},"0f683d98-f149-4ac3-9875-f0cfb0013845","list_strategies","Lists the project's strategies with the latest backtest verdict of each.","List the project's strategies",{"_id":447,"group":425,"kind":426,"name":448,"oneLiner":449,"order":141,"title":450},"e5b108a5-f59c-4320-9686-5544f4ebd923","get_strategy","Reads one strategy: its versions, its recent runs, and the graph that update_strategy takes back.","Read one strategy",{"_id":452,"group":425,"kind":432,"name":453,"oneLiner":454,"order":185,"title":455},"1ed39cd7-fd66-407d-9468-ee35e1525564","update_strategy","Replaces a strategy's graph with the complete graph Claude sends, saved as a new version. Prior versions are kept.","Save a new version of a strategy",{"_id":457,"group":458,"kind":426,"name":459,"oneLiner":460,"order":8,"title":461},"d2618b28-a163-4047-a795-2f22befeaf8b","backtests","estimate_backtest","Prices a run in credits, checks data coverage and returns the confirm handoff run_backtest takes. Spends nothing.","Estimate a backtest",{"_id":463,"group":458,"kind":464,"name":465,"oneLiner":466,"order":37,"title":205},"b8112e94-6e85-4501-b02c-c24f1dfea0b7","run","run_backtest","Launches a backtest under a run id Claude mints, spends credits, and returns the run id at once.",{"_id":468,"group":458,"kind":426,"name":469,"oneLiner":470,"order":75,"title":471},"67e28b54-865e-4fd4-9e02-0f4bca0511e1","get_backtest","Returns a run's status and progress while it runs, and its compact verdict once it is done.","Read a backtest run",{"_id":473,"group":458,"kind":426,"name":474,"oneLiner":475,"order":101,"title":476},"a79c54a7-8ccc-4f6f-bf51-d1bc526e1cb3","get_backtest_trades","Returns a page of a finished run's trade log, newest first within the page, with the total.","Read a run's trade log",{"_id":478,"group":458,"kind":479,"name":480,"oneLiner":481,"order":141,"title":482},"74de9d43-0392-4815-ab76-976b1227e899","destructive","cancel_backtest","Cancels a queued or running backtest. A finished run is refused, and a cancelled run cannot be resumed.","Cancel a backtest",{"_id":376,"_updatedAt":484,"body":485,"category":1742,"disclaimer":1743,"lastUpdated":12,"relatedPages":1744,"slug":377,"summary":378,"title":379,"unlisted":31},"2026-11-04T09:46:37Z",[486,497,506,529,546,573,581,604,612,787,804,818,826,834,862,877,885,947,955,963,973,981,989,997,1005,1013,1034,1042,1050,1065,1082,1090,1098,1143,1158,1178,1186,1210,1216,1240,1244,1268,1294,1325,1333,1367,1409,1426,1434,1497,1505,1550,1592,1607,1615,1646,1664,1686,1694,1710],{"_key":487,"_type":488,"children":489,"markDefs":495,"style":496},"e96bedd75a91","block",[490],{"_key":491,"_type":492,"marks":493,"text":494},"9bac10278f09","span",[],"What an API key is",[],"h2",{"_key":498,"_type":488,"children":499,"markDefs":504,"style":505},"90f97490c6b2",[500],{"_key":501,"_type":492,"marks":502,"text":503},"e8c0490710ad",[],"An API key lets a script, a notebook or a service call Orbital without signing in.",[],"normal",{"_key":507,"_type":488,"children":508,"markDefs":522,"style":505},"bf1ad425ca36",[509,513,518],{"_key":510,"_type":492,"marks":511,"text":512},"a592d1dc4823",[],"A key belongs to one ",{"_key":514,"_type":492,"marks":515,"text":517},"f53ad00337fe",[516],"c4bd22718b12","workspace",{"_key":519,"_type":492,"marks":520,"text":521},"7c92dab1ada3",[],". It acts as you, the member who created it, so every request runs with your role. The switches you set on the key narrow that further.",[523],{"_key":516,"_type":524,"href":525,"to":526},"internalLink","/docs/glossary#workspace",{"_ref":527,"_type":528,"_weak":69},"0831fbc6-997e-45f6-b0cc-2056c6d27d79","reference",{"_key":530,"_type":488,"children":531,"markDefs":545,"style":505},"d3ed7d50c038",[532,536,541],{"_key":533,"_type":492,"marks":534,"text":535},"475578a38fb8",[],"A key made on ",{"_key":537,"_type":492,"marks":538,"text":540},"f0a9d79ed7ec",[539],"strong","Developers",{"_key":542,"_type":492,"marks":543,"text":544},"2acf6d73cc19",[]," does not expire.",[],{"_key":547,"_type":488,"children":548,"markDefs":569,"style":505},"77cd66b50470",[549,553,557,561,565],{"_key":550,"_type":492,"marks":551,"text":552},"f31968913b57",[],"These keys are for calling Orbital. Keys for model providers such as OpenAI or Anthropic go under ",{"_key":554,"_type":492,"marks":555,"text":556},"0df930af632e",[539],"AI Models",{"_key":558,"_type":492,"marks":559,"text":560},"b1cbf92da30f",[],": see ",{"_key":562,"_type":492,"marks":563,"text":389},"d4f7b22dbd94",[564],"848125234ec2",{"_key":566,"_type":492,"marks":567,"text":568},"1ae6c6c41ac3",[],".",[570],{"_key":564,"_type":524,"href":571,"to":572},"/docs/workspace-and-account/ai-models",{"_ref":386,"_type":528,"_weak":69},{"_key":574,"_type":488,"children":575,"markDefs":580,"style":496},"87c074277d8c",[576],{"_key":577,"_type":492,"marks":578,"text":579},"40d4860ba6e1",[],"Who can manage keys",[],{"_key":582,"_type":488,"children":583,"markDefs":603,"style":505},"31360246daf5",[584,588,591,595,599],{"_key":585,"_type":492,"marks":586,"text":587},"8bc12bb59f37",[],"Only workspace owners and admins can create, see or revoke keys. Only they see ",{"_key":589,"_type":492,"marks":590,"text":540},"cc3d37913839",[539],{"_key":592,"_type":492,"marks":593,"text":594},"a5ef0a5fbcd5",[],", in the account menu and in Settings. Anyone else who reaches the page sees ",{"_key":596,"_type":492,"marks":597,"text":598},"5393a920d152",[539],"Admins only",{"_key":600,"_type":492,"marks":601,"text":602},"fbaa2dfb30d3",[],": \"API keys are workspace credentials. Ask a workspace admin to create or revoke them.\"",[],{"_key":605,"_type":488,"children":606,"markDefs":611,"style":496},"26466e7467e7",[607],{"_key":608,"_type":492,"marks":609,"text":610},"b1aabf032a95",[],"Create a key",[],{"_key":613,"_type":614,"items":615,"markDefs":12},"fcb01585c1c8","docSteps",[616,646,666,686,749,767],{"_key":617,"_type":618,"body":619,"title":645},"a014951b69ac","docStep",[620],{"_key":621,"_type":488,"children":622,"markDefs":642,"style":505},"6f56bfa829d2",[623,627,630,634,639],{"_key":624,"_type":492,"marks":625,"text":626},"f1702650d97c",[],"Click your avatar at the bottom of the sidebar and choose ",{"_key":628,"_type":492,"marks":629,"text":540},"ee6c420dba52",[539],{"_key":631,"_type":492,"marks":632,"text":633},"1fc9dc897a90",[],". Settings opens on that page, at ",{"_key":635,"_type":492,"marks":636,"text":638},"8342b9916427",[637],"de4013ff9774","https://app.orbitalaip.com/settings/workspace/developers",{"_key":640,"_type":492,"marks":641,"text":568},"9fd1d0f3c8a8",[],[643],{"_key":637,"_type":644,"href":638},"link","Open Developers",{"_key":647,"_type":618,"body":648,"title":665},"fadd397fcac1",[649],{"_key":650,"_type":488,"children":651,"markDefs":664,"style":505},"dd71334e75df",[652,656,660],{"_key":653,"_type":492,"marks":654,"text":655},"9874fc55e71b",[],"The ",{"_key":657,"_type":492,"marks":658,"text":659},"84bf4df23cdb",[539],"New API key",{"_key":661,"_type":492,"marks":662,"text":663},"2fa97dce9d4e",[]," form opens: \"A key calls the API as you, with only the access you give it here.\"",[],"Click Create key",{"_key":667,"_type":618,"body":668,"title":685},"ddd85727a7f8",[669],{"_key":670,"_type":488,"children":671,"markDefs":684,"style":505},"2c2c25348f2b",[672,676,680],{"_key":673,"_type":492,"marks":674,"text":675},"7e0b49394114",[],"Under ",{"_key":677,"_type":492,"marks":678,"text":679},"1c694e8ddd4e",[539],"Name",{"_key":681,"_type":492,"marks":682,"text":683},"3b06a347cae2",[],", name it after what will hold it, such as a script or a notebook. A name can be up to 120 characters.",[],"Name the key",{"_key":687,"_type":618,"body":688,"title":748},"e9eb92553eac",[689],{"_key":690,"_type":488,"children":691,"markDefs":747,"style":505},"02b87c98887d",[692,695,699,703,707,711,715,719,723,727,730,734,737,740,743],{"_key":693,"_type":492,"marks":694,"text":675},"037d13457a2c",[],{"_key":696,"_type":492,"marks":697,"text":698},"88d9efa9c773",[539],"What the key may do",{"_key":700,"_type":492,"marks":701,"text":702},"d5f9edd0a376",[],", set ",{"_key":704,"_type":492,"marks":705,"text":706},"2d11c5efba60",[539],"Read",{"_key":708,"_type":492,"marks":709,"text":710},"42c59b93e54f",[],", ",{"_key":712,"_type":492,"marks":713,"text":714},"1e4cc6c216cd",[539],"Write",{"_key":716,"_type":492,"marks":717,"text":718},"d7e13ba2ac23",[]," and ",{"_key":720,"_type":492,"marks":721,"text":722},"5b88b629b945",[539],"Run",{"_key":724,"_type":492,"marks":725,"text":726},"98e36111bc14",[],". ",{"_key":728,"_type":492,"marks":729,"text":706},"91355950d402",[539],{"_key":731,"_type":492,"marks":732,"text":733},"8610227d3672",[]," starts on; ",{"_key":735,"_type":492,"marks":736,"text":714},"a14f4dca3461",[539],{"_key":738,"_type":492,"marks":739,"text":718},"e27f096a23cf",[],{"_key":741,"_type":492,"marks":742,"text":722},"ae7be6b82621",[539],{"_key":744,"_type":492,"marks":745,"text":746},"5c4178f86023",[]," start off.",[],"Set the switches",{"_key":750,"_type":618,"body":751,"title":665},"5dd124e3d66b",[752],{"_key":753,"_type":488,"children":754,"markDefs":766,"style":505},"86f211ec687b",[755,759,763],{"_key":756,"_type":492,"marks":757,"text":758},"9ed9f7208276",[],"The key appears once, under ",{"_key":760,"_type":492,"marks":761,"text":762},"68e8d8a01c68",[539],"Your new key",{"_key":764,"_type":492,"marks":765,"text":568},"f805256c2eb1",[],[],{"_key":768,"_type":618,"body":769,"title":786},"02851540c753",[770],{"_key":771,"_type":488,"children":772,"markDefs":785,"style":505},"3f01a37c303c",[773,777,781],{"_key":774,"_type":492,"marks":775,"text":776},"5cee90226555",[],"Click ",{"_key":778,"_type":492,"marks":779,"text":780},"2b03fc409be2",[539],"Copy",{"_key":782,"_type":492,"marks":783,"text":784},"d99585b0241d",[]," and store the key somewhere safe. The page says \"Copy it now\": Orbital never shows the key again.",[],"Copy the key and click Done",{"_key":788,"_type":488,"children":789,"markDefs":803,"style":505},"b6aa5384e9a1",[790,794,799],{"_key":791,"_type":492,"marks":792,"text":793},"cf87cca1add6",[],"Every key starts with ",{"_key":795,"_type":492,"marks":796,"text":798},"564254a4fa23",[797],"code","orbk_",{"_key":800,"_type":492,"marks":801,"text":802},"18e7f8b79bd1",[],". Orbital keeps only a fingerprint of it, and the list shows just its last four characters.",[],{"_key":805,"_type":806,"body":807,"markDefs":12,"title":816,"tone":817},"2e3607a90ab2","docCallout",[808],{"_key":809,"_type":488,"children":810,"markDefs":815,"style":505},"60abd2c7e290",[811],{"_key":812,"_type":492,"marks":813,"text":814},"24b15e04f124",[],"Anyone holding a key can use the API as you, within its switches, until you revoke it. Load it from an environment variable or a secrets manager, never from a file you share or commit.",[],"Keep keys out of shared code","tip",{"_key":819,"_type":488,"children":820,"markDefs":825,"style":505},"b7e0abe0489c",[821],{"_key":822,"_type":492,"marks":823,"text":824},"f76afdf85b7d",[],"You cannot rename a key or change its switches later.",[],{"_key":827,"_type":488,"children":828,"markDefs":833,"style":496},"e8e711bf7fdd",[829],{"_key":830,"_type":492,"marks":831,"text":832},"3b3ead692564",[],"What each switch allows",[],{"_key":835,"_type":836,"markDefs":12,"table":837},"0888af67e834","richTable",{"_type":838,"rows":839},"table",[840,847,852,857],{"_key":841,"_type":842,"cells":843},"07dcd71451aa","tableRow",[844,845,846],"Switch","The form says","What it covers",{"_key":848,"_type":842,"cells":849},"09bf2339889a",[706,850,851],"See workflows, dashboards, watchlists, and results.","Every request that only reads, across workflows, automations, agents, agent tasks and channels, dashboards, watchlists, notes, alert history, notifications, prices, symbol search, and Backtesting's strategies, runs and trades.",{"_key":853,"_type":842,"cells":854},"3b7c6cc5013e",[714,855,856],"Create and edit those things. Billing, members, and other keys stay out of reach no matter what.","Creating, changing and deleting workflows, automations, agents, agent tasks and channels, dashboards, watchlists and notes. Also marking your notifications read, archiving or deleting them, and changing where each kind is sent.",{"_key":858,"_type":842,"cells":859},"5b602373ff1a",[722,860,861],"Start workflow and agent runs. Runs spend credits, so this is its own switch.","Starting a workflow run, a batch of workflow runs or an agent run.",{"_key":863,"_type":488,"children":864,"markDefs":876,"style":505},"01fc853205a8",[865,869,872],{"_key":866,"_type":492,"marks":867,"text":868},"508cfcc6b67d",[],"A key without ",{"_key":870,"_type":492,"marks":871,"text":706},"39413ee1aba4",[539],{"_key":873,"_type":492,"marks":874,"text":875},"7d39152eca5b",[]," cannot read anything, even what it may change.",[],{"_key":878,"_type":488,"children":879,"markDefs":884,"style":505},"5d2f0661e8ff",[880],{"_key":881,"_type":492,"marks":882,"text":883},"d143b2a721a3",[],"Watchlists and notes answer only in a project where the Watchlists app is on, and Backtesting only where Backtesting is on.",[],{"_key":886,"_type":806,"body":887,"markDefs":12,"title":945,"tone":946},"42dbccb0e847",[888,926],{"_key":889,"_type":488,"children":890,"markDefs":921,"style":505},"4964ddc3e581",[891,894,898,901,905,910,914,917],{"_key":892,"_type":492,"marks":893,"text":722},"e56f6fcf6198",[539],{"_key":895,"_type":492,"marks":896,"text":897},"f5bc2018f8f9",[]," covers the calls that start a workflow or agent run outright. A key with ",{"_key":899,"_type":492,"marks":900,"text":714},"bae0cfb6ca60",[539],{"_key":902,"_type":492,"marks":903,"text":904},"c458ad475604",[]," can still set off runs that spend ",{"_key":906,"_type":492,"marks":907,"text":909},"c300e288cfb0",[908],"a9f2355260bf","credits",{"_key":911,"_type":492,"marks":912,"text":913},"88e237353e3d",[],". For example, it can message an agent or a channel, give an agent a task, or switch on an automation. Give ",{"_key":915,"_type":492,"marks":916,"text":714},"e61be46935a8",[539],{"_key":918,"_type":492,"marks":919,"text":920},"9fe8f37f59f3",[]," only to code you trust with your credits.",[922],{"_key":908,"_type":524,"href":923,"to":924},"/docs/glossary#credits",{"_ref":925,"_type":528,"_weak":69},"d4216092-6035-41cd-8e27-1cde16dfe876",{"_key":927,"_type":488,"children":928,"markDefs":944,"style":505},"fac387c85106",[929,932,936,940],{"_key":930,"_type":492,"marks":931,"text":714},"8641349044b0",[539],{"_key":933,"_type":492,"marks":934,"text":935},"779b9a8aead7",[]," also covers deleting for good. A key can move a workflow, agent, dashboard, watchlist or note to ",{"_key":937,"_type":492,"marks":938,"text":939},"a1771c698c7f",[539],"Trash",{"_key":941,"_type":492,"marks":942,"text":943},"6a196563fd7d",[]," and then erase it.",[],"Write can start paid work too","warning",{"_key":948,"_type":488,"children":949,"markDefs":954,"style":496},"3f040cab54c4",[950],{"_key":951,"_type":492,"marks":952,"text":953},"90c957cb9390",[],"What a key cannot do",[],{"_key":956,"_type":488,"children":957,"markDefs":962,"style":505},"b00d16751edb",[958],{"_key":959,"_type":492,"marks":960,"text":961},"82ae7b619a09",[],"These areas refuse keys, whatever the switches say:",[],{"_key":964,"_type":488,"children":965,"level":970,"listItem":971,"markDefs":972,"style":505},"c5e9b59d4918",[966],{"_key":967,"_type":492,"marks":968,"text":969},"215d1ef14143",[],"Chat and the Library.",1,"bullet",[],{"_key":974,"_type":488,"children":975,"level":970,"listItem":971,"markDefs":980,"style":505},"7f4c2b5fa382",[976],{"_key":977,"_type":492,"marks":978,"text":979},"564406ac5f40",[],"Billing, members, workspace settings and AI model settings.",[],{"_key":982,"_type":488,"children":983,"level":970,"listItem":971,"markDefs":988,"style":505},"707ded50a3e9",[984],{"_key":985,"_type":492,"marks":986,"text":987},"c7c6c9de1665",[],"API keys themselves, so a key cannot create or revoke keys.",[],{"_key":990,"_type":488,"children":991,"level":970,"listItem":971,"markDefs":996,"style":505},"f2aff9dc75e5",[992],{"_key":993,"_type":492,"marks":994,"text":995},"e9c0ec8adede",[],"Plugins, Trade, and installing apps or switching them on.",[],{"_key":998,"_type":488,"children":999,"level":970,"listItem":971,"markDefs":1004,"style":505},"a12bbd116796",[1000],{"_key":1001,"_type":492,"marks":1002,"text":1003},"09ac4065a67b",[],"Your profile and sign-in.",[],{"_key":1006,"_type":488,"children":1007,"markDefs":1012,"style":505},"ddcff2e86fd0",[1008],{"_key":1009,"_type":492,"marks":1010,"text":1011},"3452337516d8",[],"Some actions in the other areas stay with people signed in to the app. A key cannot:",[],{"_key":1014,"_type":488,"children":1015,"level":970,"listItem":971,"markDefs":1029,"style":505},"af91852ddd99",[1016,1020,1025],{"_key":1017,"_type":492,"marks":1018,"text":1019},"d14d0a3f5b1a",[],"save a workflow version, make a version ",{"_key":1021,"_type":492,"marks":1022,"text":1024},"f6bf59725505",[1023],"005a6ab637eb","main",{"_key":1026,"_type":492,"marks":1027,"text":1028},"6b1781e1ce28",[]," or clone one;",[1030],{"_key":1023,"_type":524,"href":1031,"to":1032},"/docs/glossary#main",{"_ref":1033,"_type":528,"_weak":69},"cf890354-a380-458e-96f5-cbca8c7eceea",{"_key":1035,"_type":488,"children":1036,"level":970,"listItem":971,"markDefs":1041,"style":505},"f2d87d7d5b1e",[1037],{"_key":1038,"_type":492,"marks":1039,"text":1040},"2571c6b2ce0c",[],"approve or deny what an agent asks for, or change an agent's permissions;",[],{"_key":1043,"_type":488,"children":1044,"level":970,"listItem":971,"markDefs":1049,"style":505},"48f0a301a18e",[1045],{"_key":1046,"_type":492,"marks":1047,"text":1048},"c9ae8fbffd33",[],"run or cancel a backtest, or start a forward test.",[],{"_key":1051,"_type":488,"children":1052,"markDefs":1064,"style":505},"9acf4d3d451f",[1053,1057,1060],{"_key":1054,"_type":492,"marks":1055,"text":1056},"abb029070751",[],"Backtesting's own calls only read. A strategy is also a workflow, though, so a key with ",{"_key":1058,"_type":492,"marks":1059,"text":714},"8992762e169c",[539],{"_key":1061,"_type":492,"marks":1062,"text":1063},"ef44efcc9509",[]," can change or delete it through the workflow calls.",[],{"_key":1066,"_type":488,"children":1067,"markDefs":1079,"style":505},"732761a3d7c4",[1068,1072,1076],{"_key":1069,"_type":492,"marks":1070,"text":1071},"8ac32f3efec7",[],"To build and backtest strategies from outside the app, connect Claude instead. See ",{"_key":1073,"_type":492,"marks":1074,"text":43},"148361714f9c",[1075],"cd3af274a090",{"_key":1077,"_type":492,"marks":1078,"text":568},"2735153a4e7c",[],[1080],{"_key":1075,"_type":524,"href":405,"to":1081},{"_ref":40,"_type":528,"_weak":69},{"_key":1083,"_type":488,"children":1084,"markDefs":1089,"style":496},"c1da5fd8445b",[1085],{"_key":1086,"_type":492,"marks":1087,"text":1088},"762a8e07f3de",[],"Workspace and project",[],{"_key":1091,"_type":488,"children":1092,"markDefs":1097,"style":505},"e37253421c26",[1093],{"_key":1094,"_type":492,"marks":1095,"text":1096},"80a56abef6c4",[],"A key works only in the workspace it was created in, so you never send a workspace id. A request that names another workspace answers 404.",[],{"_key":1099,"_type":488,"children":1100,"markDefs":1138,"style":505},"9a269b7218d8",[1101,1105,1110,1114,1118,1122,1126,1130,1134],{"_key":1102,"_type":492,"marks":1103,"text":1104},"ba41c8edfae4",[],"Most requests work in one ",{"_key":1106,"_type":492,"marks":1107,"text":1109},"2fb6cfbd5877",[1108],"5328c6a0fa0c","project",{"_key":1111,"_type":492,"marks":1112,"text":1113},"d034e737598d",[]," of that workspace. To choose it, send the project's id in the ",{"_key":1115,"_type":492,"marks":1116,"text":1117},"5e13a592ccfa",[797],"x-project-id",{"_key":1119,"_type":492,"marks":1120,"text":1121},"30855cbf8e39",[]," header. The app does not show project ids. Each workflow and agent the API returns carries its ",{"_key":1123,"_type":492,"marks":1124,"text":1125},"73b3f6eb7914",[797],"projectId",{"_key":1127,"_type":492,"marks":1128,"text":1129},"5c1e3580cc10",[],", so read it from a response such as ",{"_key":1131,"_type":492,"marks":1132,"text":1133},"42bcd03a1a3f",[797],"GET /api/workflows",{"_key":1135,"_type":492,"marks":1136,"text":1137},"3eb1305680df",[],". Without the header, the request uses the project Orbital would open for you: the one you used last.",[1139],{"_key":1108,"_type":524,"href":1140,"to":1141},"/docs/glossary#project",{"_ref":1142,"_type":528,"_weak":69},"e21a14cc-5bd9-46a6-b5cc-fa75eebbe004",{"_key":1144,"_type":488,"children":1145,"markDefs":1157,"style":505},"fcf73aabb2bb",[1146,1150,1153],{"_key":1147,"_type":492,"marks":1148,"text":1149},"288a2abe6523",[],"Keys made on ",{"_key":1151,"_type":492,"marks":1152,"text":540},"627dab2aea32",[539],{"_key":1154,"_type":492,"marks":1155,"text":1156},"92b84f77a377",[]," are not tied to one project. Each one can reach every project you can open.",[],{"_key":1159,"_type":806,"body":1160,"markDefs":12,"title":1176,"tone":1177},"5e0fab8ce330",[1161],{"_key":1162,"_type":488,"children":1163,"markDefs":1175,"style":505},"8f4263bd299b",[1164,1168,1171],{"_key":1165,"_type":492,"marks":1166,"text":1167},"66755d97288b",[],"While another workspace is the one you last opened in Orbital, a request without ",{"_key":1169,"_type":492,"marks":1170,"text":1117},"da5f7d59d30c",[797],{"_key":1172,"_type":492,"marks":1173,"text":1174},"50c5f3dbf6ed",[]," answers 404. Open the key's workspace in Orbital again, or send the header.",[],"If you use more than one workspace","note",{"_key":1179,"_type":488,"children":1180,"markDefs":1185,"style":496},"8804cd168de9",[1181],{"_key":1182,"_type":492,"marks":1183,"text":1184},"a311317cfba7",[],"Call the API",[],{"_key":1187,"_type":488,"children":1188,"markDefs":1209,"style":505},"9ba299740aa4",[1189,1193,1197,1201,1205],{"_key":1190,"_type":492,"marks":1191,"text":1192},"4598e9ccdb82",[],"The API lives at ",{"_key":1194,"_type":492,"marks":1195,"text":1196},"19037d01094b",[797],"https://api.orbitalaip.com/api",{"_key":1198,"_type":492,"marks":1199,"text":1200},"1008366e32a9",[],". Send the key in the ",{"_key":1202,"_type":492,"marks":1203,"text":1204},"b90d3dc15604",[797],"Authorization",{"_key":1206,"_type":492,"marks":1207,"text":1208},"35adcfa79d15",[]," header as a bearer token. Requests and responses are JSON.",[],{"_key":1211,"_type":1212,"code":1213,"filename":1214,"language":1215,"markDefs":12},"53d34062d40a","codeBlock","curl https://api.orbitalaip.com/api/workflows \\\n  -H \"Authorization: Bearer $ORBITAL_API_KEY\"","List workflows (needs Read)","bash",{"_key":1217,"_type":488,"children":1218,"markDefs":1239,"style":505},"293ccc83fec1",[1219,1223,1227,1231,1235],{"_key":1220,"_type":492,"marks":1221,"text":1222},"4a83f5f269df",[],"This returns the project's workflows, 50 at a time. Use the ",{"_key":1224,"_type":492,"marks":1225,"text":1226},"1b62a9cd6220",[797],"limit",{"_key":1228,"_type":492,"marks":1229,"text":1230},"8e19248444ae",[]," (up to 100) and ",{"_key":1232,"_type":492,"marks":1233,"text":1234},"7b09ad8f7f2c",[797],"offset",{"_key":1236,"_type":492,"marks":1237,"text":1238},"789d968af557",[]," query parameters to page through them.",[],{"_key":1241,"_type":1212,"code":1242,"filename":1243,"language":1215,"markDefs":12},"336e7a5feea1","curl -X POST https://api.orbitalaip.com/api/workflows/WORKFLOW_ID/run \\\n  -H \"Authorization: Bearer $ORBITAL_API_KEY\"","Start a workflow run (needs Run)",{"_key":1245,"_type":488,"children":1246,"markDefs":1267,"style":505},"bde40f1d666d",[1247,1251,1255,1259,1263],{"_key":1248,"_type":492,"marks":1249,"text":1250},"cb6017c50cb5",[],"This works for a workflow that asks for no inputs when it runs. One that does refuses a request without them, with 400 or 412. ",{"_key":1252,"_type":492,"marks":1253,"text":1254},"61afb28515a8",[797],"GET /api/workflows/WORKFLOW_ID/run-form",{"_key":1256,"_type":492,"marks":1257,"text":1258},"b3d2170807c7",[]," lists the fields it needs and the ",{"_key":1260,"_type":492,"marks":1261,"text":1262},"4ec8ce004029",[797],"contractHash",{"_key":1264,"_type":492,"marks":1265,"text":1266},"3e05178f20c5",[]," to send with them.",[],{"_key":1269,"_type":488,"children":1270,"markDefs":1290,"style":505},"311af57305c3",[1271,1275,1279,1283,1287],{"_key":1272,"_type":492,"marks":1273,"text":1274},"73c8477e38af",[],"A workflow's id is the last part of its address in the editor, after ",{"_key":1276,"_type":492,"marks":1277,"text":1278},"93d8df6c7aab",[797],"/workflows/",{"_key":1280,"_type":492,"marks":1281,"text":1282},"d9ac765a339a",[],". A run started with a key runs the workflow's main version, or its canvas if it has none. A key cannot save a version. Once a workflow has a main version, a key's edits to its canvas do not reach the runs it starts. See ",{"_key":1284,"_type":492,"marks":1285,"text":176},"e5a990ccb288",[1286],"67546345f637",{"_key":1288,"_type":492,"marks":1289,"text":568},"256bb99f6141",[],[1291],{"_key":1286,"_type":524,"href":1292,"to":1293},"/docs/workflows/runs-and-versions",{"_ref":173,"_type":528,"_weak":69},{"_key":1295,"_type":488,"children":1296,"markDefs":1324,"style":505},"8e57981d4987",[1297,1301,1305,1309,1313,1316,1320],{"_key":1298,"_type":492,"marks":1299,"text":1300},"2e8f6e596157",[],"To start an agent run, send ",{"_key":1302,"_type":492,"marks":1303,"text":1304},"8a72b2bdebf4",[797],"POST /api/agents/AGENT_ID/run",{"_key":1306,"_type":492,"marks":1307,"text":1308},"1b86a8660a8a",[],", with any input as a JSON object in ",{"_key":1310,"_type":492,"marks":1311,"text":1312},"e2e020e09041",[797],"input",{"_key":1314,"_type":492,"marks":1315,"text":726},"bd269771847f",[],{"_key":1317,"_type":492,"marks":1318,"text":1319},"93acdfc63f29",[797],"GET /api/agents",{"_key":1321,"_type":492,"marks":1322,"text":1323},"0af806c94c5d",[]," lists the project's agents with their ids, leaving out archived agents and any still in their setup interview.",[],{"_key":1326,"_type":488,"children":1327,"markDefs":1332,"style":496},"2ac5d8852d81",[1328],{"_key":1329,"_type":492,"marks":1330,"text":1331},"871f784bb08a",[],"Limits",[],{"_key":1334,"_type":836,"markDefs":12,"table":1335},"d4c990bdd7b3",{"_type":838,"rows":1336},[1337,1343,1349,1355,1361],{"_key":1338,"_type":842,"cells":1339},"be660355e60e",[1340,1341,1342],"Limit","What it counts","Size",{"_key":1344,"_type":842,"cells":1345},"6a27f5d99858",[1346,1347,1348],"Per key","Every request made with one key","300 a minute",{"_key":1350,"_type":842,"cells":1351},"c66ed5b208ba",[1352,1353,1354],"Per IP address","Every request to the API from one address, the app's own included","600 a minute",{"_key":1356,"_type":842,"cells":1357},"661c33cf1e44",[1358,1359,1360],"Plan requests","Each workflow run and agent run, and each chat reply in the app, from one allowance for the whole workspace","Your plan's, shown on Billing",{"_key":1362,"_type":842,"cells":1363},"17c7dc57bc21",[1364,1365,1366],"Active keys","Keys in the workspace that are not revoked","Your plan's, named in the error below",{"_key":1368,"_type":488,"children":1369,"markDefs":1405,"style":505},"328d70250575",[1370,1374,1378,1382,1386,1390,1394,1398,1402],{"_key":1371,"_type":492,"marks":1372,"text":1373},"3a019a811c1f",[],"Other API calls do not count toward your plan's requests, but the runs a key starts do. The ",{"_key":1375,"_type":492,"marks":1376,"text":1377},"5565d49fe191",[539],"Billing",{"_key":1379,"_type":492,"marks":1380,"text":1381},"d6766974f2df",[]," page shows your plan's numbers per minute and per day. Look under ",{"_key":1383,"_type":492,"marks":1384,"text":1385},"5804938b6586",[539],"What your plan allows",{"_key":1387,"_type":492,"marks":1388,"text":1389},"8b4fa97ab0f4",[],", in ",{"_key":1391,"_type":492,"marks":1392,"text":1393},"377b1aff4331",[539],"Rate limits & model availability",{"_key":1395,"_type":492,"marks":1396,"text":1397},"9e77d2777ea5",[],". The daily count resets at midnight UTC. See ",{"_key":1399,"_type":492,"marks":1400,"text":384},"e75c341befdd",[1401],"01a366d40124",{"_key":1403,"_type":492,"marks":1404,"text":568},"1de710849fb8",[],[1406],{"_key":1401,"_type":524,"href":1407,"to":1408},"/docs/workspace-and-account/credits-and-billing",{"_ref":381,"_type":528,"_weak":69},{"_key":1410,"_type":488,"children":1411,"markDefs":1425,"style":505},"f02138286e92",[1412,1416,1421],{"_key":1413,"_type":492,"marks":1414,"text":1415},"bf2229f58471",[],"When the workspace holds as many active keys as its plan allows, creating another fails: \"Your plan allows ",{"_key":1417,"_type":492,"marks":1418,"text":1420},"85167a9484b8",[1419],"em","n",{"_key":1422,"_type":492,"marks":1423,"text":1424},"c076e412aa0f",[]," active API keys. Revoke one or upgrade to create more.\" With a cap of one, it says \"1 active API key\".",[],{"_key":1427,"_type":488,"children":1428,"markDefs":1433,"style":496},"dd83bef9eaa4",[1429],{"_key":1430,"_type":492,"marks":1431,"text":1432},"dfef81edaebb",[],"Errors",[],{"_key":1435,"_type":836,"markDefs":12,"table":1436},"e7cf728f2d24",{"_type":838,"rows":1437},[1438,1445,1452,1459,1465,1472,1479,1484,1490],{"_key":1439,"_type":842,"cells":1440},"ee9d7cf08bfa",[1441,1442,1443,1444],"Status","Code","What it means","What to do",{"_key":1446,"_type":842,"cells":1447},"cefd640f6a3f",[1448,1449,1450,1451],"401","API_KEY_INVALID","\"This API key is invalid, revoked, or expired.\"","Check that the header carries the whole key. If the key was revoked, create a new one.",{"_key":1453,"_type":842,"cells":1454},"9c266fdd354c",[1455,1456,1457,1458],"403","API_KEY_NOT_ALLOWED or SESSION_REQUIRED (a few calls send another code or none)","Keys are refused here, or may only read here.","Do it in the app while signed in.",{"_key":1460,"_type":842,"cells":1461},"d7be21354fcb",[1455,1462,1463,1464],"API_KEY_SCOPE_MISSING","The key lacks the switch this request needs.","Create a key with that switch on.",{"_key":1466,"_type":842,"cells":1467},"b53bcda9a81f",[1468,1469,1470,1471],"404","none","The item, project or workspace is outside what the key can reach, or the app is off in that project.","Check the id, the project, the workspace and the project's apps.",{"_key":1473,"_type":842,"cells":1474},"a38fd87ca7eb",[1475,1476,1477,1478],"429","API_KEY_RATE_LIMITED","The key sent more than 300 requests in a minute.","Wait for the seconds in the Retry-After header, then retry.",{"_key":1480,"_type":842,"cells":1481},"46fa59ed2c79",[1475,1469,1482,1483],"More than 600 requests in a minute came from your address.","Slow down, then retry.",{"_key":1485,"_type":842,"cells":1486},"ff78d8ffbc43",[1475,1487,1488,1489],"REQUEST_LIMIT_REACHED","The workspace used its plan's requests for the minute or the day.","Wait, or change plan. Adding credits does not lift it.",{"_key":1491,"_type":842,"cells":1492},"7451d14b027f",[1493,1494,1495,1496],"402","INSUFFICIENT_CREDITS_FOR_RUN","The workflow run would cost more credits than remain.","Add credits, then start it again.",{"_key":1498,"_type":488,"children":1499,"markDefs":1504,"style":496},"fd5d339371fa",[1500],{"_key":1501,"_type":492,"marks":1502,"text":1503},"24bf7175b0a5",[],"Revoke a key",[],{"_key":1506,"_type":488,"children":1507,"markDefs":1549,"style":505},"82489b62927a",[1508,1512,1515,1519,1523,1527,1531,1535,1539,1542,1546],{"_key":1509,"_type":492,"marks":1510,"text":1511},"d32d053c17c3",[],"Revoke a key you no longer use, and revoke at once any key that may have leaked. Each key on ",{"_key":1513,"_type":492,"marks":1514,"text":540},"908789b69ffd",[539],{"_key":1516,"_type":492,"marks":1517,"text":1518},"e113aeb89b48",[]," shows its name, ",{"_key":1520,"_type":492,"marks":1521,"text":1522},"f8335490d5b6",[539],"Active",{"_key":1524,"_type":492,"marks":1525,"text":1526},"22aae8e49cff",[]," or ",{"_key":1528,"_type":492,"marks":1529,"text":1530},"18211ab3d4d5",[539],"Revoked",{"_key":1532,"_type":492,"marks":1533,"text":1534},"22707af89b86",[],", its last four characters, its switches, ",{"_key":1536,"_type":492,"marks":1537,"text":1538},"b4b5da4b6576",[539],"Last used",{"_key":1540,"_type":492,"marks":1541,"text":718},"4eefb8ce1102",[],{"_key":1543,"_type":492,"marks":1544,"text":1545},"936f5180f168",[539],"Created",{"_key":1547,"_type":492,"marks":1548,"text":568},"9fb1243d1187",[],[],{"_key":1551,"_type":614,"items":1552,"markDefs":12},"bb4ba28974eb",[1553,1565],{"_key":1554,"_type":618,"body":1555,"title":1564},"a8742ddc78e9",[1556],{"_key":1557,"_type":488,"children":1558,"markDefs":1563,"style":505},"b791da09fe1e",[1559],{"_key":1560,"_type":492,"marks":1561,"text":1562},"7d05ed9ab8d4",[],"It sits at the end of the key's row, on active keys only.",[],"Click Revoke",{"_key":1566,"_type":618,"body":1567,"title":1591},"5baa103a736d",[1568],{"_key":1569,"_type":488,"children":1570,"markDefs":1590,"style":505},"f6fe4b8da6f2",[1571,1575,1579,1583,1587],{"_key":1572,"_type":492,"marks":1573,"text":1574},"5eee7338dd26",[],"The dialog asks \"Revoke ",{"_key":1576,"_type":492,"marks":1577,"text":1578},"a5ea019b83f2",[1419],"name",{"_key":1580,"_type":492,"marks":1581,"text":1582},"0f831556e36a",[],"?\" and warns: \"Anything using this key stops working immediately.\" Click ",{"_key":1584,"_type":492,"marks":1585,"text":1586},"7b7c9856ab11",[539],"Revoke",{"_key":1588,"_type":492,"marks":1589,"text":568},"a9bfacd07fbf",[],[],"Confirm",{"_key":1593,"_type":488,"children":1594,"markDefs":1606,"style":505},"ab7d80f1edd0",[1595,1599,1602],{"_key":1596,"_type":492,"marks":1597,"text":1598},"607ce5a206a7",[],"Orbital confirms: \"Requests with this key stop immediately.\" From then on the key gets API_KEY_INVALID. It stays in the list as ",{"_key":1600,"_type":492,"marks":1601,"text":1530},"d7c7ba1a2459",[539],{"_key":1603,"_type":492,"marks":1604,"text":1605},"2637948dc7c5",[],", and it cannot be switched back on.",[],{"_key":1608,"_type":488,"children":1609,"markDefs":1614,"style":505},"4ac035e3c561",[1610],{"_key":1611,"_type":492,"marks":1612,"text":1613},"3f2c1c9f4028",[],"To replace a key without a gap:",[],{"_key":1616,"_type":614,"items":1617,"markDefs":12},"f26b2ca6050f",[1618,1630,1642],{"_key":1619,"_type":618,"body":1620,"title":1629},"8c85fbd15d52",[1621],{"_key":1622,"_type":488,"children":1623,"markDefs":1628,"style":505},"2643bab66e96",[1624],{"_key":1625,"_type":492,"marks":1626,"text":1627},"d41650d03c9d",[],"Give it the switches your code needs.",[],"Create the new key",{"_key":1631,"_type":618,"body":1632,"title":1641},"d2960a7928a8",[1633],{"_key":1634,"_type":488,"children":1635,"markDefs":1640,"style":505},"b2489dd47a54",[1636],{"_key":1637,"_type":492,"marks":1638,"text":1639},"60a86fe38c1d",[],"Check that its requests succeed.",[],"Move your code to it",{"_key":1643,"_type":618,"body":1644,"title":1645},"aac68881722e",[],"Revoke the old key",{"_key":1647,"_type":488,"children":1648,"markDefs":1661,"style":505},"f6ce3557f2b3",[1649,1653,1657],{"_key":1650,"_type":492,"marks":1651,"text":1652},"f78fa9adcde7",[],"Keys can also end without a click. Deleting your account deletes the keys that act as you, and deleting a workspace deletes its keys. One Google sign-in case revokes them too: see the note in ",{"_key":1654,"_type":492,"marks":1655,"text":15},"af757c09c1e2",[1656],"eaeefa899819",{"_key":1658,"_type":492,"marks":1659,"text":1660},"193a67cd619b",[],". Changing your password leaves them working.",[1662],{"_key":1656,"_type":524,"href":418,"to":1663},{"_ref":11,"_type":528,"_weak":69},{"_key":1665,"_type":488,"children":1666,"markDefs":1685,"style":505},"8f1db33101ee",[1667,1671,1674,1678,1681],{"_key":1668,"_type":492,"marks":1669,"text":1670},"8f604c9d290c",[],"When the member a key acts as leaves the workspace, the key's requests answer 404, except prices and symbol search. ",{"_key":1672,"_type":492,"marks":1673,"text":540},"194c2c72b101",[539],{"_key":1675,"_type":492,"marks":1676,"text":1677},"31b8fd8d1ed2",[]," still shows it as ",{"_key":1679,"_type":492,"marks":1680,"text":1522},"4a45cdea835a",[539],{"_key":1682,"_type":492,"marks":1683,"text":1684},"e3482c4605c2",[],", so revoke it.",[],{"_key":1687,"_type":488,"children":1688,"markDefs":1693,"style":496},"8924656bd9c8",[1689],{"_key":1690,"_type":492,"marks":1691,"text":1692},"365df19ed90e",[],"Claude connections are separate",[],{"_key":1695,"_type":488,"children":1696,"markDefs":1709,"style":505},"896098736a52",[1697,1701,1705],{"_key":1698,"_type":492,"marks":1699,"text":1700},"331ce19a1906",[],"Connecting Claude does not use an API key. When you approve on the ",{"_key":1702,"_type":492,"marks":1703,"text":1704},"906ce77ed2ba",[539],"Connect to Orbital",{"_key":1706,"_type":492,"marks":1707,"text":1708},"a3bf880e0a6c",[]," page, Claude gets tokens of its own. They are bound to the workspace and project you chose.",[],{"_key":1711,"_type":488,"children":1712,"markDefs":1739,"style":505},"d175c49d6216",[1713,1717,1721,1725,1728,1732,1736],{"_key":1714,"_type":492,"marks":1715,"text":1716},"e30723be81d0",[],"Those tokens work only with the ",{"_key":1718,"_type":492,"marks":1719,"text":1720},"bd88ab34fe49",[539],"Orbital AI",{"_key":1722,"_type":492,"marks":1723,"text":1724},"47d07ecdde0e",[]," connector, and an API key does not work there. Connections are not listed on ",{"_key":1726,"_type":492,"marks":1727,"text":540},"2c7f97561268",[539],{"_key":1729,"_type":492,"marks":1730,"text":1731},"1d6e316ffe1e",[],", and revoking a key leaves them connected. To end one, remove the connector in Claude: see ",{"_key":1733,"_type":492,"marks":1734,"text":43},"12f0f634791f",[1735],"4275941498b5",{"_key":1737,"_type":492,"marks":1738,"text":568},"3ac158359ed1",[],[1740],{"_key":1735,"_type":524,"href":405,"to":1741},{"_ref":40,"_type":528,"_weak":69},{"showDisclaimer":31,"slug":395,"title":396},"inherit",[1745,1747,1748,1749,1750,1751,1753,1755],{"path":1746,"title":364},"/docs/workspace-and-account/members-and-roles",{"path":1407,"title":384},{"path":571,"title":389},{"path":1292,"title":176},{"path":405,"title":43},{"path":525,"title":1752},"Workspace",{"path":1140,"title":1754},"Project",{"path":923,"title":1756},"Credits",1793786635800]