See the question
The job readsstatus needs_input, and input_request holds the question. On Instacart, a run might ask for a delivery window:
choice, multi_choice, text, confirm, secret and login.
Answer it
Answer every question at once withPOST /v1/jobs/{id}/answers or answer_job:
Keep secrets out of chat
Never ask for a password in chat. A secret or login sent through the API or MCP reaches your client and its model provider. Give the personanswer_url instead: it opens a protected Pomerado page that keeps the value out of the conversation. Never send authenticator seeds or durable tokens.
Answer in time
A question waits at most 10 minutes. Unanswered, the job fails withno_response and is never retried.
Correct a rejected saved login
When the website rejects a saved login before anything changed, the job waits instead of failing. It readsneeds_input with input_request null and error.code credentials_rejected, whose details.login_id names the login.
Give the user the page to correct it: MCP’s next names it as answer_url. Anyone who can edit that login can correct it. The job then resumes as the same job, so don’t submit it again. Uncorrected after 60 minutes, it fails with credentials_rejected.
Details
Details
- Answer formats: an option ID for
choice, an array of option IDs formulti_choice, a string fortextandsecret,{"confirmed": true}forconfirm, and{"username", "password", "save_login"}forlogin, with only the fields the question’sfieldslists. Achoicealso takes{"other": text}whenallow_otherand{"option": id, "note": text}whenallow_note. - An answer that doesn’t fit is refused with
invalid_answer, and the question stays open. A question that already closed answersinput_not_pending; read the job again. - Sending the same answers again counts as one answer.
- A login given in the call itself, or a rejected one-time code, fails the job instead of waiting. See saved logins.