> ## 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.

# Create execution

> Schedules a script or automation to run on a device. Overlapping runs are allowed — a device runs one execution at a time and queues the rest — so any overlap comes back as soft `conflicts` info rather than a rejection. Automations require an Autogrowth MAX subscription, and the create-account automation additionally requires its paid add-on.



## OpenAPI

````yaml /api-reference/openapi.json post /executions
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:
  /executions:
    post:
      tags:
        - Executions
      summary: Create execution
      description: >-
        Schedules a script or automation to run on a device. Overlapping runs
        are allowed — a device runs one execution at a time and queues the rest
        — so any overlap comes back as soft `conflicts` info rather than a
        rejection. Automations require an Autogrowth MAX subscription, and the
        create-account automation additionally requires its paid add-on.
      operationId: postExecutions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                scriptId:
                  description: >-
                    Script to run. Either `scriptId` or `automationId` is
                    required.
                  type: string
                automationId:
                  description: >-
                    Automation definition ID (see GET /automations). Either
                    `scriptId` or `automationId` is required.
                  type: string
                  minLength: 1
                deviceId:
                  type: string
                  description: Device to run on.
                accountId:
                  description: >-
                    Social account to operate on. It must be linked to this
                    device and match the automation’s platform; its container is
                    snapshotted onto the run so a later reassignment cannot
                    retarget it.
                  type: string
                scheduledAt:
                  type: string
                  minLength: 1
                  description: ISO 8601 datetime, e.g. 2025-06-01T12:00:00Z
                inputValues:
                  description: >-
                    Keyed by the automation input IDs from GET
                    /automations/{id}. The `account_selection` input is filled
                    in automatically when `accountId` is set.
                  type: object
                  propertyNames:
                    type: string
                  additionalProperties:
                    anyOf:
                      - type: string
                      - type: boolean
                      - type: array
                        items:
                          type: string
                enableAIRecovery:
                  type: boolean
                switchMobileData:
                  description: >-
                    Cycle the phone’s cellular data (off → on) right before the
                    run to get a fresh carrier IP. Only `true` triggers the
                    cycle.
                  type: boolean
                runtimeProvider:
                  description: >-
                    Force the provider for this run. Omit to fall back to the
                    account’s `defaultRuntimeProvider`, then to inference.
                  type: string
                  enum:
                    - doritos
                    - doritos-lite
                    - none
              required:
                - deviceId
                - scheduledAt
              description: Either `scriptId` or `automationId` must be provided.
      responses:
        '201':
          description: Execution created
          content:
            application/json:
              schema:
                type: object
                properties:
                  execution:
                    type: object
                    properties:
                      id:
                        type: string
                        description: UUID (v7).
                      userId:
                        type: string
                        description: UUID (v7).
                      type:
                        type: string
                        enum:
                          - script
                          - automation
                      automationId:
                        description: Automation definition ID, when `type` is `automation`.
                        type: string
                      status:
                        type: string
                        enum:
                          - pending
                          - processing
                          - completed
                          - failed
                          - skipped
                          - cancelled
                        description: >-
                          `pending` is queued, `processing` is claimed by a
                          Companion and running now.
                      scheduledAt:
                        type: string
                        description: ISO 8601 date-time, e.g. 2025-06-01T12:00:00.000Z
                      expiresAt:
                        description: >-
                          Hard deadline after which a still-pending run is
                          expired to `skipped`.
                        type: string
                      leaseExpiresAt:
                        description: >-
                          Lease deadline for a claimed (`processing`) run;
                          renewed by the owning Companion.
                        type: string
                      claimedBy:
                        description: HWID of the Companion currently holding the claim.
                        type: string
                      result:
                        type: object
                        properties:
                          success:
                            type: boolean
                          error:
                            type: string
                          failedNodeId:
                            type: string
                          startedAt:
                            type: string
                            description: ISO 8601 date-time, e.g. 2025-06-01T12:00:00.000Z
                          completedAt:
                            type: string
                            description: ISO 8601 date-time, e.g. 2025-06-01T12:00:00.000Z
                        required:
                          - success
                      logs:
                        type: object
                        properties:
                          scriptLogKey:
                            type: string
                          errorScreenshotKey:
                            type: string
                          errorSourceKey:
                            type: string
                          uploadedAt:
                            type: string
                            description: ISO 8601 date-time, e.g. 2025-06-01T12:00:00.000Z
                      inputValues:
                        type: object
                        propertyNames:
                          type: string
                        additionalProperties:
                          anyOf:
                            - type: string
                            - type: boolean
                            - type: array
                              items:
                                type: string
                      enableAIRecovery:
                        type: boolean
                      switchMobileData:
                        description: >-
                          Cellular data was cycled before this run to force a
                          fresh carrier IP.
                        type: boolean
                      runtimeProvider:
                        type: string
                        enum:
                          - doritos
                          - doritos-lite
                          - none
                        description: >-
                          Container/identity provider to use on the phone.
                          Absent means "infer from the data" (the assigned
                          container’s type, else whichever provider the phone is
                          linked to). `none` runs in the phone’s own environment
                          and actively clears any active proxy — it is not the
                          same as having no container.
                      programId:
                        description: Set when the run was auto-created by a warmup program.
                        type: string
                      workflowId:
                        description: Set when the run was auto-created by a workflow.
                        type: string
                      workflowStepIndex:
                        type: number
                      cancelRequestedAt:
                        type: string
                        description: ISO 8601 date-time, e.g. 2025-06-01T12:00:00.000Z
                      createdAt:
                        type: string
                        description: ISO 8601 date-time, e.g. 2025-06-01T12:00:00.000Z
                      updatedAt:
                        type: string
                        description: ISO 8601 date-time, e.g. 2025-06-01T12:00:00.000Z
                      scriptId:
                        type: string
                        description: UUID (v7).
                      deviceId:
                        type: string
                        description: UUID (v7).
                      accountId:
                        type: string
                        description: UUID (v7).
                      containerId:
                        type: string
                        description: UUID (v7).
                    required:
                      - id
                      - userId
                      - type
                      - status
                      - scheduledAt
                      - createdAt
                      - updatedAt
                    description: >-
                      Execution with unexpanded relations — `scriptId`,
                      `deviceId`, `accountId` and `containerId` are UUID
                      strings.
                  conflicts:
                    type: array
                    items:
                      type: object
                      properties:
                        scriptName:
                          type: string
                          description: >-
                            Script name, or the automation’s display name for
                            automation runs. `Unknown` when the script row is
                            gone.
                        scheduledAt:
                          type: string
                          description: ISO 8601 date-time, e.g. 2025-06-01T12:00:00.000Z
                      required:
                        - scriptName
                        - scheduledAt
                    description: >-
                      Pending runs on the same device whose estimated window
                      overlaps this one. Informational only.
                required:
                  - execution
                  - conflicts
        '400':
          description: >-
            Schema validation failure (raw Zod error), or an unusable target
            returned as `{ error }`: invalid account ID, account not linked to
            this device, account platform mismatched with the automation, or a
            container that is gone / on another device / not an Instagram
            container.
          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
        '402':
          description: >-
            `SLOT_EXPIRED` — the device’s phone slot has expired. Renew the slot
            to schedule runs on it.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
                    description: Machine-readable error code.
                required:
                  - error
                  - code
        '403':
          description: >-
            Insufficient permissions (`{ error }` only), `MAX_REQUIRED` when
            scheduling an automation without Autogrowth MAX, or
            `CREATE_ACCOUNT_ADDON_REQUIRED` for the create-account automation
            without its add-on.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  code:
                    type: string
                    description: Machine-readable error code.
                required:
                  - error
                  - code
        '404':
          description: Script, automation, device, or account 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

````