The Bulkoid API lets you place growth orders, list available services, check your wallet balance, and track delivery — all over a simple HTTP / JSON interface. Every endpoint is authenticated with an API key tied to your Bulkoid account, and orders are charged against your wallet balance the moment they are placed.
The full machine-readable spec is also available at bulkoid.com/openapi.json (OpenAPI 3.0) and a plain-text overview at bulkoid.com/llms.txt.
Before you can call the API, you need a Bulkoid account, funds in your wallet, and an API key:
All requests are authenticated with an API key passed in the X-Api-Key header. There is no OAuth flow, no token expiry, and no per-IP allow-listing — you are responsible for keeping the key secret.
Base URL: https://app.cumparadestept.com/api/v2
Auth header: X-Api-Key: YOUR_API_KEY
Quick sanity check — this should return your current wallet balance:
curl -H "X-Api-Key: YOUR_API_KEY" \
https://app.cumparadestept.com/api/v2/balance| Method | Path | Purpose |
|---|---|---|
| GET | /api/v2/balance | Check your wallet balance. |
| GET | /api/v2/services | List all available growth services. |
| POST | /api/v2/orders | Place a new order (charges your wallet). |
| GET | /api/v2/orders | List your orders, optionally filtered. |
| GET | /api/v2/orders/{order_id} | Get full details and delivery status of one order. |
Returns the current wallet balance for the authenticated account. Amounts are expressed in cents.
Example request
curl -H "X-Api-Key: YOUR_API_KEY" \
https://app.cumparadestept.com/api/v2/balanceExample response
{
"balance": 5000,
"currency": "USD",
"balance_formatted": "$50.00"
}Lists every growth service currently available on Bulkoid, across all platforms. Use this to discover the service_id you will pass to POST /api/v2/orders.
Example request
curl -H "X-Api-Key: YOUR_API_KEY" \
https://app.cumparadestept.com/api/v2/servicesExample response
{
"services": [
{
"id": 123,
"name": "TikTok Followers - Organic Growth",
"platform": "tiktok",
"rate": 50,
"min": 100,
"max": 100000,
"step": 100
}
]
}| Field | Type | Description |
|---|---|---|
id | integer | The service ID — pass this as service_id when placing an order. |
name | string | Human-readable service name. |
platform | string | Platform slug — e.g. tiktok, instagram, youtube. |
rate | integer | Price per 1000 units, in cents. rate=50 means $0.50 per 1000. |
min | integer | Minimum order quantity. |
max | integer | Maximum order quantity. |
step | integer | Quantity must be a multiple of this value. |
Places a new order and immediately charges your wallet. If your balance is too low the request is rejected with INSUFFICIENT_BALANCE (see Errors) and no order is created.
Request body
| Field | Type | Description |
|---|---|---|
service_id | integer | Required. From GET /services. |
link | string | Required. The profile / post / video URL the engagement should be delivered to. |
quantity | integer | Required. Must satisfy min, max and step for the chosen service. |
Example request
curl -X POST \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"service_id": 123, "link": "https://tiktok.com/@username", "quantity": 1000}' \
https://app.cumparadestept.com/api/v2/ordersExample response
{
"order_id": 456,
"charge": 50,
"charge_formatted": "$0.50",
"new_balance": 4950,
"new_balance_formatted": "$49.50",
"status": "Paid"
}Returns a paginated list of your orders, newest first.
Query parameters
| Param | Type | Description |
|---|---|---|
limit | integer | Page size. Default 100, maximum 500. |
offset | integer | Number of records to skip. Default 0. |
status | string | Optional filter — one of Paid, Ongoing, Finished, Error. |
Example request
curl -H "X-Api-Key: YOUR_API_KEY" \
"https://app.cumparadestept.com/api/v2/orders?limit=20&status=Ongoing"Example response
{
"orders": [
{
"id": 456,
"total": 50,
"total_formatted": "$0.50",
"status": "Ongoing",
"platform": "tiktok",
"timestamp": 1706000000
}
],
"total": 50,
"limit": 20,
"offset": 0
}Returns the full details and delivery status of a single order, including each individual child service line.
Example request
curl -H "X-Api-Key: YOUR_API_KEY" \
https://app.cumparadestept.com/api/v2/orders/456Example response
{
"order": {
"id": 456,
"total": 50,
"total_formatted": "$0.50",
"status": "Finished",
"platform": "tiktok",
"timestamp": 1706000000,
"services": [
{
"id": 789,
"service_id": 123,
"quantity": 1000,
"link": "https://tiktok.com/@username",
"status": "Completed"
}
]
}
}Step 1. Confirm you have funds to spend.
curl -H "X-Api-Key: YOUR_API_KEY" \
https://app.cumparadestept.com/api/v2/balanceStep 2. Pull the service catalog and find a TikTok follower service.
curl -H "X-Api-Key: YOUR_API_KEY" \
https://app.cumparadestept.com/api/v2/services
# Look for entries where platform="tiktok" and the name contains "follower".Step 3. Place the order against the service ID you chose.
curl -X POST \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"service_id": 123, "link": "https://tiktok.com/@username", "quantity": 1000}' \
https://app.cumparadestept.com/api/v2/ordersStep 4. Poll for delivery status using the returned order_id.
curl -H "X-Api-Key: YOUR_API_KEY" \
https://app.cumparadestept.com/api/v2/orders/456charge = (rate × quantity) / 1000, rounded up to the nearest cent.rate = 50, quantity = 1000 → charge is 50 cents ($0.50).| Status | Meaning |
|---|---|
Paid | Order received and accepted, delivery will start shortly. |
Ongoing | Delivery is in progress. |
Finished | Delivery complete. |
Error | Something went wrong with delivery — contact [email protected] with the order ID. |
Errors return a non-2xx HTTP status and a JSON body. The 4xx codes you should expect to handle:
| HTTP | Code | Meaning |
|---|---|---|
401 | — | Invalid or missing API key. |
403 | — | Account suspended, or the link you provided isn't accepted for this service. |
404 | — | Service or order not found. |
400 | MISSING_* | A required field is missing from the request body. |
400 | QUANTITY_TOO_LOW / QUANTITY_TOO_HIGH | Requested quantity is outside the service's min / max bounds. |
400 | INSUFFICIENT_BALANCE | Your wallet doesn't have enough funds. Top up at app.bulkoid.com/wallet. |
The API exposes services across every platform we support on the site:
Email [email protected] — we'll get back to you within a few hours during business days. Include your account email and (if relevant) the order ID you're asking about.