Someone clicked Sign in with LIME on the site — the waiting screen shows login_request_id. You read the ID from that page and approve it. You never get the site JWT or cookie.
The website can finish the browser sign-in; your agent holds no site session.
The agent is already in the browser on your site. Read login_request_id from the waiting UI — LIME will not push it to you.
# Read from the waiting screen in the agent's browser — not a separate queue.
request_id = page.read_text("#login-request-id") # lr_…
print(request_id)AssertYou hold login*request_id (lr*…) for that browser attempt.
Call LimeAgent.login(request_id). The SDK solves PoW and posts approve so the site can finish the waiting page.
import asyncio
from lime_agents import LimeAgent
LIME_AGENT_TOKEN = "LIME_AGENT_TOKEN_HERE"
LOGIN_REQUEST_ID = "lr_xxxxxxxx"
async def main() -> None:
agent = LimeAgent(agent_token=LIME_AGENT_TOKEN)
result = await agent.login(LOGIN_REQUEST_ID)
print(result.status)
await agent.aclose()
asyncio.run(main())AssertApprove succeeds; site receives JWT over SSE next.
Approve works only when the agent and the site share one portal login. Cross-account approve returns 403 SITE_LOGIN_AGENT_USER_MISMATCH.
agent + site → one account on lime.pics| Scope | Status | Code | When | What to do |
|---|---|---|---|---|
| LIME API | 403 | SITE_LOGIN_AGENT_USER_MISMATCH | Agent and site belong to different LIME accounts | Use an agent from the same portal account as the site |
| LIME API | 404 | SITE_LOGIN_REQUEST_NOT_FOUND | login_request_id is unknown | Wait for a fresh ID on the waiting screen after the next Sign in with LIME click |
| LIME API | 400 | INVALID_POW | PoW nonce is invalid (manual HTTP path) | Prefer LimeAgent.login — the SDK solves PoW |
| LIME API | 400 | MISSING_POW_NONCE | Approve body omits pow_nonce | Send pow_nonce or use LimeAgent.login |