RequestRocket Documentation
API ReferenceCore API

Proxies API

Create and manage proxy configurations programmatically

Proxies API

Create and manage proxy configurations that connect your applications to target APIs.

Endpoints

MethodEndpointDescription
GET/api/clients/{clientId}/proxiesList all proxies
POST/api/clients/{clientId}/proxiesCreate a proxy
GET/api/clients/{clientId}/proxies/{proxyId}Get proxy details
PUT/api/clients/{clientId}/proxies/{proxyId}Update proxy
DELETE/api/clients/{clientId}/proxies/{proxyId}Delete proxy
GET/api/clients/{clientId}/proxies/{proxyId}/telemetryGet proxy telemetry

List Proxies

Get all proxies for a client.

Request

GET /api/clients/{clientId}/proxies HTTP/1.1
Host: api.requestrocket.com
Authorization: {user_token}

Response

{
  "proxies": [
    {
      "pKey": "550e8400-e29b-41d4-a716-446655440000",
      "sKey": "proxy_789e4567",
      "userId": "user_123",
      "clientId": "client_456",
      "parentId": "client_456",
      "proxyName": "Production Payment Gateway",
      "proxyRegion": "us-east-1",
      "proxyProxyCredentialId": "cred_123",
      "proxyTargetId": "tgt_456",
      "proxyTargetCredentialId": "cred_789",
      "proxyActive": true,
      "proxyCreatedAt": "2024-01-22T13:00:00.000Z",
      "proxyUpdatedAt": "2024-01-22T13:00:00.000Z",
      "proxyDefaultRuleEffect": "allow",
      "proxyAlias": "payment-gateway"
    }
  ],
  "message": "Success"
}

Example

const response = await fetch(
  `https://api.requestrocket.com/api/clients/${clientId}/proxies`,
  {
    headers: {
      'Authorization': process.env.USER_TOKEN
    }
  }
);

const data = await response.json();
console.log('Proxies:', data.proxies);
import requests
import os

client_id = "your-client-id"

response = requests.get(
    f'https://api.requestrocket.com/api/clients/{client_id}/proxies',
    headers={'Authorization': os.getenv('USER_TOKEN')}
)

data = response.json()
print(f"Found {len(data['proxies'])} proxies")
package main

import (
    "encoding/json"
    "fmt"
    "io"
    "net/http"
    "os"
)

type Response struct {
    Proxies []map[string]interface{} `json:"proxies"`
    Message string                   `json:"message"`
}

func main() {
    clientId := "your-client-id"
    url := fmt.Sprintf("https://api.requestrocket.com/api/clients/%s/proxies", clientId)
    
    req, _ := http.NewRequest("GET", url, nil)
    req.Header.Set("Authorization", os.Getenv("USER_TOKEN"))

    client := &http.Client{}
    resp, _ := client.Do(req)
    defer resp.Body.Close()

    body, _ := io.ReadAll(resp.Body)
    var result Response
    json.Unmarshal(body, &result)
    
    fmt.Printf("Found %d proxies\n", len(result.Proxies))
}
import java.net.http.*;
import java.net.URI;
import com.google.gson.*;

public class ListProxies {
    public static void main(String[] args) throws Exception {
        String clientId = "your-client-id";
        
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.requestrocket.com/api/clients/" + clientId + "/proxies"))
            .header("Authorization", System.getenv("USER_TOKEN"))
            .GET()
            .build();

        HttpResponse<String> response = client.send(request, 
            HttpResponse.BodyHandlers.ofString());

        JsonObject json = JsonParser.parseString(response.body()).getAsJsonObject();
        JsonArray proxies = json.getAsJsonArray("proxies");
        System.out.println("Found " + proxies.size() + " proxies");
    }
}
curl -X GET "https://api.requestrocket.com/api/clients/${CLIENT_ID}/proxies" \
  -H "Authorization: ${USER_TOKEN}"

Create Proxy

Create a new proxy configuration.

Request

POST /api/clients/{clientId}/proxies HTTP/1.1
Host: api.requestrocket.com
Authorization: {user_token}
Content-Type: application/json

{
  "proxyName": "Production Payment Gateway",
  "proxyRegion": "us-east-1",
  "proxyProxyCredentialId": "cred_123",
  "proxyTargetId": "tgt_456",
  "proxyTargetCredentialId": "cred_789",
  "proxyActive": true,
  "proxyDefaultRuleEffect": "allow",
  "proxyAlias": "payment-gateway",
  "proxyAdditionalHeaders": {},
  "proxyAdditionalQueryParams": {},
  "proxyAdditionalData": {}
}

