API Documentation

Integrate Upvote's Reddit marketing services directly into your platform. Automate upvotes, comments, posts, and more.

https://api.upvote.net/v1

Authentication

All API requests require authentication via an API key. Include your key in the x-api-key header with every request.

How to get your API key

Contact our team at api@upvote.net to request API access. Keys are issued within 24 hours for approved accounts.

Example Request Header
curl -H "x-api-key: YOUR_API_KEY" \
  https://api.upvote.net/v1/services

Available Services

Our API supports the following Reddit marketing services. Each service has configurable quantities and options.

Reddit Upvotes

$0.10/each

Boost post visibility with organic-looking upvotes from aged accounts.

Min: 10Max: 5000service: "upvotes"

Reddit Downvotes

$0.12/each

Suppress competitor content with targeted downvotes.

Min: 10Max: 2000service: "downvotes"

Reddit Comments

$2.50/each

Custom-written comments from real-looking accounts.

Min: 1Max: 100service: "comments"

Reddit Posts

$15.00/each

Full posts to any subreddit from established accounts.

Min: 1Max: 50service: "posts"

Rate Limits & Restrictions

TierRate LimitDaily OrdersConcurrent Orders
Standard60 requests/min10010
Pro300 requests/min50050
EnterpriseUnlimitedUnlimitedUnlimited

Rate limit headers are included in every response: X-RateLimit-Remaining and X-RateLimit-Reset.

Order Status Values

Orders progress through the following statuses:

pendingOrder received, queued
processingBeing fulfilled
completedSuccessfully delivered
partialPartially delivered
failedOrder failed
refundedPayment refunded

Quick Start

Get started in under a minute. Here's how to place your first order:

1Get your API key from api@upvote.net
2Fund your account balance
3Make your first API call
Place an upvote order
curl -X POST https://api.upvote.net/v1/orders \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "service": "upvotes",
    "url": "https://reddit.com/r/example/comments/abc123/my_post",
    "quantity": 100
  }'
Response
{
  "success": true,
  "data": {
    "order_id": "ord_a1b2c3d4e5",
    "service": "upvotes",
    "quantity": 100,
    "amount": 10.00,
    "status": "pending",
    "created_at": "2026-01-15T10:30:00Z"
  }
}

All Endpoints

MethodEndpointDescription
POST/ordersCreate a new order
GET/orders/:idGet order status
GET/servicesList available services
GET/balanceCheck account balance
POST/orders/reddit-postCreate a Reddit post order

Create Order

POSThttps://api.upvote.net/v1/orders

Create a new service order. Funds are deducted from your balance immediately.

Request Parameters

ParameterTypeRequiredDescription
servicestringYesService type: "upvotes", "downvotes", "comments", "posts"
urlstringYesTarget Reddit URL (post or comment permalink)
quantityintegerYesNumber of units to order
contentstringNoComment text (required for comments service)
drip_feedbooleanNoSpread delivery over time (default: true)
drip_hoursintegerNoHours to spread delivery over (default: 24)
Request
curl -X POST https://api.upvote.net/v1/orders \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "service": "upvotes",
    "url": "https://reddit.com/r/startups/comments/xyz/my_post",
    "quantity": 250,
    "drip_feed": true,
    "drip_hours": 48
  }'
Response
{
  "success": true,
  "data": {
    "order_id": "ord_f6g7h8i9j0",
    "service": "upvotes",
    "url": "https://reddit.com/r/startups/comments/xyz/my_post",
    "quantity": 250,
    "amount": 25.00,
    "status": "pending",
    "drip_feed": true,
    "drip_hours": 48,
    "estimated_completion": "2026-01-17T10:30:00Z",
    "created_at": "2026-01-15T10:30:00Z"
  }
}

Get Order Status

GEThttps://api.upvote.net/v1/orders/:id

Check the current status and progress of an order.

Request
curl https://api.upvote.net/v1/orders/ord_f6g7h8i9j0 \
  -H "x-api-key: YOUR_API_KEY"
Response
{
  "success": true,
  "data": {
    "order_id": "ord_f6g7h8i9j0",
    "service": "upvotes",
    "quantity": 250,
    "delivered": 142,
    "amount": 25.00,
    "status": "processing",
    "drip_feed": true,
    "created_at": "2026-01-15T10:30:00Z",
    "updated_at": "2026-01-16T03:15:00Z"
  }
}

List Services

GEThttps://api.upvote.net/v1/services

Returns all available services with current pricing and limits.

Response
{
  "success": true,
  "data": [
    {
      "id": "upvotes",
      "name": "Reddit Upvotes",
      "price_per_unit": 0.10,
      "min_quantity": 10,
      "max_quantity": 5000,
      "currency": "USD"
    },
    {
      "id": "downvotes",
      "name": "Reddit Downvotes",
      "price_per_unit": 0.12,
      "min_quantity": 10,
      "max_quantity": 2000,
      "currency": "USD"
    },
    {
      "id": "comments",
      "name": "Reddit Comments",
      "price_per_unit": 2.50,
      "min_quantity": 1,
      "max_quantity": 100,
      "currency": "USD"
    },
    {
      "id": "posts",
      "name": "Reddit Posts",
      "price_per_unit": 15.00,
      "min_quantity": 1,
      "max_quantity": 50,
      "currency": "USD"
    }
  ]
}

