Oktopost

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 language filter on List Conversations (GET /v2/conversation). It takes a comma-separated list of ISO 639 language codes, and und matches conversations with no detected language. An unknown code returns 400.
  • Documented language on MCP list_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: YouTube and youtube become Youtube, and BlueSky becomes Bluesky. This applies to create_message, list_social_profiles, list_conversations, and get_calendar.
  • Filtering by several networks:
    • In list_conversations, separate networks with commas, for example Facebook,LinkedIn.
    • In get_calendar, pass networks as a list inside the filters JSON. If a network is rejected, your other filters still apply.
  • list_messages ignores the network filter: Filter by campaign or message IDs instead.

Supported networks by tool

Networkcreate_message / list_social_profileslist_conversationsget_calendarvalidate_video_upload
Facebook✓✓✓✓
Twitter✓✓✓✓
LinkedIn✓✓✓✓
Instagram✓✓✓✓
InstagramStory✓
Youtube✓✓✓✓
TikTok✓✓✓✓
Threads✓✓✓
Bluesky✓✓✓
WeChat✓✓
Xing✓✓
WhatsApp✓

[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. Youtube is the value to send.
  • List Conversations and Get Calendar networks now list Facebook, Twitter, LinkedIn, Instagram, Youtube, TikTok, WeChat, and Xing. Youtube is 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 single tags=Acme, Inc. is one name and is not split on commas. tagIds still 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 tags and tagIds keeps 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 partial Errors responses.
  • Added optional customFields to Invite Advocates and Bulk Invite Advocates.
  • Added List Advocates filters customFields, role, leaderboard, sharesPeriod, and shareAmountOperator/shareAmountValue, the q name or email search, and _order sorting. 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 is name,1.

Changed

  • List Advocates: email now searches advocate name or email (partial match), the same as q.
  • List Advocates: board filters sent without boardId now return HTTP 400 instead of being ignored. lastSeen, notSeen, and neverSeen can no longer be combined (previously notSeen took precedence), and period values outside 1–365 return HTTP 400 instead of being ignored.
  • Invite Advocates and Bulk Invite Advocates: a customFields value can be an option ID or the option's value text. A value that matches no option is now rejected with Unknown custom field option instead 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 of InvalidInput.
  • email on List Advocates is deprecated in favor of q. 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 without boardId, lastSeen, notSeen, or sharesPeriod outside 1–365, combining lastSeen, notSeen, and neverSeen=true, and unknown role, custom field, option, or leaderboard IDs.
  • _count on List Advocates accepts any integer from 1 to 100. Values outside that range are clamped to 1 or 100.
  • On List Advocates, a _page value below 0 is treated as 0.

Fixed

  • An unknown or inaccessible boardId on 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 as Role.
  • Fixed the role filter 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 folderId on 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 supports folderId only. A folder ID moves the asset into that folder, an empty value moves it to the root, and omitting folderId leaves 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 is publishDate,0. Omitting boardId lists stories on every non-archived board.

Changed

  • Noted that MCP list_board_stories still only accepts boardId.

[Version 2.19.3] - 2026-09-29

Added

  • Documented inbox webhook Data shapes for Conversation, Post, Mention, and Reply items. See Inbox item Data.
  • Noted that inbox webhook Origin can 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 (without RemoteId). Documented the campaignTags, messageTags, teams, hasFirstComment, promotion, and showArchived filters.
  • Documented List Posts withPostlogs, withMessages, withCampaigns, and withTags, and Get Post postlogs.
  • Documented Post Log RemoteId, RemoteUrl, per-profile entries, and Status values. Listing postlogs requires postId and 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. postSent Postlogs include PostURL and do not include RemoteId.
  • Documented NetworkAccountId on Social Profiles.
  • Documented tag length limits.
  • Documented the 1024-character limit and board display lengths for story title and description.

[Version 2.19.1] - 2026-08-31

Changed

  • Updated inbox webhook payload examples.

[Version 2.19.0] - 2026-08-30

Added

[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 partial Errors responses.
  • Added application/pdf as a supported mimeType on Create Upload.
  • Added PDF to the List Media type filter.
  • MCP create_upload now accepts application/pdf; MCP list_media type includes PDF.

Changed

  • Updated Invite Advocates for re-invite via userId, optional message/role/customFields, and the Users response shape.

[Version 2.17.0] - 2026-08-17

Added

[Version 2.16.0] - 2026-08-10

Added

  • Added top-level PostlogId to Lead Activity list responses — the published post ID associated with each activity, or null when no post association exists.
  • Added a response fields table for the Lead Activity list endpoint.
  • Added a newLeadActivity webhook payload example that includes PostlogId. 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 CustomEvents field 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 q name-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 that Post refers to a comment.

Fixed

  • Fixed lowercase conversation ItemType examples in the Conversations and webhook docs to match the PascalCase enum values.

[Version 2.13.0] - 2026-06-21

Added

  • Added targetingPresetId parameter to Create Post and Update Post for applying LinkedIn audience targeting.
  • Added workflowId parameter 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 Language field (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: true in 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, and neverSeen activity filter parameters to the List Advocates endpoint.
  • Added Shares, LastSeen, RoleId, Role, CustomFields, and Leaderboards fields to the List Advocates response when boardId is provided.
  • Added pagination parameters (_page, _count) documentation for the List Advocates endpoint.

Changed

  • Renamed the shares sort key from periodLastShares to shares in 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 MessageID field 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, and BoardID fields to approval webhook payloads (newApprovalItem, approvalItemApproved, approvalItemRejected).

[Version 2.10.0] - 2026-05-05

Added

  • Added all_leads boolean parameter to the List Leads endpoint — when true, 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 folderId filter 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 optional postlogId parameter. See Stories.
  • Added PostlogId and Type fields 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/media and /docs/api/publishing/upload are 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

[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_feedback MCP 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 RemoteLeads field 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