Status: Platform Operational | USD Wallet | Proof-Verified Payouts
Home › API Docs

API Docs

Reseller panel integration reference: endpoints, actions, webhooks, and service codes.

Deposits are website-only (crypto wallet). Fund your employer wallet with BTC, ETH, USDT, and other supported coins at https://www.gainworkers.com/wallet/deposit. Orders auto-publish when balance is sufficient.
Marketplace pricing and refunds: Published employer ranges are on For Employers and Pricing. Sample SMM service ranges and delivery times are listed on those pages. Refund summary and full policy: Refund Policy.
Rate is per unit, not per 1,000. GainWorkers API rate is USD per unit (per approved worker action), not per 1,000. Estimated worker pool before platform fees: rate x quantity. Formula: rate x quantity (worker pool before platform fees).

Quick start

New to panel integration? Follow the visual setup guide first, then return here for the full reference.

  1. Register as an employer account.
  2. Open Developer Hub and generate an API key.
  3. Add funds at wallet/deposit (not via API).
  4. In your panel, set API URL to https://www.gainworkers.com/api/v2.
  5. Run action=services, map IDs, test action=add.

Endpoint

URLhttps://www.gainworkers.com/api/v2
MethodPOST recommended. GET allowed for read-only actions.
Authenticationkey=gw_live_... in POST body, or Authorization: Bearer gw_live_...
Content typeapplication/x-www-form-urlencoded

Actions

action Purpose Parameters
servicesService catalog (JSON array)n/a
balanceSpendable USD balance + deposit URLn/a
addCreate orderservice, link, quantity, comments, title, runs, interval. For comment services, quantity is optional: each non-empty comments line counts as one unit (separated by \n or \r\n). For Reddit Post (1650), title and comments (body) are required. For Facebook Group Post (1270), comments (body) is required and title is optional; link is the target subreddit or Facebook group URL. For LinkedIn Post (1750) and X Post (1380), comments (body) is required; LinkedIn title triggers Write article with that headline; X title is optional for thread openers. For Reddit Post Google Doc (1660), LinkedIn Post Google Doc (1760), and X Post Google Doc (1390), link is a public Google Docs URL and comments is not used; briefs must include title and body in the doc. For Apple App Store Custom Review (2420), each comments line is 4|Title|Comment or 5|Title|Comment. You can also send rating (4 or 5), title, and one comment body per line.
statusOrder status (comma-separated IDs)order or orders
cancelCancel when allowedorder (aliases: orders, order_id)
ordersPaginated historypage, per_page, status
refillCampaign top-uporder, quantity
exportBulk export (max 1000)status, since, limit

Rate and quantity

GainWorkers is a proof-based crowdwork platform. API pricing is not traditional per-1,000 bot SMM pricing.

Field Meaning
rateUSD price for one completed unit (one approved worker action, slot, row, or rental period depending on service type). With a wholesale override, this is your effective rate.
catalog_rateBase catalog rate before account-specific campaign overrides.
override_appliedtrue when your account wholesale campaign rate replaced the catalog rate on that service row.
pricing_tierfloor or premium for campaign services; catalog for Arena, Rental, Hunter, and Live Task services.
quantityHow many units you want filled (worker slots / actions). Optional for comment services when comments contains one line per unit.
rate_unitAlways per_action on GainWorkers (not per_1000).
rate_labelHuman-readable unit, e.g. USD per approved action or USD per worker slot.
charge_formulaAlways rate x quantity for the worker pool estimate (platform fees may apply).
minMinimum order quantity. Campaign services use at least the platform minimum positions (default 30), unless your account has an active campaign minimum positions override. With that override, min is your override value (typically 1) on every service type and service catalog min_quantity is not applied.
Wholesale campaign pricing: Account-specific lower rates apply to floor-tier campaign services only (like, follow, view, subscribe, join, and similar). Premium-tier services (comment, share, repost, answer, review) use the catalog premium rate for every account. Reddit Post (1650), Reddit Post Google Doc (1660), Facebook Group Post (1270), LinkedIn Post (1750), LinkedIn Post Google Doc (1760), X Post (1380), and X Post Google Doc (1390) use a dedicated post rate (default $0.50, minimum quantity 5). Authorized accounts can receive $0.20 and minimum quantity 1 on those post services via admin override. Each post type is also available in all geo zones (International, Latin America, USA Western, Europe West, Europe East, Asia and Africa). pricing_tier reflects the public catalog class (floor or premium). Arena, Rental, Hunter, and Live Task services always keep catalog_rate. Check override_applied=true to see where your wholesale rate replaced the catalog price.
Worker proof policy: All campaign services created through the API require workers to submit proof URL, proof text (username), and a screenshot file showing the completed action.
Catalog pricing tiers (default)
floor tier   = $0.025 per approved action (like, follow, view, join, upvote, save, ...)
premium tier = $0.050 per approved action (comment, share, repost, post, answer, review)

