Replace a coupon
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "PUT");curl_easy_setopt(hnd, CURLOPT_URL, "https://api.proxyrequest.com/api/v1/coupons/example");
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, "{ \"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.Put, RequestUri = new Uri("https://api.proxyrequest.com/api/v1/coupons/example"), Headers = { { "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/example"
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("PUT", 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/coupons/example")) .header("Authorization", "Bearer <token>") .header("Content-Type", "application/json") .method("PUT", 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/example") .put(body) .addHeader("Authorization", "Bearer <token>") .addHeader("Content-Type", "application/json") .build();
Response response = client.newCall(request).execute();import axios from 'axios';
const options = { method: 'PUT', url: 'https://api.proxyrequest.com/api/v1/coupons/example', headers: {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/example';const options = { method: 'PUT', headers: {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/example") .put(body) .addHeader("Authorization", "Bearer <token>") .addHeader("Content-Type", "application/json") .build()
val response = client.newCall(request).execute()use std::str::FromStr;use serde_json::json;use reqwest;
#[tokio::main]pub async fn main() { let url = "https://api.proxyrequest.com/api/v1/coupons/example";
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("Authorization", "Bearer <token>".parse().unwrap()); headers.insert("Content-Type", "application/json".parse().unwrap());
let client = reqwest::Client::new(); let response = client.request(reqwest::Method::from_str("PUT").unwrap(), url) .headers(headers) .json(&payload) .send() .await;
let results = response.unwrap() .json::<serde_json::Value>() .await .unwrap();
dbg!(results);}curl --request PUT \ --url https://api.proxyrequest.com/api/v1/coupons/example \ --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 PUT \ --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/coupons/exampleReplaces the writable fields of a coupon. Staff access is required.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”A unique value identifying this Coupon.
Request Bodyrequired
Section titled “Request Bodyrequired”object
Arbitrary coupon value
Coupon code cannot be changed if already set
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
Coupon code cannot be changed if already set
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
Coupon code cannot be changed if already set
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 operation completed 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"}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."}The requested resource does not exist in the current account scope.
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
Resource not found
{ "detail": "Not found."}