# InfraNest Developers > Automate domains, DNS, servers and monitoring with the InfraNest API. Every page is also available as Markdown at its URL plus `.md`. ## Pages - [Install the agent on many servers](https://developers.infranest.io/agent/install-on-many-servers.md): The InfraNest agent reports CPU, memory, disk, load and service health from Linux and Windows servers. It only ever sends: it takes no instructions, runs no commands, opens no ports, and runs as its own unprivileged user. It is open source: . - [Network requirements](https://developers.infranest.io/agent/network-requirements.md): What the InfraNest agent connects to, so you can allow it through a firewall. In short: **one outbound HTTPS connection, to `ingest.infranest.io`, and nothing inbound, ever.** The agent opens no port and takes no instructions. Installing and upgrading it also downloads from `get.infranest.io`. - [What it sends](https://developers.infranest.io/agent/what-it-sends.md): Every field the InfraNest agent sends, how often, and how long InfraNest keeps it. The tables below are built from the push endpoint's own validation, so they list exactly what InfraNest accepts. The agent's [PAYLOAD.md](https://github.com/InfraNest-Infrastructure-Organized/infranest-agent/blob/main/PAYLOAD.md) has the full contract with every edge case. - [Connect Claude and ChatGPT](https://developers.infranest.io/ai/claude-and-chatgpt.md): In claude.ai and ChatGPT you connect InfraNest without a token: you add the MCP server's address, sign in to InfraNest and approve. This works on every plan, Free included. The assistant can then read the organization you picked, and never change anything. - [Coding agents](https://developers.infranest.io/ai/coding-agents.md): Claude Code, Cursor, Codex, Copilot and other coding agents can write scripts against the InfraNest API, and run them. This page is how to set one up so it writes correct code and cannot do damage while it learns. - [Give an assistant the docs](https://developers.infranest.io/ai/docs-for-assistants.md): To have an assistant *write code* against the API, rather than read your account, give it these docs. Everything on this site is published as plain Markdown as well, for exactly this. - [What an assistant can and cannot do](https://developers.infranest.io/ai/safety.md): An assistant connected to InfraNest sees only what you could see yourself, narrowed to the organization and scopes you gave it, and it can never change anything. Every request it makes shows up in the audit log under the token's or the app's name. - [The MCP server](https://developers.infranest.io/ai-assistants.md): Ask Claude, ChatGPT, Cursor or VS Code about your infrastructure — "which monitors were down last night?", "where does `mail.example.com` point?", "which domains expire this quarter?" — and let it look the answer up in InfraNest. The assistant connects to the InfraNest **MCP server**, which reads through the same API as your scripts. - [Use with Postman, Bruno or Insomnia](https://developers.infranest.io/api-clients.md): Every endpoint of the API is ready to import into the API client you already use, built from the same description as the [reference](reference.md). Each comes with an environment holding three variables: `baseUrl`, `token` and `organization_id`. None of the files contains a token. - [Changelog](https://developers.infranest.io/changelog.md): Every change to the public API, newest first, each dated. Follow it as RSS at [`/changelog.xml`](/changelog.xml). How changes are made and announced is in [Versioning and deprecation](versioning.md). - [Errors](https://developers.infranest.io/errors.md): Every error from the InfraNest API has the same shape and a stable `code`. Write your scripts against the code: the message is for people and may be reworded, the code never changes. - [FAQ](https://developers.infranest.io/faq.md): In the app, under **Settings → Organization**, with a copy button. Or ask the API, with any token: - [Getting started](https://developers.infranest.io/getting-started.md): The InfraNest API lets you automate the infrastructure you manage in InfraNest: DNS records, monitors, maintenance windows, incidents and status pages. This guide takes you from no token to your first call in about five minutes. - [Limits](https://developers.infranest.io/limits.md): Every limit the API applies, in one place, so a script can stay inside them instead of finding them in a `429`. The numbers on this page are generated from the API's own code at build time; they cannot drift from what it enforces. - [OAuth for integrations](https://developers.infranest.io/oauth.md): Build an app that works in InfraNest for other people. With OAuth, the person clicks **Connect with InfraNest** in your app, approves it in InfraNest, and your app receives a token. Nobody creates or copies an API token, and they can remove your app whenever they like. - [Code you can use](https://developers.infranest.io/open-source.md): Ready-made code for the InfraNest API, open source on GitHub. Copy it, change it, run it — at your own risk, as each repository's licence says. - [Pagination and filtering](https://developers.infranest.io/pagination.md): Lists come in two shapes. Small ones — tags, alert channels, certificates and the like — answer a plain JSON array with everything in it. Lists that can grow large — domains, DNS zones, servers, monitors, incidents, maintenance windows, contacts, watched domains, the audit log — are paginated. Each endpoint's [reference](reference.md) entry shows which shape it answers, with a recorded example. - [Quickstart](https://developers.infranest.io/quickstart.md): Five minutes, on your sandbox, with a known answer at every step: find the sandbox, read its sample DNS zones, try a change as a dry run, make it, and undo it. Everything here happens in the [sandbox](sandbox.md), with a test token, so nothing reaches a DNS provider or the internet. If a step answers something other than what is shown, the problem is on our side or in the step before — and the error's `code` says which. - [Let's Encrypt with InfraNest DNS](https://developers.infranest.io/recipes/acme-dns-01.md): Get certificates for any domain whose DNS is in InfraNest, including wildcards, without opening a port. Your ACME client asks InfraNest to add one TXT record, waits for it to be checked, then removes it. - [Copy the audit log into your SIEM](https://developers.infranest.io/recipes/audit-log-to-a-siem.md): Send every change made in your organization, in the app or with a token, to your log platform once a day. The script reads yesterday's entries page by page and writes one JSON object per line, the format most log shippers read. - [Update DNS from a script when your IP changes](https://developers.infranest.io/recipes/dynamic-dns-from-a-script.md): Keep a record such as `home.example.com` pointing at a connection whose address changes. A small script finds your current address and changes the record only when it differs. - [Open a maintenance window from your deploy pipeline](https://developers.infranest.io/recipes/maintenance-window-from-a-pipeline.md): Silence alerts while a deploy runs, show the work on your status page, and close the window when the deploy is done. Your pipeline opens the window first and completes it at the end, even if the deploy fails. - [Create a monitor when you deploy a new service](https://developers.infranest.io/recipes/monitor-after-a-deploy.md): When a new service goes live, add a monitor for it in the same pipeline, so nothing reaches production without being watched. Running the step again does not create a second monitor. - [Status, uptime and history](https://developers.infranest.io/recipes/status-and-uptime.md): Three questions a dashboard, a chat bot or a weekly report asks, each answered in one call: is everything up right now, what was a monitor's uptime last month, and what happened hour by hour. - [Start watching a new server](https://developers.infranest.io/recipes/watch-a-new-server.md): After you create a server at your cloud provider, InfraNest finds it at its next sync. This recipe turns on monitoring for it and adds a check on its website, so a new machine is watched from its first hour. - [API reference](https://developers.infranest.io/reference.md): Every endpoint a token can use, generated from the API itself and grouped like the app's sidebar. Each one shows the scope it needs, whether a token may call it when it changes something, its parameters, the call in cURL, PowerShell, PHP, Python, JavaScript and Go, the recorded answer, and an example of each error it can answer. - [Responsibility and costs](https://developers.infranest.io/responsibility-and-costs.md): An API token acts as you. What it does is done in your name, in your organization, at the providers you have connected to InfraNest. This page says what that means in practice. - [Retries and dry runs](https://developers.infranest.io/retries-and-dry-runs.md): Two tools make changes through the API safe to automate. Use them in scripts, and always in AI agents. - [Sandbox](https://developers.infranest.io/sandbox.md): Try the API's writes without touching anything real. Your sandbox is a free organization with sample DNS zones, records, monitors, a server, domains, certificates and an incident. Tokens you make there are **test tokens**, and nothing in it ever reaches a DNS provider, a cloud provider or the internet. - [Scopes](https://developers.infranest.io/scopes.md): A scope says what a token may do. API tokens and [OAuth apps](oauth.md) use the same scopes: you tick them when you create a token, and an app asks for them when it sends someone to InfraNest to connect. - [Tokens and scopes](https://developers.infranest.io/tokens-and-scopes.md): An API token acts as you, within the scopes you give it. This page says how scopes work, what no token can ever do, and how to keep tokens safe. - [Troubleshooting](https://developers.infranest.io/troubleshooting.md): Start with the error's `code`. Every error from the API has one, and its `docs_url` links to the entry on [Errors](errors.md) that says what it means, why it usually happens and what to do. The problems below are the ones that are not a single code: a token that stopped working, a script that slows down, an assistant that will not connect. - [Versioning and deprecation](https://developers.infranest.io/versioning.md): The InfraNest API has one version, and it changes by adding. There is no `/v1` in the address and no version header to send: a script written today keeps working, and anything that would break it is announced months ahead. - [Webhooks](https://developers.infranest.io/webhooks.md): InfraNest can tell your own system when something happens — a domain about to expire, a monitor going down, DNS records changing — by posting JSON to a URL you own. This page is for building the receiver: the events, what they carry, and how to check that a request really came from InfraNest. - [API reference: Domains](https://developers.infranest.io/reference/domains.md): Domains and contacts as InfraNest knows them. Registrar actions (register, renew, transfer) stay in the app. - [API reference: DNS](https://developers.infranest.io/reference/dns.md): Zones and records at your DNS providers, templates and dynamic IP sources. Record changes are recorded in the zone history and can be undone. - [API reference: Certificates](https://developers.infranest.io/reference/certificates.md): TLS certificates InfraNest tracks or issues, and when they expire. - [API reference: Servers and cloud](https://developers.infranest.io/reference/cloud.md): Servers, volumes, networks, firewalls and load balancers. Provider actions stay in the app; tokens edit InfraNest's own records and alerting. - [API reference: Monitoring](https://developers.infranest.io/reference/monitoring.md): Monitors, their results and uptime, and deploy markers. - [API reference: Incidents](https://developers.infranest.io/reference/incidents.md): Incidents: open, update and resolve them. - [API reference: Maintenance](https://developers.infranest.io/reference/maintenance.md): Planned maintenance windows, which pause alerts and show on status pages. - [API reference: Status pages](https://developers.infranest.io/reference/status-pages.md): Public status pages and what they show. - [API reference: Alerts and notifications](https://developers.infranest.io/reference/alerts.md): Alert channels, alert rules and notification settings. Read only: changing who gets alerted stays in the app. - [API reference: Automations](https://developers.infranest.io/reference/automations.md): Automations and the connections they use. Read only. - [API reference: Integrations](https://developers.infranest.io/reference/integrations.md): Connected providers and messaging apps. Read only: credentials are managed in the app. - [API reference: Drop catch](https://developers.infranest.io/reference/drop-catch.md): Watched domains. - [API reference: Organization and members](https://developers.infranest.io/reference/organization.md): The organizations a token can reach, their members, roles, single sign-on and dashboards. Read only. - [API reference: Tags and custom fields](https://developers.infranest.io/reference/tags.md): Tags and custom fields, which work across every module. - [API reference: Costs](https://developers.infranest.io/reference/costs.md): Cost items, cost changes and provider price changes. - [API reference: Billing](https://developers.infranest.io/reference/billing.md): Subscription, invoices and usage. Read only. - [API reference: Audit log](https://developers.infranest.io/reference/audit-log.md): Every change in the organization, including those made with tokens. Read only. - [API reference: Data export](https://developers.infranest.io/reference/data.md): Export your data as CSV or JSON. - [API reference: Account](https://developers.infranest.io/reference/account.md): Who the token belongs to, and revoking it. ## Machine-readable - [OpenAPI description](https://developers.infranest.io/openapi.json): the public API only. - [Postman collection](https://developers.infranest.io/infranest.postman_collection.json) and [environment](https://developers.infranest.io/infranest.postman_environment.json): the same API, ready to import. - [Bruno collection](https://developers.infranest.io/infranest.bruno.zip): the same API as a Bruno collection folder, zipped, with an environment. - [Changelog feed](https://developers.infranest.io/changelog.xml): RSS. - [Everything in one file](https://developers.infranest.io/llms-full.txt)