Create a coupon
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");curl_easy_setopt(hnd, CURLOPT_URL, "https://api.proxyrequest.com/api/v1/coupons");
struct curl_slist *headers = NULL;headers = curl_slist_append(headers, "Accept-Language: de");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, "{ \"value\": 1, \"code\": \"us\", \"is_multi_use\": true, \"is_available_to_one_time\": true, \"marketer\": \"550e8400-e29b-41d4-a716-446655440001\", \"type\": \"free_data\", \"limit\": 100, \"valid_until\": \"2026-07-01T12:30:00Z\", \"packages\": [ \"package\" ] }");
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/coupons"), Headers = { { "Accept-Language", "de" }, { "Authorization", "Bearer <token>" }, }, Content = new StringContent("{ \"value\": 1, \"code\": \"us\", \"is_multi_use\": true, \"is_available_to_one_time\": true, \"marketer\": \"550e8400-e29b-41d4-a716-446655440001\", \"type\": \"free_data\", \"limit\": 100, \"valid_until\": \"2026-07-01T12:30:00Z\", \"packages\": [ \"package\" ] }") { 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/coupons"
payload := strings.NewReader("{ \"value\": 1, \"code\": \"us\", \"is_multi_use\": true, \"is_available_to_one_time\": true, \"marketer\": \"550e8400-e29b-41d4-a716-446655440001\", \"type\": \"free_data\", \"limit\": 100, \"valid_until\": \"2026-07-01T12:30:00Z\", \"packages\": [ \"package\" ] }")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Accept-Language", "de") 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/coupons")) .header("Accept-Language", "de") .header("Authorization", "Bearer <token>") .header("Content-Type", "application/json") .method("POST", HttpRequest.BodyPublishers.ofString("{ \"value\": 1, \"code\": \"us\", \"is_multi_use\": true, \"is_available_to_one_time\": true, \"marketer\": \"550e8400-e29b-41d4-a716-446655440001\", \"type\": \"free_data\", \"limit\": 100, \"valid_until\": \"2026-07-01T12:30:00Z\", \"packages\": [ \"package\" ] }")) .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, "{ \"value\": 1, \"code\": \"us\", \"is_multi_use\": true, \"is_available_to_one_time\": true, \"marketer\": \"550e8400-e29b-41d4-a716-446655440001\", \"type\": \"free_data\", \"limit\": 100, \"valid_until\": \"2026-07-01T12:30:00Z\", \"packages\": [ \"package\" ] }");Request request = new Request.Builder() .url("https://api.proxyrequest.com/api/v1/coupons") .post(body) .addHeader("Accept-Language", "de") .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/coupons', headers: { 'Accept-Language': 'de', Authorization: 'Bearer <token>', 'Content-Type': 'application/json' }, data: { value: 1, code: 'us', is_multi_use: true, is_available_to_one_time: true, marketer: '550e8400-e29b-41d4-a716-446655440001', type: 'free_data', limit: 100, valid_until: '2026-07-01T12:30:00Z', packages: ['package'] }};
try { const { data } = await axios.request(options); console.log(data);} catch (error) { console.error(error);}const url = 'https://api.proxyrequest.com/api/v1/coupons';const options = { method: 'POST', headers: { 'Accept-Language': 'de', Authorization: 'Bearer <token>', 'Content-Type': 'application/json' }, body: '{"value":1,"code":"us","is_multi_use":true,"is_available_to_one_time":true,"marketer":"550e8400-e29b-41d4-a716-446655440001","type":"free_data","limit":100,"valid_until":"2026-07-01T12:30:00Z","packages":["package"]}'};
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, "{ \"value\": 1, \"code\": \"us\", \"is_multi_use\": true, \"is_available_to_one_time\": true, \"marketer\": \"550e8400-e29b-41d4-a716-446655440001\", \"type\": \"free_data\", \"limit\": 100, \"valid_until\": \"2026-07-01T12:30:00Z\", \"packages\": [ \"package\" ] }")val request = Request.Builder() .url("https://api.proxyrequest.com/api/v1/coupons") .post(body) .addHeader("Accept-Language", "de") .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/coupons";
let payload = json!({ "value": 1, "code": "us", "is_multi_use": true, "is_available_to_one_time": true, "marketer": "550e8400-e29b-41d4-a716-446655440001", "type": "free_data", "limit": 100, "valid_until": "2026-07-01T12:30:00Z", "packages": ("package") });
let mut headers = reqwest::header::HeaderMap::new(); headers.insert("Accept-Language", "de".parse().unwrap()); 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/coupons \ --header 'Accept-Language: de' \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "value": 1, "code": "us", "is_multi_use": true, "is_available_to_one_time": true, "marketer": "550e8400-e29b-41d4-a716-446655440001", "type": "free_data", "limit": 100, "valid_until": "2026-07-01T12:30:00Z", "packages": [ "package" ] }'wget --quiet \ --method POST \ --header 'Accept-Language: de' \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --body-data '{ "value": 1, "code": "us", "is_multi_use": true, "is_available_to_one_time": true, "marketer": "550e8400-e29b-41d4-a716-446655440001", "type": "free_data", "limit": 100, "valid_until": "2026-07-01T12:30:00Z", "packages": [ "package" ] }' \ --output-document \ - https://api.proxyrequest.com/api/v1/couponsCreates a coupon. This operation is restricted to administrators.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”Stable key for one logical mutation. Successful responses are replayable for 24 hours; reusing a key with a different request returns 409.
Preferred language for human-readable API errors. Supported languages: en, ru, uk, de, it, fr, es, zh-hans, ja. Regional language tags and quality weights are accepted; unsupported or omitted values use English.
Examples
defr-CA, fr;q=0.9, en;q=0.5Request Bodyrequired
Section titled “Request Bodyrequired”object
Arbitrary coupon value
Leave empty to auto-generate a code
If true, coupon can be used multiple times.
If true, coupon can not be used for one-time package tiers.
The marketer who owns this coupon. Required if is_marketer is true.
free_data- Free Data *monetary- Money *percentage- Percentage
Number of times coupon can be used
Leave empty for coupons that never expire
Select packages for which this coupon is available. If no packages are selected, the coupon is available to all packages.
Examples
Example request
{ "value": 1, "code": "us", "is_multi_use": true, "is_available_to_one_time": true, "marketer": "550e8400-e29b-41d4-a716-446655440001", "type": "free_data", "limit": 100, "valid_until": "2026-07-01T12:30:00Z", "packages": [ "package" ]}object
Arbitrary coupon value
Leave empty to auto-generate a code
If true, coupon can be used multiple times.
If true, coupon can not be used for one-time package tiers.
The marketer who owns this coupon. Required if is_marketer is true.
free_data- Free Data *monetary- Money *percentage- Percentage
Number of times coupon can be used
Leave empty for coupons that never expire
Select packages for which this coupon is available. If no packages are selected, the coupon is available to all packages.
Examples
Example request
value=1&code=us&is_multi_use=true&is_available_to_one_time=true&marketer=550e8400-e29b-41d4-a716-446655440001&type=free_data&limit=100&valid_until=2026-07-01T12%3A30%3A00Z&packages=packageobject
Arbitrary coupon value
Leave empty to auto-generate a code
If true, coupon can be used multiple times.
If true, coupon can not be used for one-time package tiers.
The marketer who owns this coupon. Required if is_marketer is true.
free_data- Free Data *monetary- Money *percentage- Percentage
Number of times coupon can be used
Leave empty for coupons that never expire
Select packages for which this coupon is available. If no packages are selected, the coupon is available to all packages.
Examples
Example request
{ "value": 1, "code": "us", "is_multi_use": true, "is_available_to_one_time": true, "marketer": "550e8400-e29b-41d4-a716-446655440001", "type": "free_data", "limit": 100, "valid_until": "2026-07-01T12:30:00Z", "packages": [ "package" ]}Responses
Section titled “Responses”The resource or action result was created successfully.
object
object
Unique display name for this package shown to customers and in the admin. Residential Starter Business Pro
Lowercase alphanumeric identifier used internally for package resolution and proxy username routing. Cannot be changed without affecting active connections. residential01 bizpro
When enabled, users on this package have no data cap. The proxy will not enforce any bandwidth limit.
object
object
Arbitrary coupon value
Leaving this field empty will generate a random code.
If true, coupon can be used multiple times.
If true, coupon can not be used for one-time package tiers.
free_data- Free Data *monetary- Money *percentage- Percentage
Number of times coupon can be used
Leave empty for coupons that never expire
The marketer who owns this coupon. Required if is_marketer is true.
The user who created this coupon.
Examples
Example response
{ "id": "550e8400-e29b-41d4-a716-446655440001", "redeemed_count": 1, "is_expired": true, "is_redeemed": true, "packages": [ { "id": "550e8400-e29b-41d4-a716-446655440001", "name": "Residential 10 GB", "alias": "residential-10gb", "is_unlimited_data": true, "targeting_options": { "package": "package", "split_char": "-", "value_char": "-", "continent": "continent", "country": "us", "region": "california", "city": "los_angeles", "asn": "15169", "isp": "comcast", "username": "developer", "pool": "residential", "location": "location", "location_format": "location format", "session": "session", "session_mode_tag": "session mode tag", "session_ttl": "session ttl", "session_ttl_format": 1, "os": "os", "os_combined": true, "os_split_char": "os split char", "os_linux": "os linux", "os_windows": "os windows", "os_ios": "os ios", "os_macos": "os macos", "os_android": "os android" } } ], "stats": {}, "created": "2026-07-01T12:30:00Z", "value": 1, "code": "us", "is_multi_use": true, "is_available_to_one_time": true, "type": "free_data", "limit": 100, "valid_until": "2026-07-01T12:30:00Z", "marketer": "550e8400-e29b-41d4-a716-446655440001", "user": "550e8400-e29b-41d4-a716-446655440001"}Headers
Section titled “Headers”True when the response was replayed from a prior request.
Strong entity tag for optimistic concurrency control.
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
Examples
Validation error
{ "non_field_errors": [ "The request could not be processed." ]}Headers
Section titled “Headers”Language used for human-readable errors.
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
Examples
Authentication required
{ "detail": "Authentication credentials were not provided."}Headers
Section titled “Headers”Language used for human-readable errors.
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
Examples
Permission denied
{ "detail": "You do not have permission to perform this action."}Headers
Section titled “Headers”Language used for human-readable errors.
The idempotency key is in progress or was reused for a different request.
Validation and API error payload. Field names may be added dynamically; field errors are returned as arrays of human-readable messages.
object
Examplegenerated
{ "detail": "example", "non_field_errors": [ "example" ]}Headers
Section titled “Headers”Language used for human-readable errors.