OpinionPadi for Developers

The OpinionPadi API

Reach verified Nigerian users from your own systems. One token header, JSON in and out, webhooks for every event, and a live console on this page. Clout Orders is the first product available over the API — more of the platform follows.

Token auth 9 webhook events Live try-it console

Building with an AI assistant? Hand it the whole reference in one move.

Overview

OpinionPadi is a research and creator-marketing platform: paid surveys, product tests, UGC campaigns, and social engagement. We are opening it up product by product, starting with Clout Orders. One API key covers everything as it lands — you will not need to re-integrate.

Clout Orders

Available

Order follows, likes, and comments performed by verified Nigerian users. Documented in full below.

Surveys

Dashboard only

Run targeted paid surveys and pull structured responses.

UGC Campaigns

Dashboard only

Brief creators and collect branded content.

Product Tests

Dashboard only

Put your product in front of testers and gather feedback.

Need one of these over the API sooner? Tell us what you are building — it moves our roadmap.

Authentication

Every request carries your API key in the Authorization header. Find your key — and rotate it any time — in your business dashboard under Settings → API & Webhooks. Regenerating the key revokes the old one immediately.

Authorization: Token YOUR_API_KEY

Money values are strings in your wallet currency (₦ NGN) with two decimals, e.g. "40000.00". Timestamps are ISO-8601 UTC.

Product

Clout Orders

Order social engagement — follows, likes, comments — performed by real, verified Nigerian users. You place an order against a target link, the cost is held from your wallet, and people complete it.

Every order is reviewed before it runs. New orders answer with status: "pending" and flip to approved (webhook: approved) once cleared — usually within hours. Orders that fail review are refunded in full and tell you why in the message field.

Order statuses

StatusMeaning
pendingAwaiting review, or approved but scheduled to start later
approvedLive — real users are completing the order
pausedPaused by you
rejectedNot approved during review; full budget refunded
finishedFully delivered, or ended at its end date
cancelCancelled; undelivered budget refunded

GET /order/list accepts any of these as its status filter.

GET/balance

Balance

Your wallet balance and lifetime deposits. Order costs are held from the available balance the moment an order is placed.

Request

curl "https://api.opinionpadi.com/api/balance" \
  -H "Authorization: Token YOUR_API_KEY"

Responses

{
  "status": true,
  "data": {
    "Wallet_balance": "483400.00",
    "Available_wallet_balance": "483400.00",
    "Pending_wallet_balance": "0.00",
    "Total_wallet_balance": "483400.00",
    "Total_deposit": "525000.00"
  }
}
GET/service/list

Service list

Every platform + service pair you can order, with unit pricing. Use the `id` as `Social_Media` when creating an order.

Request

curl "https://api.opinionpadi.com/api/service/list" \
  -H "Authorization: Token YOUR_API_KEY"

Responses

{
  "status": true,
  "data": [
    {
      "id": 1,
      "Social_Media": "instagram",
      "Type": "follow",
      "poster_price": "100.00",
      "partner_price": "100.00",
      "min_quantity": 1,
      "max_quantity": null,
      "is_active": true,
      "poster_descriptions": "Performed by real users on OpinionPadi.",
      "proof_instructions": null
    },
    {
      "id": 3,
      "Social_Media": "instagram",
      "Type": "comment",
      "poster_price": "120.00",
      "partner_price": "120.00",
      "min_quantity": 1,
      "max_quantity": null,
      "is_active": true,
      "poster_descriptions": "Performed by real users on OpinionPadi.",
      "proof_instructions": null
    }
  ]
}
POST/create/post

Create order

Place an order. The cost is held from your wallet immediately and the order enters review — it goes live once our team confirms the link matches the platform and service.

ParameterTypeDescription
Social_Media *
body
integerService id from /service/list
link *
body
stringTarget URL. Profile/channel link for follows; a single post link for likes and comments.
rate_needed *
body
integerHow many actions you want
custom_textoptional
body
stringInstructions for comment-type services

Request

curl -X POST "https://api.opinionpadi.com/api/create/post" \
  -H "Authorization: Token YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"Social_Media":3,"link":"https://instagram.com/p/your-post","rate_needed":500,"custom_text":"Mention what you like about the product"}'

Responses

{
  "status": true,
  "message": "Order posted successfully",
  "data": {
    "id": 106,
    "Social_Media": 3,
    "status": "pending",
    "message": null,
    "progressing": false,
    "link": "https://instagram.com/p/your-post",
    "date_posted": "2026-08-25T09:12:44.000000Z",
    "rate_needed": 500,
    "rate_done": 0,
    "amount_paid": 40000,
    "amount_refunded": 0,
    "custom_text": "Mention what you like about the product",
    "order_method": "api"
  }
}

New orders start as `pending` with `progressing: false` while in review. You'll get the `approved` webhook (or see the status flip on polling) once it goes live. If it isn't approved, the full amount returns to your wallet.

GET/order/list

List orders

Your orders, paginated, newest first.

ParameterTypeDescription
statusoptional
query
stringpending · approved · rejected · finished · cancel · paused
idoptional
query
integerFilter to one order id
linkoptional
query
stringFilter by exact target URL
pageoptional
query
integerPage number

Request

curl "https://api.opinionpadi.com/api/order/list?status=approved&id=106&page=1" \
  -H "Authorization: Token YOUR_API_KEY"

Responses

