gh.agents.list() | GET /v1/agents |
gh.agents.create({ name, agent_id?, instructions?, effort?, greeting?, display_name?, narration?, customer_answers?, customer_approvals? }) | POST /v1/agents |
gh.agents.retrieve(agentId) / .update(agentId, fields) / .delete(agentId) | GET, PATCH, DELETE /v1/agents/{agent_id} |
gh.sessions.create({ agent_id?, metadata? }) | POST /v1/sessions |
gh.sessions.list({ agent_id?, limit?, cursor? }), .listAll({ agent_id? }) | GET /v1/sessions |
gh.sessions.retrieve(id) / .delete(id) | GET, DELETE /v1/sessions/{session_id} |
gh.sessions.waitForConnection(id, { timeout?, pollInterval? }) | polls until status is connected |
gh.tasks.create(sessionId, { prompt, agent_id?, request_id?, metadata? }) | POST /v1/sessions/{session_id}/tasks |
gh.tasks.run(sessionId, { prompt, onEvent?, onQuestion?, onApproval?, timeout? }) | create, then follow and answer to the end |
gh.tasks.list({ session_id?, agent_id?, status?, limit?, cursor? }), .listAll(...) | GET /v1/tasks |
gh.tasks.retrieve(taskId, { include: ['events', 'trace'] }) | GET /v1/tasks/{task_id} |
gh.tasks.events(taskId, { after, wait_ms }) | GET /v1/tasks/{task_id}/events |
gh.tasks.stream(taskId) | an async iterator of events until the task is done |
gh.tasks.respond(taskId, { question_id, answer } | { approval_id, decision, note? }) | POST /v1/tasks/{task_id}/respond |
gh.tasks.stop(taskId) | POST /v1/tasks/{task_id}/stop |
gh.tasks.recording(taskId) / .recordingFrame(taskId, seq) | GET /v1/tasks/{task_id}/recording[/{seq}] (PNG bytes) |
gh.webhook.retrieve() / .update({ url, events?, rotate_secret? }) / .delete() | GET, PUT /v1/webhook |