Posts allow businesses to share announcements, offers, events, and updates directly on connected platforms. Once published, your content appears on Google, Facebook, Instagram, and your Store Locator, helping you engage with customers and improve your online presence.For Google: When a business is connected to a Google location (action performed in Partoo app on Partner Connection page), existing Google Posts are automatically imported and kept in sync as Partoo Posts. If the business is later disconnected, the Google Posts published on Google will be deleted from Partoo database.
Prerequisites
Before using the Posts API, ensure you have:- Active subscription to Posts plan
- API key with appropriate role (Business Manager, Group Manager, Organization Manager, or Organization Admin)
-
Platform Integrations: Businesses must be connected to target platforms
- Google My Business
- Facebook
- Instagram
- Store Locator
- Businesses have a
google_location_id
connected DIFFUSION
feature enabled
If you need help with any of these prerequisites, please contact your Account Manager who can guide you through the process.
Understanding Post Types
Different post types serve different purposes and have specific requirements:- News Posts
- Event Posts
- Offer Posts
News posts are announcements and updates about your business.Required fields:
summary
: Main content (max 1500 chars for Google, 10000 for Facebook, 2200 for Instagram)
- ✅ Instagram (requires at least 1 image)
- ✅ Store Locator
In API requests, use
"post_type": "news"
to create news posts.Creating Posts
All roles can create posts for the businesses they have access to. Each business gets its own individual post.Who can create posts for multiple businesses:
- Organization Admin & Organization Manager: All businesses in the organization
- Group Manager: All businesses in their assigned groups
- Business Manager: Their assigned businesses (can be one or multiple)
bulk_id
to group them together. However, only Organization Admin and Organization Manager can use the bulk management endpoints to update/delete all posts in a bulk at once.Single Business Post
Single Business Post
Creating a post for one business
All roles (Business Manager, Group Manager, Organization Manager, Organization Admin) can create posts for individual businesses they have access to.Multiple Businesses Post (Bulk Post)
Multiple Businesses Post (Bulk Post)
Creating posts for multiple businesses
Each business gets its own individual post. When targeting more than one business, all posts share abulk_id
for grouping purposes.- By Group
- By Organization
Group Managers, Organization Managers, and Organization Admins can create posts for businesses in specific groups:
What happens:
- Each business gets its own separate Post record
- All posts share the same
bulk_id
(assigned internally) - To get the
bulk_id
, query one of the created posts using itspost_id
- Only ORG_ADMIN/ORG_MANAGER can use bulk management endpoints to update/delete all posts at once
Create an Event Post
Create an Event Post
Publishing event posts with time constraints
Event posts are perfect for promoting time-specific events at your business locations.1
Define event details
Prepare all required event information:
- Event title (max 58 characters)
- Start and end dates/times
- Event description (optional)
- Media files (optional)
2
Create the event post
Event posts are only supported on Google. Do not include Facebook, Instagram, or Store Locator as publishers for event posts.
The post will be created with state
pending
and will transition to live
once published. This process is asynchronous and may take a few minutes.Create an Offer Post
Create an Offer Post
Publishing promotional offers with validity periods
Offer posts help you promote special deals, discounts, and limited-time promotions.1
Prepare offer details
Gather all offer information:
- Offer title (max 58 characters)
- Validity period (start and end dates/times)
- Offer description (optional)
- Coupon code (optional, max 58 characters)
- Terms and conditions (optional, max 5000 characters)
2
Create the offer post
Offer posts are only supported on Google. Do not include Facebook, Instagram, or Store Locator as publishers for offer posts.
Schedule Posts for Future Publishing
Schedule Posts for Future Publishing
Publishing posts at a specific future time
Scheduled posts allow you to prepare content in advance and have it automatically published at a specific time.1
Understand scheduling vs validity
It’s important to distinguish between two different time concepts:
schedule_time
: When the post should be published to the platformsstart_at
/end_at
: The validity period of the post content (for events and offers)
The
schedule_time
must be at least 2 hours in the future from the current time.
You can schedule a news post, event post, or offer post. The schedule_time
controls publication, while start_at
/end_at
control content validity.2
Create a scheduled post
The post will be created with state
scheduled
and will automatically transition to pending
at the scheduled time, then to live
once published.You can update or delete scheduled posts before they’re published. Once they enter the
pending
state, updates are no longer possible (but deletion still works).Create Draft Posts for Validation
Create Draft Posts for Validation
Creating drafts requiring approval before publishing
Draft posts allow organization admins to create posts that require validation from Business Managers or Group Managers before being published.Draft Post Requirements:
- User must have
ORG_ADMIN
role - Organization must have
DRAFT_POST
feature enabled - Organization must have more than 1 business
- Local users (Business Managers or Group Managers) must exist to validate drafts
1
Check if you can create drafts
Verify you have permission to create draft posts:
2
Create a draft post
Create a post that requires validation before publishing:
When
send_notifications: true
, all Business Managers and Group Managers with access to the businesses will receive an email notification about the draft post requiring validation.Draft posts must include an
expiration_time
. If not validated before this time, the draft will expire and cannot be published.3
Validate and publish draft
Business Managers or Group Managers can validate drafts by updating them:
Once a Business Manager or Group Manager updates the draft, it transitions from
to_validate
to pending
and will be published to the selected platforms.Add Images to Posts
Add Images to Posts
Including images in your posts
Images make your posts more engaging and increase visibility on platforms.1
Understand image requirements
Different platforms have different image requirements:
- Google My Business
- Facebook
- Instagram
- Store Locator
- Limit: 1 image
- Min size: 250 × 250px
- Max size: 10000 × 10000px
- Max weight: 5MB
- Formats: JPEG, JPG, PNG
2
Create post with images
Add images to your posts using the
image_url
field:3
Add multiple images
For platforms that support multiple images (Facebook, Instagram), provide an array of URL strings:
- Instagram: Requires at least 1 image (posts without images will fail). Supports JPEG/JPG only.
- Google & Store Locator: Only support 1 image per post
- Facebook: Supports up to 10 images
Managing Existing Bulks
Once you’ve created posts for multiple businesses (which automatically generates abulk_id
internally), Organization Admins and Organization Managers can use bulk management endpoints to search, update, or delete all posts in a bulk at once.
To get the
bulk_id
, you need to retrieve one of the created posts using its post_id
(from the create response). The post object contains the bulk_id
field.Role Restriction: Bulk management endpoints (
/posts/bulks
, /posts/count_bulk
, /posts/delete_bulk
, /posts/edit_bulk
) are restricted to Organization Admin and Organization Manager roles only.While Group Managers can create posts for multiple businesses (which generates a bulk_id), they cannot use the bulk management endpoints to search, update, or delete those bulks.Search Bulk Posts
Search Bulk Posts
Finding and tracking posts in a bulk
Use the bulk search endpoint to retrieve all posts in a specific bulk. You can use thebulk_id
if you know it, or search by business/group to find your posts.The
bulk_id
parameter is optional. Without it, /posts/bulks
returns the list of all posts in bulk. You can combine bulk_id
with other filters like state__in
, topic_type
, etc. The first post in results will contain the bulk_id
field.Count Posts in a Bulk
Count Posts in a Bulk
Update Bulk Posts
Update Bulk Posts
Modifying content across multiple posts
You can update all posts in a bulk simultaneously, which is useful for correcting errors or updating information.Platform Behavior:
- Google & Facebook: Updates propagate asynchronously (a few minutes delay)
- Store Locator: Updates apply instantly
- Instagram: Cannot be edited once live (API limitation)
Delete Bulk Posts
Delete Bulk Posts
Removing multiple posts at once
Delete all posts in a bulk when content is no longer relevant or needs to be removed.Deletion Behavior:
- Published posts transition through
pending_deleted
(asynchronous, a few minutes) - Unpublished posts are deleted immediately
- Instagram: Only removes Partoo records, not the actual Instagram post (manual deletion required)
Platform-Specific Guidelines
Quick reference for key differences between platforms:- Google My Business
- Facebook
- Instagram
- Store Locator
Supported Post Types: News, Event, OfferKey Limits:
- Summary: 1500 characters
- Title: 58 characters (events/offers)
- Offer terms: 5000 characters
- Images: 1 per post
Only platform supporting all three post types (News, Event, Offer).
Post Lifecycle and States
Understanding post states helps you track the publishing process and troubleshoot issues:Post States
Post States
-
to_validate
: draft post awaiting validation from a Business Manager or Group Manager -
scheduled
: scheduled for future publishing at the specifiedschedule_time
-
pending
: queued for publishing -
live
: successfully published -
to_configure
: configuration error -
error
: publisher error -
pending_deleted
: queued for deletion -
deleted
: successfully deleted from platforms and Partoo -
expired
: draft post expired before validation, or post passed itsend_at
date
State Transitions
State Transitions
- Draft posts:
to_validate
→pending
(after validation) →live
- Scheduled posts:
scheduled
→pending
(at schedule time) →live
- Immediate posts:
pending
→live
(orerror
/to_configure
on failure) - Deletions: →
pending_deleted
→deleted
Monitoring Post Progress
State transitions are asynchronous. To monitor post status:Use the search endpointGET /api/v2/posts
with filters like state__in=live
or state__in=pending
to check if posts are published successfully.The
/state
endpoint (GET /api/v2/posts/{post_id}/state
) only returns error information for publishers in to_configure
state. It does NOT show live, pending, scheduled, or error
state posts. Use it only for troubleshooting configuration issues.Troubleshooting Failed Posts
If your post entersto_configure
state, use the state diagnostics endpoint to understand what configuration is missing.The
/state
endpoint only returns publishers in to_configure
state. An empty response {}
means no configuration errors were detected (posts may be pending, scheduled, live, or in other error states).The
expected_error_message
field contains an error key indicating what configuration is missing (e.g., "publisher_connection_required"
, "business_is_not_subscribed_to_pm"
).