{
  "status": true,
  "count": 42,
  "total_pages": 3,
  "current_page_number": 1,
  "next": "https://api.opinionpadi.com/api/order/list?page=2",
  "next_page_number": 2,
  "previous": null,
  "previous_page_number": null,
  "data": [
    {
      "id": 106,
      "Social_Media": 3,
      "status": "approved",
      "message": null,
      "progressing": true,
      "link": "https://instagram.com/p/your-post",
      "date_posted": "2026-08-25T09:12:44.000000Z",
      "rate_needed": 500,
      "rate_done": 187,
      "amount_paid": 40000,
      "amount_refunded": 0,
      "custom_text": null,
      "order_method": "api"
    }
  ]
}
GET/get/order

Get order

One order by id or link.

ParameterTypeDescription
idoptional
query
integerOrder id
linkoptional
query
stringTarget URL

Request

curl "https://api.opinionpadi.com/api/get/order?id=106" \
  -H "Authorization: Token YOUR_API_KEY"

Responses

{
  "status": true,
  "data": {
    "id": 106,
    "Social_Media": 3,
    "status": "approved",
    "message": null,
    "progressing": true,
    "link": "https://instagram.com/p/your-post",
    "date_posted": "2026-08-25T09:12:44.000000Z",
    "rate_needed": 500,
    "rate_done": 187,
    "amount_paid": 40000,
    "amount_refunded": 0,
    "custom_text": null,
    "order_method": "api"
  }
}
GET/update/order

Update order

Pause, resume, cancel, or stop-and-refund an order.

ParameterTypeDescription
id *
query
integerOrder id
type *
query
stringpause · resume · cancel · stopandrefund

Request

curl "https://api.opinionpadi.com/api/update/order?id=106&type=pause" \
  -H "Authorization: Token YOUR_API_KEY"

Responses

{
  "status": true,
  "message": "Order paused successfully",
  "post_id": 106
}
POST/increase/audience

Increase audience

Add quantity to a live order. The additional cost is held from your wallet at the current unit price.

ParameterTypeDescription
id *
body
integerOrder id
rate_needed *
body
integerAdditional actions to add

Request

curl -X POST "https://api.opinionpadi.com/api/increase/audience" \
  -H "Authorization: Token YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"id":106,"rate_needed":100}'

Responses

{
  "status": true,
  "message": "Order updated successfully",
  "post_id": 106
}
GET/search/order

Search orders

Search your orders by link fragment or id.

ParameterTypeDescription
filt_data *
query
stringPost link (or fragment) or order id
social_mediaoptional
query
integerRestrict to one service id

Request

curl "https://api.opinionpadi.com/api/search/order?filt_data=instagram.com" \
  -H "Authorization: Token YOUR_API_KEY"

Responses

{
  "status": true,
  "count": 1,
  "total_pages": 1,
  "current_page_number": 1,
  "next": null,
  "next_page_number": null,
  "previous": null,
  "previous_page_number": null,
  "data": [
    {
      "id": 106,
      "Social_Media": 3,
      "status": "approved",
      "message": null,
      "progressing": true,
      "link": "https://instagram.com/p/your-post",
      "date_posted": "2026-08-25T09:12:44.000000Z",
      "rate_needed": 500,
      "rate_done": 187,
      "amount_paid": 40000,
      "amount_refunded": 0,
      "custom_text": null,
      "order_method": "api"
    }
  ]
}
GET/download/audience_list

Audience list (PDF)

A PDF report of every approved participant on an order, with their proof.

ParameterTypeDescription
id *
query
integerOrder id

Request

curl "https://api.opinionpadi.com/api/download/audience_list?id=106" \
  -H "Authorization: Token YOUR_API_KEY"

Responses

Binary PDF response.

Binary response with `Content-Type: application/pdf`.

Webhooks

Register a webhook URL in Settings → API & Webhooks and every order lifecycle change is POSTed to it as JSON — no polling. Respond with any 2xx within 10 seconds to acknowledge; otherwise delivery retries ~5 minutes after the first failure and ~15 minutes after the second, then stops.

EventFired when
placedOrder created (enters review)
approvedOrder cleared review and went live
pausedOrder paused
resumedPaused order resumed
finishedOrder fully delivered or reached its end date
stoppedOrder stopped with the remainder refunded
rejectedOrder failed review; budget refunded
cancelledOrder cancelled
increasedOrder quantity increased

Example delivery

{
  "event_type": "approved",
  "order_id": "106",
  "status": "approved",
  "message": null,
  "progressing": true,
  "link": "https://instagram.com/p/your-post",
  "Social_Media": 3,
  "rate_needed": 500,
  "rate_done": 0,
  "amount_paid": "40000.00",
  "amount_refunded": 0,
  "custom_text": null,
  "order_method": "api",
  "date_posted": "2026-08-25T09:12:44.000000Z"
}
Headers on every delivery: X-Webhook-Event (matches event_type) and X-Webhook-Attempt (13).

Ready to build?

Create a business account, fund your wallet, and grab your API key from Settings. Your first Clout order is one POST away — and the same key carries over to every product we open up next.

Talk to us about onboarding

We value your privacy

We use essential cookies to keep OpinionPadi secure. With your permission, we'll also use cookies to remember your preferences and improve advertising relevance through Google AdSense and other partners. You can manage your choices at any time.

Read more in our Privacy Policy.