Request Body

FieldTypeRequiredDescription
proxyNamestringYesDescriptive name for the proxy
proxyRegionstringYesAWS region (must match all components) - cannot be changed after creation
proxyProxyCredentialIdstringYesID of proxy credential (authenticates your app to RequestRocket)
proxyTargetIdstringYesID of target API
proxyTargetCredentialIdstringYesID of target credential (authenticates RequestRocket to target API)
proxyActivebooleanNoWhether proxy is active (default: true)
proxyDefaultRuleEffectstringNoDefault access policy: allow or deny
proxyAliasstringNoHuman-readable alias for the proxy (lowercase, unique within client)
proxyAdditionalHeadersobjectNoAdditional headers to append to all target requests
proxyAdditionalQueryParamsobjectNoAdditional query parameters to append to all target requests
proxyAdditionalDataobjectNoAdditional body data to append to all target requests (POST/PUT/PATCH only)

Response

{
  "proxies": [
    {
      "userId": "user_123",
      "clientId": "client_456",
      "parentId": "client_456",
      "proxyName": "Production Payment Gateway",
      "proxyRegion": "us-east-1",
      "proxyProxyCredentialId": "cred_123",
      "proxyTargetId": "tgt_456",
      "proxyTargetCredentialId": "cred_789",
      "proxyActive": true,
      "proxyCreatedAt": "2024-01-22T13:00:00.000Z",
      "proxyUpdatedAt": "2024-01-22T13:00:00.000Z",
      "proxyDefaultRuleEffect": "allow",
      "proxyAlias": "payment-gateway",
      "proxyAdditionalHeaders": {},
      "proxyAdditionalQueryParams": {},
      "proxyAdditionalData": {}
    }
  ],
  "message": "Success"
}

Use the proxy ID (sKey) to construct your request URLs: https://{region}.requestrocket.com/api/{proxyId}/{path}

The proxyRegion field cannot be changed after creation. All components (proxy credential, target credential, target, and proxy) must be in the same region.

Example

const response = await fetch(
  `https://api.requestrocket.com/api/clients/${clientId}/proxies`,
  {
    method: 'POST',
    headers: {
      'Authorization': process.env.USER_TOKEN,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      proxyName: 'Production Payment Gateway',
      proxyRegion: 'us-east-1',
      proxyProxyCredentialId: 'cred_123',
      proxyTargetId: 'tgt_456',
      proxyTargetCredentialId: 'cred_789',
      proxyActive: true,
      proxyDefaultRuleEffect: 'allow',
      proxyAlias: 'payment-gateway'
    })
  }
);

const data = await response.json();
console.log('Created proxy:', data.proxies[0]);
import requests
import os

client_id = "your-client-id"

response = requests.post(
    f'https://api.requestrocket.com/api/clients/{client_id}/proxies',
    headers={'Authorization': os.getenv('USER_TOKEN')},
    json={
        'proxyName': 'Production Payment Gateway',
        'proxyRegion': 'us-east-1',
        'proxyProxyCredentialId': 'cred_123',
        'proxyTargetId': 'tgt_456',
        'proxyTargetCredentialId': 'cred_789',
        'proxyActive': True,
        'proxyDefaultRuleEffect': 'allow',
        'proxyAlias': 'payment-gateway'
    }
)

data = response.json()
print(f"Created proxy: {data['proxies'][0]['proxyName']}")
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io"
    "net/http"
    "os"
)

type ProxyRequest struct {
    ProxyName                string `json:"proxyName"`
    ProxyRegion              string `json:"proxyRegion"`
    ProxyProxyCredentialId   string `json:"proxyProxyCredentialId"`
    ProxyTargetId            string `json:"proxyTargetId"`
    ProxyTargetCredentialId  string `json:"proxyTargetCredentialId"`
    ProxyActive              bool   `json:"proxyActive"`
    ProxyDefaultRuleEffect   string `json:"proxyDefaultRuleEffect"`
    ProxyAlias               string `json:"proxyAlias"`
}

