Overview

The endpoints your workflows, code and agents call, what they return, and every error they can answer with.

Everything goes through one small HTTPS API: the n8n node, the libraries and the MCP server all call it. You send your Operate As key and a call. Operate As checks the key, attaches the client's access on its own server, calls the service, and hands back its answer.

Base URL and key

POST https://api.operate.as/v1/actions/sheets.read_rows
Authorization: Bearer oa_...
Content-Type: application/json
  • Key: a bearer token starting oa_, from the dashboard's API & webhooks page. See API keys.
  • Bodies: JSON with camelCase fields (clientId, reconnectUrl). An action's inputs use snake_case (spreadsheet_id), and camelCase works there too.

Endpoints

MethodPathWhat it does
GET/v1/me/clientsThe clients this key can reach, with the services each has connected
GET/v1/actionsThe actions with their inputs, a page at a time. ?service=stripe (repeatable) for one service's; ?search=create+customer for the best matches. See Find an action
GET/v1/actions/{name}One action, with each input's JSON Schema
POST/v1/actions/{name}Run an action, such as sheets.read_rows, for one client
GET POST PUT PATCH DELETE/v1/clients/{clientId}/{service}/{path}Any request the service's own API supports
POST/v1/mcpThe MCP server for agents. See MCP server
curl https://api.operate.as/v1/me/clients \
  -H "Authorization: Bearer $OPERATE_AS_API_KEY"
[{ "id": "6f1c2a7e-...", "name": "Miller Dental", "services": ["sheets", "slack"] }]

Only clients the key may reach are listed. services holds what's connected right now and the key may use. A service whose access ended drops out until the client reconnects.

The result

Actions and pass-through answer with the same shape:

{
  "status": 200,
  "data": { "range": "Sheet1!A1:D20", "values": [["Date", "Patient", "Treatment", "Paid"]] },
  "encoding": "json"
}
FieldWhat it is
statusThe service's own HTTP status, such as 200 from Google Sheets
dataThe service's own answer, unchanged
encodingHow to read data: "json", "text" or "base64"

A file download, such as a PDF from Dropbox, comes back with "encoding": "base64". Decode data to get the file's bytes.

Check status, not just the HTTP code

Operate As answers HTTP 200 whenever it delivered your call. A spreadsheet that doesn't exist comes back as HTTP 200 with "status": 404 inside. Look at status before you use data.

When Operate As itself can't make the call, you get an HTTP error instead. See Errors.

What counts as a call

Only API calls count against your plan's API call allowance. Each call that reaches a service is one, whatever status it answers with. Calls Operate As refuses before reaching the service don't count. See Plans and limits.

OpenAPI

https://api.operate.as/api/openapi.json

Generate a client in another language, or import it into Postman or Insomnia. Each pass-through method has its own operation: passThroughGet, passThroughPost and so on.

On this page