Skip to main content
POST
Duplicate an agent

Authorizations

Authorization
string
header
required

An org API key (gh_live_…) from Settings → API keys in the console.

Path Parameters

agent_id
string
required

The agent’s id, e.g. billing.

Response

OK

object
any
agent_id
string
Example:

"billing"

name
string
Example:

"Billing help"

instructions
string

Added under Eager’s own rules, which always win.

model
enum<string> | null

The AI model the agent runs on: claude-haiku-5-5, claude-sonnet-5-5, claude-opus-5-5 or claude-fable-5-1 (Anthropic), gpt-6-luna, gpt-6.1-sol or gpt-6-astra (OpenAI), gemini-3.8-flash or gemini-4-argon (Google). Null for Eager’s default, GPT-6 Astra (gpt-6-astra). It sets the price of the agent’s tokens (US$ per million: see /pricing). Starting a task with a model this server can’t run returns 503 with code: "model_unavailable".

Available options:
claude-haiku-5-5,
claude-sonnet-5-5,
claude-opus-5-5,
claude-fable-5-1,
gpt-6-luna,
gpt-6.1-sol,
gpt-6-astra,
gemini-3.8-flash,
gemini-4-argon,
null
effort
enum<string> | null

How much the model thinks per step. Null for Eager’s default (Low). It has no price of its own: more thinking uses more tokens.

Available options:
low,
medium,
high,
null
greeting
string

The agent’s first message: it opens every new conversation (the first item, before the person’s message) and is shown on the invite page.

display_name
string

What the Eager app calls the agent on the person’s screen while it works (“Acme Support is typing”). Empty means “Eager”.

Example:

"Acme Support"

narration
boolean

The app shows the agent’s thoughts and steps on the person’s screen as it works, and its summary when it finishes. These are the agent’s own words, so they can repeat what your team answered. Off: no thoughts, steps or summary; they see the banner with the Stop button (and the agent’s questions and approval requests, if customer_answers and customer_approvals are on).

customer_answers
boolean

The person at the computer can answer the agent’s questions in the Eager app (your team still can too; the first answer is used). Off: only your team answers, and the question isn’t shown on the person’s screen.

customer_approvals
boolean

The person at the computer can approve or deny the agent’s approval requests in the Eager app (your team still can too; the first decision is used). Off: only your team decides, and the request isn’t shown on the person’s screen.

guardrails
object

Rules Eager enforces on each action the agent asks for, before it runs. They add to Eager’s own rules and can’t loosen them. In order, the first that applies decides: text that looks like a secret, or typing into a password field, is not typed (the person is asked to type it); a match in apps.block or sites.block is blocked; with a non-empty apps.allow or sites.allow, anything not on it is blocked; a step in a block category is blocked; a step in a confirm category waits for an approval; anything else runs. On a Mac (Eager 1.0.20 or later) a step’s category comes from what it would do: what’s under a click; what Space, Return or Enter presses (the focused button, or a dialog’s default button); Cmd/Ctrl+Enter, and Enter in a message box, count as sending; Delete or Backspace outside a text field counts as deleting; both ends of a drag (dropping on the Trash counts as deleting); and typed text a line at a time (text holding a secret is refused whole). A click or acting key Eager can’t see waits for an approval when the agent has any confirm or block categories. A Mac where Eager isn’t allowed Accessibility can’t check guardrails, so a task with rules to check fails at start. On Windows, and before 1.0.20, categories rest on the agent’s own approval requests. Always returned whole, with defaults filled in.

tools
object

The agent’s tools beyond the computer: its own file system (on by default) your HTTP tools, and its cloud browser’s sign-ins, and Run code. Part of its config, so versioned with it. Always returned whole, with defaults filled in.

resources
object

Where the agent’s tasks may run. browser: its own cloud browser in each conversation (enabled, off by default; start_url, an absolute http(s) address where it opens; keep_logins, the same setting as tools.browser.keep_logins). computers: up to 50 linked computers and pools for its desktop tasks, used in order, whichever is free first. Send part of it to change only those keys; computers, when sent, is the whole list; browser: null turns the browser off and resources: null resets both.

Example:
escalations
object

What needs the team, and whether the agent's procedure runs are checked. Every key is on by default. Returned whole; in a change, send only the keys that change (null turns them all back on).

voice
enum<string> | null

The voice it speaks with on GPT-Live: in Coach by voice and on phone calls to its numbers. null means the default, marin. Voices are listed by language at https://developers.openai.com/api/docs/guides/live-conversations#voice-options.

Available options:
marin,
gleam,
meridian,
vesper,
willow,
stone,
quartz,
ripple,
delta,
cinder,
beacon,
bossa,
tempo,
nuri,
juni,
flitz,
brise,
sillage,
nira,
harema,
shida,
noeul,
null
Example:

"meridian"

folder_id
string | null

The folder it’s in (client.agentFolders); null at the top. Moving an agent makes no new version.

invite_url_template
string
Example:

"https://guidinghand.ai/acme/billing/{code}"

version
integer

The published version: what sessions and tasks run. 1 when the agent is made; each publish adds one.

Required range: x >= 0
Example:

3

has_draft
boolean

It has unpublished changes (GET /v1/agents/{agent_id}/draft).

created_by
Person · object

Who made it.

updated_by
Person · object

Who last changed it: saved its draft, published it or restored a version.

created_at
string<date-time> | null
updated_at
string<date-time> | null