← All action domains

Social

13 operations. Call each with POST https://app.chirply.io/api/v1/actions/<name> and a bearer token; the response is { "data": { "action", "summary", "result" } }. A read badge means the operation changes nothing; write requires the credential’s write scope.

Add Group handoff

social.add_groupwrite

Save a Facebook Group as a manual content-calendar destination. Meta no longer permits apps to publish to Groups, so scheduled content is prepared for a person to copy and post.

Parameters

FieldTypeRequiredDescription
namestringrequiredThe Group name shown in the calendar.
urlstring (uri)requiredThe full facebook.com/groups/… URL opened during the manual handoff.

Example

curl -X POST https://app.chirply.io/api/v1/actions/social.add_group \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Example",
    "url": "https://example.com"
  }'
Test with your API key

Over MCP the same operation is the tool social_add_group at https://app.chirply.io/api/mcp, same bearer token, same input.

Cancel post

social.cancelwrite

Cancel a draft or scheduled social post before any remaining destinations publish. Public Page posts that already succeeded are not deleted.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe social post id to cancel.

Example

curl -X POST https://app.chirply.io/api/v1/actions/social.cancel \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool social_cancel at https://app.chirply.io/api/mcp, same bearer token, same input.

Generate posts

social.generate_bulkwriteconfirm

Use its own OpenRouter account to write a reviewable batch of social posts. This consumes paid AI tokens but does not save or publish anything.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
topicstringrequiredThe campaign topic, offer, source material, or detailed writing brief.
countintegeroptionalNumber of distinct Facebook posts to generate. Default: 6
audiencestringoptionalWho these posts should speak to.
tonestringoptionalThe desired brand voice and tone.
call_to_actionstringoptionalOptional action readers should take.

Example

curl -X POST https://app.chirply.io/api/v1/actions/social.generate_bulk \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "topic": "example"
  }'
Test with your API key

Over MCP the same operation is the tool social_generate_bulk at https://app.chirply.io/api/mcp, same bearer token, same input.

Open a social post

social.get_postread

Fetch one content-calendar post and every Page or Group delivery result.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe social post id.

Example

curl -X POST https://app.chirply.io/api/v1/actions/social.get_post \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool social_get_post at https://app.chirply.io/api/mcp, same bearer token, same input.

View content calendar

social.list_calendarread

List the account's drafted, scheduled, published, failed, and manual-handoff social posts with the result for every destination.

Parameters

FieldTypeRequiredDescription
fromstring (date-time)optionalOptional inclusive start of the calendar window.
tostring (date-time)optionalOptional exclusive end of the calendar window.
limitintegeroptionalMaximum posts to return. Default: 250

Example

curl -X POST https://app.chirply.io/api/v1/actions/social.list_calendar \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "2026-09-17T15:00:00Z",
    "to": "2026-09-17T15:00:00Z"
  }'
Test with your API key

Over MCP the same operation is the tool social_list_calendar at https://app.chirply.io/api/mcp, same bearer token, same input.

List publishing destinations

social.list_destinationsread

List every place this account can put a social post: connected Facebook Pages and Instagram Professional accounts that publish automatically, and saved Facebook Groups that require a manual handoff. Each destination reports its kind (page, instagram, group) and whether it can currently publish.

Parameters

No parameters — POST an empty body.

Example

curl -X POST https://app.chirply.io/api/v1/actions/social.list_destinations \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{}'
Test with your API key

Over MCP the same operation is the tool social_list_destinations at https://app.chirply.io/api/mcp, same bearer token, same input.

Mark Group posted

social.mark_group_postedwrite

Record that a person copied this scheduled content into its Facebook Group. This does not call Facebook or create a post itself.

Parameters

FieldTypeRequiredDescription
destination_idstring (uuid)requiredThe Group handoff destination id.

Example

curl -X POST https://app.chirply.io/api/v1/actions/social.mark_group_posted \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "destination_id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool social_mark_group_posted at https://app.chirply.io/api/mcp, same bearer token, same input.

