{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-docs/api-reference/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["api-container","api-content","endpoint","api-examples","code-group","tabs","tab"]},"redocly_category":"API Reference","searchWeight":120,"type":"markdown"},"seo":{"title":"Connect a cloud account","description":"Complete API reference and documentation for Freddy AI-powered backend system by Aitronos","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":"connect-a-cloud-account","__idx":0},"children":["Connect a cloud account"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Connects your organization's own account at a cloud provider, or replaces the stored one, so Forge can run servers there. Send the offering's connect form from ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/list-offerings"},"children":["List compute offerings"]}," as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fields"]},". The details are checked with one read at the provider before anything is stored, then kept encrypted and never returned — not by this endpoint, not by any other, not even masked. The response is the stored account plus ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["foreign_servers"]},", the number of servers in that account Forge did not create, so a client can recommend a dedicated project. Servers created in this account are billed to your organization by the provider, never by Aitronos."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["It acts for a person: it requires a bearer token whose user holds the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["manage_forge"]}," capability in the acting organization, and Forge cloud compute switched on for the organization."]},{"$$mdtype":"Tag","name":"ApiContainer","attributes":{},"children":[{"$$mdtype":"Tag","name":"ApiContent","attributes":{},"children":[{"$$mdtype":"Tag","name":"Endpoint","attributes":{"method":"PUT","path":"https://api.aitronos.com/v1/forge/compute/credentials/{offering_id}"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"path-parameters","__idx":1},"children":["Path Parameters"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["offering_id"]}]}," string ",{"$$mdtype":"Tag","name":"em","attributes":{"style":{"color":"#ef4444 !important","fontWeight":"600 !important","fontStyle":"normal !important"}},"children":["required"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The bring-your-own offering to connect: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["hetzner"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["digitalocean"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["vultr"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["scaleway"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["exoscale"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["linode"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["upcloud"]},". ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["aitronos"]}," has no account to connect and is refused with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FORGE_COMPUTE_OFFERING_BLOCKED"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"query-parameters","__idx":2},"children":["Query Parameters"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["organization_id"]}]}," string ",{"$$mdtype":"Tag","name":"em","attributes":{"style":{"color":"#9ca3af !important","fontWeight":"500 !important","fontStyle":"normal !important"}},"children":["optional"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The organization to act in. Defaults to your current organization. You must be an active member of it, or the request is refused with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["403 ORGANIZATION_ACCESS_DENIED"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"headers","__idx":3},"children":["Headers"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["X-Organization-Id"]}]}," string ",{"$$mdtype":"Tag","name":"em","attributes":{"style":{"color":"#9ca3af !important","fontWeight":"500 !important","fontStyle":"normal !important"}},"children":["optional"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The same as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["organization_id"]},", as a header. When both are sent, the query parameter wins."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"body-parameters","__idx":4},"children":["Body Parameters"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fields"]}]}," object ",{"$$mdtype":"Tag","name":"em","attributes":{"style":{"color":"#ef4444 !important","fontWeight":"600 !important","fontStyle":"normal !important"}},"children":["required"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The offering's connect form: one entry per field ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["id"]}," listed in the catalog's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["credential.fields"]},", e.g. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{\"api_token\": \"...\"}"]}," for Hetzner, or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["{\"secret_key\": \"...\", \"project_id\": \"...\"}"]}," for Scaleway. Every field is required. Values are trimmed and at most 4,096 printable characters, and a field id the offering does not use is refused rather than ignored. A missing or malformed ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["fields"]}," is treated as an empty form. Refusals name the fields, never the values."]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"returns","__idx":5},"children":["Returns"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The stored account, as in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/list-credentials"},"children":["List connected cloud accounts"]},", plus:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["foreign_servers"]}]}," integer or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}," — how many servers already in this account were not created by Forge. Anything above ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["0"]}," means the account is shared with other workloads; a dedicated project is recommended. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["null"]}," when the provider did not answer the count (the account was still connected)."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"offering_id\": \"hetzner\",\n  \"set\": true,\n  \"account_label\": null,\n  \"verified_at\": \"2026-09-28T08:12:40Z\",\n  \"status\": \"connected\",\n  \"inactive_reason\": null,\n  \"expires_at\": null,\n  \"foreign_servers\": 0\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"errors","__idx":6},"children":["Errors"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Code"},"children":["Code"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"When"},"children":["When"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["401"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AUTHENTICATION_REQUIRED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No credential, or a credential with no user (an organization API key)."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["403"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ORGANIZATION_ACCESS_DENIED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["organization_id"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["X-Organization-Id"]}," names an organization you are not an active member of."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["403"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["INSUFFICIENT_PERMISSIONS"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The user does not hold ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["manage_forge"]}," in the acting organization."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["403"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FORGE_COMPUTE_DISABLED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Forge cloud compute is not switched on for the organization."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["403"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FORGE_COMPUTE_OFFERING_BLOCKED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The offering has no account to connect here (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["aitronos"]},", or a provider this environment cannot serve). ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message"]}," is the reason."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["403"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FORGE_COMPUTE_OFFERING_NOT_OFFERED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The offering is not offered to you right now: switched off, switched off for your organization, or offered to Aitronos staff only. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message"]}," names the offering (for example \"DigitalOcean is not offered right now.\") and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["details.offering_id"]}," is its id. Nothing was stored."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["404"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FORGE_COMPUTE_OFFERING_NOT_FOUND"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No offering has this id."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["409"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FORGE_COMPUTE_HOSTS_EXIST"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Servers still run on the stored account and the new details cannot be shown to open that same account. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["details.live_hosts"]}," is the count."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["422"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FORGE_COMPUTE_CREDENTIAL_FIELDS_INVALID"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A field is missing, unknown or malformed. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["details.missing"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["details.unknown"]}," (and, for malformed values, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["details.invalid"]},") name the fields."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["422"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FORGE_COMPUTE_CREDENTIAL_REJECTED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The provider refused the details. Nothing was stored. When the key itself may be fine but the call came from an address missing from the key's access list, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["details.reason"]}," is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ip_not_allowed"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["details.address"]}," is the address the provider saw (when it named one), and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["message"]}," says which address to add."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["502"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FORGE_COMPUTE_PROVIDER_UNREACHABLE"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The provider did not answer. Nothing was stored; try again in a moment."]}]}]}]}]}]},{"$$mdtype":"Tag","name":"ApiExamples","attributes":{},"children":[{"$$mdtype":"Tag","name":"CodeGroup","attributes":{"mode":"dropdown"},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","data-title":"cURL","header":{"title":"cURL","controls":{"copy":{}}},"source":"curl -X PUT \"https://api.aitronos.com/v1/forge/compute/credentials/hetzner\" \\\n  -H \"Authorization: Bearer $ACCESS_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d \"{\\\"fields\\\": {\\\"api_token\\\": \\\"$HETZNER_API_TOKEN\\\"}}\"\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","data-title":"Python SDK","header":{"title":"Python SDK","controls":{"copy":{}}},"source":"# pip install aitronos-sdk\n#\n# The Python SDK does not expose a typed `forge_compute` namespace yet, so call\n# the endpoint directly with the same bearer token you would pass to `Aitronos(...)`.\nimport os\nimport httpx\n\nACCESS_TOKEN = \"your-access-token\"\n\naccount = httpx.put(\n    \"https://api.aitronos.com/v1/forge/compute/credentials/hetzner\",\n    headers={\"Authorization\": f\"Bearer {ACCESS_TOKEN}\"},\n    json={\"fields\": {\"api_token\": os.environ[\"HETZNER_API_TOKEN\"]}},\n).json()\nif account.get(\"foreign_servers\"):\n    print(\"This project also runs other servers; a dedicated project is recommended.\")\n","lang":"python"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","data-title":"Python","header":{"title":"Python","controls":{"copy":{}}},"source":"import os\nimport requests\n\ntoken = os.environ[\"AITRONOS_TOKEN\"]\nresponse = requests.put(\n    \"https://api.aitronos.com/v1/forge/compute/credentials/hetzner\",\n    headers={\"Authorization\": f\"Bearer {token}\"},\n    json={\"fields\": {\"api_token\": \"example-token-not-real\"}},\n)\nprint(response.status_code, response.json())\n","lang":"python"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"javascript","data-title":"JavaScript","header":{"title":"JavaScript","controls":{"copy":{}}},"source":"const response = await fetch(\n  \"https://api.aitronos.com/v1/forge/compute/credentials/hetzner\",\n  {\n    method: \"PUT\",\n    headers: {\n      Authorization: `Bearer ${process.env.AITRONOS_TOKEN}`,\n      \"Content-Type\": \"application/json\",\n    },\n    body: JSON.stringify({ fields: { api_token: process.env.HETZNER_API_TOKEN } }),\n  },\n);\nconst account = await response.json();\nconsole.log(account.status, account.foreign_servers);\n","lang":"javascript"},"children":[]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Response:"]}]},{"$$mdtype":"Tag","name":"Tabs","attributes":{"size":"medium"},"children":[{"$$mdtype":"Tag","name":"div","attributes":{"label":"200 OK","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"offering_id\": \"hetzner\",\n  \"set\": true,\n  \"account_label\": null,\n  \"verified_at\": \"2026-09-28T08:12:40Z\",\n  \"status\": \"connected\",\n  \"inactive_reason\": null,\n  \"expires_at\": null,\n  \"foreign_servers\": 0\n}\n","lang":"json"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"409 Conflict","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"FORGE_COMPUTE_HOSTS_EXIST\",\n    \"message\": \"Servers still use the account connected now, and these details could not be confirmed to open that same account, so they were not saved. Enter details for that account and try again, or delete those servers first.\",\n    \"system_message\": \"1 live Forge compute host(s) use this credential and the new fields were not proven to open their account\",\n    \"type\": \"client_error\",\n    \"status\": 409,\n    \"details\": {\"live_hosts\": 1},\n    \"trace_id\": \"3f1c9a52-7d4e-4b8a-9c21-6e0d5f7a8b34\",\n    \"timestamp\": \"2026-09-28T09:00:00Z\"\n  }\n}\n","lang":"json"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"422 Fields invalid","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"FORGE_COMPUTE_CREDENTIAL_FIELDS_INVALID\",\n    \"message\": \"Some account details are missing or not recognised. Check the form and try again.\",\n    \"system_message\": \"Credential fields invalid: missing=['api_token'] unknown=['token']\",\n    \"type\": \"validation_error\",\n    \"status\": 422,\n    \"details\": {\"missing\": [\"api_token\"], \"unknown\": [\"token\"]},\n    \"trace_id\": \"3f1c9a52-7d4e-4b8a-9c21-6e0d5f7a8b34\",\n    \"timestamp\": \"2026-09-28T09:00:00Z\"\n  }\n}\n","lang":"json"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"422 Rejected","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"FORGE_COMPUTE_CREDENTIAL_REJECTED\",\n    \"message\": \"Hetzner Cloud did not accept these account details. Check them and try again.\",\n    \"system_message\": \"Hetzner Cloud rejected the stored or submitted credential\",\n    \"type\": \"validation_error\",\n    \"status\": 422,\n    \"details\": {\"offering\": \"Hetzner Cloud\"},\n    \"trace_id\": \"3f1c9a52-7d4e-4b8a-9c21-6e0d5f7a8b34\",\n    \"timestamp\": \"2026-09-28T09:00:00Z\"\n  }\n}\n","lang":"json"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"403 Forbidden","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"FORGE_COMPUTE_OFFERING_BLOCKED\",\n    \"message\": \"Aitronos servers run on Aitronos' own accounts, so there is no account to connect.\",\n    \"system_message\": \"Forge compute offering blocked: Aitronos servers run on Aitronos' own accounts, so there is no account to connect.\",\n    \"type\": \"authorization_error\",\n    \"status\": 403,\n    \"details\": {\"blocked_reason\": \"Aitronos servers run on Aitronos' own accounts, so there is no account to connect.\"},\n    \"trace_id\": \"3f1c9a52-7d4e-4b8a-9c21-6e0d5f7a8b34\",\n    \"timestamp\": \"2026-09-28T09:00:00Z\"\n  }\n}\n","lang":"json"},"children":[]}]},{"$$mdtype":"Tag","name":"div","attributes":{"label":"502 Bad Gateway","disable":false},"children":[{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"success\": false,\n  \"error\": {\n    \"code\": \"FORGE_COMPUTE_PROVIDER_UNREACHABLE\",\n    \"message\": \"Hetzner Cloud could not be reached. Try again in a moment.\",\n    \"system_message\": \"Hetzner Cloud could not be reached\",\n    \"type\": \"bad_gateway\",\n    \"status\": 502,\n    \"details\": {\"offering\": \"Hetzner Cloud\"},\n    \"trace_id\": \"3f1c9a52-7d4e-4b8a-9c21-6e0d5f7a8b34\",\n    \"timestamp\": \"2026-09-28T09:00:00Z\"\n  }\n}\n","lang":"json"},"children":[]}]}]}]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"related-resources","__idx":7},"children":["Related Resources"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/introduction"},"children":["Forge cloud compute overview"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/list-billing-organizations"},"children":["List billing organizations"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/choose-billing-organization"},"children":["Choose the default billing organization"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/list-project-groups"},"children":["List project groups"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/put-project-group"},"children":["Register or update a project group"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/delete-project-group"},"children":["Delete a project group"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/list-offerings"},"children":["List compute offerings"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/get-offering-options"},"children":["Get offering options"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/resolve-offering-size"},"children":["Resolve a free size"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/list-credentials"},"children":["List connected accounts"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/put-credential"},"children":["Connect a cloud account"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/delete-credential"},"children":["Disconnect a cloud account"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/create-host"},"children":["Create a server"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/list-hosts"},"children":["List servers"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/list-my-hosts"},"children":["List your servers in every organization"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/get-host"},"children":["Get a server"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/get-host-usage"},"children":["Get a server's daily cost and uptime"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/list-host-intervals"},"children":["List a server's running intervals"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/list-host-events"},"children":["List a server's event history"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/report-progress"},"children":["Report a setup step"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/report-host-key"},"children":["Report the server's host key"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/report-ready"},"children":["Mark a server ready"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/report-activity"},"children":["Report activity"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/park-host"},"children":["Park a server"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/resume-host"},"children":["Resume a server"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/delete-host"},"children":["Delete a server"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/revoke-host"},"children":["Revoke a server"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/get-settings"},"children":["Get compute settings"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/update-settings"},"children":["Update compute settings"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/get-limits"},"children":["Get spend limits"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/update-organization-limits"},"children":["Change the organization's limits"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/update-my-limit"},"children":["Set your own limit"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/list-member-limits"},"children":["List member limits"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/update-member-limit"},"children":["Set a member's limit"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/api-reference/forge-compute/delete-orphan"},"children":["Delete a leftover resource"]}]}]}]},"headings":[{"value":"Connect a cloud account","id":"connect-a-cloud-account","depth":1},{"value":"Path Parameters","id":"path-parameters","depth":4},{"value":"Query Parameters","id":"query-parameters","depth":4},{"value":"Headers","id":"headers","depth":4},{"value":"Body Parameters","id":"body-parameters","depth":4},{"value":"Returns","id":"returns","depth":2},{"value":"Errors","id":"errors","depth":2},{"value":"Related Resources","id":"related-resources","depth":2}],"frontmatter":{"title":"Connect a cloud account","keywords":["forge","cloud compute","credentials","connect","bring your own"],"seo":{"title":"Connect a cloud account"}},"lastModified":"2026-10-26T18:32:31.578Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/api-reference/forge-compute/put-credential","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}