Check Balance

GEThttps://api.upvote.net/v1/balance

Returns your current account balance and spending summary.

Response
{
  "success": true,
  "data": {
    "balance": 487.50,
    "currency": "USD",
    "total_spent": 1512.50,
    "total_orders": 89,
    "tier": "pro"
  }
}

Reddit Posting Service

Our premium posting service creates full Reddit posts from established accounts. Posts are crafted to match subreddit culture and rules. $15 per post.

POSThttps://api.upvote.net/v1/orders/reddit-post
ParameterTypeRequiredDescription
subredditstringYesTarget subreddit (without r/ prefix)
titlestringYesPost title (max 300 characters)
bodystringNoPost body text (for text posts)
link_urlstringNoURL to submit (for link posts)
flairstringNoPost flair text if subreddit requires it
schedule_atISO 8601NoSchedule post for optimal timing
Request
curl -X POST https://api.upvote.net/v1/orders/reddit-post \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "subreddit": "SaaS",
    "title": "We built an internal tool that cut our support tickets by 60%",
    "body": "Hey everyone, wanted to share what we learned...",
    "flair": "Case Study",
    "schedule_at": "2026-01-16T14:00:00Z"
  }'
Response
{
  "success": true,
  "data": {
    "order_id": "ord_post_k1l2m3n4",
    "service": "reddit-post",
    "subreddit": "SaaS",
    "amount": 15.00,
    "status": "pending",
    "scheduled_at": "2026-01-16T14:00:00Z",
    "created_at": "2026-01-15T10:30:00Z"
  }
}

SDK Examples

Use these code snippets to integrate Upvote into your application. Official SDKs coming soon.

Python

python — upvote_client.py
import requests

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.upvote.net/v1"

def create_order(service, url, quantity, **kwargs):
    response = requests.post(
        f"{BASE_URL}/orders",
        headers={
            "x-api-key": API_KEY,
            "Content-Type": "application/json"
        },
        json={
            "service": service,
            "url": url,
            "quantity": quantity,
            **kwargs
        }
    )
    return response.json()

# Example: Order 100 upvotes with drip feed
result = create_order(
    service="upvotes",
    url="https://reddit.com/r/example/comments/abc123/post",
    quantity=100,
    drip_feed=True,
    drip_hours=24
)
print(result)

JavaScript / Node.js

javascript — upvote.js
const API_KEY = "YOUR_API_KEY";
const BASE_URL = "https://api.upvote.net/v1";

async function createOrder(service, url, quantity, options = {}) {
  const response = await fetch(`${BASE_URL}/orders`, {
    method: "POST",
    headers: {
      "x-api-key": API_KEY,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({ service, url, quantity, ...options }),
  });
  return response.json();
}

// Example: Order 50 comments
const result = await createOrder(
  "comments",
  "https://reddit.com/r/example/comments/abc123/post",
  50,
  { content: "Great post, really insightful!" }
);
console.log(result);

PHP

php — upvote.php
<?php
$apiKey = "YOUR_API_KEY";
$baseUrl = "https://api.upvote.net/v1";

function createOrder($service, $url, $quantity, $options = []) {
    global $apiKey, $baseUrl;

    $data = array_merge([
        "service" => $service,
        "url" => $url,
        "quantity" => $quantity,
    ], $options);

    $ch = curl_init("$baseUrl/orders");
    curl_setopt_array($ch, [
        CURLOPT_POST => true,
        CURLOPT_HTTPHEADER => [
            "x-api-key: $apiKey",
            "Content-Type: application/json",
        ],
        CURLOPT_POSTFIELDS => json_encode($data),
        CURLOPT_RETURNTRANSFER => true,
    ]);

    $response = curl_exec($ch);
    curl_close($ch);
    return json_decode($response, true);
}

// Example: Order 200 upvotes
$result = createOrder("upvotes",
    "https://reddit.com/r/example/comments/abc123/post",
    200,
    ["drip_feed" => true]
);
print_r($result);

Error Handling

The API uses standard HTTP status codes. Errors return a consistent JSON structure.

Status CodeMeaningCommon Cause
200SuccessRequest completed successfully
400Bad RequestMissing or invalid parameters
401UnauthorizedInvalid or missing API key
402Payment RequiredInsufficient account balance
404Not FoundResource does not exist
429Too Many RequestsRate limit exceeded
500Server ErrorInternal error — contact support
Error Response Example
{
  "success": false,
  "error": {
    "code": "INSUFFICIENT_BALANCE",
    "message": "Your account balance ($4.50) is insufficient for this order ($25.00). Please add funds.",
    "status": 402
  }
}
Rate Limit Error
{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Rate limit exceeded. Try again in 45 seconds.",
    "status": 429,
    "retry_after": 45
  }
}

Ready to get started?

Contact our team to get your API key and start automating your Reddit marketing.

Request API Access