Proxies API
Create a proxy, then call it on the regional host.
The Core API creates and reads the proxy record. Callers of the target use the regional proxy URL or the async URL, with the inbound credential. They do not use the user token.
Endpoints
| Method | Path | What it does |
|---|---|---|
| GET | /api/clients/:clientId/proxies | List proxies |
| POST | /api/clients/:clientId/proxies | Create a proxy |
| GET | /api/clients/:clientId/proxies/:proxyId | Read a proxy |
| PUT | /api/clients/:clientId/proxies/:proxyId | Update a proxy |
| DELETE | /api/clients/:clientId/proxies/:proxyId | Delete a proxy |
Create a proxy
POST /api/clients/:clientId/proxies creates the proxy. Set one region, the inbound credential id in proxyProxyCredentialId, the target id, and the target credential id.
Request
curl -X POST "https://api.requestrocket.com/api/clients/:clientId/proxies" \
-H "Authorization: u-your-token" \
-H "Content-Type: application/json" \
-d '{
"proxyName": "HTTPBin",
"proxyRegion": "us-east-2",
"proxyProxyCredentialId": "2a6f4b81-9c05-4e37-b1d8-6f0a3c5e7d92",
"proxyTargetId": "7c2e9a14-6b31-4d8f-a0c5-3e1f7b9d2a44",
"proxyTargetCredentialId": "9e1d3a76-5b48-4c02-8a7f-1d4c6b8e0f31",
"proxyActive": true
}'import axios from "axios";
const response = await axios.request({
method: "POST",
url: "https://api.requestrocket.com/api/clients/:clientId/proxies",
headers: {
"Authorization": "u-your-token",
"Content-Type": "application/json",
},
data: {
"proxyName": "HTTPBin",
"proxyRegion": "us-east-2",
"proxyProxyCredentialId": "2a6f4b81-9c05-4e37-b1d8-6f0a3c5e7d92",
"proxyTargetId": "7c2e9a14-6b31-4d8f-a0c5-3e1f7b9d2a44",
"proxyTargetCredentialId": "9e1d3a76-5b48-4c02-8a7f-1d4c6b8e0f31",
"proxyActive": true
}
});
console.log(response.status, response.data);import requests
response = requests.request(
"POST",
"https://api.requestrocket.com/api/clients/:clientId/proxies",
headers={
"Authorization": "u-your-token",
"Content-Type": "application/json",
},
data="{\n \"proxyName\": \"HTTPBin\",\n \"proxyRegion\": \"us-east-2\",\n \"proxyProxyCredentialId\": \"2a6f4b81-9c05-4e37-b1d8-6f0a3c5e7d92\",\n \"proxyTargetId\": \"7c2e9a14-6b31-4d8f-a0c5-3e1f7b9d2a44\",\n \"proxyTargetCredentialId\": \"9e1d3a76-5b48-4c02-8a7f-1d4c6b8e0f31\",\n \"proxyActive\": true\n}"
)
print(response.status_code, response.json())package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
payload := strings.NewReader(`{
"proxyName": "HTTPBin",
"proxyRegion": "us-east-2",
"proxyProxyCredentialId": "2a6f4b81-9c05-4e37-b1d8-6f0a3c5e7d92",
"proxyTargetId": "7c2e9a14-6b31-4d8f-a0c5-3e1f7b9d2a44",
"proxyTargetCredentialId": "9e1d3a76-5b48-4c02-8a7f-1d4c6b8e0f31",
"proxyActive": true
}`)
req, _ := http.NewRequest("POST", "https://api.requestrocket.com/api/clients/:clientId/proxies", payload)
req.Header.Set("Authorization", "u-your-token")
req.Header.Set("Content-Type", "application/json")
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"))
.method("POST", HttpRequest.BodyPublishers.ofString("{\n \"proxyName\": \"HTTPBin\",\n \"proxyRegion\": \"us-east-2\",\n \"proxyProxyCredentialId\": \"2a6f4b81-9c05-4e37-b1d8-6f0a3c5e7d92\",\n \"proxyTargetId\": \"7c2e9a14-6b31-4d8f-a0c5-3e1f7b9d2a44\",\n \"proxyTargetCredentialId\": \"9e1d3a76-5b48-4c02-8a7f-1d4c6b8e0f31\",\n \"proxyActive\": true\n}"))
.header("Authorization", "u-your-token")
.header("Content-Type", "application/json")
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
}
}Responses
{
"proxies": [
{
"userId": "0f8e6c1a-2b7d-4c3e-9a55-1d2e3f4a5b6c",
"clientId": "b3a1c7d2-5e44-4f0a-9c1e-7d2f8a6b1c90",
"parentId": "b3a1c7d2-5e44-4f0a-9c1e-7d2f8a6b1c90",
"proxyName": "HTTPBin",
"proxyRegion": "us-east-2",
"proxyProxyCredentialId": "2a6f4b81-9c05-4e37-b1d8-6f0a3c5e7d92",
"proxyTargetId": "7c2e9a14-6b31-4d8f-a0c5-3e1f7b9d2a44",
"proxyTargetCredentialId": "9e1d3a76-5b48-4c02-8a7f-1d4c6b8e0f31",
"proxyActive": true,
"proxyCreatedAt": "2026-11-02T07:30:00.000Z",
"proxyUpdatedAt": "2026-11-02T07:30:00.000Z",
"proxyDefaultRuleEffect": null,
"proxyMaxRetries": null,
"proxyMaxBackoff": null,
"proxyNotes": null
}
],
"message": "Success"
}{
"message": "Input failed data validation",
"errors": [
"/proxyProxyCredentialId: must have required property 'proxyProxyCredentialId'"
]
}{
"Message": "User is not authorized to access this resource with an explicit deny in an identity-based policy"
}{
"message": "method / endpoint not supported"
}Request body
| Parameter | Type | Required | Description |
|---|---|---|---|
proxyName | string | ✓ | Display name, 3–256 characters. |
proxyRegion | string | ✓ | Region that stores the proxy, such as us-east-2. It cannot be changed later. |
proxyProxyCredentialId | string | ✓ | Inbound credential id, or consumer_pool when callers sign in through the consumer pool. |
proxyTargetId | string | ✓ | Target this proxy calls. |
proxyTargetCredentialId | string | ✓ | Target credential sent on the upstream call. |
proxyActive | boolean | — | When false, the proxy does not serve traffic. Defaults to true. |
proxyAlias | string | — | Lowercase letters and dashes. Stored in lowercase. |
proxyDefaultRuleEffect | string | — | "allow" or "deny". Applied when no rule matches. |
proxyMaxRetries | number | — | How many times the async URL retries a transient failure. The gateway caps this at 10. |
proxyMaxBackoff | number | — | Retry wait ceiling in milliseconds. The gateway caps this at 30000. This call accepts a value up to 60000. |
proxyAdditionalHeaders | object | — | Map of header name to string value, added on every call. |
proxyAdditionalQueryParams | object | — | Map of query parameter name to string value, added on every call. |
proxyAdditionalData | object | — | Map of body field name to string value, merged into every call. |
proxyNotes | string | — | Free-text note stored on the proxy. |
Returns a proxies array with message set to "Success". The attributes match Read a proxy. sKey on the create response is the new proxy id.
Read a proxy
GET /api/clients/:clientId/proxies/:proxyId returns the proxy record and a referenceStatus of ok, missing_credential, or missing_target.
Request
curl -X GET "https://api.requestrocket.com/api/clients/:clientId/proxies/:proxyId" \
-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",
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",
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", 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"))
.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
{
"proxies": [
{
"proxyName": "HTTPBin",
"proxyRegion": "us-east-2",
"proxyProxyCredentialId": "2a6f4b81-9c05-4e37-b1d8-6f0a3c5e7d92",
"proxyTargetId": "7c2e9a14-6b31-4d8f-a0c5-3e1f7b9d2a44",
"proxyTargetCredentialId": "9e1d3a76-5b48-4c02-8a7f-1d4c6b8e0f31",
"proxyActive": true,
"referenceStatus": "ok"
}
],
"message": "Success"
}{
"message": "Error getting proxies"
}{
"Message": "User is not authorized to access this resource with an explicit deny in an identity-based policy"
}{
"message": "method / endpoint not supported"
}Response attributes
| Attribute | Type | Description |
|---|---|---|
proxies | array | One proxy object. |
proxies[].sKey | string | Proxy id. Pass this as proxyId on other endpoints. |
proxies[].pKey / parentId | string | Organisation id. |
proxies[].proxyName | string | Display name. |
proxies[].proxyRegion | string | Deployment region. |
proxies[].proxyProxyCredentialId | string | Inbound credential id, or consumer_pool. |
proxies[].proxyTargetId | string | Target id. |
proxies[].proxyTargetCredentialId | string | Target credential id. |
proxies[].proxyActive | boolean | Whether the proxy serves traffic. |
proxies[].proxyCreatedAt | string | ISO 8601 creation time. |
proxies[].proxyUpdatedAt | string | ISO 8601 last update time. |
proxies[].proxyDefaultRuleEffect | string or null | "allow" or "deny". |
proxies[].proxyMaxRetries | number or null | Async retry count. |
proxies[].proxyMaxBackoff | number or null | Retry wait ceiling in milliseconds. |
proxies[].proxyAlias | string or null | URL alias. |
proxies[].proxyNotes | string or null | Free-text note. |
proxies[].proxyAdditionalHeaders | object or null | Map of header name to value. |
proxies[].proxyAdditionalQueryParams | object or null | Map of query parameter name to value. |
proxies[].proxyAdditionalData | object or null | Map of body field name to value. |
proxies[].referenceStatus | string | ok, missing_credential, or missing_target. Only on GET. |
message | string | "Success". |
List proxies
GET /api/clients/:clientId/proxies returns every proxy for the organisation in one response. Each item matches Read a proxy, including referenceStatus.
Update a proxy
PUT /api/clients/:clientId/proxies/:proxyId changes the fields you send. The region stays as it was created.
Request body
All fields are optional. Omit a field to leave it unchanged.
| Parameter | Type | Required | Description |
|---|---|---|---|
proxyName | string | — | Display name, 3–256 characters. |
proxyProxyCredentialId | string | — | Inbound credential id, or consumer_pool. |
proxyTargetId | string | — | Target this proxy calls. |
proxyTargetCredentialId | string | — | Target credential sent on the upstream call. |
proxyActive | boolean | — | When false, the proxy does not serve traffic. |
proxyAlias | string | — | Lowercase letters and dashes. An empty string clears it. |
proxyDefaultRuleEffect | string | — | "allow" or "deny". |
proxyMaxRetries | number | — | Async retry count. Maximum 10. |
proxyMaxBackoff | number | — | Retry wait ceiling in milliseconds. Maximum 30 on this call. |
proxyAdditionalHeaders | object | — | Map of header name to string value. null clears the stored map. |
proxyAdditionalQueryParams | object | — | Map of query parameter name to string value. null clears the stored map. |
proxyAdditionalData | object | — | Map of body field name to string value. null clears the stored map. |
proxyNotes | string | — | Free-text note. |
Returns a proxies array with message set to "Proxy updated successfully". The attributes match Read a proxy except referenceStatus is absent.
Call the proxy
https://{region}.requestrocket.com/api/{proxyId}/{target-path}Authenticate with the inbound credential, not the user token. GET https://us-east-2.requestrocket.com/api/{proxyId}/get with the HTTPBin proxy returns the target response when the call is granted.
Async API
https://{region}.requestrocket.com/async/{proxyId}/{target-path}The async URL queues the same call and retries transient failures. The response gives you a request id you can read from Request logs.