func main() {
    clientId := "your-client-id"

    requestBody, _ := json.Marshal(ProxyRequest{
        ProxyName:               "Production Payment Gateway",
        ProxyRegion:             "us-east-1",
        ProxyProxyCredentialId:  "cred_123",
        ProxyTargetId:           "tgt_456",
        ProxyTargetCredentialId: "cred_789",
        ProxyActive:             true,
        ProxyDefaultRuleEffect:  "allow",
        ProxyAlias:              "payment-gateway",
    })

    url := fmt.Sprintf("https://api.requestrocket.com/api/clients/%s/proxies", clientId)
    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(requestBody))
    req.Header.Set("Authorization", os.Getenv("USER_TOKEN"))
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, _ := client.Do(req)
    defer resp.Body.Close()

    body, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body))
}
import java.net.http.*;
import java.net.URI;
import com.google.gson.*;

public class CreateProxy {
    public static void main(String[] args) throws Exception {
        String clientId = "your-client-id";
        String json = "{"
            + "\"proxyName\": \"Production Payment Gateway\","
            + "\"proxyRegion\": \"us-east-1\","
            + "\"proxyProxyCredentialId\": \"cred_123\","
            + "\"proxyTargetId\": \"tgt_456\","
            + "\"proxyTargetCredentialId\": \"cred_789\","
            + "\"proxyActive\": true,"
            + "\"proxyDefaultRuleEffect\": \"allow\","
            + "\"proxyAlias\": \"payment-gateway\""
            + "}";

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.requestrocket.com/api/clients/" + clientId + "/proxies"))
            .header("Authorization", System.getenv("USER_TOKEN"))
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(json))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
curl -X POST "https://api.requestrocket.com/api/clients/${CLIENT_ID}/proxies" \
  -H "Authorization: ${USER_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "proxyName": "Production Payment Gateway",
    "proxyRegion": "us-east-1",
    "proxyProxyCredentialId": "cred_123",
    "proxyTargetId": "tgt_456",
    "proxyTargetCredentialId": "cred_789",
    "proxyActive": true,
    "proxyDefaultRuleEffect": "allow",
    "proxyAlias": "payment-gateway"
  }'

Get Proxy

Get details of a specific proxy.

Request

GET /api/clients/{clientId}/proxies/{proxyId} HTTP/1.1
Host: api.requestrocket.com
Authorization: {user_token}

Response

{
  "proxies": [
    {
      "pKey": "550e8400-e29b-41d4-a716-446655440000",
      "sKey": "proxy_789e4567",
      "userId": "user_123",
      "clientId": "client_456",
      "parentId": "client_456",
      "proxyName": "Production Payment Gateway",
      "proxyRegion": "us-east-1",
      "proxyProxyCredentialId": "cred_123",
      "proxyTargetId": "tgt_456",
      "proxyTargetCredentialId": "cred_789",
      "proxyActive": true,
      "proxyCreatedAt": "2024-01-22T13:00:00.000Z",
      "proxyUpdatedAt": "2024-01-22T13:00:00.000Z",
      "proxyDefaultRuleEffect": "allow",
      "proxyAlias": "payment-gateway",
      "proxyAdditionalHeaders": {},
      "proxyAdditionalQueryParams": {},
      "proxyAdditionalData": {}
    }
  ],
  "message": "Success"
}

Example

const response = await fetch(
  `https://api.requestrocket.com/api/clients/${clientId}/proxies/${proxyId}`,
  {
    headers: {
      'Authorization': process.env.USER_TOKEN
    }
  }
);

const data = await response.json();
console.log('Proxy:', data.proxies[0]);
import requests
import os

client_id = "your-client-id"
proxy_id = "your-proxy-id"

response = requests.get(
    f'https://api.requestrocket.com/api/clients/{client_id}/proxies/{proxy_id}',
    headers={'Authorization': os.getenv('USER_TOKEN')}
)

data = response.json()
print(f"Proxy: {data['proxies'][0]['proxyName']}")
package main

import (
    "encoding/json"
    "fmt"
    "io"
    "net/http"
    "os"
)

type Response struct {
    Proxies []map[string]interface{} `json:"proxies"`
    Message string                   `json:"message"`
}

func main() {
    clientId := "your-client-id"
    proxyId := "your-proxy-id"
    url := fmt.Sprintf("https://api.requestrocket.com/api/clients/%s/proxies/%s", clientId, proxyId)
    
    req, _ := http.NewRequest("GET", url, nil)
    req.Header.Set("Authorization", os.Getenv("USER_TOKEN"))

    client := &http.Client{}
    resp, _ := client.Do(req)
    defer resp.Body.Close()

    body, _ := io.ReadAll(resp.Body)
    var result Response
    json.Unmarshal(body, &result)
    
    fmt.Printf("Proxy: %v\n", result.Proxies[0])
}
import java.net.http.*;
import java.net.URI;
import com.google.gson.*;

