curl --request GET \
--url https://core-api.agentova.ai/v1/automations/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://core-api.agentova.ai/v1/automations/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://core-api.agentova.ai/v1/automations/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://core-api.agentova.ai/v1/automations/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://core-api.agentova.ai/v1/automations/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://core-api.agentova.ai/v1/automations/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://core-api.agentova.ai/v1/automations/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "aut_01HZX3Q8K5N7P2R4S6T8V0W2Y4",
"name": "Comment replies — Support Agent",
"type": "social_comments",
"provider": "instagram_page",
"agent_id": "agt_01HZX3Q8K5N7P2R4S6T8V0W2Y5",
"agent_name": "Support Agent",
"status": "active",
"updated_at": "2026-08-20T09:15:00Z"
}{
"error": {
"code": "invalid_api_key",
"message": "Invalid or revoked key — create one in Settings → API",
"details": {}
}
}{
"error": {
"code": "workspace_access_denied",
"message": "This workspace's subscription does not allow access to the API",
"details": {}
}
}{
"error": {
"code": "automation_not_found",
"message": "Automation not found in this workspace",
"details": {}
}
}{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded — retry in a few seconds",
"details": {
"retry_after_seconds": 42
}
}
}{
"error": {
"code": "service_unavailable",
"message": "The API is temporarily unavailable — retry later",
"details": {}
}
}Retrieve an automation
Returns one automation of the workspace. 404 automation_not_found when the identifier is unknown, belongs to another workspace, or designates an automation that is no longer served (deleted or deactivated in the Agentova app, or whose account was disconnected).
curl --request GET \
--url https://core-api.agentova.ai/v1/automations/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://core-api.agentova.ai/v1/automations/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://core-api.agentova.ai/v1/automations/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://core-api.agentova.ai/v1/automations/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://core-api.agentova.ai/v1/automations/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://core-api.agentova.ai/v1/automations/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://core-api.agentova.ai/v1/automations/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "aut_01HZX3Q8K5N7P2R4S6T8V0W2Y4",
"name": "Comment replies — Support Agent",
"type": "social_comments",
"provider": "instagram_page",
"agent_id": "agt_01HZX3Q8K5N7P2R4S6T8V0W2Y5",
"agent_name": "Support Agent",
"status": "active",
"updated_at": "2026-08-20T09:15:00Z"
}{
"error": {
"code": "invalid_api_key",
"message": "Invalid or revoked key — create one in Settings → API",
"details": {}
}
}{
"error": {
"code": "workspace_access_denied",
"message": "This workspace's subscription does not allow access to the API",
"details": {}
}
}{
"error": {
"code": "automation_not_found",
"message": "Automation not found in this workspace",
"details": {}
}
}{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded — retry in a few seconds",
"details": {
"retry_after_seconds": 42
}
}
}{
"error": {
"code": "service_unavailable",
"message": "The API is temporarily unavailable — retry later",
"details": {}
}
}Autorisations
API key created in the Agentova app (Settings → API), sent as Authorization: Bearer agk_live_…. One key = one workspace: the key determines the workspace, and no workspace identifier ever travels in requests. The Bearer scheme is case-insensitive. A revoked key is refused immediately.
Paramètres de chemin
Opaque aut_… identifier, as returned by the API.
Réponse
The automation
An automation of the workspace, carried out by one agent.
Opaque identifier prefixed with aut_. Stable for a given automation.
Display label in English: what the automation does, then the agent's name (for example Comment replies — Support Agent, or HubSpot contacts — Support Agent for a CRM source). For display only: it can change, and two automations can share one.
social_comments, social_story and lead_ads cover the Meta networks (Facebook, Instagram). social_messages replies to private messages on the Meta networks and on WhatsApp (the provider field tells them apart). email_messages replies to the e-mails of a Gmail, Outlook or IMAP mailbox. crm_source is an automation triggered by a CRM.
social_comments, social_story, social_messages, lead_ads, email_messages, crm_source The connected service, as a raw value. Messaging automations: facebook, instagram, instagram_page, whatsapp, gmail, microsoft_outlook, imap. CRM sources carry the name of the CRM (for example hubspot). Treat it as an open string: new values can appear.
Opaque identifier of the agent, prefixed with agt_.
Name of the agent.
active: running.paused: paused from the Agentova app or throughPATCH.draft: never activated; it has to be activated from the Agentova app.error: stopped by a failure that has to be fixed from the Agentova app (for example a lost e-mail connection, a channel that could not be reconnected on resume, or a subscription to the provider that could not be renewed).
PATCH only acts on active and paused automations.
An automation that is deleted or deactivated in the Agentova app, or
whose connected account is disconnected, is no longer returned by the
API (404 automation_not_found). When a failure is what removes it
(revoked token, mailbox authentication refused, reconnection
impossible), a last automation.status_changed event is sent first,
with status: error. When the account is reconnected, an
automation.status_changed event with status: active is sent for
each automation that comes back. A deliberate deletion sends no event.
active, paused, draft, error Date of the last change to the automation. Use it to order automation.status_changed events.