We use cookies

We use cookies to improve your experience and analyze platform usage. By continuing, you agree to our Privacy Policy.

Back to Home
Developer Portal

Kruve API Access

Integrate your brand systems directly with the Kruve campaign platform. Create campaigns, track performance, and manage your wallet programmatically.

REST API v1JSONOAuth 2.0Webhooks

Quick Start

STEP 1

Request API Access

Contact our partnerships team to request an advertiser API key for your brand.

STEP 2

Fund Your Wallet

Deposit USD into your Kruve advertiser wallet via Stripe to escrow campaign budgets.

STEP 3

Create Campaigns

Use the REST API to programmatically launch campaigns targeting Zimbabwean cities.

STEP 4

Subscribe to Webhooks

Receive real-time notifications as Kruvers post, submit, and verify views.

Authentication

All API requests require a Bearer token in the Authorization header. API keys are scoped per advertiser account and can be generated from your advertiser dashboard.

Authorization: Bearer kruve_live_abc123def456...
Content-Type: application/json

Never expose your API key in client-side code or public repositories. Use environment variables and route requests through your backend server.

Base URL

https://api.kruve.co.zw/v1

All endpoint paths listed below are relative to this base URL.

SDK Quick Example

curl -X POST https://api.kruve.co.zw/v1/campaigns \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "brand_name": "Econet Zimbabwe",
    "target_views": 50000,
    "rate_per_view": 0.005
  }'

API Endpoints

Click an endpoint to view its request and response schema.

Create a new advertising campaign on the Kruve platform.

AuthBearer token (advertiser)
Request
{
  "brand_name": "Econet Zimbabwe",
  "content_description": "Summer data bundle promo",
  "image_url": "https://cdn.kruve.co.zw/ads/summer.png",
  "share_link": "https://econet.co.zw/summer",
  "target_locations": ["Harare", "Bulawayo"],
  "target_views": 50000,
  "rate_per_view": 0.005,
  "start_date": "2026-08-01",
  "end_date": "2026-08-31"
}
Response (200 OK)
{
  "id": "cmp_8f3a2b1c",
  "status": "pending",
  "created_date": "2026-07-09T10:30:00Z",
  "escrow_required": 250.00
}

Webhooks

Subscribe to real-time events so your systems react instantly as Kruvers engage with your campaigns. Webhook payloads are signed with your subscription secret using HMAC-SHA256.

campaign.verified

Fired when a campaign is approved and goes live.

campaign.completed

Fired when a campaign reaches its target views or end date.

participation.submitted

Fired when a Kruver submits view proof for your campaign.

participation.verified

Fired when admin verifies a Kruver's submission.

wallet.low_balance

Fired when your escrow balance drops below a threshold.

deposit.confirmed

Fired when a wallet deposit is confirmed.

// Verify webhook signature (Node.js)
const crypto = require('crypto');
const expected = crypto
  .createHmac('sha256', WEBHOOK_SECRET)
  .update(rawBody)
  .digest('hex');
if (signature !== expected) return res.status(401).send('Invalid signature');

Rate Limits

Standard tier100 req/min
Enterprise tier1,000 req/min
Burst limit2x rate

Rate limit headers are included in every response: X-RateLimit-Remaining, X-RateLimit-Reset.

Error Codes

200Success
400Bad Request
401Unauthorized
402Insufficient Funds
404Not Found
429Rate Limited
500Server Error

Ready to integrate?

Request API access for your brand and start building automated campaign workflows today.