Skip to content

Changelog

New, changed, deprecated and removed capabilities in the Tailwind REST API and MCP server, newest first. Bug fixes are listed only when they change what a caller can do or rely on. Entries marked Breaking need a change on your side: a removed capability, or one that now behaves differently for existing callers.

The same entries are published as a machine-readable JSON Feed at https://api-docs.tailwind.ai/changelog.json. Agents and integrations that track Tailwind’s capabilities should read the feed rather than this page; its format is described in Feed format.

Generated drafts are described as waiting for review

ChangedREST API, MCP

A Pin that Tailwind's AI generated, from a generation request or a connected feed, is a draft that never publishes on its own. The post list and the generationId field now say so, and a new guide shows how an AI assistant or a script reviews those drafts against your own criteria, revises them, schedules the good ones and deletes the rest. Nothing on the wire changed.

REST operations: list-posts

MCP tools: list_posts

Documentation

Analytics reads say when Pinterest itself failed

ChangedREST API, MCP

When Pinterest fails an analytics read with an error on its side, account analytics, top Pins, the Pin inventory and Pin analytics still answer 500, but now with reason pinterest_upstream_error and a message saying that retrying right away will not help. These requests used to fail with a generic "An unexpected error occurred". Try again later.

REST operations: get-account-analytics, list-top-pins, list-pins, get-pin-analytics

MCP tools: get_account_analytics, list_top_pins, list_pins, get_pin_analytics

Documentation

Listing posts rejects an unusable cursor with a 400

ChangedREST API, MCP

A cursor that cannot be used for the post list, such as a malformed one or one taken from a list with a different status or date range, now gets a 400 saying to pass the previous page's cursor unchanged or start again without one. These requests used to fail with a generic 500, which read as worth retrying.

REST operations: list-posts

MCP tools: list_posts

Documentation

Post writes check the destination url and Tailwind-hosted media up front

ChangedREST API, MCP

Creating or editing a post now refuses a destination url longer than 1000 bytes (UTF-8) with a 400 naming url. Such a url could not be stored and used to fail with a generic 500. A mediaUrl on a Tailwind image host that is not a Tailwind image a Pin can use is refused with a 422 and reason media_url_not_pablo_asset; pass the image's original URL or upload the file instead. Nothing is written in either case.

REST operations: create-post, update-post, bulk-update-posts, create-post-batch

MCP tools: create_post, update_post, update_posts, create_posts

Documentation

Scheduling a post says why it was refused

ChangedREST API, MCP

Scheduling or rescheduling a post now answers a refusal with its own status and message instead of a generic 500. A draft saved with multiple interval Boards cannot be scheduled this way and gets a 400 saying so; create the Pin with intervalBoards on create_post instead. A post that changed status while it was being scheduled gets a 409; read it back before retrying. Neither writes anything, and any charge is refunded.

REST operations: schedule-post

MCP tools: schedule_post

Documentation

Accounts say when the Pinterest connection could not be checked

AddedREST API, MCP

Accounts now carry tokenStatus: authorized, unauthorized, or unknown. unknown means Tailwind could not check the Pinterest connection just now, usually a temporary failure, and is not a reason to reconnect. tokenAuthorized is unchanged and is still false in that case, so read tokenStatus to tell a revoked connection from an unverified one. list_accounts and get_account only ask for a reconnect when the status is unauthorized.

REST operations: list-accounts, get-account

MCP tools: list_accounts, get_account

Documentation

Create up to 175 Pins in one request

AddedREST API, MCP

POST /v1/accounts/{accountId}/post-batches takes up to 175 Pins, each with its own image, copy, link, Board and schedule, and returns a batch id. GET /v1/post-batches/{batchId} reports each Pin as created, failed or pending, in request order. Drafts can leave out the image and get the placeholder, which must be replaced in Tailwind before the Pin can be scheduled. Send an Idempotency-Key header to make a resend safe. create_posts and get_post_batch bring the same to MCP.

REST operations: create-post-batch, get-post-batch

MCP tools: create_posts, get_post_batch

Documentation

List the Pins saved on a board

AddedREST API, MCP

A new read lists the Pins on one of the account's boards, secret boards included, with each Pin's Pinterest URL, image URL, destination link, saved time and board section. Pages follow Pinterest's board order and can be filtered by date. It is free and consumes no credits.

REST operations: list-board-pins

MCP tools: list_board_pins

Documentation

Scheduled posts list in schedule order, soonest first

