{
  "openapi": "3.1.0",
  "info": {
    "title": "Gomry Cloud API",
    "summary": "Developer APIs from Gomry. Metered per request, priced per unit, billed monthly — no plans, no seats, no free tier to outgrow.",
    "description": "Gomry Cloud sells the technical services Gomry built to run its own event platform as metered HTTP APIs.\n\nAuthentication is an API key sent as a bearer token. Billing is postpaid and metered: you are charged per unit consumed, invoiced monthly, and only for work that produced a result. There is no free tier — an active payment method is required before any API will serve.\n\nRate limits are applied per API key, not per IP. Guides, errors and rates: https://docs.cloud.gomry.com",
    "version": "1.0.0",
    "termsOfService": "https://gomry.com/terms",
    "contact": {
      "name": "Gomry Cloud support",
      "url": "https://docs.cloud.gomry.com"
    }
  },
  "servers": [
    {
      "url": "https://api.cloud.gomry.com",
      "description": "Production data plane"
    }
  ],
  "externalDocs": {
    "description": "Gomry Cloud documentation",
    "url": "https://docs.cloud.gomry.com"
  },
  "x-mcp-server": {
    "url": "https://api.cloud.gomry.com/mcp",
    "transport": "streamable-http",
    "card": "https://api.cloud.gomry.com/.well-known/mcp/server-card.json"
  },
  "x-agent-instructions": "https://cloud.gomry.com/agents.md",
  "x-llms-txt": "https://cloud.gomry.com/llms.txt",
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "Scrape",
      "description": "Fetch a page and extract structured data from it against a JSON schema.",
      "externalDocs": {
        "url": "https://docs.cloud.gomry.com/services/scrape"
      }
    },
    {
      "name": "ToolsAPI",
      "description": "Find a tool that can do a task and run it — 1,700+ across 55+ vendors, on your Gomry key.",
      "externalDocs": {
        "url": "https://docs.cloud.gomry.com/services/toolsapi"
      }
    },
    {
      "name": "Superagent",
      "description": "Give it a research question and a JSON schema. It plans, searches, reads, notices what is missing, searches again — and cites every field.",
      "externalDocs": {
        "url": "https://docs.cloud.gomry.com/services/tasks"
      }
    },
    {
      "name": "Ember",
      "description": "One model call, priced per token, at three grades — with the routing, compression and caching that make the cheap grade cheap.",
      "externalDocs": {
        "url": "https://docs.cloud.gomry.com/services/inference"
      }
    }
  ],
  "paths": {
    "/v1/scrape": {
      "post": {
        "operationId": "scrape_post_v1_scrape",
        "summary": "Fetch a page and extract structured data from it against a JSON schema.",
        "description": "Fetch a page and extract structured data from it against a JSON schema.\n\nRequires the `scrape:run` scope, and the project must have Scrape enabled.\n\nBilled on success. The response reports `pages` — the quantity metered for this call. Rates: https://docs.cloud.gomry.com/pricing.\n\nFull reference: https://docs.cloud.gomry.com/services/scrape",
        "tags": [
          "Scrape"
        ],
        "x-required-scope": "scrape:run",
        "x-gomry-service": "scrape",
        "x-gomry-metered-field": "pages",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [],
                "properties": {
                  "url": {
                    "description": "Required. The page to scrape. Max 2048 characters. Private addresses and internal hostnames are refused."
                  },
                  "schema": {
                    "description": "Required for /v1/scrape. A JSON Schema object describing the shape you want back. Returned in `data`."
                  },
                  "prompt": {
                    "description": "Required for /v1/scrape. 1–2000 characters of instruction for the extraction, e.g. \"Extract the event\"."
                  },
                  "waitFor": {
                    "description": "Milliseconds to wait after load before reading the page, for content that arrives late. 0–15000."
                  },
                  "timeout": {
                    "description": "Milliseconds before the vendor call is abandoned. 1000–90000. The whole request is capped at 120s server-side, so budget for two calls if you use `retry`."
                  },
                  "onlyMainContent": {
                    "description": "Strip navigation, footers and boilerplate before extraction. Defaults to true; set false when the data you want lives in the chrome."
                  },
                  "includeRawHtml": {
                    "description": "Also return the page's raw HTML in `rawHtml`. Use when you parse JSON-LD or embedded blobs yourself."
                  },
                  "retry": {
                    "description": "{ requiredField, waitFor }. If the first pass returns without that field, the page is fetched once more with the longer wait. Bills both calls, and only when each returned a page."
                  }
                }
              },
              "example": {
                "url": "https://example.com/events/summer-fest",
                "prompt": "Extract the event",
                "schema": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "startDate": {
                      "type": "string"
                    },
                    "venue": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. `pages` reports what was metered.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "`validation_error` — the body failed schema validation.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "`unauthorized` — key missing, malformed, unknown, revoked or expired.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "`billing_required`, `billing_past_due`, `billing_suspended` or `insufficient_credit` — spending is blocked until a human adds a card, fixes one, or raises the project budget. Do not retry in a loop.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`forbidden` (the key lacks the scope) or `api_not_enabled` (the project has not enabled this API).",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "`not_found` — the addressed resource does not exist, or is not yours to see.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "`rate_limited` — back off until `x-ratelimit-reset`, with jitter.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "`internal_error` — a fault on our side. Retry, and send us the `x-request-id`.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "502": {
            "description": "`upstream_error` — a provider we depend on failed. Retryable, and not billed.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "`provider_unavailable` — the service is not currently configured to serve. Retryable.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/fetch": {
      "post": {
        "operationId": "scrape_post_v1_fetch",
        "summary": "Fetch a page and return its raw HTML and metadata, without LLM extraction. A quarter the price.",
        "description": "Fetch a page and return its raw HTML and metadata, without LLM extraction. A quarter the price.\n\nRequires the `scrape:fetch` scope, and the project must have Scrape enabled.\n\nBilled on success. The response reports `fetches` — the quantity metered for this call. Rates: https://docs.cloud.gomry.com/pricing.\n\nFull reference: https://docs.cloud.gomry.com/services/scrape",
        "tags": [
          "Scrape"
        ],
        "x-required-scope": "scrape:fetch",
        "x-gomry-service": "scrape",
        "x-gomry-metered-field": "fetches",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [],
                "properties": {
                  "url": {
                    "description": "Required. The page to scrape. Max 2048 characters. Private addresses and internal hostnames are refused."
                  },
                  "schema": {
                    "description": "Required for /v1/scrape. A JSON Schema object describing the shape you want back. Returned in `data`."
                  },
                  "prompt": {
                    "description": "Required for /v1/scrape. 1–2000 characters of instruction for the extraction, e.g. \"Extract the event\"."
                  },
                  "waitFor": {
                    "description": "Milliseconds to wait after load before reading the page, for content that arrives late. 0–15000."
                  },
                  "timeout": {
                    "description": "Milliseconds before the vendor call is abandoned. 1000–90000. The whole request is capped at 120s server-side, so budget for two calls if you use `retry`."
                  },
                  "onlyMainContent": {
                    "description": "Strip navigation, footers and boilerplate before extraction. Defaults to true; set false when the data you want lives in the chrome."
                  },
                  "includeRawHtml": {
                    "description": "Also return the page's raw HTML in `rawHtml`. Use when you parse JSON-LD or embedded blobs yourself."
                  },
                  "retry": {
                    "description": "{ requiredField, waitFor }. If the first pass returns without that field, the page is fetched once more with the longer wait. Bills both calls, and only when each returned a page."
                  }
                }
              },
              "example": {
                "url": "https://example.com/events/summer-fest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. `fetches` reports what was metered.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "`validation_error` — the body failed schema validation.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "`unauthorized` — key missing, malformed, unknown, revoked or expired.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "`billing_required`, `billing_past_due`, `billing_suspended` or `insufficient_credit` — spending is blocked until a human adds a card, fixes one, or raises the project budget. Do not retry in a loop.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`forbidden` (the key lacks the scope) or `api_not_enabled` (the project has not enabled this API).",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "`not_found` — the addressed resource does not exist, or is not yours to see.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "`rate_limited` — back off until `x-ratelimit-reset`, with jitter.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "`internal_error` — a fault on our side. Retry, and send us the `x-request-id`.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "502": {
            "description": "`upstream_error` — a provider we depend on failed. Retryable, and not billed.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "`provider_unavailable` — the service is not currently configured to serve. Retryable.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/toolsapi/run": {
      "post": {
        "operationId": "toolsapi_post_v1_toolsapi_run",
        "summary": "Find a tool that can do a task and run it — 1,700+ across 55+ vendors, on your Gomry key.",
        "description": "Find a tool that can do a task and run it — 1,700+ across 55+ vendors, on your Gomry key.\n\nRequires the `toolsapi:run` scope, and the project must have ToolsAPI enabled.\n\nBilled on success. The response reports `meteredMicroUsd` — the quantity metered for this call. Rates: https://docs.cloud.gomry.com/pricing.\n\nFull reference: https://docs.cloud.gomry.com/services/toolsapi",
        "tags": [
          "ToolsAPI"
        ],
        "x-required-scope": "toolsapi:run",
        "x-gomry-service": "toolsapi",
        "x-gomry-metered-field": "meteredMicroUsd",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [],
                "properties": {
                  "vendor": {
                    "description": "Required for run/inspect. Catalogue vendor slug, e.g. \"apify\". Monid calls this `provider`; here it is `vendor`, because `provider` already means an adapter."
                  },
                  "endpoint": {
                    "description": "Required for run/inspect. The tool's path within that vendor, e.g. \"/apidojo/tweet-scraper\". Both halves come from `discover` or `inspect`."
                  },
                  "input": {
                    "description": "Required for run. An object matching the tool's own `inputSchema` from `inspect`. Passed through unvalidated by us — the tool rejects what it does not accept."
                  },
                  "query": {
                    "description": "Required for discover. 1–2000 characters of natural language describing the task."
                  },
                  "limit": {
                    "description": "Discover only. How many tools to return, 1–20. Values above the ceiling are clamped, not refused."
                  },
                  "timeout": {
                    "description": "Milliseconds before the catalogue call is abandoned. 1000–90000. The run route is capped at 120s server-side."
                  }
                }
              },
              "example": {
                "vendor": "apify",
                "endpoint": "/apidojo/tweet-scraper",
                "input": {
                  "handle": "gomry",
                  "limit": 20
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. `meteredMicroUsd` reports what was metered.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "`validation_error` — the body failed schema validation.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "`unauthorized` — key missing, malformed, unknown, revoked or expired.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "`billing_required`, `billing_past_due`, `billing_suspended` or `insufficient_credit` — spending is blocked until a human adds a card, fixes one, or raises the project budget. Do not retry in a loop.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`forbidden` (the key lacks the scope) or `api_not_enabled` (the project has not enabled this API).",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "`not_found` — the addressed resource does not exist, or is not yours to see.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "`rate_limited` — back off until `x-ratelimit-reset`, with jitter.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "`internal_error` — a fault on our side. Retry, and send us the `x-request-id`.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "502": {
            "description": "`upstream_error` — a provider we depend on failed. Retryable, and not billed.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "`provider_unavailable` — the service is not currently configured to serve. Retryable.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/toolsapi/discover": {
      "post": {
        "operationId": "toolsapi_post_v1_toolsapi_discover",
        "summary": "Describe a task in words and get back the tools that can do it, ranked, with prices.",
        "description": "Describe a task in words and get back the tools that can do it, ranked, with prices.\n\nRequires the `toolsapi:read` scope, and the project must have ToolsAPI enabled.\n\nBilled on success. The response reports `lookups` — the quantity metered for this call. Rates: https://docs.cloud.gomry.com/pricing.\n\nFull reference: https://docs.cloud.gomry.com/services/toolsapi",
        "tags": [
          "ToolsAPI"
        ],
        "x-required-scope": "toolsapi:read",
        "x-gomry-service": "toolsapi",
        "x-gomry-metered-field": "lookups",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [],
                "properties": {
                  "vendor": {
                    "description": "Required for run/inspect. Catalogue vendor slug, e.g. \"apify\". Monid calls this `provider`; here it is `vendor`, because `provider` already means an adapter."
                  },
                  "endpoint": {
                    "description": "Required for run/inspect. The tool's path within that vendor, e.g. \"/apidojo/tweet-scraper\". Both halves come from `discover` or `inspect`."
                  },
                  "input": {
                    "description": "Required for run. An object matching the tool's own `inputSchema` from `inspect`. Passed through unvalidated by us — the tool rejects what it does not accept."
                  },
                  "query": {
                    "description": "Required for discover. 1–2000 characters of natural language describing the task."
                  },
                  "limit": {
                    "description": "Discover only. How many tools to return, 1–20. Values above the ceiling are clamped, not refused."
                  },
                  "timeout": {
                    "description": "Milliseconds before the catalogue call is abandoned. 1000–90000. The run route is capped at 120s server-side."
                  }
                }
              },
              "example": {
                "query": "scrape recent tweets from an account",
                "limit": 5
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. `lookups` reports what was metered.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "`validation_error` — the body failed schema validation.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "`unauthorized` — key missing, malformed, unknown, revoked or expired.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "`billing_required`, `billing_past_due`, `billing_suspended` or `insufficient_credit` — spending is blocked until a human adds a card, fixes one, or raises the project budget. Do not retry in a loop.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`forbidden` (the key lacks the scope) or `api_not_enabled` (the project has not enabled this API).",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "`not_found` — the addressed resource does not exist, or is not yours to see.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "`rate_limited` — back off until `x-ratelimit-reset`, with jitter.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "`internal_error` — a fault on our side. Retry, and send us the `x-request-id`.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "502": {
            "description": "`upstream_error` — a provider we depend on failed. Retryable, and not billed.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "`provider_unavailable` — the service is not currently configured to serve. Retryable.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/toolsapi/inspect": {
      "post": {
        "operationId": "toolsapi_post_v1_toolsapi_inspect",
        "summary": "One tool's input schema, price and docs — what you need to build a valid `input`.",
        "description": "One tool's input schema, price and docs — what you need to build a valid `input`.\n\nRequires the `toolsapi:read` scope, and the project must have ToolsAPI enabled.\n\nBilled on success. The response reports `lookups` — the quantity metered for this call. Rates: https://docs.cloud.gomry.com/pricing.\n\nFull reference: https://docs.cloud.gomry.com/services/toolsapi",
        "tags": [
          "ToolsAPI"
        ],
        "x-required-scope": "toolsapi:read",
        "x-gomry-service": "toolsapi",
        "x-gomry-metered-field": "lookups",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [],
                "properties": {
                  "vendor": {
                    "description": "Required for run/inspect. Catalogue vendor slug, e.g. \"apify\". Monid calls this `provider`; here it is `vendor`, because `provider` already means an adapter."
                  },
                  "endpoint": {
                    "description": "Required for run/inspect. The tool's path within that vendor, e.g. \"/apidojo/tweet-scraper\". Both halves come from `discover` or `inspect`."
                  },
                  "input": {
                    "description": "Required for run. An object matching the tool's own `inputSchema` from `inspect`. Passed through unvalidated by us — the tool rejects what it does not accept."
                  },
                  "query": {
                    "description": "Required for discover. 1–2000 characters of natural language describing the task."
                  },
                  "limit": {
                    "description": "Discover only. How many tools to return, 1–20. Values above the ceiling are clamped, not refused."
                  },
                  "timeout": {
                    "description": "Milliseconds before the catalogue call is abandoned. 1000–90000. The run route is capped at 120s server-side."
                  }
                }
              },
              "example": {
                "vendor": "apify",
                "endpoint": "/apidojo/tweet-scraper"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. `lookups` reports what was metered.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "`validation_error` — the body failed schema validation.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "`unauthorized` — key missing, malformed, unknown, revoked or expired.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "`billing_required`, `billing_past_due`, `billing_suspended` or `insufficient_credit` — spending is blocked until a human adds a card, fixes one, or raises the project budget. Do not retry in a loop.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`forbidden` (the key lacks the scope) or `api_not_enabled` (the project has not enabled this API).",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "`not_found` — the addressed resource does not exist, or is not yours to see.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "`rate_limited` — back off until `x-ratelimit-reset`, with jitter.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "`internal_error` — a fault on our side. Retry, and send us the `x-request-id`.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "502": {
            "description": "`upstream_error` — a provider we depend on failed. Retryable, and not billed.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "`provider_unavailable` — the service is not currently configured to serve. Retryable.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/toolsapi/runs/{runId}": {
      "get": {
        "operationId": "toolsapi_get_v1_toolsapi_runs_runId",
        "summary": "Poll a run that came back RUNNING. Not billed — you already paid for the run.",
        "description": "Poll a run that came back RUNNING. Not billed — you already paid for the run.\n\nRequires the `toolsapi:read` scope, and the project must have ToolsAPI enabled.\n\nThis operation is not billed.\n\nFull reference: https://docs.cloud.gomry.com/services/toolsapi",
        "tags": [
          "ToolsAPI"
        ],
        "x-required-scope": "toolsapi:read",
        "x-gomry-service": "toolsapi",
        "parameters": [
          {
            "name": "runId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The runId returned when the resource was created."
          }
        ],
        "responses": {
          "200": {
            "description": "The current state of the resource.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "`validation_error` — the body failed schema validation.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "`unauthorized` — key missing, malformed, unknown, revoked or expired.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "`billing_required`, `billing_past_due`, `billing_suspended` or `insufficient_credit` — spending is blocked until a human adds a card, fixes one, or raises the project budget. Do not retry in a loop.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`forbidden` (the key lacks the scope) or `api_not_enabled` (the project has not enabled this API).",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "`not_found` — the addressed resource does not exist, or is not yours to see.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "`rate_limited` — back off until `x-ratelimit-reset`, with jitter.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "`internal_error` — a fault on our side. Retry, and send us the `x-request-id`.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "502": {
            "description": "`upstream_error` — a provider we depend on failed. Retryable, and not billed.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "`provider_unavailable` — the service is not currently configured to serve. Retryable.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/superagent": {
      "post": {
        "operationId": "tasks_post_v1_superagent",
        "summary": "Give it a research question and a JSON schema. It plans, searches, reads, notices what is missing, searches again — and cites every field.",
        "description": "Give it a research question and a JSON schema. It plans, searches, reads, notices what is missing, searches again — and cites every field.\n\nRequires the `tasks:run` scope, and the project must have Superagent enabled.\n\nBilled on success. The response reports `cost.units` — the quantity metered for this call. Rates: https://docs.cloud.gomry.com/pricing.\n\nASYNCHRONOUS: this returns 202 with an id, not a result. Poll `GET /v1/superagent/{taskId}` (the `Location` header carries the absolute URL) no sooner than `Retry-After`, currently 5 seconds. Polling and cancelling are not billed.\n\nFull reference: https://docs.cloud.gomry.com/services/tasks",
        "tags": [
          "Superagent"
        ],
        "x-required-scope": "tasks:run",
        "x-gomry-service": "tasks",
        "x-gomry-metered-field": "cost.units",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Two requests carrying the same key on one project return the same task instead of starting a second. Send one whenever a retry is possible — an unattended caller that retries without it pays twice for the same research."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [],
                "properties": {
                  "objective": {
                    "description": "Required. 1–2000 characters describing what you want found, in plain language."
                  },
                  "outputSchema": {
                    "description": "Required. A JSON Schema object describing the shape you want back. Returned in `output`, with a matching entry in `citations` for every field."
                  },
                  "seedUrls": {
                    "description": "URLs to start from, up to 100 and never more than the tier's source ceiling. Omit and the task searches for its own sources. Private addresses and internal hostnames are refused at creation."
                  },
                  "tier": {
                    "description": "lite | standard | deep. Sets the source, round, cost and time ceilings. Defaults to standard."
                  },
                  "budget": {
                    "description": "{ maxCostMicroUsd, maxSources, deadlineSeconds, maxRounds }. Each is intersected with the tier's ceiling — it can only narrow. `maxRounds: 0` is honoured as \"do not reason, just read what I gave you\"."
                  },
                  "webhookUrl": {
                    "description": "Called once when the task reaches a terminal state. Must be a public host."
                  },
                  "wait": {
                    "description": "Block up to 60s for a terminal state before responding. The task is unaffected and keeps running if the wait expires. Defaults to false."
                  }
                }
              },
              "example": {
                "objective": "Which of these venues changed their refund policy in 2026, and how?",
                "seedUrls": [
                  "https://example.com/venue/calendar"
                ],
                "outputSchema": {
                  "type": "object",
                  "properties": {
                    "shows": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string"
                          },
                          "startDate": {
                            "type": "string"
                          }
                        }
                      }
                    }
                  }
                },
                "tier": "standard"
              }
            }
          }
        },
        "x-async-job": {
          "statusPath": "/v1/superagent/{taskId}",
          "cancelPath": "/v1/superagent/{taskId}",
          "idField": "task.taskId",
          "pollAfterSeconds": 5
        },
        "responses": {
          "202": {
            "description": "Accepted. The work has been started, not done — poll `/v1/superagent/{taskId}` for the result. The id is at `task.taskId`. Nothing is billed by this call.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              },
              "Location": {
                "schema": {
                  "type": "string"
                },
                "description": "Absolute URL of the created job. Poll it rather than assembling the path yourself."
              },
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Seconds to wait before the first poll. Currently 5."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "links": {
              "status": {
                "operationRef": "#/paths/~1v1~1superagent~1%7BtaskId%7D/get",
                "parameters": {
                  "taskId": "$response.body#/task/taskId"
                },
                "description": "Poll the job created by this call."
              },
              "cancel": {
                "operationRef": "#/paths/~1v1~1superagent~1%7BtaskId%7D/delete",
                "parameters": {
                  "taskId": "$response.body#/task/taskId"
                },
                "description": "Stop the job created by this call."
              }
            }
          },
          "400": {
            "description": "`validation_error` — the body failed schema validation.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "`unauthorized` — key missing, malformed, unknown, revoked or expired.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "`billing_required`, `billing_past_due`, `billing_suspended` or `insufficient_credit` — spending is blocked until a human adds a card, fixes one, or raises the project budget. Do not retry in a loop.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`forbidden` (the key lacks the scope) or `api_not_enabled` (the project has not enabled this API).",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "`not_found` — the addressed resource does not exist, or is not yours to see.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "`rate_limited` — back off until `x-ratelimit-reset`, with jitter.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "`internal_error` — a fault on our side. Retry, and send us the `x-request-id`.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "502": {
            "description": "`upstream_error` — a provider we depend on failed. Retryable, and not billed.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "`provider_unavailable` — the service is not currently configured to serve. Retryable.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/superagent/{taskId}": {
      "get": {
        "operationId": "tasks_get_v1_superagent_taskId",
        "summary": "Poll a running task: status, partial output, sources read, spend so far. Not billed.",
        "description": "Poll a running task: status, partial output, sources read, spend so far. Not billed.\n\nRequires the `tasks:read` scope, and the project must have Superagent enabled.\n\nThis operation is not billed.\n\nFull reference: https://docs.cloud.gomry.com/services/tasks",
        "tags": [
          "Superagent"
        ],
        "x-required-scope": "tasks:read",
        "x-gomry-service": "tasks",
        "parameters": [
          {
            "name": "taskId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The taskId returned when the resource was created."
          }
        ],
        "responses": {
          "200": {
            "description": "The current state of the resource.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "`validation_error` — the body failed schema validation.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "`unauthorized` — key missing, malformed, unknown, revoked or expired.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "`billing_required`, `billing_past_due`, `billing_suspended` or `insufficient_credit` — spending is blocked until a human adds a card, fixes one, or raises the project budget. Do not retry in a loop.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`forbidden` (the key lacks the scope) or `api_not_enabled` (the project has not enabled this API).",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "`not_found` — the addressed resource does not exist, or is not yours to see.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "`rate_limited` — back off until `x-ratelimit-reset`, with jitter.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "`internal_error` — a fault on our side. Retry, and send us the `x-request-id`.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "502": {
            "description": "`upstream_error` — a provider we depend on failed. Retryable, and not billed.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "`provider_unavailable` — the service is not currently configured to serve. Retryable.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "tasks_delete_v1_superagent_taskId",
        "summary": "Stop a task admitting further steps. Not billed, and never refunds work already done.",
        "description": "Stop a task admitting further steps. Not billed, and never refunds work already done.\n\nRequires the `tasks:read` scope, and the project must have Superagent enabled.\n\nThis operation is not billed.\n\nFull reference: https://docs.cloud.gomry.com/services/tasks",
        "tags": [
          "Superagent"
        ],
        "x-required-scope": "tasks:read",
        "x-gomry-service": "tasks",
        "parameters": [
          {
            "name": "taskId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The taskId returned when the resource was created."
          }
        ],
        "responses": {
          "200": {
            "description": "The current state of the resource.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "`validation_error` — the body failed schema validation.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "`unauthorized` — key missing, malformed, unknown, revoked or expired.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "`billing_required`, `billing_past_due`, `billing_suspended` or `insufficient_credit` — spending is blocked until a human adds a card, fixes one, or raises the project budget. Do not retry in a loop.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`forbidden` (the key lacks the scope) or `api_not_enabled` (the project has not enabled this API).",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "`not_found` — the addressed resource does not exist, or is not yours to see.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "`rate_limited` — back off until `x-ratelimit-reset`, with jitter.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "`internal_error` — a fault on our side. Retry, and send us the `x-request-id`.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "502": {
            "description": "`upstream_error` — a provider we depend on failed. Retryable, and not billed.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "`provider_unavailable` — the service is not currently configured to serve. Retryable.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/v1/inference": {
      "post": {
        "operationId": "inference_post_v1_inference",
        "summary": "One model call, priced per token, at three grades — with the routing, compression and caching that make the cheap grade cheap.",
        "description": "One model call, priced per token, at three grades — with the routing, compression and caching that make the cheap grade cheap.\n\nRequires the `inference:run` scope, and the project must have Ember enabled.\n\nBilled on success. The response reports `usage` — the quantity metered for this call. Rates: https://docs.cloud.gomry.com/pricing.\n\nFull reference: https://docs.cloud.gomry.com/services/inference",
        "tags": [
          "Ember"
        ],
        "x-required-scope": "inference:run",
        "x-gomry-service": "inference",
        "x-gomry-metered-field": "usage",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [],
                "properties": {
                  "capability": {
                    "description": "Required. cheap | balanced | strong. Chooses the price/quality grade, never a specific model."
                  },
                  "system": {
                    "description": "Required. 1–20000 characters of instruction. Treat it as yours: nothing is prepended."
                  },
                  "user": {
                    "description": "Required. 1–400000 characters. The content to work on. Long inputs are trimmed to the model's window, head first."
                  },
                  "jsonSchema": {
                    "description": "A JSON Schema object. Sent as a constrained-decoding hint where the vendor supports it; always parse defensively, because some ignore it."
                  },
                  "maxOutputTokens": {
                    "description": "Caps the answer. 1–16384, and never raised above the capability's own ceiling. Remember that thinking tokens count against it, and check `usage.truncated` — a call that hits the ceiling still returns 200."
                  },
                  "effort": {
                    "description": "minimal | low | default. Lowers the thinking budget on a call that does not need to reason. Ignored by vendors that do not support it."
                  },
                  "timeoutMs": {
                    "description": "Milliseconds before the vendor call is abandoned. Can only tighten the capability's own timeout, never extend it."
                  },
                  "noCache": {
                    "description": "Skip the result cache for this call. Default false. A cache hit bills the same as a live call — it is our cost that changed, not your result."
                  }
                }
              },
              "example": {
                "capability": "cheap",
                "system": "You extract structured data. Answer with one JSON object.",
                "user": "Event page text here. Return the name and start date.",
                "jsonSchema": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "startDate": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. `usage` reports what was metered.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "`validation_error` — the body failed schema validation.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "401": {
            "description": "`unauthorized` — key missing, malformed, unknown, revoked or expired.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "402": {
            "description": "`billing_required`, `billing_past_due`, `billing_suspended` or `insufficient_credit` — spending is blocked until a human adds a card, fixes one, or raises the project budget. Do not retry in a loop.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "403": {
            "description": "`forbidden` (the key lacks the scope) or `api_not_enabled` (the project has not enabled this API).",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "`not_found` — the addressed resource does not exist, or is not yours to see.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "429": {
            "description": "`rate_limited` — back off until `x-ratelimit-reset`, with jitter.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "500": {
            "description": "`internal_error` — a fault on our side. Retry, and send us the `x-request-id`.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "502": {
            "description": "`upstream_error` — a provider we depend on failed. Retryable, and not billed.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "`provider_unavailable` — the service is not currently configured to serve. Retryable.",
            "headers": {
              "x-request-id": {
                "schema": {
                  "type": "string"
                },
                "description": "Echoed or generated per request. Capture it — an intermittent failure cannot be traced without it."
              },
              "x-ratelimit-remaining": {
                "schema": {
                  "type": "integer"
                },
                "description": "Requests left in the current window for this key."
              },
              "x-ratelimit-reset": {
                "schema": {
                  "type": "integer"
                },
                "description": "Unix timestamp in milliseconds at which the window resets."
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "An API key minted in the console, sent as `Authorization: Bearer <key>`. Keys are project-scoped and carry per-operation scopes. A `gck_test_…` key runs the full request path — including the real upstream call — and bills nothing.\n\nEvery scope is enumerated in `x-scopes` below and in the RFC 9728 protected-resource metadata at https://cloud.gomry.com/.well-known/oauth-protected-resource, which is also what a `401` points at through its `WWW-Authenticate: Bearer resource_metadata=\"…\"` header.",
        "x-scopes": {
          "scrape:run": "Grants: POST /v1/scrape.",
          "scrape:fetch": "Grants: POST /v1/fetch.",
          "toolsapi:run": "Grants: POST /v1/toolsapi/run.",
          "toolsapi:read": "Grants: POST /v1/toolsapi/discover, POST /v1/toolsapi/inspect, GET /v1/toolsapi/runs/{runId}.",
          "tasks:run": "Grants: POST /v1/superagent.",
          "tasks:read": "Grants: GET /v1/superagent/{taskId}, DELETE /v1/superagent/{taskId}.",
          "inference:run": "Grants: POST /v1/inference."
        },
        "x-protected-resource-metadata": "https://cloud.gomry.com/.well-known/oauth-protected-resource",
        "x-credential-issuance-endpoint": "https://cloud.gomry.com/sign-in",
        "x-agent-instructions": "https://cloud.gomry.com/auth.md"
      }
    },
    "schemas": {
      "Error": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "string",
            "description": "Stable machine-readable code. Branch on this, never on `message`."
          },
          "message": {
            "type": "string",
            "description": "Human-readable detail. Written for a person and may be reworded."
          }
        }
      }
    }
  }
}