GEMINI CHECKER / API V1
Check original activation links without redeeming them. Fast HTTPS requests use the persistent Chrome sessions. Server HTML is parsed without executing scripts; ambiguous responses fall back to a rendered browser check.
View your private API key · Manage Chrome profiles
Base URL: https://162-35-190-6.sslip.io
Authorization: Bearer YOUR_API_KEY Content-Type: application/json
POST /v1/checks — 1–5,000 original Google activation links per batch. Custom redirect domains are rejected. Input order is preserved through zero-based result indexes. Duplicate inputs are checked separately.
curl https://162-35-190-6.sslip.io/v1/checks \
-H "Authorization: Bearer $CHECKER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"links":["https://one.google.com/activate-plan/subscription/new/YOUR_LINK"]}'
HTTP 202
{"id":"JOB_ID","status":"queued","poll_url":"/v1/checks/JOB_ID"}
For large batches, poll GET /v1/checks/JOB_ID?summary=1 every 2–5 seconds for counts without downloading all results. Once completed, fetch GET /v1/checks/JOB_ID for the full result list. The existing full-results polling endpoint still works. Closing your tab does not cancel a job. Progress is checkpointed approximately every 2 seconds; an abrupt crash may recheck the most recent unsaved results. Graceful restarts save progress.
{
"id": "JOB_ID", "status": "completed",
"total": 1, "checked": 1, "elapsed_ms": 2200,
"counts": {"valid":1,"used":0,"need_new_link":0,"error":0},
"results": [{
"index":0, "status":"valid", "reason":"activation_available",
"attempts":2,
"history":[
{"profile":1,"status":"error","reason":"account_restricted"},
{"profile":2,"status":"valid","reason":"activation_available"}
]
}]
}The timing above is illustrative, not a performance guarantee. Results are retained for one hour after completion; download/store them in your own application.
| Status | Meaning |
|---|---|
| valid | Fresh activation offer with an enabled Activate plan button. The checker does not click it. |
| used | Google explicitly reports that the subscription link was already used. |
| need_new_link | Google explicitly asks for a new activation link from the provider. |
| error | No definitive link verdict after the allowed attempts. Inspect reason and history; do not treat it as invalid. |
One initial attempt plus at most three retries: up to four attempts, each on a different Chrome profile. Definitive results stop retries. Timeout, login, rate limit, account restriction and unfamiliar responses use another profile. A throttled profile cools down before more work. Retries do not hold browser capacity while waiting. If all four attempts fail, the result remains an error with its reason and attempt history.
Current tuned capacity: 30 simultaneous checks across four profiles (8 + 8 + 7 + 7 slots). Each link randomly selects an available eligible profile; sequential single-link requests are not pinned to profile 1. Random selection may choose the same profile on consecutive independent links. Retries exclude profiles already tried for that link. CPU-heavy rendered fallback is separately limited to two pages at a time. Account-restricted or signed-out profiles are deprioritized for 60 seconds while usable profiles remain available. Performance depends on Google response time, account eligibility and VPS resources; concurrency is not a completion-time guarantee.
GET /v1/status reports configured capacity and current activity. “ready” means the API is running, not that every Google login is healthy.
Maximum 5,000 links/batch; 10 pending/running batches subject to a combined 10,000-link limit; 200 retained batches subject to a combined 20,000-link limit; request body 25 MiB. These limits prevent large requests from exhausting memory. HTTP 400: invalid input; 401: wrong/missing key; 404: missing/expired job; 413: oversized request; 429: queue/retention capacity reached (retry later).
At most two request bodies are read concurrently. Bursts may receive HTTP 429 with uploads_busy or queue_full; wait for retry_after_seconds before retrying. Accepted jobs share the same 30-check capacity, not 30 checks per request. Request uploads must finish within 30 seconds. A response lost after submitting a job does not prove that submission failed; avoid blindly resubmitting accepted work.
Submitted links are stored privately on this VPS for job recovery and removed after retention. Response histories contain profile numbers, never Gmail addresses or cookies. Keep profiles signed in through the protected screen. Do not share the screen password with API clients. No proxies or cookie imports are required.