curl --request PATCH \
--url https://api.entendre.finance/v1/agents/{agent_id} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '{}'const options = {
method: 'PATCH',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.entendre.finance/v1/agents/{agent_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.entendre.finance/v1/agents/{agent_id}"
payload = {}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"data": {
"id": "agt_abc123",
"name": "Monthly close assistant",
"agent_type": "custom",
"status": "paused",
"is_active": false,
"description": null,
"cron_expressions": [],
"schedule": [],
"triggers": [],
"organization_id": "org_507f1f77bcf86cd799439011",
"last_run_at": null,
"last_error_message": null,
"last_agent_run_status": null,
"owner_user_id": null,
"reviewer_user_id": null,
"created_at": "2026-08-31T12:00:00Z",
"updated_at": "2026-08-31T12:00:00Z",
"created_by": null
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid path, query or request body.",
"request_id": "req_example"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or expired API Key",
"request_id": "req_example",
"suggested_action": "Send an API key in X-API-Key, or an OAuth access token as Authorization: Bearer. Refresh an expired access token.",
"documentation_url": "https://entendre.ai/docs/get-started/authentication"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Insufficient access to organization",
"request_id": "req_example"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Resource not found",
"request_id": "req_example"
}
}{
"error": {
"code": "CONFLICT",
"message": "The resource state does not allow this operation.",
"request_id": "req_example"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Retry after 30s.",
"request_id": "req_example"
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error",
"request_id": "req_example"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "Service unavailable.",
"request_id": "req_example"
}
}Update agent
Updates the name, instructions, status, schedule, owner, reviewer or data scope of an agent. Omitted fields stay unchanged.
curl --request PATCH \
--url https://api.entendre.finance/v1/agents/{agent_id} \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '{}'const options = {
method: 'PATCH',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.entendre.finance/v1/agents/{agent_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.entendre.finance/v1/agents/{agent_id}"
payload = {}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"data": {
"id": "agt_abc123",
"name": "Monthly close assistant",
"agent_type": "custom",
"status": "paused",
"is_active": false,
"description": null,
"cron_expressions": [],
"schedule": [],
"triggers": [],
"organization_id": "org_507f1f77bcf86cd799439011",
"last_run_at": null,
"last_error_message": null,
"last_agent_run_status": null,
"owner_user_id": null,
"reviewer_user_id": null,
"created_at": "2026-08-31T12:00:00Z",
"updated_at": "2026-08-31T12:00:00Z",
"created_by": null
}
}{
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid path, query or request body.",
"request_id": "req_example"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Invalid or expired API Key",
"request_id": "req_example",
"suggested_action": "Send an API key in X-API-Key, or an OAuth access token as Authorization: Bearer. Refresh an expired access token.",
"documentation_url": "https://entendre.ai/docs/get-started/authentication"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Insufficient access to organization",
"request_id": "req_example"
}
}{
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Resource not found",
"request_id": "req_example"
}
}{
"error": {
"code": "CONFLICT",
"message": "The resource state does not allow this operation.",
"request_id": "req_example"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Retry after 30s.",
"request_id": "req_example"
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error",
"request_id": "req_example"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "Service unavailable.",
"request_id": "req_example"
}
}Authorizations
Your organization API key. See Authentication.
Headers
Optional retry key. Check X-Idempotency-Applied before relying on replay protection.
1 - 255Path Parameters
ID of the agent.
1Body
Updated display name.
Updated free-text description.
Lifecycle status. Paused and archived agents cannot start new runs.
active, paused, archived Deprecated; use status. false pauses the agent and true activates it.
Replacement schedule as cron expressions.
Human-readable schedule label.
Notification email recipients.
Slack channel id for notifications, or null to clear.
Prefixed usr_ id of the owner to assign, or null to clear.
The reviewer user id. Native tool approval requests go to this reviewer. If no reviewer is assigned, requests go to the owner.
Legal entities this agent works on. Replaces the current list, so send the full list as [{ "id": "le_…" }]. name is ignored.
100Show child attributes
Show child attributes
Sources this agent works on. Replaces the current list, so send the full list as [{ "id": "…" }]. name is ignored.
100Show child attributes
Show child attributes
MCP connections that the agent can use. Replaces the list; send [] to clear it.
50Response
The request succeeded.
Show child attributes
Show child attributes