Example service codes (International):
X Like      1310  floor   $0.025
X Comment   1320  premium $0.050
X View      1360  floor   $0.025
LinkedIn Post 1750 premium $0.500
LinkedIn Post Google Doc 1760 premium $0.500
X Post       1380 premium $0.500
X Post Google Doc 1390 premium $0.500
Reddit Post  1650 premium $0.500
Reddit Post Google Doc 1660 premium $0.500
Facebook Group Post 1270 premium $0.500
Apple App Store Download 2410 premium $0.500
Apple App Store Custom Review 2420 premium $0.600
Example (Instagram Follow, service 1130)
rate = 0.1000
quantity = 100
link = https://www.instagram.com/username/
Estimated worker pool = 0.10 x 100 = 10.00 USD

Use a profile URL for Follow services. Use a post or reel URL for Like services (for example service 1110).
Custom Comments (Facebook Comment, service 1220) — quantity optional
action=add
service=1220
link=https://www.facebook.com/groups/example/posts/123
comments=Great post!
Love this group
Thanks for sharing

quantity is omitted; API derives quantity = 3 from the three comment lines.
Apple App Store Download (service 2410, International)
action=add
service=2410
link=https://apps.apple.com/app/id686449807
quantity=50

Workers download the free app from the listing and open it once. Country-coded listing URLs are accepted (https://apps.apple.com/us/app/name/idAPP_ID). Paid purchases are not part of this service. Other geos use 2411-2415.
Apple App Store Custom Review (service 2420, International)
action=add
service=2420
link=https://apps.apple.com/us/app/telegram-messenger/id686449807
comments=5|Clear daily reminders|I open this every morning and the checklist stays in sync.
4|Solid so far|A few taps feel slow, but the main screen is easy to follow.

quantity is omitted; API derives quantity = 2 from the review lines.
Each line is stars|title|comment. Stars must be 4 or 5. Title is 2-30 characters. Comment is 15-1000 characters.
Same title and stars for every body: send rating=5, title=Clear daily reminders, and one comment per line.
Other geos use 2421-2425.
LinkedIn Post (service 1750)
action=add
service=1750
link=https://www.linkedin.com/company/example/
title=We just launched our new product line
comments=We are excited to share our latest product update with the LinkedIn community.
quantity=10

Workers publish on their own LinkedIn profile. link is optional (company page or profile URL to reference). Generic homepage URLs such as https://www.linkedin.com/ are ignored. comments (body) is required. title is optional for the API; when you send title, workers must publish via LinkedIn Write article and use that exact headline. When title is omitted, workers use a standard Start a post update.
LinkedIn Post Google Doc (service 1760)
action=add
service=1760
link=https://docs.google.com/document/d/EXAMPLE_DOC_ID/edit
quantity=1

Workers publish on their own LinkedIn profile via Write article. link is a public Google Docs URL. The API fetches the doc title and body for worker instructions. The doc must include a post title and body. Include an optional reference link in the doc (e.g. Link: https://www.linkedin.com/company/example/). comments is not used.
Facebook Group Post (service 1270)
action=add
service=1270
link=https://www.facebook.com/groups/yourgroup/
comments=Post your one best deal below and mention why it is worth it. Keep it friendly and follow group rules.
quantity=25

Workers join the target group if needed and publish a new post inside that group. link accepts a Facebook group URL or groups/NAME shorthand. comments (body) is required. title is optional (many groups use text-only posts).
Reddit Post (service 1650)
action=add
service=1650
link=r/Mommit
title=Should I buy a bottle washer if I only use bottles or pump parts a few times a week?
comments=Ok hear me out because this might be unhinged...
quantity=10

Workers publish a new post in the target subreddit. link accepts a subreddit URL or r/SUB shorthand. title is required. comments is required post body. Workers must use a Reddit account with at least 100 post karma and 30+ days account age.
Reddit Post Google Doc (service 1660)
action=add
service=1660
link=https://docs.google.com/document/d/EXAMPLE_DOC_ID/edit
quantity=1

Workers publish a new post in the target subreddit. link is a public Google Docs URL. The API fetches the doc and uses its title and body for worker instructions. Include the target subreddit in the doc (e.g. Subreddit: r/Mommit). comments is not used.
X Post (service 1380)
action=add
service=1380
link=https://x.com/GainWorkers0
title=Optional thread opener headline
comments=We just shipped a major update for micro-job employers. Read more in the thread below.
quantity=10

Workers publish on their own X profile. link is optional (profile or post URL on x.com / twitter.com to reference). Generic home URLs such as https://x.com/ are ignored. comments (tweet body) is required. title is optional; when sent, workers use it as the first post in a thread for longer copy.
X Post Google Doc (service 1390)
action=add
service=1390
link=https://docs.google.com/document/d/EXAMPLE_DOC_ID/edit
quantity=1

Workers publish on their own X profile. link is a public Google Docs URL. The API fetches the doc title and body for worker instructions. Include an optional reference line in the doc (e.g. Link: https://x.com/yourbrand). comments is not used.
action=services row with wholesale override (floor-tier service)
{
  "service": 1310,
  "name": "X Like (International)",
  "catalog_rate": "0.0250",
  "rate": "0.0200",
  "override_applied": true,
  "pricing_tier": "floor",
  "rate_unit": "per_action",
  "rate_label": "USD per approved action",
  "quantity_unit": "approved actions",
  "charge_formula": "rate x quantity",
  "min": 1,
  "max": 50000
}
action=services row for premium service (override not applied)
{
  "service": 1320,
  "name": "X Comment (International)",
  "catalog_rate": "0.0500",
  "rate": "0.0500",
  "override_applied": false,
  "pricing_tier": "premium",
  "rate_unit": "per_action",
  "rate_label": "USD per approved action",
  "quantity_unit": "approved actions",
  "charge_formula": "rate x quantity",
  "min": 1,
  "max": 10000
}
Link formats (VAL_005): Each campaign service validates the link host and path. Follow / subscribe services need profile or channel URLs. Like / comment / upvote services need post, reel, or thread URLs. Accepted variants include mobile hosts, share links, and short links where applicable.
PlatformActionExample serviceAccepted link examples
InstagramFollow1130https://www.instagram.com/username/
InstagramLike1110https://www.instagram.com/p/POST_ID/, reel URLs
RedditUpvote1610.../comments/ID/, .../r/sub/s/SHARE_ID, redd.it/ID
YouTubeLike1510youtube.com/watch?v=, youtu.be/, shorts
TikTokLike1410tiktok.com/@user/video/ID, vm.tiktok.com/
XLike1310x.com/user/status/ID
XPost1380x.com/username (optional reference)
XPost Google Doc1390docs.google.com/document/...
Apple App StoreDownload2410apps.apple.com/app/idAPP_ID, apps.apple.com/us/app/name/idAPP_ID
Apple App StoreCustom Review2420apps.apple.com/.../idAPP_ID plus 4|Title|Comment lines

If validation fails, the API error includes the expected format and may suggest the correct service code.

Example: create order

Request
curl -X POST 'https://www.gainworkers.com/api/v2' \
  -d 'key=gw_live_YOUR_KEY' \
  -d 'action=add' \
  -d 'service=1001' \
  -d 'link=https://example.com/landing' \
  -d 'quantity=100'
Response
{"order":9841203}

Example: order status (single or bulk)

Use parameter order or orders with one or more comma-separated order IDs. Do not confuse this with action=orders, which returns paginated order history.

Request (bulk)
curl -X POST 'https://www.gainworkers.com/api/v2' \
  -d 'key=gw_live_YOUR_KEY' \
  -d 'action=status' \
  -d 'orders=20,21,22,23,24'
Response (multiple IDs)
{
  "20": {"order":20,"status":"Completed","charge":"1.2000","start_count":0,"remains":0},
  "21": {"order":21,"status":"Processing","charge":"0.8000","start_count":0,"remains":12}
}

Example: balance

Request
curl -X POST 'https://www.gainworkers.com/api/v2' \
  -d 'key=gw_live_YOUR_KEY' \
  -d 'action=balance'
Response
{
  "balance": "124.5600",
  "currency": "USD",
  "deposit_url": "https://www.gainworkers.com/wallet/deposit",
  "deposits_via_api": false
}

Webhooks

Set a callback URL per API key in Developer Hub → Settings. We POST JSON on status changes with header X-GainWorkers-Signature: sha256=... (HMAC-SHA256 of the raw body).

Payload sample
{
  "event": "order.completed",
  "order": 12345,
  "status": "Completed",
  "remains": "0",
  "charge": "5.0000",
  "currency": "USD",
  "timestamp": 1751731200
}

Use webhooks to reduce action=status polling to every 5+ minutes.

Service codes

The live catalog is maintained in Developer Hub → Services. Import it in your panel with action=services. IDs, names, min/max, and your account rate (including wholesale overrides) are returned in that payload.

FamilyHow it is published
CampaignProof campaigns (like, follow, view, comment, and platform engagement rows)
Live TaskTimed watch / presence holds
ArenaHeadline and visual A/B tests
RentalAccount rental inventory
Task HunterBounty hunts such as broken-link jobs

Error codes

CodeMeaning
AUTH_001Invalid API key
AUTH_002IP not whitelisted
AUTH_004HTTPS required
AUTH_005API key must not be sent in URL query string
RATE_001Rate limit exceeded
WAL_001Insufficient balance (deposit on website)
WAL_002Deposits blocked via API
VAL_005Invalid or unsupported link URL for the selected service (host/path mismatch). The error text includes the expected format when available.
VAL_007Mutation requires POST
ORD_001Order not found

Security checklist

  • Store API keys server-side only. Never expose them in browser JavaScript.
  • Enable IP whitelist on each production key.
  • Use HTTPS for API calls and webhook callbacks.
  • Send add, cancel, refill via POST body.
  • API orders auto-publish when balance is sufficient (no manual admin queue).
  • Fund wallet only through the deposit page after login.
  • Verify webhook HMAC before updating order status in your database.