Publish now

social.publish_nowwriteconfirm

Immediately creates REAL public posts on every selected Facebook Page and Instagram account. There is no undo on Facebook or Instagram. Group destinations become ready-to-copy manual handoffs and are not posted automatically.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
messagestringoptionalThe post text or caption. Default: ""
link_urlstring (uri)optionalOptional public http(s) link Facebook attaches to the post — as a preview card when there is no image, or appended to the caption when there is. Instagram destinations ignore it.
image_urlstring (uri)optionalPublic http(s) image URL that Meta downloads when the post publishes. Optional for Facebook; REQUIRED whenever instagram_ids is non-empty, and Instagram accepts https only.
page_idsstring[]optionalFacebook Page ids to publish automatically. Get valid ids from social.list_destinations. Default: []
instagram_idsstring[]optionalInstagram Professional account ids to publish automatically. Get valid ids from social.list_destinations. Instagram posts REQUIRE image_url (there is no text-only Instagram post), cap the caption at 2,200 characters, and ignore link_url because Instagram captions cannot contain a clickable link. Default: []
group_idsarray of (string (uuid))optionalSaved Facebook Group ids that become manual posting handoffs because Meta no longer permits API publishing to Groups. Default: []

Example

curl -X POST https://app.chirply.io/api/v1/actions/social.publish_now \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "",
    "link_url": "https://example.com"
  }'
Test with your API key

Over MCP the same operation is the tool social_publish_now at https://app.chirply.io/api/mcp, same bearer token, same input.

Remove Group handoff

social.remove_groupwrite

Remove a saved Group from future destination pickers. Existing scheduled posts keep their destination snapshot.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe saved Group id to remove.

Example

curl -X POST https://app.chirply.io/api/v1/actions/social.remove_group \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool social_remove_group at https://app.chirply.io/api/mcp, same bearer token, same input.

Retry failed destinations

social.retrywriteconfirm

Retries every failed destination immediately, creating REAL public Facebook or Instagram posts where the retry succeeds. Destinations already published are not duplicated.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
idstring (uuid)requiredThe failed social post id.

Example

curl -X POST https://app.chirply.io/api/v1/actions/social.retry \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11"
  }'
Test with your API key

Over MCP the same operation is the tool social_retry at https://app.chirply.io/api/mcp, same bearer token, same input.

Save content batch

social.save_bulkwriteconfirm

Save 2–12 social posts as drafts, or schedule the series across the selected destinations. Scheduled posts create real public posts at their publishing times. Every post in a series shares one set of destinations and none of them carry an image, so an Instagram destination is rejected outright here — schedule Instagram posts one at a time with social.schedule.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
messagesstring[]requiredThe reviewed post captions to save in order.
page_idsstring[]optionalFacebook Page ids to publish automatically. Get valid ids from social.list_destinations. Default: []
instagram_idsstring[]optionalInstagram Professional account ids to publish automatically. Get valid ids from social.list_destinations. Instagram posts REQUIRE image_url (there is no text-only Instagram post), cap the caption at 2,200 characters, and ignore link_url because Instagram captions cannot contain a clickable link. Default: []
group_idsarray of (string (uuid))optionalSaved Facebook Group ids that become manual posting handoffs because Meta no longer permits API publishing to Groups. Default: []
mode"draft" | "schedule"optionalSave private drafts or schedule the complete series. Default: "draft"
start_atstring (date-time)optionalPublishing time for the first post; required in schedule mode.
cadence_daysintegeroptionalDays between scheduled posts. Default: 1

Example

curl -X POST https://app.chirply.io/api/v1/actions/social.save_bulk \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "messages": [
      "example",
      "example"
    ]
  }'
Test with your API key

Over MCP the same operation is the tool social_save_bulk at https://app.chirply.io/api/mcp, same bearer token, same input.

Save draft

social.save_draftwrite

