> ## Documentation Index
> Fetch the complete documentation index at: https://docs.autogrowth.farm/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> AutoGrowth runs social accounts on real phones. Everything a page describes happens on a physical device in the customer's own fleet, never through a social platform's API.
> The Companion is a macOS desktop app that runs on the customer's own Mac and manages the phones over USB — iPhones through WebDriverAgent, GrapheneOS phones through ADB and scrcpy. Nothing runs while the Companion is closed.
> The Companion builds, signs and installs WebDriverAgent on each iPhone itself. Never tell a customer to sign WebDriverAgent by hand in Xcode; Xcode is a prerequisite the Companion drives, not a step the customer performs.
> Autogrowth MAX is a one-time, invite-only lifetime license bought from the organization's credit balance, not a subscription tier. It is required to run any automation, workflow or Incubator program. Without a price set for that organization, the purchase is refused.
> An automation is one of AutoGrowth's built-in definitions; a script is a graph the customer builds in the Script Builder. The Script Builder is locked platform-wide, so never present building a script as something a customer can do today.
> An API key is a bare 64-character hex string with no prefix. It is shown once, at creation, is sent as `Authorization: Bearer <key>`, and can never be read back.
> An API key sees only the key owner's own accounts, content, collections, prompts, scripts and executions. Devices and tags are organization-scoped, and a non-owner sees only the devices assigned to them or carrying one of their tags. The automation catalog is global.
> There is no pagination. List endpoints return the whole set; the only limiting parameter anywhere is `limit` on `GET /v1/executions`, which defaults to 50 and has no offset to page with.
> Remote control and the live screen are dashboard-only, over WebSocket and MJPEG. Neither is part of the public API.
> The MCP server is hosted at https://mcp.autogrowth.farm and authenticates with OAuth. It is not an npm package and there is nothing to install locally. Its tools inherit exactly the scope of the API key behind them.
> Android support is partial and GrapheneOS-only: those phones appear in the fleet and can be watched and remote-controlled, but they cannot run scripts or automations.
> Never document Hi Katie or any persona feature. When a page and the code disagree, the code wins — check a claim against the source before repeating it.

# Get automation

> Returns a single automation definition by ID. Admin-only automations return 404 for non-admin keys.



## OpenAPI

````yaml /api-reference/openapi.json get /automations/{id}
openapi: 3.1.0
info:
  title: AutoGrowth API
  description: >-
    Public REST API for automating actions within the AutoGrowth platform.
    Authenticate with Authorization: Bearer <api-key>. Create API keys in
    Dashboard → Settings → Developer API.
  version: 1.0.0
servers:
  - url: https://api.autogrowth.farm/v1
    description: Production
security:
  - bearerAuth: []
paths:
  /automations/{id}:
    get:
      tags:
        - Automations
      summary: Get automation
      description: >-
        Returns a single automation definition by ID. Admin-only automations
        return 404 for non-admin keys.
      operationId: getAutomationsById
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
          description: Automation definition ID, e.g. `post-to-instagram`. Not a UUID.
      responses:
        '200':
          description: Automation definition
          content:
            application/json:
              schema:
                type: object
                properties:
                  automation:
                    type: object
                    properties:
                      id:
                        type: string
                        description: Pass this as `automationId` when creating executions.
                      name:
                        type: string
                      description:
                        type: string
                      category:
                        type: string
                        enum:
                          - instagram
                          - tiktok
                          - x
                          - threads
                          - general
                        description: >-
                          Platform the automation targets. A non-`general`
                          category must match the platform of any `accountId`
                          the execution names.
                      estimatedDuration:
                        type: number
                        description: Estimated run time in minutes.
                      inputs:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              description: Key to use in an execution’s `inputValues`.
                            type:
                              type: string
                              enum:
                                - account_selection
                                - user_input
                                - user_toggle
                                - user_select
                                - user_multi_select
                                - push_media
                                - container_select
                                - container_target
                              description: >-
                                What the value must be. `account_selection`
                                takes a username (filled in automatically when
                                the execution sets `accountId`); `push_media`
                                takes an array of content IDs; `user_toggle`
                                takes a boolean; `user_multi_select` takes an
                                array of `options` values; `container_select`
                                takes an existing container’s NAME (a plain
                                string); `container_target` takes a container ID
                                and may be accompanied by sibling `inputValues`
                                keys `containerName` (blank = derive from the
                                username) and `proxyId` when provisioning a
                                fresh container; everything else takes a string.
                            name:
                              type: string
                              description: Display label.
                            description:
                              type: string
                            platform:
                              description: >-
                                Restricts an `account_selection` input to one
                                platform.
                              type: string
                              enum:
                                - instagram
                                - tiktok
                                - x
                                - threads
                            options:
                              description: >-
                                Allowed values for `user_select` /
                                `user_multi_select`.
                              type: array
                              items:
                                type: string
                            defaultValue:
                              anyOf:
                                - type: string
                                - type: boolean
                                - type: array
                                  items:
                                    type: string
                          required:
                            - id
                            - type
                            - name
                      adminOnly:
                        description: >-
                          Present only on platform-admin automations, which are
                          hidden from everyone else.
                        type: boolean
                      addon:
                        description: >-
                          Paid add-on the organization must hold to RUN this
                          automation. Unlike `adminOnly` the automation stays
                          visible to everyone; scheduling without the add-on
                          fails with CREATE_ACCOUNT_ADDON_REQUIRED. There is no
                          admin bypass — access is purely payment-based.
                        type: string
                        const: create-account
                      excludeFromWorkflows:
                        description: >-
                          True when the automation cannot be a workflow step,
                          because it is not account-targeted and would fan out
                          nonsensically across a device’s accounts.
                        type: boolean
                    required:
                      - id
                      - name
                      - description
                      - category
                      - estimatedDuration
                      - inputs
                required:
                  - automation
        '400':
          description: >-
            Request failed schema validation. The raw Zod SafeParseError is
            returned.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    const: false
                  error:
                    type: object
                    properties:
                      name:
                        type: string
                        const: ZodError
                      issues:
                        type: array
                        items:
                          type: object
                          propertyNames:
                            type: string
                          additionalProperties: {}
                        description: Raw Zod issues (code, path, message, ...).
                    required:
                      - name
                      - issues
                required:
                  - success
                  - error
        '401':
          description: 'Missing or invalid API key. Send `Authorization: Bearer <api-key>`.'
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Human-readable error message.
                required:
                  - error
        '404':
          description: Automation not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Human-readable error message.
                required:
                  - error
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Developer API key from Dashboard → Settings → Developer API

````