API Documentation
Integrate Reddit upvotes, downvotes, and comments into your application with a simple, authenticated REST API.
https://buyredditupvotes.io/api/public/v1
Every request requires an API key passed in the x-api-key header. Generate and manage your keys from your account Settings page.
IP Whitelisting Required for Production. Your server IP must be whitelisted before live orders will process. Contact us on Telegram @buyredditupvotes with your IP to get approved. Test orders from non-whitelisted IPs will return a 403 error.
Tip: You can use either the serviceKey (e.g. "post_upvote") or the numeric serviceId (e.g. "2") when creating orders — both are accepted.
/status request.limit parameter.custom_comments.Real-time refresh: Status is automatically synced from our delivery network each time you fetch an order via the GET endpoints. You always receive the latest state — no caching delays.
Parameters: service, link, quantity, speed (optional)
curl -X POST https://buyredditupvotes.io/api/public/v1/orders \ -H "Content-Type: application/json" \ -H "x-api-key: YOUR_API_KEY" \ -d '{ "service": "post_upvote", "link": "https://www.reddit.com/r/example/comments/abc123/...", "quantity": 50, "speed": 100 }'
{
"status": "success",
"orderId": 4292567,
"cost": 0.5,
"balanceAfter": 24.50
}
Separate each comment with \n. Use delay1 and delay2 to control posting timing in minutes.
curl -X POST https://buyredditupvotes.io/api/public/v1/orders \ -H "Content-Type: application/json" \ -H "x-api-key: YOUR_API_KEY" \ -d '{ "service": "custom_comments", "link": "https://www.reddit.com/r/example/comments/abc123/...", "comments": "Great post!\nThanks for sharing\nVery helpful", "delay1": 2, "delay2": 5 }'
{
"status": "success",
"orderId": 4293000,
"cost": 0.30,
"balanceAfter": 24.20
}
Check up to 100 orders in a single request. Pass all order IDs as a JSON array.
curl -X POST https://buyredditupvotes.io/api/public/v1/status \ -H "Content-Type: application/json" \ -H "x-api-key: YOUR_API_KEY" \ -d '{"orders": ["4292567", "4293000"]}'
{
"results": [
{ "orderId": 4292567, "status": "running" },
{ "orderId": 4293000, "status": "completed" }
]
}
| Parameter | Type | Description |
|---|---|---|
| service | string | Service key from available services (e.g. post_upvote) required |
| serviceId | string | Numeric service ID — alternative to service key optional |
| link | string | Full Reddit post or comment URL required |
| quantity | number | Number of upvotes/downvotes (5–1,000). Not used for custom_comments required* |
| speed | number | Delivery rate per hour (10–5,000). Vote services only. Defaults to auto optional |
| comments | string | Comment text separated by \n. Required for custom_comments optional |
| delay1 | number | Minutes before first comment is posted optional |
| delay2 | number | Minutes between each subsequent comment optional |
curl -X GET "https://buyredditupvotes.io/api/public/v1/orders?id=4292567" \ -H "x-api-key: YOUR_API_KEY"
{
"order": {
"id": 4292567,
"created_at": "2025-11-02T19:06:23Z",
"service": "Post Upvote",
"reddit_link": "https://www.reddit.com/r/example/comments/abc123/...",
"quantity": 50,
"cost": 0.5,
"status": "completed"
}
}
| Parameter | Type | Description |
|---|---|---|
| page | number | Page number. Default: 1 optional |
| limit | number | Results per page. Default: 20, max: 100 optional |
| status | string | Filter: pending | running | completed | failed optional |
| service | string | Filter by service name optional |
| link | string | Search by Reddit link (partial match supported) optional |
| Parameter | Type | Description |
|---|---|---|
| orders | array | Array of order IDs as strings or numbers. Max 100 per request required |
{
"services": [
{
"serviceId": "2",
"serviceKey": "post_upvote",
"name": "Post Upvote",
"min": 5,
"max": 1000,
"ratePerHundred": 1.0,
"category": "Reddit"
}
]
}
{ "balance": 25.50 }
If a post is rejected, a full $15 refund is issued automatically. Post status values: pending_approval approved published rejected
| Parameter | Type | Description |
|---|---|---|
| subreddit | string | Subreddit name without r/ prefix. 2–21 characters required |
| title | string | Post title. 3–300 characters required |
| body | string | Post body in markdown format. 10–40,000 characters required |
curl -X POST https://buyredditupvotes.io/api/public/v1/posts \ -H "Content-Type: application/json" \ -H "x-api-key: YOUR_API_KEY" \ -d '{ "subreddit": "technology", "title": "The Future of AI in 2025", "body": "# Introduction\n\nArtificial Intelligence...\n\n## Key Points\n\n- Point 1\n- Point 2" }'
{
"status": "success",
"post": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"created_at": "2025-12-13T10:00:00Z",
"subreddit": "technology",
"title": "The Future of AI in 2025",
"status": "pending_approval",
"cost": 15.0,
"reddit_url": null,
"published_at": null
},
"cost": 15.0,
"balanceAfter": 35.0,
"message": "Post submitted. Review within 24 hours."
}
{
"post": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"subreddit": "technology",
"title": "The Future of AI in 2025",
"status": "published",
"cost": 15.0,
"reddit_url": "https://www.reddit.com/r/technology/comments/abc123/...",
"published_at": "2025-12-13T14:30:00Z"
}
}
| Parameter | Type | Description |
|---|---|---|
| page | number | Page number. Default: 1 optional |
| limit | number | Results per page. Default: 20, max: 100 optional |
| status | string | Filter by status value optional |
import requests API_KEY = "YOUR_API_KEY" BASE_URL = "https://buyredditupvotes.io/api/public/v1" headers = { "Content-Type": "application/json", "x-api-key": API_KEY } def create_upvote_order(link: str, quantity: int, speed: int = None): payload = {"service": "post_upvote", "link": link, "quantity": quantity} if speed: payload["speed"] = speed return requests.post(f"{BASE_URL}/orders", json=payload, headers=headers).json() def check_status(order_ids: list): return requests.post( f"{BASE_URL}/status", json={"orders": order_ids}, headers=headers ).json() def get_balance(): return requests.get(f"{BASE_URL}/balance", headers=headers).json() # Example usage result = create_upvote_order( "https://reddit.com/r/example/comments/abc123/...", quantity=50, speed=100 ) print(f"Order ID: {result['orderId']} | Cost: ${result['cost']}")
const API_KEY = 'YOUR_API_KEY'; const BASE_URL = 'https://buyredditupvotes.io/api/public/v1'; const headers = { 'Content-Type': 'application/json', 'x-api-key': API_KEY }; async function createUpvoteOrder(link, quantity, speed = null) { const payload = { service: 'post_upvote', link, quantity }; if (speed) payload.speed = speed; const res = await fetch(`${BASE_URL}/orders`, { method: 'POST', headers, body: JSON.stringify(payload) }); return res.json(); } async function checkStatus(orderIds) { const res = await fetch(`${BASE_URL}/status`, { method: 'POST', headers, body: JSON.stringify({ orders: orderIds }) }); return res.json(); } async function getBalance() { const res = await fetch(`${BASE_URL}/balance`, { headers }); return res.json(); } // Example usage const result = await createUpvoteOrder( 'https://reddit.com/r/example/comments/abc123/...', 50, 100 ); console.log('Order ID:', result.orderId);
<?php $API_KEY = 'YOUR_API_KEY'; $BASE_URL = 'https://buyredditupvotes.io/api/public/v1'; function createOrder($service, $link, $quantity, $speed = null) { global $API_KEY, $BASE_URL; $payload = ['service' => $service, 'link' => $link, 'quantity' => $quantity]; if ($speed) $payload['speed'] = $speed; $ch = curl_init("$BASE_URL/orders"); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', "x-api-key: $API_KEY" ], CURLOPT_POSTFIELDS => json_encode($payload) ]); $response = curl_exec($ch); curl_close($ch); return json_decode($response, true); } // Example usage $result = createOrder( 'post_upvote', 'https://reddit.com/r/example/comments/abc123/...', 50, 100 ); echo "Order ID: " . $result['orderId']; ?>
error field for details.x-api-key header.All error responses follow the same JSON structure:
{ "error": "Invalid or missing API key" }
{ "error": "Insufficient balance" }
{ "error": "Quantity must be between 5 and 1000" }
{ "error": "You already have 3 pending/running orders for this link and service." }
For any issues, contact us on Telegram @buyredditupvotes. For IP whitelisting requests, include your server IP in your first message.