App API

Per-project backend (grroxy-app). Default port: 8090.

Info

MethodPathAuthDescription
GET/api/infoNoGet version, paths, and project details

Proxy

MethodPathAuthDescription
POST/api/proxy/startYesStart a proxy instance
POST/api/proxy/stopYesStop a running proxy
POST/api/proxy/restartYesRestart a proxy
GET/api/proxy/listYesList all running proxy instances
POST/api/proxy/screenshotYesTake a browser screenshot

POST /api/proxy/start body:

{
  "http": "127.0.0.1:8080",
  "browser": "",
  "name": ""
}

POST /api/proxy/stop body:

{
  "id": "abc123"
}

Chrome Browser Control

All Chrome endpoints require { "id": "<proxy-id>" } plus any additional fields shown.

MethodPathDescription
POST/api/proxy/chrome/tabsList open Chrome tabs
POST/api/proxy/chrome/tab/openOpen a tab — add "url"
POST/api/proxy/chrome/tab/navigateNavigate to URL — add "url"
POST/api/proxy/chrome/tab/activateActivate a tab — add "tabId"
POST/api/proxy/chrome/tab/closeClose a tab — add "tabId"
POST/api/proxy/chrome/tab/reloadReload the active tab
POST/api/proxy/chrome/tab/backNavigate back
POST/api/proxy/chrome/tab/forwardNavigate forward
POST/api/proxy/clickClick element — add "selector"
POST/api/proxy/elementsGet DOM elements — add "selector"

Intercept

MethodPathAuthDescription
POST/api/intercept/actionYesForward or drop an intercepted request
{
  "id": "abc123",
  "action": "forward",
  "is_req_edited": false,
  "is_resp_edited": false,
  "req_edited": "",
  "resp_edited": ""
}

Requests

MethodPathAuthDescription
POST/api/request/addNoAdd a request/response pair to the database
POST/api/request/modifyYesApply transformations to a raw HTTP request

POST /api/request/add body:

{
  "url": "https://example.com",
  "index": 0,
  "request": "GET / HTTP/1.1
Host: example.com

",
  "response": "",
  "generated_by": "manual",
  "note": ""
}

POST /api/request/modify body:

{
  "request": "GET / HTTP/1.1
Host: example.com

",
  "url": "https://example.com",
  "tasks": [
    {
      "set": {
        "req.headers.X-Custom": "value"
      }
    }
  ]
}

Repeater

MethodPathAuthDescription
POST/api/repeater/sendYesSend a raw HTTP request via repeater
{
  "host": "example.com",
  "port": "443",
  "tls": true,
  "request": "GET / HTTP/1.1
Host: example.com

",
  "timeout": 10,
  "http2": false,
  "url": "https://example.com",
  "generated_by": "pg_abc123"
}

HTTP

MethodPathAuthDescription
POST/api/sendrawrequestYesSend a raw HTTP/1 or HTTP/2 request
POST/api/http/rawYesSend via the rawhttp client

POST /api/sendrawrequest body:

{
  "host": "example.com",
  "port": "443",
  "tls": true,
  "req": "GET / HTTP/1.1
Host: example.com

",
  "timeout": 10,
  "httpversion": 1
}

POST /api/http/raw body:

{
  "host": "example.com",
  "port": "443",
  "tls": true,
  "req": "GET / HTTP/1.1
Host: example.com

",
  "timeout": 10,
  "http2": false
}

Sitemap

MethodPathAuthDescription
POST/api/sitemap/newYesAdd a sitemap entry for a host
POST/api/sitemap/fetchYesFetch the sitemap tree

POST /api/sitemap/new body:

{
  "host": "https://example.com",
  "path": "/api/users",
  "query": "page=1",
  "fragment": "",
  "ext": "",
  "type": "folder",
  "data": ""
}

POST /api/sitemap/fetch body:

{
  "host": "https://example.com",
  "path": "",
  "depth": 1
}

Labels

MethodPathAuthDescription
POST/api/label/newYesCreate a new label
POST/api/label/deleteYesDelete a label
POST/api/label/attachYesAttach a label to a record

POST /api/label/new body:

{
  "name": "bug",
  "color": "#ff0000",
  "type": "default"
}

POST /api/label/delete body:

{
  "id": "",
  "name": "bug"
}

POST /api/label/attach body:

{
  "id": "record123",
  "name": "bug",
  "color": "#ff0000",
  "type": "default"
}

Cook

MethodPathAuthDescription
POST/api/cook/generateYesGenerate strings from Cook pattern syntax
POST/api/cook/applyYesApply transformation methods to strings
POST/api/cook/searchYesSearch available Cook patterns and methods

POST /api/cook/generate body:

{
  "pattern": [
    "intigriti,bugcrowd,hackerone _,- users.rar,secret.zip"
  ]
}

POST /api/cook/apply body:

{
  "strings": ["hello world"],
  "methods": ["b64e"]
}

Extract

MethodPathAuthDescription
POST/api/extractYesExtract fields from intercepted records. Supports req.*, resp.*
{
  "host": "example.com",
  "fields": [
    "req.method",
    "req.url",
    "resp.status"
  ],
  "outputFile": "extract.jsonl"
}

Filters

MethodPathAuthDescription
POST/api/filter/checkYesEvaluate a DADQL filter expression
{
  "filter": "status == 200",
  "columns": {
    "status": 200,
    "method": "GET"
  }
}

CWD / File Watcher

MethodPathAuthDescription
GET/api/cwdNoList files and directories in the project directory
POST/api/filewatcherNoWatch a file/directory for changes via SSE

POST /api/filewatcher body:

{
  "filePath": "/path/to/watch"
}

Terminal

MethodPathAuthDescription
POST/api/xterm/startNoStart a new terminal session
GET/api/xterm/sessionsNoList all active terminal sessions
DELETE/api/xterm/sessions/:idNoClose a terminal session
GET/api/xterm/ws/:idNoWebSocket endpoint for terminal I/O

POST /api/xterm/start body:

{
  "shell": "bash",
  "workdir": "/home/user",
  "env": {}
}

MCP Server

MethodPathAuthDescription
POST/mcp/startNoStart the MCP server
POST/mcp/stopNoStop the MCP server
GET/mcp/healthNoGet MCP server health and registered tools
GET/mcp/listtoolsNoList all registered MCP tools
GET/mcp/sseNoSSE endpoint for MCP client-server communication
POST/mcp/messageNoSend JSON-RPC messages to the MCP server
POST/mcp/setup/claudeNoConfigure Claude Code integration

POST /mcp/setup/claude body:

{
  "claude_md": "You are operating inside Grroxy..."
}