Skip to content

Placements API Reference

The Placements API is the account-wide view of every placement your profiles can post to — Facebook Pages, LinkedIn organizations, Pinterest boards, Telegram channels, Google Business locations. One placement record exists per account, platform, and platform ID, even when several connected profiles can see it; exactly one of those profiles is the active profile that posting and webhooks route through.

For the per-profile placement list (used to pick a page_id when posting), see List placements.

MethodEndpointDescription
GET/api/placementsList all placements across the account
PATCH/api/placements/:id/set_active_profileSwitch which connected profile serves a placement

FieldTypeDescription
idstringPlacement ID. Note: this is Postproxy’s own ID, used in the URLs below — not the platform ID
platformstringPlatform the placement belongs to (facebook, linkedin, pinterest, telegram, google_business)
external_idstringPlatform-specific ID — the value used as page_id / chat_id when creating posts, and returned as id by List placements
namestringPlacement name
statusstringactive (the active profile is connected), orphaned (the active profile is disconnected — posting is paused until you switch to a connected profile), or removed (access was revoked on the platform)
active_profileobjectThe profile posting routes through: id, name, connected
linked_profilesarrayEvery profile that can see this placement (id, name, connected) — the candidates for Set active profile

The active profile never changes automatically while it can still serve the placement. If it disconnects, the placement may be handed to another linked, connected profile; otherwise it stays orphaned until you switch it here or in the web app.


GET /api/placements

Retrieves every placement on the account, across all platforms and profile groups.

Sandbox API keys list sandbox placements; live keys list live placements.

ParameterTypeRequiredDefaultDescription
pageintegerNo1Page number (1-based)
per_pageintegerNo25Results per page (maximum 100)
Terminal window
curl -X GET "https://api.postproxy.dev/api/placements" \
-H "Authorization: Bearer YOUR_API_KEY"

Response:

{
"total": 2,
"page": 1,
"per_page": 25,
"data": [
{
"id": "plc123abc",
"platform": "facebook",
"external_id": "967627696429808",
"name": "Acme Store",
"status": "active",
"active_profile": {
"id": "prof123abc",
"name": "Acme Facebook",
"connected": true
},
"linked_profiles": [
{ "id": "prof123abc", "name": "Acme Facebook", "connected": true },
{ "id": "prof456def", "name": "Acme Backup", "connected": true }
]
}
]
}

PATCH /api/placements/:id/set_active_profile

Switches which connected profile serves the placement — posting and webhook traffic route through it from then on.

ParameterTypeRequiredDescription
idstringYesPlacement ID (the id from List placements, not the platform ID)
ParameterTypeRequiredDescription
profile_idstringYesProfile to make active. Must be listed in the placement’s linked_profiles and be connected
Terminal window
curl -X PATCH "https://api.postproxy.dev/api/placements/plc123abc/set_active_profile" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"profile_id": "prof456def"
}'

Response — the updated Placement object. Switching an orphaned placement to a connected profile also fires the placement.restored webhook.

Placement or profile not found (404):

{
"error": "Not found"
}

Profile cannot serve the placement (422):

{
"error": "Profile is not linked to this placement"
}

Also returned as "Profile is not connected" when the target profile is disconnected, and "Profile is in a different environment" when it lives in the other live/sandbox environment.

Missing profile_id (400):

{
"status": 400,
"error": "Bad Request",
"message": "param is missing or the value is empty or invalid: profile_id"
}