Save social content and its destinations without publishing or scheduling anything. Content is still validated against every selected network, so an Instagram destination without an image is rejected now rather than at publishing time. Facebook Groups remain manual handoffs.

Parameters

FieldTypeRequiredDescription
idstring (uuid)optionalExisting editable post id; omit to create a draft.
messagestringoptionalThe post text or caption. Default: ""
link_urlstring (uri)optionalOptional public http(s) link Facebook attaches to the post — as a preview card when there is no image, or appended to the caption when there is. Instagram destinations ignore it.
image_urlstring (uri)optionalPublic http(s) image URL that Meta downloads when the post publishes. Optional for Facebook; REQUIRED whenever instagram_ids is non-empty, and Instagram accepts https only.
page_idsstring[]optionalFacebook Page ids to publish automatically. Get valid ids from social.list_destinations. Default: []
instagram_idsstring[]optionalInstagram Professional account ids to publish automatically. Get valid ids from social.list_destinations. Instagram posts REQUIRE image_url (there is no text-only Instagram post), cap the caption at 2,200 characters, and ignore link_url because Instagram captions cannot contain a clickable link. Default: []
group_idsarray of (string (uuid))optionalSaved Facebook Group ids that become manual posting handoffs because Meta no longer permits API publishing to Groups. Default: []

Example

curl -X POST https://app.chirply.io/api/v1/actions/social.save_draft \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "2f6a1c1e-6c3b-4c62-9f6e-8a2d4b7c9e11",
    "message": ""
  }'
Test with your API key

Over MCP the same operation is the tool social_save_draft at https://app.chirply.io/api/mcp, same bearer token, same input.

Schedule post

social.schedulewriteconfirm

Schedule this content to publish to every selected Facebook Page and Instagram account at the specified time. Real public posts will be created automatically on the org's own connected Meta assets. Selected Groups become manual handoffs because Meta removed Group publishing from its API.

Marked confirm: this operation is irreversible, reaches real people, or spends money. Holding a credential is itself the confirmation for API and MCP callers — call it only when you mean it. The in-app assistant refuses to run it without a human approving first.

Parameters

FieldTypeRequiredDescription
idstring (uuid)optionalExisting editable post id; omit to create a scheduled post.
messagestringoptionalThe post text or caption. Default: ""
link_urlstring (uri)optionalOptional public http(s) link Facebook attaches to the post — as a preview card when there is no image, or appended to the caption when there is. Instagram destinations ignore it.
image_urlstring (uri)optionalPublic http(s) image URL that Meta downloads when the post publishes. Optional for Facebook; REQUIRED whenever instagram_ids is non-empty, and Instagram accepts https only.
page_idsstring[]optionalFacebook Page ids to publish automatically. Get valid ids from social.list_destinations. Default: []
instagram_idsstring[]optionalInstagram Professional account ids to publish automatically. Get valid ids from social.list_destinations. Instagram posts REQUIRE image_url (there is no text-only Instagram post), cap the caption at 2,200 characters, and ignore link_url because Instagram captions cannot contain a clickable link. Default: []
group_idsarray of (string (uuid))optionalSaved Facebook Group ids that become manual posting handoffs because Meta no longer permits API publishing to Groups. Default: []
scheduled_atstring (date-time)requiredWhen publishing should begin, as an ISO 8601 timestamp.

Example

curl -X POST https://app.chirply.io/api/v1/actions/social.schedule \
  -H "Authorization: Bearer chp_live_…" \
  -H "Content-Type: application/json" \
  -d '{
    "scheduled_at": "2026-09-17T15:00:00Z"
  }'
Test with your API key

Over MCP the same operation is the tool social_schedule at https://app.chirply.io/api/mcp, same bearer token, same input.

The machine-readable version of this page is GET https://app.chirply.io/api/v1/actions?domain=social — same operations, with full JSON Schemas. Authentication, errors and rate limits are covered in the API documentation home.