# inDM API > Build, launch and read Instagram comment-to-DM automations from your own code. - [Introduction](https://docs.indm.social/index.md): Build, launch and read Instagram comment-to-DM automations from your own code. - [Quickstart](https://docs.indm.social/quickstart.md): Create a key, make your first call, and put your newest reel to work. - [Authentication](https://docs.indm.social/authentication.md): API keys, scopes, expiry, rotation, and why a key never belongs in a browser. - [Errors](https://docs.indm.social/errors.md): Every error code the API returns, what it means, and how to fix it. - [Rate limits](https://docs.indm.social/rate-limits.md): How many requests a key can make, the headers that tell you where you stand, and how to back off. - [Pagination](https://docs.indm.social/pagination.md): How list endpoints page through results with a cursor. - [Instagram's rules](https://docs.indm.social/instagram-rules.md): The platform rules every automation runs inside. Narrower and stranger than they look, and worth knowing before you build. - [Versioning](https://docs.indm.social/versioning.md): How the API changes, and what will never change under you. - [Changelog](https://docs.indm.social/changelog.md): Every change to the inDM API, newest first. - [Refresh, then automate the post you just published](https://docs.indm.social/recipes/refresh-then-automate.md): Your publishing tool posts a reel. Seconds later, it's answering comments. - [Read how an automation is doing](https://docs.indm.social/recipes/read-automation-results.md): Pull your live automations' results into a dashboard, a sheet or a daily digest. - [API reference](https://docs.indm.social/api-reference/introduction.md): Every endpoint in the inDM API, with a playground to try each one. - [Get the workspace](https://docs.indm.social/api-reference/workspace/get-workspace.md): Returns the workspace this key belongs to, its plan, and the key's own scope and expiry. A good first call: if it answers, your key works. - [List accounts](https://docs.indm.social/api-reference/accounts/list-accounts.md): Every Instagram account connected to the workspace, with its handle, follower count and connection status. This is where the `account_id` the other endpoints take comes from. - [Get an account](https://docs.indm.social/api-reference/accounts/get-account.md): One connected Instagram account. - [Check account health](https://docs.indm.social/api-reference/accounts/get-account-health.md): An end-to-end check of one account: whether Instagram has paused the connection and why, how fast it sends and how much is waiting, which errors Instagram has returned lately, and whether any live automation is set up in a way that can't fire. The answer to "why did nobody get the DM?". - [Refresh content](https://docs.indm.social/api-reference/accounts/refresh-account.md): Asks Instagram for the account's newest posts and reels. inDM pulls posts on a schedule rather than on demand, so a post published in the last few minutes is often missing from [List media](/api-reference/media/list-media) while it already exists on Instagram. This fetches it. - [Get a refresh](https://docs.indm.social/api-reference/accounts/get-refresh.md): Where a refresh has got to. Poll every few seconds until `status` is `completed`, then read [List media](/api-reference/media/list-media). A first sync of a large account takes a few minutes. - [List media](https://docs.indm.social/api-reference/media/list-media.md): Posts and reels inDM has synced, newest first. Stories are left out: they expire in a day, which is shorter than most automations are meant to run. - [Get a media item](https://docs.indm.social/api-reference/media/get-media.md): One synced post or reel. - [List automations](https://docs.indm.social/api-reference/automations/list-automations.md): Every automation in the workspace with its status, trigger, keywords and the post it is attached to, newest first. - [Get an automation](https://docs.indm.social/api-reference/automations/get-automation.md): One automation with its full setup: keywords, every message, links, gates and follow-up. The field names match the update body, so you can edit what you read and send it back. The one difference: `public_replies` lists every public reply, where an update sets one as `public_reply`. - [Create an automation](https://docs.indm.social/api-reference/automations/create-automation.md): Builds a comment-to-DM automation on one of your posts or reels. It is always created as a `draft`, so nothing reaches anyone until you [set it live](/api-reference/automations/set-automation-status). - [Update an automation](https://docs.indm.social/api-reference/automations/update-automation.md): Changes an existing automation. Send only the fields you want to change: - [Set automation status](https://docs.indm.social/api-reference/automations/set-automation-status.md): Sets an automation `live` or `paused`. This is the only call in the API that changes what people on Instagram receive. - [Get automation stats](https://docs.indm.social/api-reference/automations/get-automation-stats.md): How an automation is doing over a window of days: how many times it fired, how many messages went out, how many Instagram refused and how many are still waiting. Aggregate counts only; no individual person is ever returned. - [Validate an automation](https://docs.indm.social/api-reference/automations/validate-automation.md): A dry run. Checks a proposed comment-to-DM automation against the rules the engine enforces and returns the normalised version together with anything that would make it misfire: a keyword with a space in it, a button label Instagram would cut off, a DM that promises a link it was never given. ## OpenAPI Specs - [openapi](/openapi.yaml) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.