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.
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
AvailableOrder follows, likes, and comments performed by verified Nigerian users. Documented in full below.
Surveys
Dashboard onlyRun targeted paid surveys and pull structured responses.
UGC Campaigns
Dashboard onlyBrief creators and collect branded content.
Product Tests
Dashboard onlyPut 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_KEYMoney 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
| Status | Meaning |
|---|---|
| pending | Awaiting review, or approved but scheduled to start later |
| approved | Live — real users are completing the order |
| paused | Paused by you |
| rejected | Not approved during review; full budget refunded |
| finished | Fully delivered, or ended at its end date |
| cancel | Cancelled; undelivered budget refunded |
GET /order/list accepts any of these as its status filter.
/balanceBalance
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"
}
}/service/listService 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
}
]
}/create/postCreate 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.
| Parameter | Type | Description |
|---|---|---|
| Social_Media * body | integer | Service id from /service/list |
| link * body | string | Target URL. Profile/channel link for follows; a single post link for likes and comments. |
| rate_needed * body | integer | How many actions you want |
| custom_textoptional body | string | Instructions 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.
/order/listList orders
Your orders, paginated, newest first.
| Parameter | Type | Description |
|---|---|---|
| statusoptional query | string | pending · approved · rejected · finished · cancel · paused |
| idoptional query | integer | Filter to one order id |
| linkoptional query | string | Filter by exact target URL |
| pageoptional query | integer | Page 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/orderGet order
One order by id or link.
| Parameter | Type | Description |
|---|---|---|
| idoptional query | integer | Order id |
| linkoptional query | string | Target 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"
}
}/update/orderUpdate order
Pause, resume, cancel, or stop-and-refund an order.
| Parameter | Type | Description |
|---|---|---|
| id * query | integer | Order id |
| type * query | string | pause · 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
}/increase/audienceIncrease audience
Add quantity to a live order. The additional cost is held from your wallet at the current unit price.
| Parameter | Type | Description |
|---|---|---|
| id * body | integer | Order id |
| rate_needed * body | integer | Additional 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
}/search/orderSearch orders
Search your orders by link fragment or id.
| Parameter | Type | Description |
|---|---|---|
| filt_data * query | string | Post link (or fragment) or order id |
| social_mediaoptional query | integer | Restrict 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"
}
]
}/download/audience_listAudience list (PDF)
A PDF report of every approved participant on an order, with their proof.
| Parameter | Type | Description |
|---|---|---|
| id * query | integer | Order id |
Request
curl "https://api.opinionpadi.com/api/download/audience_list?id=106" \
-H "Authorization: Token YOUR_API_KEY"Responses
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.
| Event | Fired when |
|---|---|
| placed | Order created (enters review) |
| approved | Order cleared review and went live |
| paused | Order paused |
| resumed | Paused order resumed |
| finished | Order fully delivered or reached its end date |
| stopped | Order stopped with the remainder refunded |
| rejected | Order failed review; budget refunded |
| cancelled | Order cancelled |
| increased | Order 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"
}X-Webhook-Event (matches event_type) and X-Webhook-Attempt (1–3).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