curl --request DELETE \
--url https://guidinghand.ai/v1/agents/{agent_id}/draft \
--header 'Authorization: Bearer <token>'const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://guidinghand.ai/v1/agents/{agent_id}/draft', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://guidinghand.ai/v1/agents/{agent_id}/draft"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text){
"object": "agent",
"agent_id": "billing",
"name": "Billing help",
"instructions": "<string>",
"model": "claude-sonnet-5-5",
"effort": "low",
"greeting": "<string>",
"display_name": "Acme Support",
"narration": true,
"customer_answers": true,
"customer_approvals": true,
"guardrails": {
"mode": "supervised",
"confirm": [
"purchase",
"send",
"delete",
"install",
"security",
"terms"
],
"block": [],
"apps": {
"allow": [],
"block": []
},
"sites": {
"allow": [],
"block": []
},
"safety_checks": "ask",
"scope": "",
"screen_check": false,
"max_steps": 150,
"max_minutes": null,
"approval_timeout_minutes": null
},
"tools": {
"files": {
"enabled": true,
"access": "read_write"
},
"http": []
},
"is_default": true,
"invite_url_template": "https://guidinghand.ai/acme/billing/{code}",
"version": 3,
"has_draft": true,
"created_by": {
"type": "user",
"email": "jane@acme.com"
},
"updated_by": {
"type": "user",
"email": "jane@acme.com"
},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"error": {
"type": "invalid_request",
"message": "<string>",
"code": "<string>",
"answered_by": "customer",
"test_case_ids": [
"<string>"
]
}
}{
"error": {
"type": "invalid_request",
"message": "<string>",
"code": "<string>",
"answered_by": "customer",
"test_case_ids": [
"<string>"
]
}
}{
"error": {
"type": "invalid_request",
"message": "<string>",
"code": "<string>",
"answered_by": "customer",
"test_case_ids": [
"<string>"
]
}
}Discard the draft
Drops the unpublished changes, and returns the agent as published.
curl --request DELETE \
--url https://guidinghand.ai/v1/agents/{agent_id}/draft \
--header 'Authorization: Bearer <token>'const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://guidinghand.ai/v1/agents/{agent_id}/draft', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://guidinghand.ai/v1/agents/{agent_id}/draft"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text){
"object": "agent",
"agent_id": "billing",
"name": "Billing help",
"instructions": "<string>",
"model": "claude-sonnet-5-5",
"effort": "low",
"greeting": "<string>",
"display_name": "Acme Support",
"narration": true,
"customer_answers": true,
"customer_approvals": true,
"guardrails": {
"mode": "supervised",
"confirm": [
"purchase",
"send",
"delete",
"install",
"security",
"terms"
],
"block": [],
"apps": {
"allow": [],
"block": []
},
"sites": {
"allow": [],
"block": []
},
"safety_checks": "ask",
"scope": "",
"screen_check": false,
"max_steps": 150,
"max_minutes": null,
"approval_timeout_minutes": null
},
"tools": {
"files": {
"enabled": true,
"access": "read_write"
},
"http": []
},
"is_default": true,
"invite_url_template": "https://guidinghand.ai/acme/billing/{code}",
"version": 3,
"has_draft": true,
"created_by": {
"type": "user",
"email": "jane@acme.com"
},
"updated_by": {
"type": "user",
"email": "jane@acme.com"
},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}{
"error": {
"type": "invalid_request",
"message": "<string>",
"code": "<string>",
"answered_by": "customer",
"test_case_ids": [
"<string>"
]
}
}{
"error": {
"type": "invalid_request",
"message": "<string>",
"code": "<string>",
"answered_by": "customer",
"test_case_ids": [
"<string>"
]
}
}{
"error": {
"type": "invalid_request",
"message": "<string>",
"code": "<string>",
"answered_by": "customer",
"test_case_ids": [
"<string>"
]
}
}Authorizations
An org API key (gh_live_…) from Settings → API keys in the console.
Path Parameters
The agent’s id, e.g. billing or default.
Response
OK
"billing"
"Billing help"
Added under GuidingHand’s own rules, which always win.
The AI model the agent runs on: claude-sonnet-5-5, claude-opus-5-5 or claude-fable-5-1 (Anthropic), gpt-6.1-sol or gpt-6-astra (OpenAI), gemini-3.8-flash (Google). Null for GuidingHand’s default, GPT-6 Astra (gpt-6-astra). With effort, it sets the per-minute price (see /pricing). Starting a task with a model this server can’t run returns 503 with code: "model_unavailable".
claude-sonnet-5-5, claude-opus-5-5, claude-fable-5-1, gpt-6.1-sol, gpt-6-astra, gemini-3.8-flash, null How much the model thinks per step. Null for GuidingHand’s default (Low). With model, it sets the per-minute price (see /pricing).
low, medium, high, null Shown to the person on the invite page.
What the GuidingHand app calls the agent on the person’s screen while it works (“Acme Support is typing”). Empty means “GuidingHand”.
"Acme Support"
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).
The person at the computer can answer the agent’s questions in the GuidingHand 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.
The person at the computer can approve or deny the agent’s approval requests in the GuidingHand 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.
Rules GuidingHand enforces on each action the agent asks for, before it runs. They add to GuidingHand’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 (GuidingHand 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 GuidingHand can’t see waits for an approval when the agent has any confirm or block categories. A Mac where GuidingHand 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.
Show child attributes
Show child attributes
The agent’s tools beyond the computer: its own file system (on by default) and your HTTP tools. Part of its config, so versioned with it. Always returned whole, with defaults filled in.
Show child attributes
Show child attributes
"https://guidinghand.ai/acme/billing/{code}"
The published version: what sessions and tasks run. 1 when the agent is made; each publish adds one. 0: the default agent before it was first published.
x >= 03
It has unpublished changes (GET /v1/agents/{agent_id}/draft).
Who made it.
- Person
- API key
Show child attributes
Show child attributes
Who last changed it: saved its draft, published it or restored a version.
- Person
- API key
Show child attributes
Show child attributes