REST API · Ad accounts
List ad posts
The posts behind the account's ads (dark posts included): reuse one with a create_ad_from_post action
GEThttps://api.apogee.ad/api/v1/ad-accounts/{acc}/posts
What it does
One row per post, with the ads using it. A new ad on the same post keeps its likes, comments and shares.
Request
GET /ad-accounts/{acc}/posts on https://api.apogee.ad/api/v1.
Path parameters
-
accstring path requiredMeta ad account id (act_…)
Query parameters
-
limitinteger query optionalPage size
-
cursorstring query optionalnext_cursor of the previous page
-
campaign_idstring query optional
Headers
-
Authorizationstring header requiredBearer apk_…: an API key with the scope of this route.
Response
200. A page of results: pass next_cursor as cursor for the next one, limit from 1 to 200 (default 50).
-
dataarray of objectsFields of each item (14)
-
object_story_idstring or nullA Facebook post: <pageId>_<postId>
-
instagram_media_idstring or null -
instagram_user_idstring or null -
page_idstring or null -
instagram_permalinkstring or null -
permalinkstring or null -
messagestring or null -
captionstring or null -
created_timestring or null -
thumbnail_urlstring or null -
media_typestring or null -
likesnumber or null -
commentsnumber or null -
adsarray of objects/ad-accounts/{acc}/posts: the ads using this post
Fields of each item (3)
-
idstring -
namestring or null -
statusstring or null
-
-
-
has_moreboolean -
next_cursorstring or null
Every answer carries X-Request-Id (give it to support), Apogee-Version: 2026-10-06, and the RateLimit and RateLimit-Policy headers.
Errors
Errors are application/problem+json with a stable code to switch on (all the codes).
| Status | Possible codes |
|---|---|
| 400 Bad request | idempotency_key_required, not_supported, request_refused, validation_failed |
| 401 Unauthorized | invalid_api_key |
| 403 Forbidden | account_not_connected, forbidden, insufficient_scope, meta_permission_denied, platform_permission_denied, upgrade_required |
| 404 Not found | not_found |
| 412 Precondition failed | drive_not_connected, meta_not_connected, platform_not_connected |
| 429 Too many requests | daily_read_cap, meta_rate_limited, platform_rate_limited, quota_exceeded, rate_limited |
| 500 Internal server error | internal_error |
| 502 Bad gateway | drive_error, launch_failed, meta_error, platform_error, upstream_error |
Example
With your key in APOGEE_API_KEY (create one):
curl 'https://api.apogee.ad/api/v1/ad-accounts/act_1234567890/posts' \
-H "Authorization: Bearer $APOGEE_API_KEY" {
"data": [
{
"object_story_id": "120200000000000001",
"instagram_media_id": "120200000000000001",
"instagram_user_id": "17840000000000001",
"page_id": "100000000000001",
"instagram_permalink": "https://www.example.com/products/nordlicht-jacket",
"permalink": "https://www.example.com/products/nordlicht-jacket",
"message": "Thanks for your message! Our team answers you in a private message.",
"caption": "Example text",
"created_time": "09:00",
"thumbnail_url": "https://www.example.com/products/nordlicht-jacket",
"media_type": "120200000000000001",
"likes": 1,
"comments": 1,
"ads": [
{
"id": "120200000000000001",
"name": "Nordlicht | Spring launch",
"status": "ACTIVE"
}
]
}
],
"has_more": false,
"next_cursor": null
} Access and cost
| Plans | Pro and Scale. |
|---|---|
| Scope | read (scopes). |
| Credits | Free up to the daily free reads (5,000 a day on Pro, 10,000 on Scale), then 1 credit per read. A request that fails costs nothing, a replayed one neither (credits). |
| Rate limit | Read: 600 per 15 minutes on Pro, 1,200 on Scale (rate limits). |
| Meta budget | Reads Meta: spends 1 unit of the account's Meta budget (1,800 per 15 minutes, 900 per ad account). |
| Daily cap | Counts 1 unit toward the 2,000 units one API key can use in 24 hours. |
In the MCP
An AI assistant does the same with this tool of the MCP server:
list_posts: Existing posts a new ad can reuse with their likes and comments: the posts behind your ads, a page's posts, or its Instagram posts.
Related operations
- List ad accounts:
GET /ad-accounts - List pages:
GET /ad-accounts/{acc}/pages - List pixels:
GET /ad-accounts/{acc}/pixels - Get pixel events:
GET /ad-accounts/{acc}/pixels/{pixel}/events - List catalogs:
GET /ad-accounts/{acc}/catalogs - List product sets:
GET /catalogs/{id}/product-sets - List custom audiences:
GET /ad-accounts/{acc}/custom-audiences - List templates:
GET /ad-accounts/{acc}/templates - List naming conventions:
GET /ad-accounts/{acc}/naming-conventions - List instagram accounts:
GET /pages/{page}/instagram-accounts - List lead forms:
GET /pages/{page}/lead-forms - List partnership creators:
GET /pages/{page}/partnership-creators - List page posts:
GET /pages/{page}/posts - Search targeting:
GET /targeting/search - List targeting options:
GET /ad-accounts/{acc}/targeting-options