Create an API key
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");curl_easy_setopt(hnd, CURLOPT_URL, "https://api.proxyrequest.com/api/v1/api-keys");
struct curl_slist *headers = NULL;headers = curl_slist_append(headers, "Authorization: Bearer <token>");headers = curl_slist_append(headers, "Content-Type: application/json");curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{ \"allowed_ips\": [ \"198.51.100.25\", \"203.0.113.10\" ] }");
CURLcode ret = curl_easy_perform(hnd);using System.Net.Http.Headers;var client = new HttpClient();var request = new HttpRequestMessage{ Method = HttpMethod.Post, RequestUri = new Uri("https://api.proxyrequest.com/api/v1/api-keys"), Headers = { { "Authorization", "Bearer <token>" }, }, Content = new StringContent("{ \"allowed_ips\": [ \"198.51.100.25\", \"203.0.113.10\" ] }") { Headers = { ContentType = new MediaTypeHeaderValue("application/json") } }};using (var response = await client.SendAsync(request)){ response.EnsureSuccessStatusCode(); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);}package main
import ( "fmt" "strings" "net/http" "io")
func main() {
url := "https://api.proxyrequest.com/api/v1/api-keys"
payload := strings.NewReader("{ \"allowed_ips\": [ \"198.51.100.25\", \"203.0.113.10\" ] }")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>") req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close() body, _ := io.ReadAll(res.Body)
fmt.Println(res) fmt.Println(string(body))
}HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://api.proxyrequest.com/api/v1/api-keys")) .header("Authorization", "Bearer <token>") .header("Content-Type", "application/json") .method("POST", HttpRequest.BodyPublishers.ofString("{ \"allowed_ips\": [ \"198.51.100.25\", \"203.0.113.10\" ] }")) .build();HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.body());OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");RequestBody body = RequestBody.create(mediaType, "{ \"allowed_ips\": [ \"198.51.100.25\", \"203.0.113.10\" ] }");Request request = new Request.Builder() .url("https://api.proxyrequest.com/api/v1/api-keys") .post(body) .addHeader("Authorization", "Bearer <token>") .addHeader("Content-Type", "application/json") .build();
Response response = client.newCall(request).execute();import axios from 'axios';
const options = { method: 'POST', url: 'https://api.proxyrequest.com/api/v1/api-keys', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, data: {allowed_ips: ['198.51.100.25', '203.0.113.10']}};
try { const { data } = await axios.request(options); console.log(data);} catch (error) { console.error(error);}const url = 'https://api.proxyrequest.com/api/v1/api-keys';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"allowed_ips":["198.51.100.25","203.0.113.10"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")val body = RequestBody.create(mediaType, "{ \"allowed_ips\": [ \"198.51.100.25\", \"203.0.113.10\" ] }")val request = Request.Builder() .url("https://api.proxyrequest.com/api/v1/api-keys") .post(body) .addHeader("Authorization", "Bearer <token>") .addHeader("Content-Type", "application/json") .build()
val response = client.newCall(request).execute()use serde_json::json;use reqwest;
#[tokio::main]pub async fn main() { let url = "https://api.proxyrequest.com/api/v1/api-keys";
let payload = json!({"allowed_ips": ("198.51.100.25", "203.0.113.10")});
let mut headers = reqwest::header::HeaderMap::new(); headers.insert("Authorization", "Bearer <token>".parse().unwrap()); headers.insert("Content-Type", "application/json".parse().unwrap());
let client = reqwest::Client::new(); let response = client.post(url) .headers(headers) .json(&payload) .send() .await;
let results = response.unwrap() .json::<serde_json::Value>() .await .unwrap();
dbg!(results);}curl --request POST \ --url https://api.proxyrequest.com/api/v1/api-keys \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "allowed_ips": [ "198.51.100.25", "203.0.113.10" ] }'wget --quiet \ --method POST \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --body-data '{ "allowed_ips": [ "198.51.100.25", "203.0.113.10" ] }' \ --output-document \ - https://api.proxyrequest.com/api/v1/api-keysCreates an API key for server-to-server access. allowed_ips can restrict the key to trusted IPv4 or IPv6 addresses.
Authorizations
Section titled “Authorizations”Request Body
Section titled “Request Body”object
Examples
Restrict key by IP
{ "allowed_ips": [ "198.51.100.25", "203.0.113.10" ]}object
Examples
Example request
id=550e8400-e29b-41d4-a716-446655440001&allowed_ips=198.51.100.25object
Examples
Example request
{ "id": "550e8400-e29b-41d4-a716-446655440001", "allowed_ips": [ "198.51.100.25" ]}Responses
Section titled “Responses”The resource or action result was created successfully.
object
Examples
Created API key
{ "id": "550e8400-e29b-41d4-a716-446655440008", "title": "Production reporting", "key": "pk_live_7eb1db5a0b174eddb9e70718197780a8", "allowed_ips": [ "198.51.100.25", "203.0.113.10" ], "created": "2026-07-01T12:30:00Z"}The request is malformed or violates a business rule.
Validation and API error payload. Field names may be added dynamically; field errors are returned as arrays of human-readable messages.
object
Stable translation key suitable for client localisation.
Examples
Validation error
{ "non_field_errors": [ "The request could not be processed." ], "translation": "errors.request.invalid"}Authentication credentials are missing, expired, or invalid.
Validation and API error payload. Field names may be added dynamically; field errors are returned as arrays of human-readable messages.
object
Stable translation key suitable for client localisation.
Examples
Authentication required
{ "detail": "Authentication credentials were not provided."}The authenticated account cannot perform this operation.
Validation and API error payload. Field names may be added dynamically; field errors are returned as arrays of human-readable messages.
object
Stable translation key suitable for client localisation.
Examples
Permission denied
{ "detail": "You do not have permission to perform this action."}