Changelog
Track updates, new features, and improvements to the Oktopost API.
Stay up to date with the latest changes, new features, and improvements to the Oktopost API. We're constantly working to enhance the API experience and add new capabilities.
[Version 2.23.0] - 2026-11-01
Added
- Documented the
languagefilter on List Conversations (GET /v2/conversation). It takes a comma-separated list of ISO 639 language codes, andundmatches conversations with no detected language. An unknown code returns 400. - Documented
languageon MCPlist_conversations, with the same codes as the API.
[Version 2.22.2] - 2026-10-26
Changed
MCP tools now check the network names you pass in, and tell you which ones they support. This applies only to the MCP server and these docs. REST API calls work as before. See Networks.
- Clearer errors: If a network name is unknown or empty, the tool rejects it and lists the names it accepts.
- Spelling is corrected for you:
YouTubeandyoutubebecomeYoutube, andBlueSkybecomesBluesky. This applies tocreate_message,list_social_profiles,list_conversations, andget_calendar. - Filtering by several networks:
- In
list_conversations, separate networks with commas, for exampleFacebook,LinkedIn. - In
get_calendar, passnetworksas a list inside thefiltersJSON. If a network is rejected, your other filters still apply.
- In
list_messagesignores the network filter: Filter by campaign or message IDs instead.
Supported networks by tool
| Network | create_message / list_social_profiles | list_conversations | get_calendar | validate_video_upload |
|---|---|---|---|---|
| ✓ | ✓ | ✓ | ✓ | |
| ✓ | ✓ | ✓ | ✓ | |
| ✓ | ✓ | ✓ | ✓ | |
| ✓ | ✓ | ✓ | ✓ | |
| InstagramStory | ✓ | |||
| Youtube | ✓ | ✓ | ✓ | ✓ |
| TikTok | ✓ | ✓ | ✓ | ✓ |
| Threads | ✓ | ✓ | ✓ | |
| Bluesky | ✓ | ✓ | ✓ | |
| ✓ | ✓ | |||
| ✓ | ✓ | |||
| ✓ |
[Version 2.22.1] - 2026-10-22
Changed
- Create Message and List Social Profiles now list Facebook, Twitter, LinkedIn, Instagram, Youtube, TikTok, Threads, Bluesky, WeChat, Xing, and WhatsApp.
Youtubeis the value to send. - List Conversations and Get Calendar
networksnow list Facebook, Twitter, LinkedIn, Instagram, Youtube, TikTok, WeChat, and Xing.Youtubeis the value to send. - The Validate Video Upload example includes InstagramStory, TikTok, Threads, and Bluesky.
- List Messages no longer documents
network, because that query parameter is not applied.
[Version 2.22.0] - 2026-10-18
Added
- Add Story, Edit Story, Create Message, and Update Message accept
tags, a list of tag names (tags[]=News). A singletags=Acme, Inc.is one name and is not split on commas.tagIdsstill works. Sending both as non-empty lists returns 400. More than 100 names, or a name longer than 64 characters, returns 400. Unknown names are created when the caller can create tags. Without that permission they are dropped, and the request still replaces the tag set, so a list of only unknown names clears it.
Changed
- On story update and message update, omitting both
tagsandtagIdskeeps the current tags. Sending either parameter replaces the full set, and sending it empty clears the tags. - On message create, omitting both inherits the campaign's tags when a new message is inserted. Sending either parameter replaces that set, and sending it empty clears the tags instead of inheriting them. If the content matches an existing message, create updates that message: omitting both keeps its tags.
- Create and update message responses always include
Tags.
[Version 2.21.0] - 2026-10-18
Added
- Added List Advocate Custom Fields (
GET /v2/advocate/custom-fields), which returns a board's custom fields with their option IDs and values. - Added Update Advocate (
POST /v2/advocate/:id), which updates an advocate's board role and custom field values. - Added Bulk Update Advocates (
POST /v2/advocate/bulk-update), with a 100-entry limit and partialErrorsresponses. - Added optional
customFieldsto Invite Advocates and Bulk Invite Advocates. - Added List Advocates filters
customFields,role,leaderboard,sharesPeriod, andshareAmountOperator/shareAmountValue, theqname or email search, and_ordersorting. The default order is still by name, ascending. - Documented new filters on List Advocates (
GET /v2/advocate):q(name or email search),role,customFields,leaderboard,sharesPeriod,shareAmountOperator,shareAmountValue, and_order. The default sort isname,1.
Changed
- List Advocates:
emailnow searches advocate name or email (partial match), the same asq. - List Advocates: board filters sent without
boardIdnow return HTTP 400 instead of being ignored.lastSeen,notSeen, andneverSeencan no longer be combined (previouslynotSeentook precedence), and period values outside 1–365 return HTTP 400 instead of being ignored. - Invite Advocates and Bulk Invite Advocates: a
customFieldsvalue can be an option ID or the option's value text. A value that matches no option is now rejected withUnknown custom field optioninstead of being ignored. - Invite Advocates: validation errors for a new invite are now keyed by the field that failed (
email,name,role, or the custom field ID) instead ofInvalidInput. emailon List Advocates is deprecated in favor ofq. It still works, but it now matches name or email instead of email only.- Filters on List Advocates are now validated, and invalid requests return 400 instead of being ignored. This applies to a malformed
boardId, activity or board filters withoutboardId,lastSeen,notSeen, orsharesPeriodoutside 1–365, combininglastSeen,notSeen, andneverSeen=true, and unknown role, custom field, option, or leaderboard IDs. _counton List Advocates accepts any integer from 1 to 100. Values outside that range are clamped to 1 or 100.- On List Advocates, a
_pagevalue below 0 is treated as 0.
Fixed
- An unknown or inaccessible
boardIdon List Advocates returns 400, as it did before this release. - Corrected the List Advocates response docs. Items include the same fields with or without
boardId, and built-in roles return their role ID asRole. - Fixed the
rolefilter example to use built-in role IDs (contributor,champion).
[Version 2.20.1] - 2026-10-04
Added
- Documented MCP
delete_media. Deleting a media asset by ID archives it when a message still references it, and leaves it attached to that message. - Documented optional
folderIdon Create Media. Omit it or leave it empty to create the asset at the root. Pass a folder ID to create it in that folder. An unknown folder returns 400. - Documented Update Media (
PUT /v2/media/{id}). This endpoint supportsfolderIdonly. A folder ID moves the asset into that folder, an empty value moves it to the root, and omittingfolderIdleaves the folder unchanged. An unknown folder returns 400.
[Version 2.20.0] - 2026-10-01
Added
- Documented filter, search, and pagination parameters on Get Stories (
GET /v2/story):boardId,status,approveStatus,createdBy,topicIds,tagIds,isFeatured,isRepost,q,_page,_count, and_order. The default page size is 20 and the default sort ispublishDate,0. OmittingboardIdlists stories on every non-archived board.
Changed
- Noted that MCP
list_board_storiesstill only acceptsboardId.
[Version 2.19.3] - 2026-09-29
Added
- Documented inbox webhook
Datashapes forConversation,Post,Mention, andReplyitems. See Inbox item Data. - Noted that inbox webhook
Origincan be incorrect for Facebook personal profiles, because Facebook returns a different profile ID on mentions and comments than the ID used when the profile is connected to Oktopost.
[Version 2.19.2] - 2026-09-29
Changed
- Documented the Calendar 60-day window, the unpaginated response, the full message body, and
Postlogs(withoutRemoteId). Documented thecampaignTags,messageTags,teams,hasFirstComment,promotion, andshowArchivedfilters. - Documented List Posts
withPostlogs,withMessages,withCampaigns, andwithTags, and Get Postpostlogs. - Documented Post Log
RemoteId,RemoteUrl, per-profile entries, andStatusvalues. Listing postlogs requirespostIdand has no date range. - Corrected webhook delivery docs: the body is a JSON array, and the signature is an HMAC-SHA1 of that raw body in
X-Oktopost-Secret.postSentPostlogsincludePostURLand do not includeRemoteId. - Documented
NetworkAccountIdon Social Profiles. - Documented tag length limits.
- Documented the 1024-character limit and board display lengths for story
titleanddescription.
[Version 2.19.1] - 2026-08-31
Changed
- Updated inbox webhook payload examples.
[Version 2.19.0] - 2026-08-30
Added
- Added List Webhook Events (
GET /v2/webhook/events) and Get Webhook Event (GET /v2/webhook/events/:event).
[Version 2.18.0] - 2026-08-23
Added
- Added First Comment.
- Added Bulk Invite Advocates documentation for
POST /v2/advocate/bulk, including the 100-entry cap, mixed invite/re-invite entries, and partialErrorsresponses. - Added
application/pdfas a supportedmimeTypeon Create Upload. - Added
PDFto the List Mediatypefilter. - MCP
create_uploadnow acceptsapplication/pdf; MCPlist_mediatypeincludesPDF.
Changed
- Updated Invite Advocates for re-invite via
userId, optionalmessage/role/customFields, and theUsersresponse shape.
[Version 2.17.0] - 2026-08-17
Added
- Added New Inbox Webhook Events.
[Version 2.16.0] - 2026-08-10
Added
- Added top-level
PostlogIdto Lead Activity list responses — the published post ID associated with each activity, ornullwhen no post association exists. - Added a response fields table for the Lead Activity list endpoint.
- Added a
newLeadActivitywebhook payload example that includesPostlogId. See Webhooks.
[Version 2.15.0] - 2026-07-30
Added
- Added Custom Calendar Events documentation for
/v2/calendar/custom-events, including get, create, update, and delete examples with request parameters and response schema. - Added
CustomEventsfield to the Get Calendar response.
[Version 2.14.0] - 2026-07-14
Added
- Added pagination and sorting parameters (
_page,_count,_order) to the List Campaigns and List Users endpoints. - Added
qname-search parameter to the List Users endpoint. - Added an Item Types reference table (
Conversation,Post,Mention,Reply) to the Conversations documentation, including a callout clarifying thatPostrefers to a comment.
Fixed
- Fixed lowercase
conversationItemTypeexamples in the Conversations and webhook docs to match the PascalCase enum values.
[Version 2.13.0] - 2026-06-21
Added
- Added
targetingPresetIdparameter to Create Post and Update Post for applying LinkedIn audience targeting. - Added
workflowIdparameter to Create Post for submitting posts into approval workflows. - Added List Targeting Presets endpoint (
GET /v2/credential/:id/targeting-presets). - Added "Error Handling" section to MCP Server documentation explaining protocol errors vs tool execution errors.
- Added
Languagefield (ISO 639-1 code) to engagement webhook payloads (newConversation,conversationUpdated). Language is automatically detected from conversation content.
Changed
- MCP Server error handling updated to follow the MCP specification — tool execution failures now return
isError: truein the result instead of JSON-RPC protocol errors, enabling AI clients to read error details and self-correct.
[Version 2.12.0] - 2026-06-15
Added
- Added
lastSeen,notSeen, andneverSeenactivity filter parameters to the List Advocates endpoint. - Added
Shares,LastSeen,RoleId,Role,CustomFields, andLeaderboardsfields to the List Advocates response whenboardIdis provided. - Added pagination parameters (
_page,_count) documentation for the List Advocates endpoint.
Changed
- Renamed the shares sort key from
periodLastSharestosharesin the Advocates response. - Consolidated advocate filtering documentation into a single parameters table.
[Version 2.11.0] - 2026-06-01
Fixed
- Fixed near-past post approval in the Workflow Items approve endpoint — posts with a start time within the last hour no longer fail with an uncaught error.
- Fixed error handling for the approve/reject endpoint — invalid approval attempts (e.g. distant-past posts) now return a proper JSON error response instead of a fatal error.
- Fixed
MessageIDfield in approval webhook payloads — no longer incorrectly populated for advocacy stories. - Removed hardcoded
Network = 'advocacy'from story approval webhook payloads; network is now resolved dynamically.
Added
- Added
WorkflowItemID,StoryID, andBoardIDfields to approval webhook payloads (newApprovalItem,approvalItemApproved,approvalItemRejected).
[Version 2.10.0] - 2026-05-05
Added
- Added
all_leadsboolean parameter to the List Leads endpoint — whentrue, returns all leads including those without an email address.
[Version 2.9.0] - 2026-04-29
Added
- Added new Folders endpoint for managing Media Library folders: list, get, create, rename, and delete.
- Added
folderIdfilter parameter to the Media list endpoint for retrieving assets within a specific folder. - Added new Media sidebar section grouping Media, Upload, and Folders.
- Added repost story support to
POST /v2/story— create LinkedIn repost stories via the optionalpostlogIdparameter. See Stories. - Added
PostlogIdandTypefields to story GET responses for repost stories.
Changed
- Media and Upload documentation moved from the Publishing section to the new Media section. Old URLs under
/docs/api/publishing/mediaand/docs/api/publishing/uploadare no longer valid.
[Version 2.8.0] - 2026-04-12
Added
- Added new Dashboards endpoints for Social BI: List Dashboards, Get Dashboard, and Get Dashboard Report Data.
- Added MCP documentation for new Social BI tools:
list_dashboards,get_dashboard,get_dashboard_report_data. - Added MCP "Analytics & Reporting" use-case update with Social BI dashboard example.
[Version 2.7.0] - 2026-03-31
Added
- Added MCP documentation for new Inbox tools:
list_conversations,get_conversation,update_conversation_status,get_conversation_timeline,assign_conversation,add_conversation_note,update_conversation_tags,reply_to_conversation,create_salesforce_case,list_conversation_tags,get_conversation_tag,update_conversation_tag,delete_conversation_tag,list_canned_responses,get_canned_response,create_canned_response. - Added MCP "Inbox Management" use-case section with examples for triaging DMs, comments, and mentions.
[Version 2.6.0] - 2026-03-30
Added
- Added new Inbox section with endpoint documentation for Conversations, Conversation Tags, Canned Responses, and Comments.
[Version 2.5.0] - 2026-03-29
Added
- Added MCP documentation for new tools:
update_campaign,update_message,list_posts,validate_video_upload,get_workflow,send_to_workflow,remove_from_workflow,get_board,update_board_topic,get_board_story,list_advocates,get_advocate,invite_advocate. - Added MCP documentation for
get_post_analytics(new Analytics section). - Added TypeScript SDK link in the sidebar navigation.
Changed
- MCP "Feedback" section replaced with "Analytics" section.
Removed
- Removed
send_feedbackMCP tool and related references.
[Version 2.4.0] - 2026-03-25
Added
- Added endpoint documentation for Integration Actions — execute operations on connected Salesforce, Marketo, and HubSpot integrations via a unified API.
- Added endpoint documentation for Change Post Campaign — move a post to a different campaign.
[Version 2.3.0] - 2026-03-02
Fixed
- Post update and delete examples now use
v2/API version. - Webhook signature verification example uses SHA-1 instead of SHA-256.
Added
- Added callout to List Leads endpoint clarifying it returns only non-deleted Leads with a valid email address.
[Version 2.2.0] - 2026-01-02
Added
- Added endpoint documentation for workflow item notes.
[Version 2.1.0] - 2025-12-14
Added
- Added
RemoteLeadsfield to the LIST and GET lead API.
[Version 2.0.0] - 2025-11-25
Changed
- Documentation - Complete API documentation overhaul with enhanced examples and use cases
Changelog Format
We follow these conventions for changelog entries:
- Added - New features and endpoints
- Changed - Changes to existing functionality
- Fixed - Bug fixes
- Deprecated - Features that will be removed in future versions
- Removed - Features that have been removed
- Security - Security improvements and vulnerability fixes
- Breaking Changes - Changes that require code updates
Version Numbering
We use Semantic Versioning:
- Major (x.0.0) - Breaking changes
- Minor (0.x.0) - New features, backwards compatible
- Patch (0.0.x) - Bug fixes, backwards compatible