public class GetProxy {
    public static void main(String[] args) throws Exception {
        String clientId = "your-client-id";
        String proxyId = "your-proxy-id";
        
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.requestrocket.com/api/clients/" + clientId + "/proxies/" + proxyId))
            .header("Authorization", System.getenv("USER_TOKEN"))
            .GET()
            .build();

        HttpResponse<String> response = client.send(request, 
            HttpResponse.BodyHandlers.ofString());

        JsonObject json = JsonParser.parseString(response.body()).getAsJsonObject();
        JsonArray proxies = json.getAsJsonArray("proxies");
        System.out.println("Proxy: " + proxies.get(0));
    }
}
curl -X GET "https://api.requestrocket.com/api/clients/${CLIENT_ID}/proxies/${PROXY_ID}" \
  -H "Authorization: ${USER_TOKEN}"

Update Proxy

Update a proxy configuration.

Request

PUT /api/clients/{clientId}/proxies/{proxyId} HTTP/1.1
Host: api.requestrocket.com
Authorization: {user_token}
Content-Type: application/json

{
  "proxyName": "Updated Proxy Name",
  "proxyActive": false
}

Response

{
  "proxies": [
    {
      "pKey": "550e8400-e29b-41d4-a716-446655440000",
      "sKey": "proxy_789e4567",
      "proxyName": "Updated Proxy Name",
      "proxyActive": false,
      "proxyUpdatedAt": "2024-01-22T14:00:00.000Z"
    }
  ],
  "message": "Success"
}

Example

const response = await fetch(
  `https://api.requestrocket.com/api/clients/${clientId}/proxies/${proxyId}`,
  {
    method: 'PUT',
    headers: {
      'Authorization': process.env.USER_TOKEN,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      proxyName: 'Updated Proxy Name',
      proxyActive: false
    })
  }
);

const data = await response.json();
console.log('Updated proxy:', data.proxies[0]);
import requests
import os

client_id = "your-client-id"
proxy_id = "your-proxy-id"

response = requests.put(
    f'https://api.requestrocket.com/api/clients/{client_id}/proxies/{proxy_id}',
    headers={'Authorization': os.getenv('USER_TOKEN')},
    json={
        'proxyName': 'Updated Proxy Name',
        'proxyActive': False
    }
)

data = response.json()
print(f"Updated: {data['message']}")
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io"
    "net/http"
    "os"
)

type UpdateProxyRequest struct {
    ProxyName   string `json:"proxyName"`
    ProxyActive bool   `json:"proxyActive"`
}

func main() {
    clientId := "your-client-id"
    proxyId := "your-proxy-id"

    requestBody, _ := json.Marshal(UpdateProxyRequest{
        ProxyName:   "Updated Proxy Name",
        ProxyActive: false,
    })

    url := fmt.Sprintf("https://api.requestrocket.com/api/clients/%s/proxies/%s", clientId, proxyId)
    req, _ := http.NewRequest("PUT", url, bytes.NewBuffer(requestBody))
    req.Header.Set("Authorization", os.Getenv("USER_TOKEN"))
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, _ := client.Do(req)
    defer resp.Body.Close()

    body, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body))
}
import java.net.http.*;
import java.net.URI;
import com.google.gson.*;

public class UpdateProxy {
    public static void main(String[] args) throws Exception {
        String clientId = "your-client-id";
        String proxyId = "your-proxy-id";
        String json = "{"
            + "\"proxyName\": \"Updated Proxy Name\","
            + "\"proxyActive\": false"
            + "}";

        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.requestrocket.com/api/clients/" + clientId + "/proxies/" + proxyId))
            .header("Authorization", System.getenv("USER_TOKEN"))
            .header("Content-Type", "application/json")
            .PUT(HttpRequest.BodyPublishers.ofString(json))
            .build();

        HttpResponse<String> response = client.send(request,
            HttpResponse.BodyHandlers.ofString());

        System.out.println(response.body());
    }
}
curl -X PUT "https://api.requestrocket.com/api/clients/${CLIENT_ID}/proxies/${PROXY_ID}" \
  -H "Authorization: ${USER_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "proxyName": "Updated Proxy Name",
    "proxyActive": false
  }'

Delete Proxy

Delete a proxy configuration.

Request

