Skip to main content

DropReply Python SDK

Official Python SDK for DropReply — publish replies and upvotes on Reddit & X programmatically.

Installation

pip install dropreply

Requires Python 3.7+. No external dependencies.

Quick Start

from dropreply import DropReply

client = DropReply("drpl_live_sk_your_key_here")

# Submit a reply
reply = client.reply(
    platform="reddit",
    target_url="https://www.reddit.com/r/startup/comments/abc123/...",
    content="Great point! We built something similar..."
)

print(reply["id"])      # 'rpl_abc123'
print(reply["status"])  # 'queued'

Configuration

client = DropReply(
    api_key="drpl_live_sk_xxx",
    base_url="https://api.dropreply.com",  # default
    timeout=30                             # request timeout in seconds (default: 30)
)

Methods

client.reply(platform, target_url, content, schedule_at=None)

Submit a reply for publishing.

reply = client.reply(
    platform="reddit",         # 'reddit' or 'twitter'
    target_url="https://...",  # URL of the post to reply to
    content="Your reply text", # 10-2000 characters
    schedule_at="2026-03-25T14:00:00Z"  # optional: ISO 8601 datetime (Growth/Scale only)
)

# Returns dict:
# {
#   "id": "rpl_abc123",
#   "status": "queued",           # or "scheduled" if schedule_at was set
#   "platform": "reddit",
#   "target_url": "https://...",
#   "credit_cost": 1,
#   "schedule_at": null,          # or the scheduled datetime
#   "created_at": "2026-03-22T..."
# }

client.get_reply(reply_id)

Get the status and details of a reply.

reply = client.get_reply("rpl_abc123")

# Returns dict:
# {
#   "id": "rpl_abc123",
#   "platform": "reddit",
#   "target_url": "https://...",
#   "content": "Your reply text",
#   "credit_cost": 1,
#   "status": "published",        # 'queued' | 'scheduled' | 'publishing' | 'published' | 'failed' | 'rejected'
#   "published_url": "https://...",
#   "schedule_at": null,
#   "published_at": "2026-03-22T...",
#   "created_at": "2026-03-22T..."
# }

client.list_replies(platform=None, status=None, limit=None, offset=None)

List replies with optional filtering and pagination.

result = client.list_replies(
    platform="reddit",   # optional filter
    status="published",  # optional filter
    limit=10,            # default: 20, max: 100
    offset=0             # pagination offset
)

# Returns dict:
# {
#   "data": [ { "id": ..., "platform": ..., "status": ..., ... }, ... ],
#   "pagination": { "total": 42, "limit": 10, "offset": 0 }
# }

client.upvote(platform, target_url)

Submit an upvote/like job.

upvote = client.upvote(
    platform="reddit",
    target_url="https://www.reddit.com/r/startup/comments/abc123/..."
)

# Returns dict:
# {
#   "id": "upv_xyz789",
#   "status": "queued",
#   "platform": "reddit",
#   "target_url": "https://...",
#   "credit_cost": 0.25,
#   "created_at": "2026-03-22T..."
# }

client.usage()

Get current credit balance and plan info.

usage = client.usage()

# Returns dict:
# {
#   "plan": "growth",
#   "credits_included": 100,
#   "credits_used": 23,
#   "credits_remaining": 77,
#   "extra_credits": 0,
#   "total_available": 77,
#   "billing_period_start": "2026-03-01T...",
#   "billing_period_end": "2026-04-01T..."
# }

client.accounts_availability(platform=None)

Check available managed accounts.

result = client.accounts_availability(platform="reddit")

# Returns dict:
# {
#   "accounts": [
#     { "platform": "reddit", "available": 12 }
#   ]
# }

Error Handling

All methods raise DropReplyError on failure:

from dropreply import DropReply, DropReplyError

client = DropReply("drpl_live_sk_xxx")

try:
    client.reply(platform="reddit", target_url="...", content="...")
except DropReplyError as e:
    print(e.status_code)  # HTTP status code (e.g. 400, 402, 422)
    print(e.error_code)   # API error code (e.g. 'validation_error')
    print(e.message)      # Human-readable error message

Common error codes:

  • validation_error (400) — Invalid input parameters
  • insufficient_credits (402) — Not enough credits
  • plan_required (403) — Feature requires a higher plan (e.g. scheduled replies)
  • not_found (404) — Resource not found
  • moderation_rejected (422) — Content failed moderation
  • concurrent_limit (429) — Too many replies in progress
  • rate_limit_exceeded (429) — Too many requests
  • internal_error (500) — Server error

License

MIT

Release files for dropreply 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dropreply 1.0.0
File Size Uploaded
dropreply-1.0.0.tar.gz 4.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dropreply 1.0.0
File Interpreter ABI Platform
dropreply-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 9.9 kB

Release files / dropreply-1.0.0.tar.gz

Download URL dropreply-1.0.0.tar.gz
Size 4.8 kB
Tags Source
SHA-256 checksum
How to use checksums
cf931e628d68a758faf573b8e9a1ffe7d7efaf249beb281f3ea33343d501157e
BLAKE2b-256 checksum
How to use checksums
34263024e877de8f242948c05cb44c4f721ea334e5c20f19ad4486a44d291214
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release files / dropreply-1.0.0-py3-none-any.whl

Download URL dropreply-1.0.0-py3-none-any.whl
Size 5.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6dfeb078b509e827b3234241ab807db7406ab1aa210aa6bb0ae9eee3a8661b89
BLAKE2b-256 checksum
How to use checksums
37b09c34aeaaad76be94b146279566b92fdd688d28bc97fdd0f6af03b856efde
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page