API Reference

REST API Documentation

Build powerful integrations with TesterPayKit's RESTful API. Full access to campaigns, bug reports, testers, and analytics.

Base URL

https://api.testerpaykit.app

Current Version

v1 (stable)

# Authentication

API Key Authentication

All API requests require authentication using an API key. Include your key in the Authorization header.

# Include your API key in the Authorization header
curl -X GET https://api.testerpaykit.app/v1/campaigns \
  -H "Authorization: Bearer tpk_live_your_api_key" \
  -H "Content-Type: application/json"

Keep your API key secure

Never expose your API key in client-side code or public repositories. Use environment variables to store sensitive credentials.

API Key Types

Live tpk_live_...

Production API key. All operations affect real data and billing.

Test tpk_test_...

Sandbox API key. Safe for development and testing without charges.

# Endpoints

GET /v1/campaigns

List all test campaigns

stable
POST /v1/campaigns

Create a new test campaign

stable
GET /v1/campaigns/:id

Get campaign details and status

stable
GET /v1/bugs

List bug reports with filters

stable
PATCH /v1/bugs/:id

Update bug status or resolution

stable
POST /v1/webhooks

Register a webhook endpoint

stable
GET /v1/testers

List available testers

beta
GET /v1/analytics

Campaign analytics and metrics

beta

# Request and Response Format

Request Example

POST /v1/campaigns
Content-Type: application/json
Authorization: Bearer tpk_live_...

{
  "name": "iOS Login Test",
  "platform": "ios",
  "testersRequired": 5,
  "rewardPerBug": 4.00
}

Response Example

{
  "success": true,
  "data": {
    "id": "camp_abc123",
    "name": "iOS Login Test",
    "status": "draft",
    "createdAt": "2026-01-27T..."
  }
}

# Error Handling

The API uses standard HTTP status codes to indicate success or failure. Error responses include a machine-readable code and human-readable message.

{
  "success": false,
  "error": {
    "code": "INVALID_API_KEY",
    "message": "The provided API key is invalid or expired",
    "status": 401
  }
}
200

Success

400

Bad Request

401

Unauthorized

500

Server Error

# Rate Limits

API requests are rate limited to ensure fair usage. Rate limit information is included in response headers.

1000

Requests per minute

10,000

Requests per hour

100,000

Requests per day

# Rate limit headers in response
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 987
X-RateLimit-Reset: 1706367600

Prefer using an SDK?

Our SDKs handle authentication, error handling, and rate limiting for you. Available for Flutter/Dart, TypeScript, and Python.