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
Authentication
All endpoints accept an optional API key. Without a key, requests fall back to the free tier with reduced limits.
Methods
| Method | Example |
| X-API-Key header | X-API-Key: tst_live_abc123... |
| Bearer token | Authorization: Bearer tst_live_abc123... |
| No auth | Falls back to free tier automatically |
CORS
All endpoints return Access-Control-Allow-Origin: * and support OPTIONS preflight requests.
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)
| Parameter | Type | Description |
| screenshot_base64 | string required | Base64-encoded PNG screenshot of the page |
| url | string optional | URL of the page being tested |
| console_logs | string optional | Browser console output for deeper analysis |
| network_logs | string optional | Network request logs |
| accessibility_tree | string optional | DOM accessibility tree |
| page_text | string optional | Extracted page text content |
| custom_prompt | string optional | Additional 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
| Tier | Bugs Returned | Daily Limit |
| Free | 3 max | 10 scans/day |
| Pro | Unlimited | 100 scans/day |
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)
| Parameter | Type | Description |
| artifact | string required | Base64-encoded PNG screenshot |
| token | string optional | API token for authentication |
| customPrompt | string optional | Focus areas (e.g., "authentication flows, form validation") |
| testCaseCount | number optional | Desired number of test cases (default: 5) |
| outputFormat | string optional | json (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
| Tier | Max Test Cases | Daily Limit |
| Free | 5 per request | 5 generations/day |
| Pro | 25 per request | 40 generations/day |
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)
| Parameter | Type | Description |
| artifact | file required | Screenshot image file (PNG) |
| artifactType | string required | Must be screenshot |
| panelSize | string required | Number of personas (free: max 2, pro: max 5) |
| outputFormat | string optional | default |
| token | string optional | API token for authentication |
| url | string optional | URL 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
| Tier | Max Personas | Daily Limit |
| Free | 2 per request | 3 requests/day |
| Pro | 5 per request | 20 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
| Code | Meaning |
| 200 | Success |
| 204 | CORS preflight OK |
| 400 | Invalid JSON, missing required fields, corrupted image |
| 401 | Invalid, missing, or revoked API key |
| 429 | Rate limit exceeded |
| 500 | Analysis 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
| Property | Value |
| Runtime | Python 3.11 on Google Cloud Functions (Gen2) |
| AI Model | Google Gemini 2.5 Flash |
| Timeout | 540 seconds (9 minutes) |
| Memory | 512 MB per function |
| Max Instances | 10 concurrent |
| Auth Storage | Google Cloud Firestore |
| Payments | Stripe (subscriptions + metered billing) |