DELETE /api/clients/{clientId}/proxies/{proxyId} HTTP/1.1
Host: api.requestrocket.com
Authorization: {user_token}

Response

{
  "message": "Proxy deleted successfully"
}

Example

const response = await fetch(
  `https://api.requestrocket.com/api/clients/${clientId}/proxies/${proxyId}`,
  {
    method: 'DELETE',
    headers: {
      'Authorization': process.env.USER_TOKEN
    }
  }
);

const data = await response.json();
console.log(data.message);
import requests
import os

client_id = "your-client-id"
proxy_id = "your-proxy-id"

response = requests.delete(
    f'https://api.requestrocket.com/api/clients/{client_id}/proxies/{proxy_id}',
    headers={'Authorization': os.getenv('USER_TOKEN')}
)

data = response.json()
print(data['message'])
package main

import (
    "encoding/json"
    "fmt"
    "io"
    "net/http"
    "os"
)

type Response struct {
    Message string `json:"message"`
}

func main() {
    clientId := "your-client-id"
    proxyId := "your-proxy-id"
    
    url := fmt.Sprintf("https://api.requestrocket.com/api/clients/%s/proxies/%s", clientId, proxyId)
    req, _ := http.NewRequest("DELETE", url, nil)
    req.Header.Set("Authorization", os.Getenv("USER_TOKEN"))

    client := &http.Client{}
    resp, _ := client.Do(req)
    defer resp.Body.Close()

    body, _ := io.ReadAll(resp.Body)
    var result Response
    json.Unmarshal(body, &result)
    
    fmt.Println(result.Message)
}
import java.net.http.*;
import java.net.URI;
import com.google.gson.*;

public class DeleteProxy {
    public static void main(String[] args) throws Exception {
        String clientId = "your-client-id";
        String proxyId = "your-proxy-id";
        
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.requestrocket.com/api/clients/" + clientId + "/proxies/" + proxyId))
            .header("Authorization", System.getenv("USER_TOKEN"))
            .DELETE()
            .build();

        HttpResponse<String> response = client.send(request, 
            HttpResponse.BodyHandlers.ofString());

        JsonObject json = JsonParser.parseString(response.body()).getAsJsonObject();
        System.out.println(json.get("message").getAsString());
    }
}
curl -X DELETE "https://api.requestrocket.com/api/clients/${CLIENT_ID}/proxies/${PROXY_ID}" \
  -H "Authorization: ${USER_TOKEN}"

Complete Setup Example

async function setupCompleteProxy(clientId, userToken) {
  // 1. Create proxy credential
  const proxyCred = await fetch(
    `https://api.requestrocket.com/api/clients/${clientId}/credentials`,
    {
      method: 'POST',
      headers: {
        'Authorization': userToken,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        credentialName: 'App API Key',
        credentialType: 'proxy',
        credentialAuthType: 'key',
        credentialRegion: 'us-east-1',
        credentialSecret: { key: 'X-API-Key', value: 'app-key', addToHeader: true }
      })
    }
  ).then(r => r.json());
  
  // 2. Create target credential
  const targetCred = await fetch(
    `https://api.requestrocket.com/api/clients/${clientId}/credentials`,
    {
      method: 'POST',
      headers: {
        'Authorization': userToken,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        credentialName: 'Stripe Token',
        credentialType: 'target',
        credentialAuthType: 'bearer',
        credentialRegion: 'us-east-1',
        credentialSecret: { token: process.env.STRIPE_KEY, addToHeader: true }
      })
    }
  ).then(r => r.json());
  
  // 3. Create target
  const target = await fetch(
    `https://api.requestrocket.com/api/clients/${clientId}/targets`,
    {
      method: 'POST',
      headers: {
        'Authorization': userToken,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        targetName: 'Stripe API',
        targetRegion: 'us-east-1',
        targetBaseURL: 'https://api.stripe.com',
        targetTestPath: '/v1/customers'
      })
    }
  ).then(r => r.json());
  
  // 4. Create proxy
  const proxy = await fetch(
    `https://api.requestrocket.com/api/clients/${clientId}/proxies`,
    {
      method: 'POST',
      headers: {
        'Authorization': userToken,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        proxyName: 'Stripe Proxy',
        proxyRegion: 'us-east-1',
        proxyProxyCredentialId: proxyCred.credentials[0].sKey,
        proxyTargetId: target.targets[0].sKey,
        proxyTargetCredentialId: targetCred.credentials[0].sKey,
        proxyActive: true,
        proxyDefaultRuleEffect: 'allow'
      })
    }
  ).then(r => r.json());
  
  const proxyId = proxy.proxies[0].sKey;
  const region = proxy.proxies[0].proxyRegion;
  
  return {
    proxy: proxy.proxies[0],
    proxyURL: `https://${region}.requestrocket.com/api/${proxyId}`
  };
}

