Testers.AI API

30+ AI testing agents available via simple REST API. Find bugs, generate test cases, and get persona feedback.

https://us-central1-taiser-476406.cloudfunctions.net/main
Bug Detection Test Cases Persona Feedback Authentication Pricing & Limits Errors

Authentication

All endpoints accept an optional API key. Without a key, requests fall back to the free tier with reduced limits.

Methods

MethodExample
X-API-Key headerX-API-Key: tst_live_abc123...
Bearer tokenAuthorization: Bearer tst_live_abc123...
No authFalls back to free tier automatically

CORS

All endpoints return Access-Control-Allow-Origin: * and support OPTIONS preflight requests.


POST /api/test

Bug Detection

Send a screenshot and get back a list of bugs found by 30+ specialized AI testing agents. Each bug includes priority, type, reasoning, and a ready-to-use fix prompt.

Request Body (JSON)

ParameterTypeDescription
screenshot_base64string requiredBase64-encoded PNG screenshot of the page
urlstring optionalURL of the page being tested
console_logsstring optionalBrowser console output for deeper analysis
network_logsstring optionalNetwork request logs
accessibility_treestring optionalDOM accessibility tree
page_textstring optionalExtracted page text content
custom_promptstring optionalAdditional instructions for the AI agents

Example Request

curl -X POST \
  https://us-central1-taiser-476406.cloudfunctions.net/main/api/test \
  -H "Content-Type: application/json" \
  -H "X-API-Key: tst_live_your_key_here" \
  -d '{
    "screenshot_base64": "iVBORw0KGgo...",
    "url": "https://example.com"
  }'

Response

{
  "success": true,
  "bugs": [
    {
      "bug_title": "Missing alt text on hero image",
      "bug_type": ["Accessibility", "WCAG"],
      "bug_priority": 8,
      "bug_confidence": 9,
      "bug_reasoning_why_a_bug": "Screen readers cannot describe...",
      "suggested_fix": "Add descriptive alt attribute...",
      "fix_prompt": "Add alt text to img.hero-image..."
    }
  ],
  "metadata": {
    "url": "https://example.com",
    "total_bugs": 12,
    "tier": "free"
  }
}

Tier Limits

TierBugs ReturnedDaily Limit
Free3 max10 scans/day
ProUnlimited100 scans/day

POST /api/generate-test-cases-custom

Test Case Generation

Generate comprehensive QA test cases from a screenshot. Returns structured test suites with steps, expected results, and priority levels.

Request Body (JSON)

ParameterTypeDescription
artifactstring requiredBase64-encoded PNG screenshot
tokenstring optionalAPI token for authentication
customPromptstring optionalFocus areas (e.g., "authentication flows, form validation")
testCaseCountnumber optionalDesired number of test cases (default: 5)
outputFormatstring optionaljson (default) or text

Example Request

curl -X POST \
  https://us-central1-taiser-476406.cloudfunctions.net/main/api/generate-test-cases-custom \
  -H "Content-Type: application/json" \
  -d '{
    "artifact": "iVBORw0KGgo...",
    "token": "tst_live_your_key_here",
    "customPrompt": "Focus on login and checkout flows",
    "testCaseCount": 10,
    "outputFormat": "json"
  }'

Response

{
  "success": true,
  "test_suites": [
    {
      "suite_name": "Login Flow Tests",
      "priority": "critical",
      "test_cases": [
        {
          "test_id": "TC-001",
          "test_name": "Valid login with correct credentials",
          "objective": "Verify user can log in...",
          "preconditions": ["User account exists"],
          "steps": [
            { "step": 1, "action": "Navigate to login page", "expected_result": "Login form displayed" }
          ],
          "priority": "critical",
          "tags": ["login", "authentication"]
        }
      ]
    }
  ],
  "metadata": { "total_test_cases": 10, "tier": "pro" }
}

Tier Limits

TierMax Test CasesDaily Limit
Free5 per request5 generations/day
Pro25 per request40 generations/day

POST /api/test (with panelSize parameter)

Persona Feedback

Get realistic user feedback from diverse AI-generated personas. Each persona provides scores, praise, complaints, and detailed first-person feedback.

Request Body (FormData)

ParameterTypeDescription
artifactfile requiredScreenshot image file (PNG)
artifactTypestring requiredMust be screenshot
panelSizestring requiredNumber of personas (free: max 2, pro: max 5)
outputFormatstring optionaldefault
tokenstring optionalAPI token for authentication
urlstring optionalURL of the page being analyzed

Response

{
  "success": true,
  "persona_feedback": [
    {
      "name": "Sarah Chen",
      "age": 34,
      "gender": "female",
      "background": "Product manager at a SaaS company",
      "tech_proficiency": "expert",
      "feedback": "The landing page immediately...",
      "scores": {
        "design": 8, "usability": 7, "content": 9,
        "trust": 8, "accessibility": 6, "overall": 8
      },
      "top_praise": "Clear value proposition",
      "top_complaint": "Pricing page is hard to find",
      "would_return": true,
      "would_recommend": true
    }
  ],
  "overall_score": 7.8,
  "metadata": { "num_personas": 2, "tier": "free" }
}

Tier Limits

TierMax PersonasDaily Limit
Free2 per request3 requests/day
Pro5 per request20 requests/day

Pricing & Rate Limits

All endpoints work without authentication on the free tier. Upgrade for higher limits and full results.

Free

$0
  • 3 bugs per scan
  • 5 test cases per request
  • 2 personas per request
  • 10 bug scans/day
  • 5 test generations/day
  • 3 persona requests/day

Pro Popular

$19/mo
  • Unlimited bugs per scan
  • 25 test cases per request
  • 5 personas per request
  • 100 bug scans/day
  • 40 test generations/day
  • 20 persona requests/day

Pay-per-use

Metered
  • $0.50 per bug scan
  • $0.25 per test generation
  • $0.08 per persona
  • No daily limits
  • Billed via Stripe
  • All features unlocked

Error Handling

All errors return a consistent JSON structure with a user-friendly message and technical details.

HTTP Status Codes

CodeMeaning
200Success
204CORS preflight OK
400Invalid JSON, missing required fields, corrupted image
401Invalid, missing, or revoked API key
429Rate limit exceeded
500Analysis failed, timeout, or safety filter triggered

Error Response Format

{
  "success": false,
  "error": "screenshot_base64 is required",
  "error_type": "ValueError",
  "error_detail": "Missing required parameter in request body"
}

Infrastructure

PropertyValue
RuntimePython 3.11 on Google Cloud Functions (Gen2)
AI ModelGoogle Gemini 2.5 Flash
Timeout540 seconds (9 minutes)
Memory512 MB per function
Max Instances10 concurrent
Auth StorageGoogle Cloud Firestore
PaymentsStripe (subscriptions + metered billing)