Developer Portal
SOURCE LINK API · v1

Plug your image engine into human taste.

tropicaptcha shows real people two images and records which they prefer, a clean, human-verified preference signal. Expose one tiny endpoint that follows the contract below, and your images flow into live captchas worldwide. You get the aggregated preference data back. No SDK, no keys to manage, one JSON shape.

Why build a source link

Every image you serve gets placed in front of a real, bot-checked human who chooses between it and another, a clean preference signal you simply cannot buy from synthetic raters or crowd panels. The integration is one endpoint and one JSON shape, so any stack ships it in an afternoon, with no SDK and no keys to babysit.

And here is what you actually walk away with: a private, live dashboard of every preference your images collected, with plain-English breakdowns, which images win, by how much, on which devices, in which regions, and how decisively, updating as real humans keep choosing. It is a continuous read on what people genuinely prefer, feeding straight back into how you train and tune.

There is a deeper reason this data is worth more than a paid rating panel. A paid annotator is in a calm, deliberate, slightly performative frame of mind, with time on their hands and an incentive to look thoughtful. A person clearing a captcha is the opposite: fast, low-stakes, mildly impatient, just trying to get through. That is exactly the unguarded state in which real attention shows itself. The choice they make in that half-second is the honest one, what truly catches the eye and which option simply feels better, before deliberation has a chance to rewrite it. You are capturing genuine salience and gut-level preference at scale, not the considered opinion of someone being watched.

How it works

You host a source link

A single HTTPS endpoint that returns image URLs. Host it anywhere, your CDN, a serverless function, your own API.

We call it when a human needs verifying

A simple GET with ?count=2&width=512&height=640. You reply with a small JSON list of directly loadable images.

A real person picks

We render two of your images, run the bot check invisibly, and record which image the verified human preferred, plus rich context (device, region, decision time, position).

You receive the data

A private, password-protected dashboard shows every choice your source collected, with plain-English insights you can feed straight into training.

The contract

One request in, one JSON shape out. This is the entire API surface you implement.

Request: we call your URL

request
GET https://your-domain.com/your-source?count=2&width=512&height=640
# If your endpoint needs auth, we send the key you gave us:
Authorization: Bearer YOUR_KEY
countint  Minimum images to return. Usually 2. Always return at least this many.
widthint  Target image width in pixels for the card.
heightint  Target image height in pixels for the card.
Card shape (important for AI generators). The card displays images in portrait, a 4:5 aspect ratio (we request 512 × 640 by default). Generate natively at that aspect rather than making a square and cropping, cropping wastes compute and can cut off your composition. Honoring width and height means your model produces exactly what the human sees, and as preferences come back, you improve your model within those same parameters, so the gains transfer directly to production.

Response: you return this exact shape

200 · application/json
{
  "retention": "immutable",
  "images": [
    { "id": "abc123", "url": "https://your-cdn.com/img-1.png", "sha256": "9f2c…", "width": 512, "height": 640 },
    { "id": "def456", "url": "https://your-cdn.com/img-2.png", "sha256": "1a7b…", "width": 512, "height": 640 }
  ]
}
retentionrequired  Must be the string "immutable".
imagesarray  At least count items.
images[].urlrequired  A directly loadable HTTPS image (PNG, JPG, WebP, or SVG). Square renders best.
images[].idrequired  A stable identifier for the image, unique and unchanging.
images[].sha256required  The SHA-256 hash (64-char hex) of the image bytes.
images[].widthoptional  Pixel width.
images[].heightoptional  Pixel height.
Auth is optional. If your endpoint is public, ignore it. If it needs a key, hand it over once and we attach Authorization: Bearer YOUR_KEY to every request. We never expose it client-side.
Validation. Sources are checked against this contract before they go live. A response missing retention: "immutable", or any image missing id or sha256, is rejected. Meet the shape exactly and you're in.

Reference implementation

A complete, working source link. Pick your language, swap the placeholder pool for your real engine output, deploy, done.

source.js

    
Test it yourself: open https://your-domain.com/your-source?count=2&width=512&height=640 in a browser. If you see the JSON and each url opens as an image, it will work in tropicaptcha.

What you can build with it

A source link is a live feed of human aesthetic judgment. Most teams start with model training, then realize it is a general-purpose taste sensor. A few directions to spark ideas, your imagination is the real limit:

Train preference models

Turn raw human choices into reward signals for RLHF, aesthetic scorers, or ranking models, with built-in position and device debiasing.

Tune your generator live

Pit two checkpoints, prompts, or styles head-to-head and let real humans tell you which your model should favor.

Map taste by region & device

See how preferences shift across countries, mobile vs desktop, and time of day, segmentation most labs never get.

Creative A/B at scale

Test thumbnails, palettes, logos, or layouts against a global, verified human audience instead of a focus group.

Active learning loops

Serve the pairs your model is least sure about and harvest exactly the labels that move the needle.

Benchmark & leaderboard

Rank models or designers by win-rate on real human preference, a credible, ongoing quality metric.

Have an idea that isn't here? That's the point. If it produces images and benefits from knowing what humans prefer, a source link can feed it. Bring it to us.

Content guidelines

Your images appear inside a verification step real people must complete, so they stay broadly safe and welcoming. Keep these in mind:

We may pause a source that drifts from these. The goal is simple: every tropicaptcha should feel calm, premium, and trustworthy to the human solving it.

Submit your source

Built your endpoint? Send it over for review. We test it, and if it passes we wire it up and email you a private dashboard link to watch your preference data roll in.

Checklist before you send it over

Send us your source URL (and key, if any) and we'll wire it up, attach the questions shown with your images, and issue you a private data link. Questions: reach out to your tropicaptcha contact.