curl --request GET \
--url https://api.indm.social/v1/automations/{automation_id}/stats \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.indm.social/v1/automations/{automation_id}/stats', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.indm.social/v1/automations/{automation_id}/stats"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"automation_id": "9a4b1c7e-2d3f-4a5b-8c6d-1e2f3a4b5c6d",
"name": "Spring guide reel",
"status": "live",
"days": 30,
"times_triggered": 240,
"messages_sent": 231,
"messages_failed": 3,
"messages_waiting": 0
}{
"error": {
"type": "invalid_request",
"code": "button_label_too_long",
"message": "The button label is 26 characters. Instagram shows up to 20, so it would be cut off.",
"param": "button_label",
"doc_url": "https://docs.indm.social/errors#button_label_too_long"
}
}{
"error": {
"type": "authentication_error",
"code": "api_key_expired",
"message": "This API key expired on 3 Feb 2027. Create a new one under Settings → API keys.",
"doc_url": "https://docs.indm.social/errors#api_key_expired"
}
}{
"error": {
"type": "not_found",
"code": "media_not_found",
"message": "There's no post with that id in this workspace. GET /v1/media lists them; refresh the account first if it was just published.",
"param": "media_id",
"doc_url": "https://docs.indm.social/errors#media_not_found"
}
}{
"error": {
"type": "rate_limited",
"code": "rate_limited",
"message": "That's more than 120 requests a minute on one key. Wait 18s and try again.",
"doc_url": "https://docs.indm.social/errors#rate_limited"
}
}{
"error": {
"type": "api_error",
"code": "internal_error",
"message": "Something went wrong on our end. Try again; if it keeps happening, quote request req_8Qm2ZcY4vN7tLp1K to support@indm.social.",
"doc_url": "https://docs.indm.social/errors#internal_error"
}
}Get automation stats
How an automation is doing over a window of days: how many times it fired, how many messages went out, how many Instagram refused and how many are still waiting. Aggregate counts only; no individual person is ever returned.
Needs a read or full key.
curl --request GET \
--url https://api.indm.social/v1/automations/{automation_id}/stats \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.indm.social/v1/automations/{automation_id}/stats', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.indm.social/v1/automations/{automation_id}/stats"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"automation_id": "9a4b1c7e-2d3f-4a5b-8c6d-1e2f3a4b5c6d",
"name": "Spring guide reel",
"status": "live",
"days": 30,
"times_triggered": 240,
"messages_sent": 231,
"messages_failed": 3,
"messages_waiting": 0
}{
"error": {
"type": "invalid_request",
"code": "button_label_too_long",
"message": "The button label is 26 characters. Instagram shows up to 20, so it would be cut off.",
"param": "button_label",
"doc_url": "https://docs.indm.social/errors#button_label_too_long"
}
}{
"error": {
"type": "authentication_error",
"code": "api_key_expired",
"message": "This API key expired on 3 Feb 2027. Create a new one under Settings → API keys.",
"doc_url": "https://docs.indm.social/errors#api_key_expired"
}
}{
"error": {
"type": "not_found",
"code": "media_not_found",
"message": "There's no post with that id in this workspace. GET /v1/media lists them; refresh the account first if it was just published.",
"param": "media_id",
"doc_url": "https://docs.indm.social/errors#media_not_found"
}
}{
"error": {
"type": "rate_limited",
"code": "rate_limited",
"message": "That's more than 120 requests a minute on one key. Wait 18s and try again.",
"doc_url": "https://docs.indm.social/errors#rate_limited"
}
}{
"error": {
"type": "api_error",
"code": "internal_error",
"message": "Something went wrong on our end. Try again; if it keeps happening, quote request req_8Qm2ZcY4vN7tLp1K to support@indm.social.",
"doc_url": "https://docs.indm.social/errors#internal_error"
}
}Authorizations
An API key from Settings → API keys in the inDM app, sent as
Authorization: Bearer indm_.... Keys belong to one workspace and carry a scope:
read for GET routes and the validate dry run, full for everything. Keep keys on
your server; never ship one to a browser or a mobile app.
Path Parameters
The automation id from List automations.
Query Parameters
How many days back to count, ending now. From 1 to 90.
1 <= x <= 90Response
The automation's results over the window.
"9a4b1c7e-2d3f-4a5b-8c6d-1e2f3a4b5c6d"
"Spring guide reel"
draft, live, paused "live"
The window these counts cover, in days, ending now.
30
Comments that matched a keyword and fired the automation.
240
Messages Instagram accepted.
231
Messages Instagram refused. Account health says why.
3
Messages queued and not yet sent.
0