Developers · Human in the loop

Human-in-the-loop AI: an API for real human judgement

Human in the loop AI is useful when software needs a person's judgement before acting. PennyForYours is building a human in the loop platform for short questions to 5 to 50 verified UK adults. Its crowdsourcing API is available by invitation in a sandbox, where every answer is synthetic. Live human responses through the API are not open yet.

Last checked

Example API card: POST /v1/questions, quick_pick, pool 20, and a closed sandbox result with counts A 14, B 6
A crowdsourcing API call and its closed result, side by side. Fictional example.

When a human in the loop platform helps

Once live answering opens, use this human in the loop platform when a decision needs a first reaction rather than a calculation. Suppose an agent has drafted two replies to a customer. Before it sends one, it could ask five people which is clearer and what tripped them up. The same pattern could work for a delicate email or two product images. Keep the question neutral and put the result in front of the person who owns the decision. The quickstart shows the sandbox REST flow.

A small pool may give you a direction and reasons to inspect. It does not establish what a whole market would do. Read the comments alongside the split, especially when the choices are close.

Sandbox only during early access. Its synthetic test members let you test the integration; they provide no customer evidence. Live requests, paid answering and targeted panels are not open. A question goes to 5 to 50 people. If you need thousands of labels, or a decision before the next API call returns, this is the wrong tool.

Request and response from a crowdsourcing API

Start with GET /v1/question-types. You can request a launch-example quote, then send the question with a unique idempotency key. This example uses a sandbox key and fictional values:

POST /v1/quotes
Authorization: Bearer pfy_test_...
Content-Type: application/json

{"type":"quick_pick","prompt":"Which reply sounds clearer?","options":["Reply A","Reply B"],"pool":5}

POST /v1/questions
Idempotency-Key: example-unique-request-1

{"type":"quick_pick","prompt":"Which reply sounds clearer?","options":["Reply A","Reply B"],"pool":5,"quote_id":"example_quote_id"}

POST /v1/questions returns a question ID and cursor. Pass both to GET /v1/questions/{id}?cursor=…&wait_seconds=25 to wait for a change. The result contains the count or rating, individual reasons and a short summary. In the sandbox, every answer is marked synthetic. One quick judgement call is not a substitute for a full user study.

Check a human in the loop AI receipt

Each answer has a signed ES256 JWS receipt. It binds the question, the exact asset shown, the answer and its status without naming the member. Verify a live receipt against /.well-known/jwks.json. Sandbox receipts use /v1/sandbox/jwks.json and explicitly say they are synthetic; they are not proof that a person responded. The receipt guide has verification steps and the claim fields.

Answer receipt panel with three green checks: signature valid (ES256), answer matches, status accepted
Every answer on this human in the loop platform carries a signed receipt you can check. Demo data.

Receipts in the docs

API pricing and current limits

Nothing is charged for synthetic sandbox answers. Asking is free during early access. At paid launch, a quick take is planned from 30p an answer plus 50p a question (launch example); 20 quick takes come to about £6.50. These are asker prices, and the paid launch has no date. A sandbox key is issued by invitation. See developer pricing and current request limits before building around a particular rate.

Example diagram in four steps: agent request, question pool, human answers, signed receipt
Where people sit in a human in the loop AI workflow. Fictional example.

Questions before integrating

What is human in the loop AI?
It routes a decision to people before software acts or treats the result as settled. Here, a workflow can ask a small UK pool for quick preferences and reasons. A person still needs to judge whether the question and sample fit the decision.
How long do human answers take?
We aim for first answers within about 15 minutes in UK daytime once live answering opens, but that is an estimate. Early access can be slower. The sandbox uses synthetic test members, usually responding within a few minutes. Build for asynchronous results using the returned cursor or event stream.
Is there a crowdsourcing API for opinions?
Yes. The REST API and MCP server accept quick judgement questions. Access is by invitation and sandbox only for now. Test with the quickstart, then check the current OpenAPI reference before relying on any field in production code.
Do sandbox answers come from real people?
No. Sandbox answers come from synthetic test members and carry explicit sandbox markers. They let you test requests, polling, error handling and receipt verification. They must not be presented as human feedback or used as evidence for a product decision.
How can I check that a person answered?
A live answer will have a signed receipt that lists its status and the checks it passed without identifying the member. Verify the signature against the public JWKS and compare the signed claims with the question and asset you sent. A sandbox receipt uses a separate key and identifies itself as synthetic.
Can I target a particular audience?
Not yet. The current plan is a pool of 5 to 50 verified UK adults; age, location and interest targeting are planned. If your decision requires a specific customer segment, wait for those controls or use a research method that can recruit it. A general-pool result is not representative of that segment.

Get a sandbox key

Use the developer route on the contact page. A real person replies.

Request a sandbox key