RequestRocketRequestRocketDocs
ObserveRequest logs

Request logs API

List and read proxied calls.

Proxy calls and direct MCP server calls are separate collections. The regional runtime sets each request record to expire after 90 days. A single-call path adds the request id.

Endpoints

MethodPathWhat it does
GET/api/clients/:clientId/proxies/:proxyId/requestsList proxy calls
GET/api/clients/:clientId/proxies/:proxyId/requests/:requestIdRead one proxy call
GET/api/clients/:clientId/mcps/:mcpId/requestsList MCP calls
GET/api/clients/:clientId/mcps/:mcpId/requests/:requestIdRead one MCP call

List proxy calls

GET /api/clients/:clientId/proxies/:proxyId/requests lists calls for that proxy. Add /:requestId to read one.

Request

curl -X GET "https://api.requestrocket.com/api/clients/:clientId/proxies/:proxyId/requests" \
  -H "Authorization: u-your-token"
import axios from "axios";

const response = await axios.request({
  method: "GET",
  url: "https://api.requestrocket.com/api/clients/:clientId/proxies/:proxyId/requests",
  headers: {
    "Authorization": "u-your-token",
  }
});

console.log(response.status, response.data);
import requests

response = requests.request(
    "GET",
    "https://api.requestrocket.com/api/clients/:clientId/proxies/:proxyId/requests",
    headers={
        "Authorization": "u-your-token",
    }
)
print(response.status_code, response.json())
package main

import (
    "fmt"
    "io"
    "net/http"
    "strings"
)

func main() {
    var payload io.Reader
    req, _ := http.NewRequest("GET", "https://api.requestrocket.com/api/clients/:clientId/proxies/:proxyId/requests", payload)
    req.Header.Set("Authorization", "u-your-token")
    resp, _ := http.DefaultClient.Do(req)
    defer resp.Body.Close()
    body, _ := io.ReadAll(resp.Body)
    fmt.Println(resp.StatusCode, string(body))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Example {
    public static void main(String[] args) throws Exception {
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.requestrocket.com/api/clients/:clientId/proxies/:proxyId/requests"))
            .method("GET", HttpRequest.BodyPublishers.noBody())
            .header("Authorization", "u-your-token")
            .build();
        HttpResponse<String> response = HttpClient.newHttpClient()
            .send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println(response.statusCode());
        System.out.println(response.body());
    }
}

Responses

{
  "message": "Success",
  "totalRequests": 1,
  "requests": [
    {
      "pKey": "5d8a1c30-4e72-4b19-8f6a-0c3d9e7b1a25",
      "sKey": "f3a6c812-9d04-4e75-b1a8-2c0e5d7f9b31",
      "parentId": "5d8a1c30-4e72-4b19-8f6a-0c3d9e7b1a25",
      "clientId": "b3a1c7d2-5e44-4f0a-9c1e-7d2f8a6b1c90",
      "processed": true,
      "processedAt": 1762072200000
    }
  ]
}
{
  "message": "Invalid nextToken"
}
{
  "message": "Unauthorized"
}
{
  "Message": "User is not authorized to access this resource with an explicit deny in an identity-based policy"
}
{
  "message": "method / endpoint not supported"
}

The MCP list is GET /api/clients/:clientId/mcps/:mcpId/requests and takes the same query. An MCP server that uses a backing proxy responds with 409. Read those calls on the proxy.

Returns

The response contains one page of calls in requests, the page length in totalRequests, and message set to Success. When another page exists, the response includes nextToken. GET /api/clients/:clientId/proxies/:proxyId/requests/:requestId returns that one call in requests.

Query parameters

ParameterTypeRequiredDescription
processedAfterstringInclusive start of processedAt. Omitted means the start of the log.
processedBeforestringInclusive end of processedAt. Omitted means the current time.
pageSizenumberPage size. Default 100. Maximum 1000.
nextTokenstringCursor from the previous page. An invalid token returns 400 with message Invalid nextToken.
methodstringHTTP method, compared with proxyData.method after uppercasing.
pathPrefixstringCalls whose proxyData.apiPath starts with this string.
proxyStatusnumberCalls whose proxy status code equals this value.
targetStatusnumberCalls whose target status code equals this value.
anyStatusnumberCalls whose proxy status or target status equals this value.

Response attributes

AttributeTypeDescription
messagestringSuccess on a completed call.
totalRequestsnumberNumber of calls in this page.
nextTokenstringCursor for the next page. Present when DynamoDB has a further page.
requestsarrayThe calls, newest processedAt first.
pKeystringParent id. The proxy id or the MCP server id.
sKeystringRequest id.
parentIdstringParent id.
clientIdstringOrganisation id.
userIdstringUser id recorded on the call.
processedbooleanWhether the call has been ingested into the platform.
processedAtnumberUnix time in milliseconds when the call was processed.
proxyDataobjectProxy side of the call: status, message, method, apiPath, apiParams, apiHeaders, receivedAt, sentAt, and duration in seconds.
targetDataobjectTarget side: status, sentAt, receivedAt, duration in seconds, and location for the stored target response.
validationDataobjectBooleans for authentication, scope, whether the call was sent, and whether a response was received.
authorizationDecisionsobjectAllow or deny outcome per scope that ran rules: proxy, proxyCredential, target, targetCredential.
mcpDataobjectPresent on MCP calls: mcpId, mcpName, toolName, toolMethod, toolPath, status, message, and duration in seconds.
alertsTriggeredarrayAlerts this call fired. Each entry has sourceType, sourceId, cadence, and reason.
rulesDataobjectRules that matched, under rulesMatched.
metersDataobjectMeters that matched, under metersMatched.
filtersDataobjectFilters that matched, under filtersMatched.
overridesDataobjectOverrides that matched, under overridesMatched.
requestTransformsDataobjectRequest transform that matched, under transformMatched.
responseTransformsDataobjectResponse transform that matched, under transformMatched.
alertsDataobjectStandalone alerts that matched, under alertsMatched.

Next

On this page