ChangedBreakingREST API, MCP

Listing queued posts now returns them by send time, soonest first. They used to come back newest-created first, so an assistant could not show a schedule in order. Without a startDate the list now begins at the current time, so queued posts whose send time has passed are listed only under status missed. Other statuses keep their order.

REST operations: list-posts

MCP tools: list_posts

Documentation

Get a link to connect or reconnect a Pinterest account

AddedREST API

get-account-connect-link returns a browser link that adds another Pinterest account to the organization, or re-authorizes an existing one whose tokenAuthorized is false. For a new account it first checks that the caller is an organization admin and the plan has room, and returns the reason instead of a link when it does not. Nothing is connected or billed until the user completes the flow in a browser signed in to the same Tailwind organization.

REST operations: get-account-connect-link

Documentation

Analytics reads report a Pinterest rate limit as a fast 503

ChangedREST API, MCP

When Pinterest rate-limits a connected account, account analytics, top Pins, the Pin inventory and Pin analytics now answer 503 with reason pinterest_rate_limited and, when Pinterest reports it, a Retry-After header. These requests used to fail with a slow 500. A 429 always means the organization's daily request limit. MCP tool errors now carry the reason in their error metadata.

REST operations: get-account-analytics, list-top-pins, list-pins, get-pin-analytics

MCP tools: get_account_analytics, list_top_pins, list_pins, get_pin_analytics

Documentation

Connect or reconnect a Pinterest account from your AI assistant

AddedMCP

The connect_pinterest_account tool returns a browser link that adds another Pinterest account to the organization, or re-authorizes one whose Pinterest token has expired. When a new account can't be added it says why instead. list_accounts and get_account now point to it for expired accounts rather than sending the user to the dashboard.

MCP tools: connect_pinterest_account, list_accounts, get_account

Documentation

The daily request limit now applies per organization, OAuth included

ChangedBreakingREST API, MCP

The daily request limit is now 10,000 requests per organization, shared by every API key and every OAuth connection in it, including MCP clients. It was 5,000 per API key, and OAuth requests were not counted. A request over the limit returns 429 with a Retry-After header giving the seconds until the limit resets at midnight UTC.

Documentation

See the other source photos behind a generated Pin

AddedREST API, MCP

Reading a generated Pin's design now also returns sourceImageCandidates: the photos the user picked for its SmartPin and the photos Tailwind scraped and scored from the source page. Pass one as mediaUrl to the design update to rebuild the Pin around a different photo.

REST operations: get-pin-design

MCP tools: get_pin_design

Documentation

Top Pins says when Pinterest left ranked Pins out

AddedREST API, MCP

When Pinterest limits the lookups behind a top Pins read, some ranked Pins can't be loaded. The response now sets isPartial and lists those Pins in omittedPinIds, in ranking order, instead of returning a shorter list that looks complete. Retrying shortly should return the full list. list_top_pins tells the assistant the list is incomplete.

REST operations: list-top-pins

MCP tools: list_top_pins

Documentation

Boards include when their Pins last changed

AddedREST API, MCP

Listing Boards now returns each Board's pinsModifiedAt, the time Pinterest last recorded a change to the Board's Pins. An old date marks a Board that has gone quiet, so a Board audit no longer has to read every Pin to find the Boards that need refreshing.

REST operations: list-boards

MCP tools: list_boards

Documentation

Say why a generation couldn't read the page

AddedREST API, MCP

A generation that fails with failureCode scrape-failed now carries a failureDetail when the cause is known: blocked (the site refuses Tailwind's scraper), no-content (the page had no readable text, often because it was just published) or fetch-failed (the page couldn't be loaded). Use it to decide whether a retry can help.

REST operations: get-generation

MCP tools: get_generation_status

Documentation

Pin recommendations paused while we wait for Pinterest

ChangedBreakingREST API, MCP

Tailwind is waiting for Pinterest to approve access to its Pin search API. Pinterest's public search stopped returning Pins that can be saved, so until access is granted get-recommended-pins returns 503 with reason recommended_pins_awaiting_pinterest_access instead of recommendations. Saving Pins whose IDs you already have still works.

REST operations: get-recommended-pins

MCP tools: get_recommended_pins

Documentation

Saving existing Pins onto a board is billed like a repin

ChangedBreakingREST API, MCP

Saving Pins onto a board created through Tailwind in the last hour stays free for up to 50 Pins in total. Any other save now costs what scheduling a Pin costs: one credit per saved Pin on credit plans, or one post from the post allowance on legacy and Shopify billing. A save the plan cannot cover returns 402 with nothing saved.

