Quick Start Guide
Get real human feedback in 5 minutes. This guide walks you through signup, funding, and sending your first query.
Create Your Account
Sign up at /requestor/signup or call the signup API directly:
curl -X POST https://getabrain.ai/api/v1/requestor/auth/signup \
-H "Content-Type: application/json" \
-d '{
"email": "you@company.com",
"password": "SecurePass123",
"full_name": "Jane Smith",
"company_name": "Acme AI",
"accepted_terms": true,
"accepted_requestor_agreement": true
}'You get back your credentials:
{
"user": { "id": "abc123", "email": "you@company.com", "balance_cents": 0 },
"api_key": "gab_k_xxxxx",
"api_secret": "gab_s_xxxxx",
"access_token": "eyJhbG...",
"refresh_token": "eyJhbG..."
}Save your api_secret immediately. It is only shown once at signup and cannot be retrieved later.
Fund Your Account
Queries require a prepaid balance. Create a Stripe checkout session to add funds:
curl -X POST https://getabrain.ai/api/v1/requestor/billing/checkout \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "amount_cents": 5000 }'This returns a checkout_url. Open it in a browser to complete payment via Stripe. After payment, your balance is credited automatically.
How billing works:
- Prepaid balance model — no subscriptions or monthly fees
- Minimum bid per response: $0.05 (5 cents)
- Platform fee: 15% (included in cost, not added on top)
- Total cost = (bid + bonus) × required_responses
- Balance is deducted when you create a query, refunded if you cancel
- Optional auto-reload: set a threshold and reload amount to never run out
Send Your First Query
POST a query to get real human responses. Choose from 13 query types. Here is the simplest example — a text question:
cURL
curl -X POST https://getabrain.ai/api/v1/requestor/queries \
-H "X-API-Key: gab_k_xxxxx" \
-H "X-API-Secret: gab_s_xxxxx" \
-H "Content-Type: application/json" \
-d '{
"type": "text",
"title": "Landing page feedback",
"description": "We need honest feedback on our new design",
"content_data": {
"question": "What is your first impression of this landing page?",
"context": "We just redesigned our homepage."
},
"required_responses": 5,
"bid_amount_cents": 50
}'Python
import requests
resp = requests.post(
"https://getabrain.ai/api/v1/requestor/queries",
headers={
"X-API-Key": "gab_k_xxxxx",
"X-API-Secret": "gab_s_xxxxx",
},
json={
"type": "text",
"title": "Landing page feedback",
"description": "We need honest feedback on our new design",
"content_data": {
"question": "What is your first impression of this landing page?",
},
"required_responses": 5,
"bid_amount_cents": 50,
},
)
query = resp.json()
print(f"Query ID: {query['id']}, Status: {query['status']}")Node.js
const resp = await fetch("https://getabrain.ai/api/v1/requestor/queries", {
method: "POST",
headers: {
"X-API-Key": "gab_k_xxxxx",
"X-API-Secret": "gab_s_xxxxx",
"Content-Type": "application/json",
},
body: JSON.stringify({
type: "text",
title: "Landing page feedback",
description: "We need honest feedback on our new design",
content_data: {
question: "What is your first impression of this landing page?",
},
required_responses: 5,
bid_amount_cents: 50,
}),
});
const query = await resp.json();
console.log("Query ID:", query.id, "Status:", query.status);Response:
{
"id": "query_abc123",
"type": "text",
"status": "active",
"required_responses": 5,
"completed_responses": 0,
"total_cost_cents": 250,
"created_at": "2026-02-16T12:00:00Z"
}Understanding bids
bid_amount_cents is what each worker earns per response. Set higher bids to attract more and better workers faster. The minimum is 5 cents. For complex tasks (video review, long-form writing), $0.50–$2.00 is typical. You can also add a bonus_amount_cents that workers earn for writing thoughtful comments.
Get Your Results
Poll your query to check for responses, or use webhooks for real-time notifications.
Polling
curl https://getabrain.ai/api/v1/requestor/queries/query_abc123 \ -H "X-API-Key: gab_k_xxxxx" \ -H "X-API-Secret: gab_s_xxxxx"
{
"id": "query_abc123",
"status": "completed",
"completed_responses": 5,
"responses": [
{
"id": "resp_001",
"response_data": {
"answer": "The hero section is eye-catching. The CTA button could be more prominent.",
"reasoning": "I looked at the overall visual hierarchy."
},
"worker": { "quality_score": 4.2, "tier": "Gold" },
"submitted_at": "2026-02-16T12:05:00Z"
},
...
]
}Webhooks (recommended for production)
Include a webhook_url in your query creation request. We POST a JSON payload to your URL when each response arrives and when the query completes. See the Webhooks guide for details.
Rate Workers (Optional)
Rate each response 1–5 stars to improve the quality of future workers assigned to your queries. Workers with consistently low ratings are automatically suspended.
curl -X POST https://getabrain.ai/api/v1/requestor/queries/query_abc123/responses/resp_001/rate \
-H "X-API-Key: gab_k_xxxxx" \
-H "X-API-Secret: gab_s_xxxxx" \
-H "Content-Type: application/json" \
-d '{ "score": 5, "feedback_text": "Excellent, detailed feedback." }'All 13 Query Types at a Glance
Choose the right type for your task. See the full Query Types reference for complete schemas.
| Type | Use When You Need | Example |
|---|---|---|
text | Open-ended written answers | "What do you think of this design?" |
multiple_choice | Picking from options | "Which feature matters most?" |
rating_scale | Numeric ratings (with optional media) | "Rate this product photo 1-10" |
image_comparison | Choosing between images | "Which logo is more professional?" |
ranking | Ordering items by preference | "Rank these features by importance" |
yes_no | Binary decisions | "Is this headline effective?" |
sentiment | Emotional analysis | "What is the sentiment of this review?" |
image_selection | Selecting matching images | "Pick all photos suitable for a listing" |
free_form_text | Long-form writing | "Write a product description" |
video_review | YouTube video feedback | "Review this tutorial video" |
audio_review | Audio content feedback | "Review this podcast episode" |
image_analysis | Detailed image analysis | "Describe what you see in this photo" |
ab_test | Comparing two variants | "Which landing page converts better?" |
More Examples
Sentiment Analysis
{
"type": "sentiment",
"title": "Analyze tweet sentiment",
"content_data": {
"subject": "Just tried the new feature and it completely changed my workflow!",
"require_reasoning": true
},
"required_responses": 5,
"bid_amount_cents": 10
}A/B Test with Images
{
"type": "ab_test",
"title": "Landing page A/B test",
"content_data": {
"question": "Which design do you prefer and why?",
"variant_a": {
"description": "Minimalist hero with large image",
"image_url": "https://example.com/design-a.png"
},
"variant_b": {
"description": "Feature-rich layout with testimonials",
"image_url": "https://example.com/design-b.png"
}
},
"required_responses": 20,
"bid_amount_cents": 25
}Rating Scale with Media
{
"type": "rating_scale",
"title": "Rate this product video",
"content_data": {
"question": "How would you rate the overall quality?",
"scale_type": "stars",
"scale_min": 1,
"scale_max": 5,
"scale_labels": { "min_label": "Poor", "max_label": "Excellent" },
"criteria": ["Visual quality", "Audio clarity", "Content value"],
"media_video_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
},
"required_responses": 10,
"bid_amount_cents": 30
}Image Comparison
{
"type": "image_comparison",
"title": "Logo design preference",
"content_data": {
"question": "Which logo is more professional?",
"comparison_type": "preference",
"require_reasoning": true,
"images": [
{ "id": "a", "url": "https://example.com/logo-a.png", "label": "Option A" },
{ "id": "b", "url": "https://example.com/logo-b.png", "label": "Option B" }
]
},
"required_responses": 10,
"bid_amount_cents": 20
}Common Query Parameters
| Field | Type | Required | Description |
|---|---|---|---|
type | string | Yes | One of the 13 query types |
title | string | Yes | Short title shown to workers |
description | string | Yes | Longer description for workers |
content_data | object | Yes | Type-specific data (question, images, etc.) |
required_responses | integer | Yes | How many worker responses you want |
bid_amount_cents | integer | Yes | Pay per response in cents (min 5) |
bonus_amount_cents | integer | No | Extra pay for thoughtful comments |
expires_in_hours | integer | No | Auto-expire after N hours |
min_worker_quality | number | No | Min quality score 0-5 (0 = any) |
webhook_url | string | No | URL to receive response notifications |