Reviewing Generated Drafts
A Pin that Tailwind’s AI generates, from generate_pins_from_url or a connected feed, is saved as a draft. It never publishes on its own: someone has to look at it and either schedule it or discard it, and many people never come back to do that, so generated Pins sit unpublished and the credits that made them are wasted. This guide shows how an AI assistant (over MCP) or a script (over the REST API) can do that review as a standing workflow, against whatever criteria you give it.
Tailwind does not store the criteria. Your assistant holds them from your instructions; Tailwind exposes the drafts and the actions. See What Tailwind keeps.
Inputs
Section titled “Inputs”| Input | Example | Where it comes from |
|---|---|---|
| Account | 123456 |
list_accounts |
| Review criteria | “Approve a draft when its title names the product, the description has no claims I did not make, and the picture shows the product, not a logo. Discard anything about a sold-out item.” | You; the assistant keeps them |
| Target board | 1106196864631757445 |
list_boards, only when a draft has no board yet |
One run
Section titled “One run”- List the generated drafts
- Judge each one
- Fix the ones that are nearly right
- Approve the good ones
- Discard the rest
Step 1: List the generated drafts
Section titled “Step 1: List the generated drafts”List the account’s drafts with list_posts and status: "draft", following cursor until a response comes back without one. Every draft assigned to the account lists here, hand-made ones included; a generated draft is the one that carries a generationId, and in the MCP result text its line starts with Generated. A SmartPin draft is always assigned to the account it was generated for, so the list covers all of them. Drafts not yet assigned to any Pinterest account, such as some Made For You drafts, do not list until they are assigned from the Pin Scheduler’s “drafts that aren’t assigned to a Pinterest account yet” banner in the dashboard.
{ "accountId": "123456", "status": "draft", "limit": 100}REST equivalent: GET /v1/accounts/123456/posts?status=draft&limit=100, passing the previous response’s cursor to get the next page (reference).
Each draft carries what a review needs (abridged):
{ "posts": [ { "id": "post_abc123", "status": "draft", "title": "Linen Throw in Sage", "description": "A washed-linen throw for the sofa or the end of the bed.", "url": "https://myshop.com/linen-throw-sage", "mediaUrl": "https://images.tailwindapp.com/.../throw.jpg", "boardId": "1106196864631757445", "generationId": "gen_7f3a" }, { "id": "post_def456", "status": "draft", "title": "Holiday Gift Guide", "url": "https://myshop.com/gift-guide", "mediaUrl": "https://images.tailwindapp.com/.../guide.jpg" } ], "cursor": "eyJvZmZzZXQiOjEwMH0"}The first draft was generated and is waiting for review. The second has no generationId: someone made it by hand, so this workflow leaves it alone.
To see the picture itself, call get_post_image with the draft’s postId; whether your assistant can look at it depends on the client (ChatGPT, for one, passes on only the summary).
Step 2: Judge each one
Section titled “Step 2: Judge each one”Compare each generated draft’s title, description, link and picture with the criteria. Three outcomes: approve as is, fix then approve, or discard. The criteria are yours; Tailwind applies none of its own.
Step 3: Fix the ones that are nearly right
Section titled “Step 3: Fix the ones that are nearly right”Copy and placement are edited in place with update_post, which is free. Only the fields you send change.
{ "accountId": "123456", "postId": "post_abc123", "title": "Washed Linen Throw in Sage Green", "description": "A washed-linen throw for the sofa or the end of the bed. Machine washable. #linenthrow #sagegreen"}REST equivalent: PATCH /v1/accounts/123456/posts/post_abc123 with the same body (reference).
The picture is a separate surface. For a generated draft, call get_pin_design and follow the supportedOperations it reports: update_pin_design re-renders the template design for free, select_pin_design_variation switches to a design Tailwind already has, and regenerate_pin_design has the AI design a new one for about 7 credits. The design read also lists the other pictures Tailwind found on the source page, so a wrong photo is usually a free swap rather than a regeneration.
Step 4: Approve the good ones
Section titled “Step 4: Approve the good ones”Approving a draft is scheduling it. Call schedule_post with useNextOpenSlot: true, which claims the next open SmartSchedule slot and applies your Pin Spacing rules for the Pin’s link. A draft without a board also needs boardId.
{ "accountId": "123456", "postId": "post_abc123", "useNextOpenSlot": true}REST equivalent: POST /v1/accounts/123456/posts/post_abc123/schedule with the same body (reference).
Do not compute a time yourself and pass it as sendAt: a slot that read as open can be taken before the write lands, and sendAt ignores Pin Spacing, so Pins stack up off-schedule. Reserve sendAt for a time you actually chose.
Step 5: Discard the rest
Section titled “Step 5: Discard the rest”A draft that fails the criteria and is not worth fixing is deleted with delete_post. Deletion cannot be undone, and it is what keeps the next run from judging the same draft again.
{ "accountId": "123456", "postId": "post_ghi789"}REST equivalent: DELETE /v1/accounts/123456/posts/post_ghi789 (reference).
A draft you are unsure about can also be left where it is. It stays in the draft list and comes up again on the next run.
Result of one run
Section titled “Result of one run”On the example above, the assistant approves and schedules the linen-throw draft after tightening its title, leaves the hand-made gift guide untouched, and deletes any generated draft that fails the criteria. The approved Pin publishes from its SmartSchedule slot.
Running it again
Section titled “Running it again”Nothing in Tailwind starts the next run. Re-running the workflow belongs to whoever owns the routine:
- You, by asking the assistant whenever a generation finishes or a feed has run.
- Your assistant’s own scheduled tasks, if your AI client supports recurring tasks. The schedule lives in the client, not in Tailwind.
- Your own scheduler, such as a cron job running a script against the REST API after each feed check.
The workflow is safe to repeat for the drafts it decided. An approved draft leaves the draft list when it is scheduled and a discarded one when it is deleted, so a later run only sees what was left undecided. Two runs that overlap can both try to schedule the same draft: the second schedule_post fails with a conflict because the draft is no longer a draft, nothing is charged for the failed call, and no second Pin is created. Treat that conflict as already decided and move on.
One caveat. A generated Pin that was approved and later taken back with unschedule_post returns to the draft list with its generationId, and Tailwind keeps no record that it was ever reviewed, so the next run judges it again and may schedule or delete it. If you hold a Pin back on purpose, tell your assistant which one, or expect the next run to decide it by the criteria.
A prompt an assistant can run after each generation:
“On account 123456: list my drafts and review the ones Tailwind generated (they have a generationId) against my criteria. Tighten the title or description where it is nearly right, then schedule the ones that pass in my next open slot and delete the ones that fail. Tell me which you approved, fixed and discarded.”
What Tailwind keeps
Section titled “What Tailwind keeps”Tailwind stores the drafts, the Pins this workflow schedules, and the account’s SmartSchedule and Pin Spacing rules. It does not store the review criteria, a record that a draft was reviewed, or any record that a run happened. A draft is “unreviewed” only in the sense that it is still a draft: once scheduled or deleted it is no longer in the list, and once unscheduled it is back in it.
Hand-made drafts, the ones without a generationId, are only read. This workflow never schedules, edits or deletes them; reviewing them too is your decision to build on top.
Listing drafts, reading a draft’s picture, editing its copy, re-rendering or swapping its design, and deleting it are free. Regenerating a design with regenerate_pin_design spends about 7 credits per draft. The generation that made the draft was already paid for when it ran.
Scheduling an approved draft is charged the same as scheduling any other Pin: one plan credit on modular-billing accounts with Publishing access, whether subscribed or granted, except on winback plans, which schedule without charge; modular accounts without Publishing draw on a free-trial allowance; and legacy and Shopify accounts spend no credits, counting the Pin against the plan’s post limit instead. Check what is left with get_account_usage before a large batch. When the allowance runs out, schedule_post fails with a payment-required error and the remaining drafts stay drafts.
Next steps
Section titled “Next steps”- Generate Pins from a URL or connect a feed to keep the draft list fed
- Browse the MCP tools reference
- Connect your AI assistant