REST operations: save-pins-to-board

MCP tools: save_pins_to_board

Documentation

Saved keywords omit search volume when Tailwind has no data

ChangedBreakingREST API, MCP

pinterestSearchVolume on a saved keyword is now absent when Tailwind has no Pinterest search volume data for the term, instead of 0. Treat a missing value as unknown rather than zero demand, the same as the commercialIntentScore and detectedLanguage fields.

REST operations: list-keywords, save-keywords, tag-keywords, untag-keywords

MCP tools: list_saved_keywords, save_keywords, tag_saved_keywords, untag_saved_keywords

Documentation

Create, update and delete board lists

AddedREST API, MCP

Board lists, the ordered groups of Boards used to publish one Pin across several Boards at an interval, can now be created, replaced and deleted. An update sends the full ordered set of Boards. Changing a board list never changes the Boards or their Pins on Pinterest.

REST operations: create-board-list, update-board-list, delete-board-list

MCP tools: create_board_list, update_board_list, delete_board_list

Documentation

Edit up to 50 unpublished Pins in one call

AddedREST API, MCP

PATCH /v1/accounts/{accountId}/posts edits a batch of draft or scheduled Pins, each with its own fields. A save needs a preview token from a dryRun request first, and each result carries the Pin's previous values so the edit can be undone. MCP clients use preview_update_posts, then update_posts.

REST operations: bulk-update-posts

MCP tools: preview_update_posts, update_posts

Documentation

Cancel a queued Pin generation

AddedREST API, MCP

A Pin generation can be cancelled while it is still queued, and is then never charged. It reads back as failed with failureCode generation-cancelled. Once generation has started the cancel is refused.

REST operations: cancel-generation

MCP tools: cancel_generation

Documentation

List every Pin on a Pinterest account

AddedREST API, MCP

GET /v1/accounts/{accountId}/pins lists every Pin on the connected Pinterest account, newest first, however it was published: through Tailwind, directly on Pinterest, or by another tool. MCP clients use list_pins.

REST operations: list-pins

MCP tools: list_pins

Documentation

Pause and resume an account's publishing

AddedREST API, MCP

Pausing stops every scheduled Pin on the account from publishing without changing the Pins. A Pin whose time arrives during the pause fails with failureReason publishing_paused and is not retried on resume, so reschedule it.

REST operations: pause-publishing, resume-publishing

MCP tools: pause_publishing, resume_publishing

Documentation

Tag and untag Saved Keywords by name

AddedREST API, MCP

Apply tags to up to 100 saved keywords, or remove them, by tag name. A new tag name creates the tag and an existing one is reused. Tagging is free.

REST operations: tag-keywords, untag-keywords

MCP tools: tag_saved_keywords, untag_saved_keywords

Documentation

Fetch the picture a Pin shows

AddedREST API, MCP

GET /v1/accounts/{accountId}/posts/{postId}/image returns the Pin's image as raw bytes: the cover of an image or carousel Pin, or a video Pin's cover. Use it when you cannot fetch the post's mediaUrl yourself. MCP clients use get_post_image.

REST operations: get-post-image

MCP tools: get_post_image

Documentation

Pinterest-side failures on Board and Pin writes return a 502

ChangedREST API

When Pinterest fails a Board, Board section or Pin write with an error of its own, the response is now a 502 with reason pinterest_request_failed instead of a generic 500. A create may still have taken effect, so list Boards or sections before repeating one; other requests can be retried.

REST operations: create-board, update-board, delete-board, list-board-sections, create-board-section, update-board-section, delete-board-section, create-post, update-post, schedule-post

Documentation

Move a scheduled Pin back to draft

AddedREST API, MCP

Unschedule a queued Pin, including a missed one, to revise it before it publishes. The Pin keeps its postId and everything stored on it; only its status and scheduled time change. Any scheduling credit it was charged is returned.

REST operations: unschedule-post

MCP tools: unschedule_post

Documentation

Failed Pins say why they did not publish

AddedREST API, MCP

A failed post now carries failureReason, a stable code such as board_not_found or expired_token, and failureMessage, the explanation the Tailwind dashboard shows. New codes are added over time, so treat an unknown code as a generic failure.

REST operations: get-post, list-posts

MCP tools: get_post, list_posts

Documentation

Listing Boards reports why it failed

ChangedREST API