Proxy Telemetry

Retrieve time-series telemetry for a specific proxy, broken down by the proxy leg (RequestRocket receiving the inbound call) and the target leg (RequestRocket forwarding to the upstream API). Results can be grouped by minute, hour, day, or month and filtered by date range.

Request

GET /api/clients/{clientId}/proxies/{proxyId}/telemetry?interval=hour&startDate=2025-09-01T00:00:00Z&endDate=2025-09-30T23:59:59Z&limit=100 HTTP/1.1
Host: api.requestrocket.com
Authorization: {user_token}

Query Parameters

ParameterTypeRequiredDescription
intervalstringNoAggregation interval: minute, hour, day, or month (default: hour)
startDatestring (date-time)NoInclude telemetry data starting from this time (inclusive)
endDatestring (date-time)NoInclude telemetry data ending at this time (inclusive)
limitintegerNoMaximum number of telemetry records to return (default: 100, max: 1000)

Response Fields

All counter and timing fields are source-keyed maps with "proxy" and "target" keys. Derived maps are computed on read and are not stored in the database.

FieldTypeDescription
pKeystringProxy ID
sKeystringTimestamp key (YYYY-MM-DD-HH-MM / YYYY-MM-DD-HH / YYYY-MM-DD / YYYY-MM)
proxyIdstringProxy ID (same as pKey for proxy records)
countMapRecord<source, integer>Total request count per source
successCountMapRecord<source, integer>Successful requests (2xx / 3xx) per source
errorCountMapRecord<source, integer>Error requests (4xx / 5xx) per source
totalResponseTimeMapRecord<source, float>Cumulative response time in ms per source
codeCountMapRecord<"statusCode:source", integer>Request count per HTTP status code and source
codeTotalRTMapRecord<"statusCode:source", float>Cumulative response time per status code and source
countryCountMapRecord<"countryCode:source", integer>Request count per country (ISO 3166-1 alpha-2) and source
countryTotalRTMapRecord<"countryCode:source", float>Cumulative response time per country and source
averageResponseTimeMapRecord<source, float>Average response time per source (derived)
successRateMapRecord<source, float>Success rate per source (derived)
errorRateMapRecord<source, float>Error rate per source (derived)
countryAverageRTMapRecord<"countryCode:source", float>Average response time per country and source (derived)
ewmaResponseTimefloatExponentially weighted moving average of response time

Response

{
  "message": "Success",
  "interval": "hour",
  "telemetry": [
    {
      "pKey": "a1b2c3d4-1234-5678-abcd-ef0123456789",
      "sKey": "2025-09-10-02",
      "proxyId": "a1b2c3d4-1234-5678-abcd-ef0123456789",
      "countMap":            { "proxy": 150, "target": 142 },
      "successCountMap":     { "proxy": 148, "target": 140 },
      "errorCountMap":       { "proxy": 2,   "target": 2   },
      "totalResponseTimeMap":{ "proxy": 116.145, "target": 110.036 },
      "codeCountMap": {
        "200:proxy": 148, "200:target": 140,
        "429:proxy": 2,   "429:target": 2
      },
      "codeTotalRTMap": {
        "200:proxy": 113.822, "200:target": 107.713,
        "429:proxy": 2.323,   "429:target": 2.323
      },
      "countryCountMap": {
        "US:proxy": 90, "US:target": 85,
        "AU:proxy": 60, "AU:target": 57
      },
      "countryTotalRTMap": {
        "US:proxy": 69.687, "US:target": 65.834,
        "AU:proxy": 46.458, "AU:target": 44.202
      },
      "averageResponseTimeMap": { "proxy": 0.7743, "target": 0.7749 },
      "successRateMap":          { "proxy": 0.9867, "target": 0.9859 },
      "errorRateMap":            { "proxy": 0.0133, "target": 0.0141 },
      "countryAverageRTMap": {
        "US:proxy": 0.7743, "US:target": 0.7745,
        "AU:proxy": 0.7743, "AU:target": 0.7754
      },
      "ewmaResponseTime": 0.7681
    }
  ]
}

Next Steps

On this page