Post Ideas
Read, create, and publish drafted post ideas awaiting review, and publish them as real posts.
Returns post ideas in one of three modes: pass locationId for a single location's grid (paginated); pass clientId with scope=locations for the roll-up of location-scoped ideas across a client's locations; or pass clientId with scope=brand for that client's brand-level ideas.
List post ideas
/api/v1/post-ideas{
"data": {
"rows": [
{
"id": "cm_idea_abc123",
"agencyId": "cm_agency_1",
"locationId": "cm_loc_1",
"clientLocationId": "cm_loc_1",
"clientId": null,
"brandName": null,
"agentMeta": null,
"title": "Spotlight our new patient special",
"content": "Book this month and get 20% off your first cleaning!",
"imagePrompt": null,
"imageUrl": null,
"type": "announcement",
"status": "draft",
"bucket": "idea",
"platforms": [
"google",
"facebook"
],
"seriesId": null,
"scheduledDate": null,
"scheduledTime": null,
"observanceName": null,
"observanceDate": null,
"generationBatchId": null,
"generationJobId": null,
"isUserGenerated": true,
"source": "os",
"externalId": "cm_idea_abc123",
"reviewStatus": null,
"archived": false,
"archivedAt": null,
"createdAt": "2026-01-20T09:00:00.000Z",
"updatedAt": "2026-01-20T09:00:00.000Z"
}
],
"total": 1,
"page": 1,
"perPage": 20,
"counts": [
{
"bucket": "idea",
"_count": {
"id": 4
}
}
]
}
}Creates (or, for a repeated externalId, updates) a draft post idea, awaiting review or ready to publish.
Create a post idea
/api/v1/post-ideas{
"data": {
"id": "cm_idea_abc123",
"created": true,
"reviewStatus": null,
"status": "draft"
}
}Returns a single post idea. id accepts either its own id or the external id it was created with.
Get a post idea
/api/v1/post-ideas/{id}{
"data": {
"id": "cm_idea_abc123",
"agencyId": "cm_agency_1",
"locationId": "cm_loc_1",
"clientLocationId": "cm_loc_1",
"clientId": null,
"brandName": null,
"agentMeta": null,
"title": "Spotlight our new patient special",
"content": "Book this month and get 20% off your first cleaning!",
"imagePrompt": null,
"imageUrl": null,
"type": "announcement",
"status": "draft",
"bucket": "idea",
"platforms": [
"google",
"facebook"
],
"seriesId": null,
"scheduledDate": null,
"scheduledTime": null,
"observanceName": null,
"observanceDate": null,
"generationBatchId": null,
"generationJobId": null,
"isUserGenerated": true,
"source": "os",
"externalId": "cm_idea_abc123",
"reviewStatus": null,
"archived": false,
"archivedAt": null,
"createdAt": "2026-01-20T09:00:00.000Z",
"updatedAt": "2026-01-20T09:00:00.000Z"
}
}Updates a post idea's editable fields. id accepts either its own id or the external id it was created with.
Update a post idea
/api/v1/post-ideas/{id}{
"data": {
"id": "cm_idea_abc123",
"agencyId": "cm_agency_1",
"locationId": "cm_loc_1",
"clientLocationId": "cm_loc_1",
"clientId": null,
"brandName": null,
"agentMeta": null,
"title": "Spotlight our new patient special (updated)",
"content": "Book this month and get 25% off your first cleaning!",
"imagePrompt": null,
"imageUrl": null,
"type": "announcement",
"status": "draft",
"bucket": "idea",
"platforms": [
"google",
"facebook"
],
"seriesId": null,
"scheduledDate": null,
"scheduledTime": null,
"observanceName": null,
"observanceDate": null,
"generationBatchId": null,
"generationJobId": null,
"isUserGenerated": true,
"source": "os",
"externalId": "cm_idea_abc123",
"reviewStatus": null,
"archived": false,
"archivedAt": null,
"createdAt": "2026-01-20T09:00:00.000Z",
"updatedAt": "2026-01-20T09:05:00.000Z"
}
}Soft-deletes (archives) a post idea. id accepts either its own id or the external id it was created with.
Archive a post idea
/api/v1/post-ideas/{id}{
"data": {
"id": "cm_idea_abc123",
"archived": true
}
}Publishes a post idea as a real post, submitting it to its target platforms. Unless scheduledFor or draft is set, this sends real content live immediately. id accepts either the idea's own id or the external id it was created with.
Publish a post idea
/api/v1/post-ideas/{id}/publish{
"data": {
"postId": "cm_post_xyz789",
"status": "scheduled",
"ideaId": "cm_idea_abc123"
}
}