GET /v1/accounts/{accountId}/boards now documents distinct errors for a disconnected account, a Pinterest reconnect, rate limiting, a Pinterest failure (reason list_boards_upstream_failed) and a Pinterest timeout (reason pinterest_timeout). Branch on the error's reason rather than its message.

REST operations: list-boards

Documentation

Read Pin Spacing rules

AddedREST API, MCP

List an account's Pin Spacing rules, or ask which rule the scheduler applies to a given destination URL. Pin Spacing is the minimum gap kept between Pins that share a URL. Rules are read-only here and managed in the Tailwind dashboard.

REST operations: list-pin-spacing-rules, get-applied-pin-spacing-rule

MCP tools: list_pin_spacing_rules, get_pin_spacing_rule

Documentation

Save existing Pins onto a Board

AddedREST API, MCP

Save existing Pinterest Pins (repins) onto one of the account's Boards, for example the recommended Pins found for a new Board's keyword. Pins that cannot be saved are counted in failedCount and the rest still save. Free.

REST operations: save-pins-to-board

MCP tools: save_pins_to_board

Documentation

Accounts report their scheduling time zone

AddedREST API, MCP

Accounts now include timezone, the IANA time zone Tailwind schedules the account in and the zone its timeslots use. It is null when none is set.

REST operations: list-accounts, get-account

MCP tools: list_accounts, get_account

Documentation

List failed and missed Pins

AddedREST API, MCP

Listing posts accepts status failed and missed. A missed post is a queued post whose send time passed without publishing. Missed needs a date window; failed takes both dates or neither.

REST operations: list-posts

MCP tools: list_posts

MCP resources: tailwind://accounts/{accountId}/posts

Documentation

Open an account's schedule as a calendar

AddedMCP

open_schedule_calendar shows an interactive calendar of an account's scheduled, published, failed and missed Pins in clients that render MCP Apps interfaces, such as ChatGPT and Claude. Other clients get the account list as plain data.

MCP tools: open_schedule_calendar

Documentation

delete_board requires confirm true

ChangedBreakingMCP

delete_board now takes a required confirm argument. Any value other than true refuses the call and deletes nothing, so pass true only after the user has confirmed the Board and its Pins should be destroyed.

MCP tools: delete_board

Documentation

Filter Saved Keywords by destination URL

AddedREST API, MCP

Listing saved keywords accepts url, returning only the keywords saved for that destination URL. It cannot be combined with the text filter.

REST operations: list-keywords

MCP tools: list_saved_keywords

Documentation

Separate organic and paid analytics

AddedREST API, MCP

Account analytics and top Pins accept contentType: ORGANIC, PAID or ALL, the default. The filter applied is echoed back as contentType. Per-Pin analytics are always organic-only.

REST operations: get-account-analytics, list-top-pins

MCP tools: get_account_analytics, list_top_pins

Documentation

Pin analytics include the Pin's Board

AddedREST API, MCP

Top Pins and per-Pin analytics now include boardId, the Board the Pin is saved to, so performance can be compared across Boards.

REST operations: list-top-pins, get-pin-analytics

MCP tools: list_top_pins, get_pin_analytics

Documentation

Top Pins report their creative type

AddedREST API, MCP

Each top Pin now includes creativeType, Pinterest's format for the Pin, such as REGULAR, VIDEO or CAROUSEL. Pinterest adds values over time, so treat it as an open set. It is null when Pinterest reports none.

REST operations: list-top-pins

MCP tools: list_top_pins

Documentation

Account usage reports unlimited scheduling

AddedREST API, MCP

Account usage now includes unlimitedScheduling. When it is true, scheduling Pins spends no credits whatever the credit balance says; credits still pay for AI generation.

REST operations: get-account-usage

MCP tools: get_account_usage

Documentation

Read an account's credit balance and post usage

AddedREST API, MCP

See how much an account can still spend before a credit- or post-consuming action, and when it refills. Read billingSystem and scope to interpret the numbers. This read is free.

REST operations: get-account-usage

MCP tools: get_account_usage

Documentation

Edit the design of a generated Pin

AddedREST API, MCP

Read a generated Pin's design and change it: re-render a template design with a new title, colors, fonts or image, switch between rendered variations, revert to the original photo, or have AI regenerate a premium design. Regeneration spends credits and runs as a job to poll; the other edits are free.

REST operations: get-pin-design, update-pin-design, select-pin-design-variation, revert-pin-design, regenerate-pin-design, get-design-regeneration

