Developer docs

A simple REST API for link campaigns.

Automate the platform: create campaigns, check your credit balance, list past work and pull reports — straight from your own tools. JSON in, JSON out, one Bearer key. Available on any credit balance.

Authentication

Every request is authenticated with your workspace API key as a Bearer token. Generate and rotate the key under Settings → API in the app. Keep it secret — it can spend your credits.

# header on every request
Authorization: Bearer csl_xxxxxxxxxxxxxxxxxxxxxxxx

Base URL

All endpoints live under the app host and take an e (endpoint) query parameter.

https://app.cloudstacklinks.com/api.php?e=<endpoint>

GET · products

GET?e=productslist link types & credit costs
# request
curl https://app.cloudstacklinks.com/api.php?e=products \
  -H "Authorization: Bearer $CSL_KEY"

# response
{
  "products": {
    "editorial": { "name": "Editorial contextual link", "credits": 1 },
    "platform":  { "name": "Platform / Web-2.0 link", "credits": 1 },
    "cloud":    { "name": "Cloud Stack (10 platforms)", "credits": 10 },
    "guestpost": { "name": "Guest post / niche edit", "credits": 8 }
  }
}

GET · credits

GET?e=creditscurrent balance
# response
{ "credits": 148 }

POST · campaigns

POST?e=campaignscreate & queue a campaign

Send a JSON body. product is one of editorial · platform · cloud · guestpost. targets and anchors are newline-separated; qty multiplies the credit cost; client_id is optional. Credits are deducted immediately and the campaign is queued for automatic fulfilment.

# request
curl -X POST https://app.cloudstacklinks.com/api.php?e=campaigns \
  -H "Authorization: Bearer $CSL_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "product": "cloud",
    "targets": "https://client.com/pricing\nhttps://client.com/features",
    "anchors": "client pricing\nbest widget tool",
    "qty": 1,
    "client_id": 12
  }'


# response
{ "ok": true, "id": 481, "status": "queued", "report_url": null }

GET · campaigns

GET?e=campaignsyour last 200 campaigns
# response
{ "campaigns": [
  { "id": 481, "product": "cloud", "qty": 1, "credits": 10,
    "status": "delivered", "created": "2026-09-14T…", "delivered": "2026-09-14T…" }
] }

GET · campaign

GET?e=campaign&id=481one campaign, with links & report URL
# response
{
  "id": 481, "product": "cloud", "status": "delivered",
  "targets": "https://client.com/pricing",
  "links": [
    { "platform": "Cloudflare R2", "url": "https://pub-….r2.dev/…", "anchor": "client pricing" }
  ],
  "report_url": "https://app.cloudstacklinks.com/report.php?t=…"
}

Errors

Errors return a non-200 status with a JSON error message.

401 { "error": "Invalid or missing API key…" }  # bad/absent Bearer
400 { "error": "Not enough credits — this needs 10, you have 4." }
404 { "error": "unknown endpoint", "endpoints": [ … ] }
Rate & scope. The API acts on your workspace only and spends your credit balance. Rotate your key any time in Settings → API; the old key stops working immediately.
Get started

Two ways in. Pick yours.

Same placements, same rebuild guarantee — the only question is whether you want us to run it, or you'd rather run it yourself and resell it.

Done-for-you

Buy a stack, we build it

Pick a package, send your URLs, and we build and report the whole stack. No account, no dashboard — just links delivered.

From $59 · reply within one business day
Order a stack
Platform · self-serve

Run & resell it yourself

Buy credits at wholesale rates and run campaigns from your own dashboard — white-label reports, clients, API and affiliate, all included. Set your own prices, keep the margin.

Free trial — 2 credits, no card required
Start free