curl --request GET \
--url https://api.indm.social/v1/media/{media_id} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.indm.social/v1/media/{media_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.indm.social/v1/media/{media_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"id": "3d2a7f10-9c4e-4b8a-a1f2-6e0b5d7c9a31",
"account_id": "6f1c2a9e-3b7d-4e21-9a55-0c8d2f4b7e10",
"ig_media_id": "18034567891234567",
"type": "reel",
"caption": "Three things I plant before the last frost. Comment GUIDE for the full list.",
"permalink": "https://www.instagram.com/reel/C9xYz12AbCd/",
"comments_count": 214,
"like_count": 3120,
"automations_count": 1,
"posted_at": "2026-11-05T07:30:00Z"
}{
"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 a media item
One synced post or reel.
Needs a read or full key.
curl --request GET \
--url https://api.indm.social/v1/media/{media_id} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.indm.social/v1/media/{media_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.indm.social/v1/media/{media_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"id": "3d2a7f10-9c4e-4b8a-a1f2-6e0b5d7c9a31",
"account_id": "6f1c2a9e-3b7d-4e21-9a55-0c8d2f4b7e10",
"ig_media_id": "18034567891234567",
"type": "reel",
"caption": "Three things I plant before the last frost. Comment GUIDE for the full list.",
"permalink": "https://www.instagram.com/reel/C9xYz12AbCd/",
"comments_count": 214,
"like_count": 3120,
"automations_count": 1,
"posted_at": "2026-11-05T07:30:00Z"
}{
"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 media id from List media.
Response
The post or reel.
Pass this as media_id when you create an automation.
"3d2a7f10-9c4e-4b8a-a1f2-6e0b5d7c9a31"
The account that posted it.
"6f1c2a9e-3b7d-4e21-9a55-0c8d2f4b7e10"
Instagram's own id for the post.
"18034567891234567"
post, reel, carousel "reel"
The caption. Empty when there is none.
"Three things I plant before the last frost. Comment GUIDE for the full list."
The post on Instagram.
"https://www.instagram.com/reel/C9xYz12AbCd/"
Comments at the last sync.
214
Likes at the last sync.
3120
Automations attached to this post, in any status.
1
When it was published on Instagram.
"2026-11-05T07:30:00Z"