MCP tools: get_pin_design, update_pin_design, select_pin_design_variation, revert_pin_design, regenerate_pin_design, get_design_regeneration_status

Documentation

Create carousel Pins

AddedREST API, MCP

Creating a post accepts carouselItems, up to four more images after the cover, each given as a mediaUrl or an uploadId. Posts read back with their carousel images in carouselItems.

REST operations: create-post, get-post, list-posts

MCP tools: create_post

Documentation

Manage the smart schedule's timeslots

AddedREST API, MCP

Add, move and delete recurring weekly timeslots, or rebuild the whole smart schedule with a set number of slots per day. A rebuild deletes every non-evergreen slot. Managing the schedule is free.

REST operations: create-timeslot, update-timeslot, delete-timeslot, rebuild-schedule

MCP tools: create_timeslot, update_timeslot, delete_timeslot, rebuild_schedule

Documentation

Find Pins worth adding to a Board

AddedREST API, MCP

Get public Pinterest Pins that fit one of the account's Boards for a keyword, strongest first, each with the relevance tier that earned its place. Pins already on the Board and promoted Pins are left out. Free.

REST operations: get-recommended-pins

MCP tools: get_recommended_pins

Documentation

Turn RSS feeds into draft Pins

AddedREST API, MCP

Preview a site or feed URL, connect the feed, and Tailwind drafts a Pin for each new post it finds, once a day, for review; it never schedules or publishes. Generated Pins spend credits like manual generations. The MCP tools followed on 2026-09-19.

REST operations: preview-feed, connect-feed, list-feeds, get-feed, update-feed, delete-feed

MCP tools: preview_feed, connect_feed, list_feeds, get_feed, update_feed, delete_feed

Documentation

Score how well a Board covers a keyword

AddedREST API, MCP

Score a Board's live Pinterest content against a keyword and get the Pins that earned the score. A scored request costs one credit; an absent result is free.

REST operations: get-board-keyword-relevance

MCP tools: get_board_keyword_relevance

Documentation

Read Pinterest analytics

AddedREST API, MCP

Read an account's Pinterest performance over a date window, its best-performing Pins ranked by one metric, and one Pin's performance with lifetime totals.

REST operations: get-account-analytics, list-top-pins, get-pin-analytics

MCP tools: get_account_analytics, list_top_pins, get_pin_analytics

Documentation

The API and MCP server as of 31 August 2026

AddedREST API, MCP

This entry marks where the changelog starts. On this date the REST API and MCP server could list and read the connected Pinterest accounts, manage Boards and Board sections, and read Board lists, group Boards and subscriptions. They could create Pins from a media URL or an uploaded file, publish one Pin across several Boards at an interval, edit, delete, list and schedule Pins, and read the smart schedule. They could also generate Pins from a URL and Pin copy with AI, and list, save and delete Saved Keywords.

Documentation

The feed is a JSON Feed 1.1 document, so any JSON Feed reader can subscribe to it. Each item uses the standard fields: id, url (a link to the entry on this page), title, content_text, date_published and tags. date_published is the day the change reached production, in UTC, at midnight. Items are ordered newest first. Tailwind-specific data is in a _tailwind extension object, as the JSON Feed spec allows.

The feed’s top-level _tailwind object holds about, a link to this section, and schema_version, currently 1.

Each item’s _tailwind object holds:

Field Type Description
type string added, changed, deprecated or removed
breaking boolean true when existing callers must change: always for removed, and for any change that alters behavior callers rely on
surfaces array of strings Which surfaces changed: rest (the REST API) and/or mcp (the MCP server)
rest_operations array of strings The operationIds of the REST operations affected, matching the OpenAPI specification
mcp_tools array of strings The names of the MCP tools affected
mcp_resources array of strings The URIs of the MCP resources affected
docs_url string Optional. The documentation for the capability. Absent when the capability no longer exists.

tags repeats type, the surfaces and, for breaking entries, breaking, for readers that don’t parse the extension.

  • The feed URL does not change.
  • An item’s id is permanent. An entry may be corrected after publication, but it keeps its id, so a reader that has seen it can skip it.
  • Within schema version 1, fields are only added, never removed, renamed or changed in meaning. Ignore fields you don’t recognize. The values of type and surfaces listed above are fixed for version 1.
  • A change that breaks this format will be published as a new schema version at a new URL. It will be announced in this changelog as a deprecation, and the version 1 feed will keep updating until the removal date that entry gives.