Documentation

Getting Started with TesterPayKit

Everything you need to integrate crowd testing into your development workflow. From setup to managing bug reports, we've got you covered.

# Setup

1. Create Your Account

Sign up for TesterPayKit and create your organization. The free plan includes 5 test sessions per month to get started.

Create Account

2. Generate API Key

Navigate to Settings > API Keys and generate a new key for your integration.

# Your API key will look like this:
tpk_live_a1b2c3d4e5f6g7h8i9j0...

3. Install the SDK

Choose your preferred SDK and add it to your project:

Flutter/Dart
flutter pub add testerpaykit
TypeScript/Node.js
npm install @testerpaykit/sdk
Python
pip install testerpaykit

4. Initialize the Client

Configure the SDK with your API key:

// TypeScript example
import { TesterPayKit } from '@testerpaykit/sdk';

const client = new TesterPayKit({
  apiKey: process.env.TESTERPAYKIT_API_KEY,
  environment: 'production'
});

# Creating Tests

Test Campaign Structure

A test campaign defines what you want tested, who should test it, and how they should be compensated.

// Create a new test campaign
const campaign = await client.campaigns.create({
  name: 'Login Flow Testing',
  description: 'Test the new login and signup flows',
  appUrl: 'https://testflight.apple.com/...',
  platform: 'ios',
  testersRequired: 10,
  rewardPerBug: 4.00,
  targetDevices: ['iPhone 14', 'iPhone 15'],
  testCases: [
    { title: 'Sign up with email', priority: 'high' },
    { title: 'Sign in with Google', priority: 'medium' },
    { title: 'Password reset flow', priority: 'high' }
  ]
});

Defining Test Cases

Clear test cases help testers understand exactly what to test. Include acceptance criteria for each case.

  • Title: A brief, descriptive name for the test case
  • Steps: Numbered instructions to reproduce the scenario
  • Expected Result: What should happen if everything works correctly
  • Priority: High, Medium, or Low importance

Campaign Status

Track your campaign progress programmatically:

const status = await client.campaigns.getStatus(campaign.id);

console.log(status);
// {
//   id: 'camp_abc123',
//   status: 'active',
//   testersAssigned: 8,
//   bugsReported: 12,
//   completedTests: 24,
//   remainingBudget: 52.00
// }

# Bug Reports

Bug Report Structure

Every bug report from TesterPayKit follows a structured format to ensure you have all the information needed to reproduce and fix issues.

{
  "id": "bug_xyz789",
  "title": "App crashes when tapping submit without email",
  "severity": "critical",
  "status": "open",
  "device": {
    "model": "iPhone 14 Pro",
    "os": "iOS 17.2",
    "appVersion": "2.1.0"
  },
  "steps": [
    "Open the app",
    "Navigate to signup",
    "Leave email field empty",
    "Tap Submit button"
  ],
  "expectedResult": "Validation error shown",
  "actualResult": "App crashes immediately",
  "screenshots": ["https://..."],
  "videoUrl": "https://..."
}

Fetching Bug Reports

Retrieve bug reports via the API or SDK:

// Get all bugs for a campaign
const bugs = await client.bugs.list({
  campaignId: 'camp_abc123',
  status: 'open',
  severity: ['critical', 'high']
});

// Update bug status
await client.bugs.update('bug_xyz789', {
  status: 'fixed',
  resolution: 'Added input validation'
});

Webhooks

Get real-time notifications when bugs are reported:

// Configure webhook in dashboard or via API
await client.webhooks.create({
  url: 'https://your-app.com/webhooks/testerpaykit',
  events: ['bug.created', 'bug.updated', 'campaign.completed'],
  secret: 'whsec_...'
});

Ready to dive deeper?

Explore our API reference for complete endpoint documentation, or check out our SDKs for your preferred language.