{
  "openapi": "3.0.1",
  "info": {
    "title": "Secure Playwright Browser Automation Runner",
    "description": "Secure declarative Playwright browser automation for AI agents and backend workflows. Navigate, click, fill, extract, assert, and screenshot with SSRF protection, bounded resources, structured audit trails, deterministic selector targeting, and per-action billing.",
    "version": "0.0",
    "x-build-id": "Bm11rH0Epi0ncf8FV"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/moneyagent_lab~money-agent-browser-runner/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-moneyagent_lab-money-agent-browser-runner",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/moneyagent_lab~money-agent-browser-runner/runs": {
      "post": {
        "operationId": "runs-sync-moneyagent_lab-money-agent-browser-runner",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/moneyagent_lab~money-agent-browser-runner/run-sync": {
      "post": {
        "operationId": "run-sync-moneyagent_lab-money-agent-browser-runner",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "startUrl",
          "actions"
        ],
        "properties": {
          "clientReference": {
            "title": "Client reference",
            "minLength": 1,
            "maxLength": 128,
            "type": "string",
            "description": "Optional caller-supplied ID used to correlate this run with an agent task, job, or backend request."
          },
          "startUrl": {
            "title": "Start URL",
            "minLength": 1,
            "maxLength": 4096,
            "type": "string",
            "description": "Public HTTP(S) URL you are authorized to automate. Private networks, URL credentials, and non-web schemes are blocked."
          },
          "actions": {
            "title": "Actions",
            "minItems": 1,
            "maxItems": 100,
            "type": "array",
            "description": "1-100 declarative browser actions. Successful actions are the future PPE billing unit.",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "title": "Action type",
                  "description": "Choose the browser action to perform.",
                  "type": "string",
                  "enum": [
                    "goto",
                    "waitForSelector",
                    "click",
                    "fill",
                    "select",
                    "extractText",
                    "extractAttribute",
                    "getTitle",
                    "getUrl",
                    "assertText",
                    "screenshot",
                    "wait"
                  ]
                },
                "url": {
                  "title": "URL",
                  "description": "Public HTTP(S) destination for goto actions.",
                  "type": "string",
                  "maxLength": 4096
                },
                "selector": {
                  "title": "Selector",
                  "description": "CSS selector used by element-based actions.",
                  "type": "string",
                  "maxLength": 1000
                },
                "matchIndex": {
                  "title": "Match index",
                  "description": "Optional zero-based index used when a selector matches multiple elements. If omitted, strict mode remains enabled and ambiguous selectors fail.",
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 999
                },
                "value": {
                  "title": "Value",
                  "description": "Value used by fill or select actions.",
                  "type": "string",
                  "maxLength": 20000
                },
                "text": {
                  "title": "Text",
                  "description": "Expected text used by text assertions.",
                  "type": "string",
                  "maxLength": 20000
                },
                "attribute": {
                  "title": "Attribute",
                  "description": "HTML attribute name to extract.",
                  "type": "string",
                  "maxLength": 256
                },
                "timeoutSeconds": {
                  "title": "Timeout seconds",
                  "description": "Maximum time allowed for this action.",
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 60
                },
                "milliseconds": {
                  "title": "Milliseconds",
                  "description": "Delay duration for wait actions.",
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 60000
                },
                "key": {
                  "title": "Result key",
                  "description": "Optional key used to identify a screenshot artifact.",
                  "type": "string",
                  "maxLength": 128
                },
                "fullPage": {
                  "title": "Full page",
                  "description": "Capture the entire page for screenshot actions.",
                  "type": "boolean"
                }
              },
              "required": [
                "type"
              ],
              "additionalProperties": false
            }
          },
          "stopOnError": {
            "title": "Stop on error",
            "type": "boolean",
            "description": "Stop the workflow when the first action fails.",
            "default": true
          },
          "maxRunSeconds": {
            "title": "Maximum run time",
            "minimum": 1,
            "maximum": 180,
            "type": "integer",
            "description": "Hard limit for the full workflow duration.",
            "default": 120
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}