Captcha Entry data API: captcha points and payouts
Captcha Entry: Typing Job work is Akash Vaghani's Android microtask client for people who solve on-device captcha challenges to earn points, rather than browsing a vacancy board. After Google Sign-In or email sign-in, workers pick a task type — the Play listing names number, text, slider-image and puzzle captchas, and the client also ships maths and copywriter tiles — tap a hint on the solve screen when stuck, and watch a home fire chip for consecutive days with a correct solve. They cash out from a payout screen that shows Paytm, PhonePe, BHIM UPI, Google Pay, Amazon Pay and PayPal marks plus rupee, rupiah, dong and riyal currency icons, then check those requests on a History screen. The listing is rated 4.8 from about 170 thousand reviews, shows 1 million-plus downloads, contains ads, and was last updated 2 October 2026 (client 2.6.4). It sits with Indian earn-and-withdraw crowd apps rather than Naukri or apna.
Home tiles publish a captchaType (NUMBER, TEXT, SLIDER, PUZZLE, MATHS, COPYWRITER) with pointsPerCaptcha, batchSize (10 for number and text) and isEnabled. A served challenge carries captchaId, imageUrl, sliderTarget or puzzlePieces, and expiresAt; a correct submit returns isCorrect, pointsAwarded, the running points total, solvedCount and batchRemaining. Hint calls spend pointsCost against hintsRemaining for a hintText. The worker row also holds currencyCode, currencySymbol and isPayoutEnabled, while the fire chip tracks currentStreak, longestStreak, streakBonusPoints and isTodayComplete.
Cash-out config lists each railId (PAYTM, PHONEPE, UPI, GOOGLEPAY, AMAZONPAY, PAYPAL) with a minimumPayout for that countryCode. Submitted rows carry payoutAmount, the destination in paymentDetails (UPI VPA, wallet MSISDN or PayPal email) and status PENDING / COMPLETED / REJECTED until an operator adminNote and processedAt close them, leaving pointsAfter on the worker. Treasury bots match those destinations to wallet advice; workforce analytics group throughput by tile; compliance hides a rail when isPayoutEnabled is off; ops dashboards net pointsCost against pointsAwarded. openData Studio turns the same fields into callable open data.
Screenshots
API surface
Request/response examples are illustrative, reconstructed from the app's interface — not a live capture.
Sign in with Google
POST
/v1/auth/googleosintMints the worker session after the Google button: uid, email and displayName, plus the idToken used on point-balance and payout calls.
Auth: None on this call. The response idToken is sent as Authorization: Bearer on later worker, captcha and payout calls. Email/password sign-in is the other packaged path (Firebase Auth).
- uid
- displayName
- idToken
- refreshToken
- expiresIn
POST /v1/auth/google HTTP/1.1 Content-Type: application/json { "idToken": "<google-id-token>", "requestId": "req-8f21" }{ "uid": "k7Qm2nX0abCdefGhIjkL", "email": "[email protected]", "displayName": "Ravi K", "idToken": "<firebase-id-token>", "refreshToken": "<refresh-token>", "expiresIn": 3600 }Load worker profile and point balance
GET
/v1/workers/meopenfinanceHydrates the home point chip and the payout screen balance: points, local currencySymbol and whether isPayoutEnabled is on.
Auth: Bearer Firebase ID token from /v1/auth/google (or email/password). The uid in the token selects the worker row.
- uid
- displayName
- points
- currencyCode
- currencySymbol
- countryCode
- isPayoutEnabled
- createdAt
GET /v1/workers/me HTTP/1.1 Authorization: Bearer <firebase-id-token> Accept: application/json{ "uid": "k7Qm2nX0abCdefGhIjkL", "email": "[email protected]", "displayName": "Ravi K", "points": 18450, "currencyCode": "INR", "currencySymbol": "₹", "countryCode": "IN", "isPayoutEnabled": true, "createdAt": "2026-09-12T08:11:00Z" }List captcha task catalog
GET
/v1/captchas/catalogopendataFills the home task grid: captchaType, batchSize (10 for number/text per the listing), pointsPerCaptcha and isEnabled per tile.
Auth: Optional Bearer Firebase ID token. Anonymous browse of the task tiles still works; signed-in responses add that worker's pointsPerCaptcha overrides.
- tasks
- captchaType
- label
- batchSize
- pointsPerCaptcha
- isEnabled
- difficulty
GET /v1/captchas/catalog HTTP/1.1 Authorization: Bearer <firebase-id-token> Accept: application/json{ "tasks": [ {"captchaType": "NUMBER", "label": "Number Captcha", "batchSize": 10, "pointsPerCaptcha": 80, "isEnabled": true}, {"captchaType": "TEXT", "label": "Text Captcha", "batchSize": 10, "pointsPerCaptcha": 100, "isEnabled": true}, {"captchaType": "SLIDER", "label": "Slider Image Captcha", "pointsPerCaptcha": 70, "isEnabled": true}, {"captchaType": "PUZZLE", "label": "Puzzle Captcha", "difficulty": "NORMAL", "pointsPerCaptcha": 110, "isEnabled": true}, {"captchaType": "MATHS", "label": "Maths Captcha", "pointsPerCaptcha": 90, "isEnabled": true}, {"captchaType": "COPYWRITER", "label": "Copywriter Captcha", "pointsPerCaptcha": 150, "isEnabled": true} ] }Fetch the next captcha challenge
GET
/v1/captchas/nextopendataServes one challenge for the tapped tile: imageUrl for text/number, sliderTarget for the slider-image task, puzzlePieces for the jigsaw.
Auth: Bearer Firebase ID token. captchaType selects the tile the worker tapped (NUMBER, TEXT, SLIDER, PUZZLE, MATHS, COPYWRITER).
- captchaId
- captchaType
- prompt
- imageUrl
- sliderTarget
- puzzlePieces
- difficulty
- pointsPerCaptcha
- expiresAt
GET /v1/captchas/next?captchaType=TEXT&difficulty=NORMAL HTTP/1.1 Authorization: Bearer <firebase-id-token> Accept: application/json{ "captchaId": "cap-9f2a01", "captchaType": "TEXT", "prompt": "Type the characters you see", "imageUrl": "https://storage.example/captchaImages/text/img_1042.jpg", "sliderTarget": null, "puzzlePieces": 0, "difficulty": "NORMAL", "pointsPerCaptcha": 100, "expiresAt": "2026-10-11T06:12:00Z" }Submit a solved captcha
POST
/v1/captchas/{captchaId}/submitopendataCredits pointsAwarded after a correct text, number, maths, slider, copywriter or puzzle answer and returns the running points total plus batchRemaining in the 10-captcha number/text sets.
Auth: Bearer Firebase ID token. A wrong answer returns isCorrect=false and does not increment points.
- captchaId
- isCorrect
- pointsAwarded
- points
- solvedCount
- batchRemaining
POST /v1/captchas/cap-9f2a01/submit HTTP/1.1 Authorization: Bearer <firebase-id-token> Content-Type: application/json { "captchaType": "TEXT", "answerText": "K7mP2", "sliderValue": null, "elapsedMs": 4200 }{ "captchaId": "cap-9f2a01", "isCorrect": true, "pointsAwarded": 100, "points": 18550, "solvedCount": 186, "batchRemaining": 7 }Request a captcha hint
POST
/v1/captchas/{captchaId}/hintopendataReturns hintText for the current challenge, decrements hintsRemaining and optionally deducts pointsCost from the worker balance.
Auth: Bearer Firebase ID token. Rejected when hintsRemaining is 0.
- captchaId
- hintText
- hintsRemaining
- pointsCost
- points
POST /v1/captchas/cap-9f2a01/hint HTTP/1.1 Authorization: Bearer <firebase-id-token> Content-Type: application/json { "captchaType": "TEXT" }{ "captchaId": "cap-9f2a01", "hintText": "Starts with K", "hintsRemaining": 2, "pointsCost": 10, "points": 18440 }Fetch payout rail config
GET
/v1/config/payoutsopendataTurns payout tiles on or off per countryCode and publishes each rail's minimumPayout (Paytm, PhonePe, BHIM UPI, Google Pay, Amazon Pay, PayPal).
Auth: Bearer Firebase ID token. Remote Config (firebase_remote_config plugin) can override which rails and minima the payout screen shows for that countryCode.
- countryCode
- currencyCode
- isPayoutEnabled
- rails
- railId
- minimumPayout
- label
GET /v1/config/payouts?countryCode=IN HTTP/1.1 Authorization: Bearer <firebase-id-token> Accept: application/json{ "countryCode": "IN", "currencyCode": "INR", "isPayoutEnabled": true, "rails": [ {"railId": "PAYTM", "minimumPayout": 100, "currencyCode": "INR"}, {"railId": "PHONEPE", "minimumPayout": 100, "currencyCode": "INR"}, {"railId": "UPI", "minimumPayout": 100, "currencyCode": "INR", "label": "BHIM UPI"}, {"railId": "GOOGLEPAY", "minimumPayout": 100, "currencyCode": "INR"}, {"railId": "AMAZONPAY", "minimumPayout": 100, "currencyCode": "INR"}, {"railId": "PAYPAL", "minimumPayout": 5, "currencyCode": "USD"} ] }Submit a payout request
POST
/v1/workers/me/cashoutsopenbankingCreates the cashout row from the payout screen: railId (PAYTM / PHONEPE / UPI / GOOGLEPAY / AMAZONPAY / PAYPAL) plus the UPI VPA, wallet MSISDN or PayPal email in paymentDetails.
Auth: Bearer Firebase ID token. Rejected when points are below that rail's minimumPayout or isPayoutEnabled is false.
- payoutId
- uid
- railId
- payoutAmount
- currencyCode
- paymentDetails
- status
- pointsAfter
- createdAt
POST /v1/workers/me/cashouts HTTP/1.1 Authorization: Bearer <firebase-id-token> Content-Type: application/json { "railId": "UPI", "payoutAmount": 200, "currencyCode": "INR", "paymentDetails": "ravi@okaxis" }{ "payoutId": "po-88021", "uid": "k7Qm2nX0abCdefGhIjkL", "railId": "UPI", "payoutAmount": 200, "currencyCode": "INR", "paymentDetails": "ravi@okaxis", "status": "PENDING", "pointsAfter": 18350, "createdAt": "2026-10-11T06:20:00Z" }List payout history
GET
/v1/payoutsopenfinanceFills the History screen: cashout rows with status PENDING / COMPLETED / REJECTED, the destination in paymentDetails, and an operator adminNote.
Auth: Bearer Firebase ID token. Empty list is the History screen with no rows.
- payouts
- payoutId
- railId
- payoutAmount
- currencyCode
- paymentDetails
- status
- adminNote
- createdAt
- processedAt
GET /v1/payouts?limit=20 HTTP/1.1 Authorization: Bearer <firebase-id-token> Accept: application/json{ "payouts": [ { "payoutId": "po-88021", "railId": "UPI", "payoutAmount": 200, "currencyCode": "INR", "paymentDetails": "ravi@okaxis", "status": "COMPLETED", "adminNote": "Paid via UPI", "createdAt": "2026-10-08T11:00:00Z", "processedAt": "2026-10-09T04:15:00Z" }, { "payoutId": "po-87990", "railId": "PAYTM", "payoutAmount": 150, "currencyCode": "INR", "paymentDetails": "9999999999", "status": "REJECTED", "adminNote": "Name mismatch", "createdAt": "2026-10-07T09:40:00Z", "processedAt": "2026-10-07T10:02:00Z" } ] }List captcha image objects
GET
/v1/captchas/imagesopendataSupplies the photo set for slider-image and puzzle captchas when the catalog points at Storage rather than a bundled asset.
Auth: Optional Bearer Firebase ID token. Slider and puzzle screens also fall back to bundled placeholders (default_puzzle.jpg, placeholder-img.jpg).
- bucket
- captchaType
- difficulty
- items
- objectName
- contentType
- mediaUrl
GET /v1/captchas/images?captchaType=PUZZLE&difficulty=NORMAL HTTP/1.1 Authorization: Bearer <firebase-id-token> Accept: application/json{ "bucket": "captchajob3-e4f42.firebasestorage.app", "captchaType": "PUZZLE", "difficulty": "NORMAL", "items": [ { "objectName": "captchaImages/puzzle/normal/img_1042.jpg", "contentType": "image/jpeg", "mediaUrl": "https://firebasestorage.googleapis.com/v0/b/captchajob3-e4f42.firebasestorage.app/o/captchaImages%2Fpuzzle%2Fnormal%2Fimg_1042.jpg?alt=media" } ] }Read daily solve streak
GET
/v1/workers/me/streakopendataDrives the home fire chip: currentStreak days in a row with at least one correct submit, longestStreak, and streakBonusPoints waiting once isTodayComplete flips.
Auth: Bearer Firebase ID token. The uid in the token selects the worker row.
- uid
- currentStreak
- longestStreak
- streakBonusPoints
- lastSolveDate
- isTodayComplete
GET /v1/workers/me/streak HTTP/1.1 Authorization: Bearer <firebase-id-token> Accept: application/json{ "uid": "k7Qm2nX0abCdefGhIjkL", "currentStreak": 4, "longestStreak": 12, "streakBonusPoints": 40, "lastSolveDate": "2026-10-10", "isTodayComplete": false }Register device push token
PUT
/v1/workers/me/deviceopendataBinds the FCM device token so payout-status and streak-reminder pushes can reach the signed-in worker.
Auth: Bearer Firebase ID token. The FCM token is minted by firebase_messaging after notification permission.
- uid
- deviceId
- fcmToken
- platform
- notificationsEnabled
- updatedAt
PUT /v1/workers/me/device HTTP/1.1 Authorization: Bearer <firebase-id-token> Content-Type: application/json { "fcmToken": "<fcm-device-token>", "platform": "android", "packageName": "typingbot.captchasolver.jobWorkOnline" }{ "uid": "k7Qm2nX0abCdefGhIjkL", "deviceId": "dev-44102", "fcmToken": "<fcm-device-token>", "platform": "android", "notificationsEnabled": true, "updatedAt": "2026-10-11T06:22:00Z" }
Data categories
- worker profiles
- point balances
- captcha task catalog
- captcha submissions
- captcha hints
- solve streaks
- device push tokens
- payout rails
- payout requests
- payout history
Where teams use this data
Reconcile Paytm and UPI cashouts
Treasury bots pull pending payout rows and per-worker history, match paymentDetails (Paytm MSISDN or UPI VPA) against wallet advice, and close items whose status flipped to COMPLETED with an adminNote.
Score captcha throughput by type
Workforce analytics join solvedCount and pointsPerCaptcha with the home tiles (number, text, slider, puzzle, maths, copywriter) to see which tasks actually move points.
Gate payouts by country rail
Compliance stacks read countryCode and hide PayPal or INR rails when that corridor's minimumPayout or isPayoutEnabled says it is closed.
Meter hint spend against solves
Ops dashboards subtract pointsCost on hint calls from pointsAwarded on submits so a worker's net points still match the home chip.
Frequently asked questions
How does Captcha Entry authenticate workers?
Google Sign-In or email/password mints a Firebase ID token (uid on the worker row). Later reads and writes to the point balance, captcha submissions and payouts send that token as Authorization: Bearer.
Which payout rails appear on the cashout screen?
Paytm, PhonePe, BHIM UPI, Google Pay, Amazon Pay and PayPal. Each rail carries a railId, minimumPayout and currencyCode; the worker types a UPI VPA, wallet MSISDN or PayPal email into paymentDetails. History rows then show status PENDING, COMPLETED or REJECTED plus an operator adminNote.
What does a correct captcha submit return?
A correct answer sets isCorrect and credits pointsAwarded against the worker's running points, with solvedCount and batchRemaining for the 10-captcha number and text sets. Hint calls can deduct pointsCost while hintsRemaining is above zero; the fire chip separately tracks currentStreak and streakBonusPoints.
Is this a public developer API?
No. The objects above — task tiles, point balances, hint spend and payout rows — are the data the signed-in client already shows, modelled so integrators can call the same fields. They are not a published developer program.
Apps similar to Captcha Entry: Typing Job work
- Clickworker — Clickworker is clickworker GmbH's Android and web workplace where freelancers complete paid digital microtasks such as surveys, writing, research, recordings and data categorizing on their own schedule.
- 2Captcha — 2Captcha is a captcha typing job where workers register, open a simple image-entry interface, type the text shown, and earn funds for each correctly entered captcha.
- Kolotibablo — Kolotibablo is an online captcha-entry job, running since 2007, where workers receive image tasks in a web interface, solve them manually, and withdraw once a small balance is reached.
- Google Opinion Rewards — Google Opinion Rewards is Google's survey app that sends short questionnaires and pays Android users in Google Play credit (PayPal on iOS) instead of captcha-entry points.
- Microworkers — Microworkers is a crowdsourcing site where employers post micro jobs—including text-captcha campaigns—and a worldwide worker pool completes them for pay.
- Fiverr - Freelance Service — Fiverr is an online marketplace for packaged freelance services, a longer-form gig alternative to solving on-device captcha tiles for points.
- Upwork — Upwork is a freelance platform where clients post jobs and workers submit proposals and manage contracts, unlike Captcha Entry's short on-device captcha batches.
Topics
- Captcha Entry API
- typing job points
- Paytm captcha payout
- UPI withdrawal
- pointsPerCaptcha
- railId
- streakBonusPoints
- Akash Vaghani captcha app
Need this app's data API integrated?
We deliver scoped integrations for any named app — from USD 500 with source-code handoff, or hosted access billed per call. Tell us the data you need.
- NDA + SOW on every engagement
- Delivery in 3–7 days
- Payment only after acceptance
- Work scoped to authorized use