Create Image Post
Overview
The Create Image Post endpoint allows you to schedule and publish image-based posts to one or multiple connected social accounts under a specific category. You can set the post content, attach one or more images, assign it to a category, and define the date and time for scheduling.
Base URL:
https://www.oneupapp.io
Endpoint
POST /api/scheduleimagepost
Request Parameters
| Parameter | Required | Description |
|---|---|---|
apiKey | Yes | Your personal API key generated from the API Access page. |
category_id | Yes | The ID of the category that groups your target social accounts. You can find your category IDs using the List Categories endpoint. |
social_network_id | Yes | A JSON array of social network IDs where the post will be published. You can find the social network IDs for accounts in a category using the List Category Accounts endpoint. You can also set the value to ALL to publish the post across all accounts enabled for the selected category. |
scheduled_date_time | Yes | The date and time (in YYYY-MM-DD HH:MM format) when the post should be published. Alternatively, you can pass timeslot to use your predefined time slots (requires Intermediate, Growth, or Business plan). |
title | No | The title of your post. For YouTube, it serves as the post title. For Threads, it's used as the topic. |
content | Yes | The text content of your post. |
image_url | Yes | The URL(s) of the image(s). Separate multiple images with ~~. You can also upload images via the Upload Media endpoint and use the returned file_path as the image_url, or upload them from your browser using Upload Without Code and copy the links. |
image_to_gbp_photo | No | Set to true to also add the image to the Photos section of your Google Business Profile. Only applicable when posting to a GBP account. Default: false |
first_comment | No | The first comment to be added to the post (optional and only for Facebook, Instagram, LinkedIn, and YouTube). |
google_post_type | No | Google Business Profile post type. Values: update, event, offer, none. Required when posting to a GBP account. When set to none, the image will only be added to the Photos section of GBP. It will not publish as a GBP Post. |
cta_button | No | CTA button for GBP update and event types. Values: CALL, LEARN_MORE, BOOK, SIGN_UP, ORDER, SHOP |
cta_button_url | No | URL for the CTA button. Optional when cta_button is CALL, required for all other button types. |
event_title | No | Required for GBP event type. The title of the event. |
event_start_date | No | Required for GBP event type. Format: YYYY-MM-DD HH:MM am/pm (e.g., 2026-04-14 08:50 am) |
event_end_date | No | Required for GBP event type. Format: YYYY-MM-DD HH:MM am/pm (e.g., 2026-04-21 08:50 am) |
offer_title | No | Required for GBP offer type. The title of the offer. |
offer_start_date | No | Required for GBP offer type. Format: YYYY-MM-DD HH:MM am/pm (e.g., 2026-04-14 08:50 am) |
offer_end_date | No | Required for GBP offer type. Format: YYYY-MM-DD HH:MM am/pm (e.g., 2026-04-21 08:50 am) |
coupon_code | No | Optional for GBP offer type. A coupon code for the offer. |
link_to_redeem_url | No | Optional for GBP offer type. A link to redeem the offer. |
isDraftPost | No | Set to true to save the post as a draft instead of scheduling it. Default: false |
requireApproval | No | Set to true to require approval before the post is published. Default: false |
The timeslot feature is not available on the Basic plan. Upgrade to Intermediate, Growth or Business plan to use timeslot scheduling.
Platform-Specific Parameters
Some social networks support additional parameters for specific image post types:
Instagram:
instagram: A JSON object with the following options:isStory(boolean): Set totrueto publish as an Instagram Story. Default:falsecollaborator(string): A comma-separated string of Instagram usernames (e.g.,"nike,adidas"). When adding collaborators, use the Instagram @username exactly as it appears without the '@' symbol. You can add up to 5 collaborators on a post. Note that the tagged account cannot be private, otherwise the post will not publish.locationId(number): The Instagram location ID for tagging a location on the post. For help finding a location ID, see How to find your location ID.is_ai_generated(boolean): Set totrueto label the post as AI-generated on Instagram. Default:false
Facebook:
facebook: A JSON object with the following options:isStory(boolean): Set totrueto publish as a Facebook Story. Default:falselocationId(number): The Facebook location ID for tagging a location on the post. For help finding a location ID, see How to find your location ID.
Snapchat:
snapchat: A JSON object with the following option:isSpotLight(boolean): Set totrueto publish as a Snapchat Spotlight. Default:false
TikTok:
tiktok: A JSON object with the following options:is_ai_generated(boolean): Set totrueto disclose that the content was AI-generated, as required by TikTok's Content Disclosure policy. Default:falseis_your_brand(boolean): Set totrueif the post promotes your own brand, product, or service. TikTok will label it as "Promotional content". Default:falseis_branded_content(boolean): Set totrueif the post promotes another brand or third party (paid partnership). TikTok will label it as "Paid partnership". Default:falsemusicOption(object): Add trending music to your TikTok post. Contains:music_title(string): Title of the musicmusic_sound_id(string): TikTok sound IDmusic_url(string): URL of the musicmusic_thumbnail(string): Thumbnail image URLmusic_author(string): Music author/artist name
When adding specific music to your TikTok post, provide all music-related fields (music_title, music_sound_id, music_url, music_thumbnail, music_author) inside musicOption. These can be fetched from the Get TikTok Trending Sound endpoint.
Pinterest:
pinterest: A JSON object with the following fields (required when posting to a Pinterest account):board_name(string, required): The name of the Pinterest board.board_id(string, required): The ID of the Pinterest board.destination_link(string, optional): The URL of the destination link for the Pin.- Both
board_nameandboard_idare mandatory fields. You can fetch available boards using the Fetch Pinterest Boards endpoint.
Google Business Profile:
Google Business Profile supports three post types via the google_post_type parameter. These parameters are passed as individual fields (not as a JSON object).
Update type (google_post_type=update):
cta_button(optional):CALL,LEARN_MORE,BOOK,SIGN_UP,ORDER,SHOPcta_button_url(optional ifcta_buttonisCALL, required otherwise): The URL for the CTA button
Event type (google_post_type=event):
event_title(required): The title of the eventevent_start_date(required): FormatYYYY-MM-DD HH:MM am/pm(e.g.,2026-04-14 08:50 am)event_end_date(required): FormatYYYY-MM-DD HH:MM am/pm(e.g.,2026-04-21 08:50 am)cta_button(optional):CALL,LEARN_MORE,BOOK,SIGN_UP,ORDER,SHOPcta_button_url(optional ifcta_buttonisCALL, required otherwise): The URL for the CTA button
Offer type (google_post_type=offer):
offer_title(required): The title of the offeroffer_start_date(required): FormatYYYY-MM-DD HH:MM am/pm(e.g.,2026-04-14 08:50 am)offer_end_date(required): FormatYYYY-MM-DD HH:MM am/pm(e.g.,2026-04-21 08:50 am)coupon_code(optional): A coupon code for the offerlink_to_redeem_url(optional): A link to redeem the offer
Example with platform-specific parameters:
curl --location --request POST \
"https://www.oneupapp.io/api/scheduleimagepost" \
--data-urlencode "apiKey=621544d93ffe2db52b01" \
--data-urlencode "category_id=49839" \
--data-urlencode 'social_network_id=["113024478527731"]' \
--data-urlencode "scheduled_date_time=2026-12-12 13:13" \
--data-urlencode "title=My Image Post" \
--data-urlencode "content=Image post" \
--data-urlencode "image_url=https://cdn.filestackcontent.com/BT933lwUSEKkmpfI9O57" \
--data-urlencode 'instagram={"isStory":true}'
Example with Instagram AI-generated label:
curl --location --request POST \
"https://www.oneupapp.io/api/scheduleimagepost" \
--data-urlencode "apiKey=621544d93ffe2db52b01" \
--data-urlencode "category_id=49839" \
--data-urlencode 'social_network_id=["17841408823790514"]' \
--data-urlencode "scheduled_date_time=2026-12-12 13:13" \
--data-urlencode "content=AI-generated image post" \
--data-urlencode "image_url=https://cdn.filestackcontent.com/BT933lwUSEKkmpfI9O57" \
--data-urlencode 'instagram={"is_ai_generated":true}'
Example with timeslot scheduling:
curl --location --request POST \
"https://www.oneupapp.io/api/scheduleimagepost" \
--data-urlencode "apiKey=621544d93ffe2db52b01" \
--data-urlencode "category_id=49839" \
--data-urlencode 'social_network_id=["113024478527731"]' \
--data-urlencode "scheduled_date_time=timeslot" \
--data-urlencode "title=My Image Post" \
--data-urlencode "content=Image post using timeslot scheduling" \
--data-urlencode "image_url=https://cdn.filestackcontent.com/BT933lwUSEKkmpfI9O57"
Example with Instagram location:
curl --location --request POST \
"https://www.oneupapp.io/api/scheduleimagepost" \
--data-urlencode "apiKey=621544d93ffe2db52b01" \
--data-urlencode "category_id=49839" \
--data-urlencode 'social_network_id=["17841408823790514"]' \
--data-urlencode "scheduled_date_time=2026-12-12 13:13" \
--data-urlencode "content=Image post with location" \
--data-urlencode "image_url=https://cdn.filestackcontent.com/BT933lwUSEKkmpfI9O57" \
--data-urlencode 'instagram={"locationId":992739747256078}'
Example with Pinterest board:
curl --location --request POST \
"https://www.oneupapp.io/api/scheduleimagepost" \
--data-urlencode "apiKey=621544d93ffe2db52b01" \
--data-urlencode "category_id=49839" \
--data-urlencode 'social_network_id=["pin_oneupapp"]' \
--data-urlencode "scheduled_date_time=2026-12-12 13:13" \
--data-urlencode "content=Image post to Pinterest" \
--data-urlencode "image_url=https://cdn.filestackcontent.com/BT933lwUSEKkmpfI9O57" \
--data-urlencode 'pinterest={"board_name":"OneUp","board_id":"635641003596046298"}'
Example with TikTok music:
curl --location --request POST \
"https://www.oneupapp.io/api/scheduleimagepost" \
--data-urlencode "apiKey=621544d93ffe2db52b01" \
--data-urlencode "category_id=49839" \
--data-urlencode 'social_network_id=["tiktok_account_id"]' \
--data-urlencode "scheduled_date_time=2026-05-20 14:30" \
--data-urlencode "content=My post with trending music" \
--data-urlencode "image_url=https://example.com/image.jpg" \
--data-urlencode 'tiktok={"musicOption":{"music_title":"Viral Song 2026","music_sound_id":"123456789","music_url":"https://tiktok.com/music/sound/123456789","music_thumbnail":"https://cdn.tiktok.com/album/123456789.jpg","music_author":"Popular Artist"}}'
Example with TikTok commercial content disclosure:
curl --location --request POST \
"https://www.oneupapp.io/api/scheduleimagepost" \
--data-urlencode "apiKey=621544d93ffe2db52b01" \
--data-urlencode "category_id=49839" \
--data-urlencode 'social_network_id=["tiktok_account_id"]' \
--data-urlencode "scheduled_date_time=2026-05-20 14:30" \
--data-urlencode "content=Check out our new product" \
--data-urlencode "image_url=https://example.com/image.jpg" \
--data-urlencode 'tiktok={"is_your_brand":true,"is_branded_content":true}'
GBP Examples
Google Business Profile - Update type:
curl --location --request POST \
"https://www.oneupapp.io/api/scheduleimagepost" \
--data-urlencode "apiKey=621544d93ffe2db52b01" \
--data-urlencode "category_id=49839" \
--data-urlencode 'social_network_id=["accounts/116185162672310389659/locations/1366069594757511498"]' \
--data-urlencode "scheduled_date_time=2026-12-12 13:13" \
--data-urlencode "content=Check out our new products!" \
--data-urlencode "image_url=https://cdn.filestackcontent.com/BT933lwUSEKkmpfI9O57" \
--data-urlencode "google_post_type=update" \
--data-urlencode "cta_button=LEARN_MORE" \
--data-urlencode "cta_button_url=https://example.com"
Google Business Profile - Event type:
curl --location --request POST \
"https://www.oneupapp.io/api/scheduleimagepost" \
--data-urlencode "apiKey=621544d93ffe2db52b01" \
--data-urlencode "category_id=49839" \
--data-urlencode 'social_network_id=["accounts/116185162672310389659/locations/1366069594757511498"]' \
--data-urlencode "scheduled_date_time=2026-12-12 13:13" \
--data-urlencode "content=Join us for our annual sale event!" \
--data-urlencode "image_url=https://cdn.filestackcontent.com/BT933lwUSEKkmpfI9O57" \
--data-urlencode "google_post_type=event" \
--data-urlencode "event_title=Annual Sale" \
--data-urlencode "event_start_date=2026-04-14 08:50 am" \
--data-urlencode "event_end_date=2026-04-21 08:50 am" \
--data-urlencode "cta_button=LEARN_MORE" \
--data-urlencode "cta_button_url=https://example.com"
Google Business Profile - Offer type:
curl --location --request POST \
"https://www.oneupapp.io/api/scheduleimagepost" \
--data-urlencode "apiKey=621544d93ffe2db52b01" \
--data-urlencode "category_id=49839" \
--data-urlencode 'social_network_id=["accounts/116185162672310389659/locations/1366069594757511498"]' \
--data-urlencode "scheduled_date_time=2026-12-12 13:13" \
--data-urlencode "content=Get 20% off your next order!" \
--data-urlencode "image_url=https://cdn.filestackcontent.com/BT933lwUSEKkmpfI9O57" \
--data-urlencode "google_post_type=offer" \
--data-urlencode "offer_title=20% Off Sale" \
--data-urlencode "offer_start_date=2026-04-14 08:50 am" \
--data-urlencode "offer_end_date=2026-04-21 08:50 am" \
--data-urlencode "coupon_code=SAVE20" \
--data-urlencode "link_to_redeem_url=https://example.com/redeem"
Sample Response
{
"message": "2 new Posts Scheduled.",
"post_ids": [
53956476,
53956477
],
"error": false,
"data": []
}
✅ Result: Your image post (with one or multiple images) has been successfully scheduled! The message confirms that the post is queued for publishing at the specified date and time.
Response Fields
| Field | Description |
|---|---|
message | A summary of how many posts were scheduled. |
post_ids | An array of the IDs of the newly scheduled posts, one per social account. Use these IDs with other endpoints that accept a post_id, such as Edit Post and Delete Scheduled Post. |
error | false when the request succeeds. |
data | Always an empty array for this endpoint. |
Platform Photo Upload Limits
| Platform | Max Photos | Photo Size Limit | Caption Support | Notes |
|---|---|---|---|---|
| 20 | No restriction | Yes | Supports alt text, no restrictions on photo size. | |
| 10 | 8 MB | Yes | Minimum resolution: 320×320 px, automatically cropped. | |
| TikTok | 35 | No restriction | No | Cannot mix photos with GIFs or videos. |
| Threads | 20 | 8 MB | No | Cannot mix photos with GIFs or videos. |
| X(Twitter) | 4 | 5 MB | No | Supports only up to 4 photos per post. |
| 9 | No restriction | No | Photos and GIFs are supported, cannot mix with videos. | |
| Bluesky | 4 | 1 MB | No | Supports up to 4 images per post, alt text available. |
Tips & Notes
- Make sure your target social accounts are active and not expired before scheduling.
- The
social_network_idmust match the account IDs retrieved from the List Category Accounts or List Social Accounts endpoints. - Ensure all
image_urls are publicly accessible and point directly to image files. - Use
~~to separate multiple images in theimage_urlparameter. - Avoid overloading with too many simultaneous posts to prevent API rate limiting.
- When using platform-specific parameters, ensure the JSON is properly formatted and URL-encoded in the request.
✅ Next Step: Combine this with your category and account lookups to automate the image posting workflow end-to-end.