Goviraa API Reference
Everything you need to place orders, check status, and manage your account programmatically.
Introduction
The Goviraa API lets you integrate Goviraa's full service catalog — followers, likes, views, and every other growth service available on the platform — directly into your own application, the same way Goviraa itself integrates with its upstream providers.
Every request is scoped to your own account and wallet balance. There is no way to see or act on another user's data through this API.
Base URL
https://api.goviraa.com/external/v1Authentication
Authenticate every request with an X-API-Key header. Generate a key from your dashboard under Developer API. Keys are shown in full only once, at creation — Goviraa stores only a one-way hash of it.
curl https://api.goviraa.com/external/v1/balance \
-H "X-API-Key: gv_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"A missing, invalid, or revoked key returns 401 unauthorized. A blocked account returns 403 forbidden.
Response Format
Every response is JSON with an explicit success flag.
{
"success": true,
"data": { ... }
}{
"success": true,
"data": [ ... ],
"meta": { "page": 1, "limit": 20, "total": 134 }
}{
"success": false,
"error": { "code": "bad_request", "message": "quantity is required" }
}Errors
Errors never include stack traces, database details, or any other internal information — only a stable code and a human-readable message.
| Field | Type | Required | Description |
|---|---|---|---|
| 400 bad_request | No | Invalid or missing parameters. | |
| 401 unauthorized | No | Missing, invalid, or revoked API key. | |
| 403 forbidden | No | Account is blocked. | |
| 404 not_found | No | The resource doesn't exist, or doesn't belong to you. | |
| 429 rate_limited | No | Too many requests — see Rate Limits. | |
| 500 internal_error | No | Unexpected error. Contact support if this persists. |
Rate Limits
Each API key is limited to 60 requests per minute. Every response includes rate limit headers:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 42Exceeding the limit returns a 429 with code rate_limited.
Service Types & Required Fields
Every service returned by GET /services has a type that determines which fields POST /orders needs. Sending only link + quantity for every service is not enough — most types need it, but a few need something else entirely.
| Field | Type | Required | Description |
|---|---|---|---|
| Default | No | link, quantity | |
| Custom Comments | No | link, quantity, comment (one comment per line) | |
| Custom Comments Package | No | link, comment (quantity is fixed by the package) | |
| Subscriptions | No | username, quantity, posts (optional), oldPosts (optional), delay (optional), expiry (optional, format d/m/Y) — no link at all | |
| Poll | No | link, quantity, answerNumber | |
| Mentions User Followers | No | link, quantity, username |
List Services
/servicesReturns the full priced service catalog, personalized to your account's discount (if any).
| Field | Type | Required | Description |
|---|---|---|---|
| search | string | No | Filter by name or category (query param) |
| category | string | No | Filter by category substring (query param) |
curl "https://api.goviraa.com/external/v1/services?search=instagram" \
-H "X-API-Key: gv_live_xxxx"{
"success": true,
"data": [
{
"service": "1-1825",
"name": "Nigeria Instagram Likes ( Auto Likes )",
"category": "Instagram: Nigerian Services",
"type": "Subscriptions",
"pricingModel": "per_1000",
"price": 8800,
"currency": "NGN",
"min": 20,
"max": 2000,
"refill": false,
"cancel": false
}
]
}service is Goviraa's own ID — use it exactly as returned when placing orders. price is per 1000 units unless pricingModel is flat, in which case it's the total price for the service as-is.
Create Order
/ordersPlaces a real order and deducts its cost from your wallet balance immediately.
| Field | Type | Required | Description |
|---|---|---|---|
| service | string | Yes | Goviraa service ID from GET /services |
| quantity | integer | Yes | Within the service's min/max |
| link | string | No | Required for most types — see Service Types |
| comment | string | No | Custom Comments types — one comment per line |
| username | string | No | Subscriptions / Mentions User Followers types |
| posts | integer | No | Subscriptions type — new posts to cover (omit for unlimited) |
| oldPosts | integer | No | Subscriptions type — existing posts to cover |
| delay | integer | No | Subscriptions type — minutes between actions |
| expiry | string | No | Subscriptions type — format d/m/Y |
| answerNumber | integer | No | Poll type — which option to vote for |
curl -X POST https://api.goviraa.com/external/v1/orders \
-H "X-API-Key: gv_live_xxxx" \
-H "Content-Type: application/json" \
-d '{
"service": "1-36",
"link": "https://instagram.com/username",
"quantity": 100
}'{
"success": true,
"data": {
"orderId": "6403766",
"service": "1-36",
"serviceName": "Nigerian Instagram Likes",
"target": "https://instagram.com/username",
"quantity": 100,
"status": "Pending",
"charge": 880,
"currency": "NGN",
"createdAt": "2026-08-07T02:00:00.000Z",
"completedAt": null
}
}Insufficient balance returns 400 bad_request with message "Insufficient wallet balance" — nothing is deducted.
List Orders
/ordersYour own order history, paginated. Always scoped to your account regardless of any parameter sent.
| Field | Type | Required | Description |
|---|---|---|---|
| page | integer | No | Default 1 |
| limit | integer | No | Default 10, max 100 |
| status | string | No | Pending | Partial | Completed | InProgress | Cancelled | Refunded |
Get Order Status
/orders/:orderIdorderId is the value returned by Create Order or List Orders. Returns 404 not_found if the order doesn't exist or belongs to another account — both cases look identical, by design.
Cancel Order
/orders/:orderId/cancelOnly works for orders still Pending or InProgress, and only for services that support cancellation (see the cancel flag on the service in GET /services). On success, the order's cost is refunded to your wallet.
Get Balance
/balance{
"success": true,
"data": { "balance": 99648, "currency": "NGN" }
}