• Welcome
  • Docs
Information
Core Resources
    Account Management
      Get All AccountsgetTrack AccountpostStop Tracking AccountdeleteBulk Track AccountspostBulk Stop Tracking AccountsdeleteGet Account HistorygetGet Specific AccountgetStop Tracking Account By IDdelete
    Video Management
      Get All VideosgetTrack VideopostStop Tracking VideodeleteBulk Track VideospostBulk Stop Tracking VideosdeleteGet Specific VideogetStop Tracking Video By IDdeleteGet Video HistorygetGet All Videos Linked To Accountget
    Collection Management
      Get All CollectionsgetCreate CollectionpostGet CollectiongetDelete CollectiondeleteUpdate CollectionpatchGet Collection VideosgetAdd Videos to CollectionpostRemove Videos from CollectiondeleteGet Collection AccountsgetAdd Accounts to CollectionpostRemove Accounts from Collectiondelete
    Organisation Management
      Get Organisation Historyget
Analytics
    Statistics
      Total VideosgetTotal Accountsget
    Data Operations
      Refresh Account DatapostRefresh Video Datapost
System
    Authentication
      Authenticateget
    Integration
      Shortimize MCP Serverpost
powered by Zudoku
Shortimize API
Shortimize API

Account Management

Endpointhttps://api.shortimize.com

Manage and track social media accounts


Get All Accounts

GET
https://api.shortimize.com
/accounts

All tiers — Limited/Basic: 1 result with masked metrics. Premium: full access.

Retrieves all accounts linked to your organisation in Shortimize. This endpoint provides a comprehensive list of all tracked social media accounts, including key metrics and performance indicators.

Use this to get an overview of all accounts under your organization's management.

Rate Limit: 5 (limited) / 15 (basic) / 30 (premium) requests per minute

Get All Accounts › query Parameters

collections
​string

Optional comma-separated list of collections to filter accounts (e.g. collection1,collection2,collection3)

Make sure to URL encode them before sending.

paginated
​boolean

Set to true to receive paginated response with {data, pagination} format instead of raw array

Default: false
page
​integer · min: 1

Page number for pagination (requires paginated=true)

Default: 1
limit
​integer · min: 1 · max: 5000

Number of items to return per page

Default: 5000
order_by
​string

Field to order results by

Default: checked_at
order_direction
​string · enum

Direction of ordering (ascending or descending)

Enum values:
asc
desc
Default: desc

Get All Accounts › Headers

Authorization
​string · required

Bearer token for authentication

Get All Accounts › Responses

Successful response with a list of accounts and their detailed information

​object[]
organisation_id
​string · uuid

Unique identifier for your organization

account_id
​string · uuid

Unique identifier for the account

account_link
​string · uri

URL of the social media account

username
​string

Username of the account. May carry a '' disambiguation suffix ('handle<platform_creator_id>') for Facebook accounts: Facebook permits two genuinely different profiles to share one display handle, and the suffix keeps their stats separate. Treat the full string as canonical in API calls; strip everything from '~' onward for display.

platform
​string · enum

Social media platform of the account

Enum values:
instagram
tiktok
youtube
created_at
​string · date-time

Timestamp when the account was added to Shortimize

checked_at
​string · date-time

Timestamp of the last data update

removed
​boolean

Indicates if the account has been removed from tracking

private
​boolean

Indicates if the account is private

empty
​boolean

Indicates if the account has no content

bio
​string

The bio of the account from the respective platform

link
​string

The primary link of the account from the respective platform

latest_followers_count
​integer | null

Most recent follower count, null if not available

latest_following_count
​integer | null

Most recent following count, null if not available

tracking_type
​string

Type of tracking applied to this account

mean_views
​number

Average number of views across tracked videos

most_viewed
​integer

Highest number of views for a single video

median_views
​number

Median number of views across tracked videos

median_views_non_zero
​number

Median number of views across tracked videos (videos with greater than 0 views)

median_likes
​number

Median number of likes across tracked videos

percent_outperform_10x
​number

Percentage of videos outperforming by 10x

percent_outperform_25x
​number

Percentage of videos outperforming by 25x

last_uploaded_at
​string · date

Date of the last uploaded video

total_videos_tracked
​integer

Total number of videos being tracked

total_views
​integer

Total views across all tracked videos

total_likes
​integer

Total likes across all tracked videos

total_comments
​integer

Total comments across all tracked videos

total_bookmarks
​integer

Total bookmarks across all tracked videos

total_shares
​integer

Total shares across all tracked videos

total_engagement
​integer

Total engagement across all tracked videos (likes + comments + shares + bookmarks)

label_ids
​array | null

Array of collection/label IDs associated with the account

label_names
​array | null

Array of collection/label names associated with the account

​object[]

Historical data array, typically containing the last 30 days of data - will be deprecated soon into it's own endpoint.

GET/accounts
curl --request GET \ --url https://api.shortimize.com/accounts \ --header 'Authorization: <string>'
shell
Example Responses
[ { "organisation_id": "00000000-0000-0000-0000-000000000000", "account_id": "00000000-0000-0000-0000-000000000000", "account_link": "https://www.example.com/path/to/resource", "username": "username", "platform": "instagram", "created_at": "2024-08-25T15:00:00Z", "checked_at": "2024-08-25T15:00:00Z", "removed": true, "private": true, "empty": true, "bio": "bio", "link": "link", "latest_followers_count": 0, "latest_following_count": 0, "tracking_type": "tracking_type", "mean_views": 0, "most_viewed": 0, "median_views": 0, "median_views_non_zero": 0, "median_likes": 0, "percent_outperform_10x": 0, "percent_outperform_25x": 0, "last_uploaded_at": "2024-08-25", "total_videos_tracked": 0, "total_views": 0, "total_likes": 0, "total_comments": 0, "total_bookmarks": 0, "total_shares": 0, "total_engagement": 0, "label_ids": [ "string" ], "label_names": [ "string" ], "history_array": [ { "likes": 0, "views": 0, "shares": 0, "comments": 0, "bookmarks": 0, "engagement": 0, "created_at": "2024-08-25" } ] } ]
json
application/json

Track Account

POST
https://api.shortimize.com
/accounts

Track an account and link it to your organisation in Shortimize.

A direct URL to the account on Shortimize will be returned.

Rate Limit: 5 (limited) / 15 (basic) / 120 (premium) requests per minute

Track Account › Headers

Authorization
​string · required

Bearer token for authentication

content-type
​string · enum · required

should be set to application/json

Enum values:
application/json

Track Account › Request Body

link
​string · uri · required

The URL of the account to start tracked

collection_ids
​string[]

Optional list of collection UUIDs to associate with the account

collection_names
​string[]

Optional list of collection names to create and associate with the account

tracking_type
​string

Optional tracking type to use (e.g., 'latest_30', 'latest_200'). If left empty, will use the organisation default.

Track Account › Responses

Successful operation

properties
​
POST/accounts
curl --request POST \ --url https://api.shortimize.com/accounts \ --header 'Authorization: <string>' \ --header 'Content-Type: application/json' \ --header 'content-type: <string>' \ --data ' { "link": "https://www.example.com/path/to/resource", "collection_ids": [ "00000000-0000-0000-0000-000000000000" ], "collection_names": [ "string" ], "tracking_type": "tracking_type" } '
shell
Example Request Body
{ "link": "https://www.example.com/path/to/resource", "collection_ids": [ "00000000-0000-0000-0000-000000000000" ], "collection_names": [ "string" ], "tracking_type": "tracking_type" }
json
Example Responses
{ "properties": {} }
json
application/json

Stop Tracking Account

DELETE
https://api.shortimize.com
/accounts

Stop tracking an account linked to your organisation.

Use this to pause tracking when you want to stop monitoring an account's performance or remove it from your active tracking portfolio. This is useful for accounts that are no longer relevant to your campaign or when you need to manage your tracking quota.

Rate Limit: 5 (limited) / 15 (basic) / 120 (premium) requests per minute

Stop Tracking Account › Headers

Authorization
​string · required

Bearer token for authentication

Stop Tracking Account › Request Body

id
​string · required

The ID (UUID) or URL of the account to stop tracking

Stop Tracking Account › Responses

Successful operation

message
​string

Success message confirming the operation

DELETE/accounts
curl --request DELETE \ --url https://api.shortimize.com/accounts \ --header 'Authorization: <string>' \ --header 'Content-Type: application/json' \ --data '{ "id": "id" }'
shell
Example Request Body
{ "id": "id" }
json
Example Responses
{ "message": "Successfully stopped tracking account." }
json
application/json

Bulk Track Accounts

POST
https://api.shortimize.com
/accounts/bulk

Start tracking up to 500 accounts in one request.

Send a list of links in links. Each one is handled on its own, so a bad link does not stop the rest - you get one entry per link back in results, saying whether it was newly tracked, already tracked, or failed.

Reading the response

  • summary gives you the counts at a glance.
  • Each entry in results has a status: tracked, already_tracked, or failed.
  • A failed entry also has a plain-language error, a stable code, and retryable. If retryable is true, sending that link again will usually work - resend just those links, not the whole batch.
  • warnings holds anything worth knowing that did not fail the request.

When the data starts arriving Requests of 50 links or fewer start fetching data straight away. Larger requests are still saved and tracked, but the data is collected by the scheduled update rather than immediately - this stops one big import from holding up everyone else. trackingEnqueued tells you which happened. Send 50 links or fewer per request if you need the data to start arriving right away.

Status codes 200 every link was saved. 207 some were saved and some failed. 422 none could be saved. For 207 and 422, read results to see why.

Rate Limit: 5 (limited) / 15 (basic) / 120 (premium) requests per minute

Bulk Track Accounts › Headers

Authorization
​string · required

Bearer token for authentication

content-type
​string · enum · required

should be set to application/json

Enum values:
application/json

Bulk Track Accounts › Request Body

links
​string[] · minItems: 1 · maxItems: 500 · required

The accounts to start tracking, as a list of links. Between 1 and 500 of them.

label_ids
​string[]

Optional label IDs to apply to all tracked accounts

tracking_type
​string · enum

Optional tracking type. Defaults to organisation setting.

Enum values:
latest_10
latest_30
latest_60
latest_100
latest_200
latest_500
all_videos

Bulk Track Accounts › Responses

Every link was saved. Some may have been tracked already - check each entry's status.

success
​boolean

True only when every link succeeded. Check the results array when this is false.

​object
​object[]

One entry per link. If you send the same link more than once it appears here once, so this array can be shorter than the list you sent.

trackingEnqueued
​boolean

Whether we started fetching data for every item in this request. False when the request was over the immediate-fetch threshold, or when a free-plan organisation sent more than the preview allowance (in which case some items may still have been fetched). Items are saved and tracked either way. Paid plans have the rest collected by the scheduled update; free plans do not, and the warnings will say so.

warnings
​string[]

Things worth knowing that did not fail the request, written in plain language. Empty when there is nothing to report.

​object

Only present for an organisation with no active subscription, listing the items that were saved but whose data will not be fetched. On the free plan only the first few items of a batch are collected.

POST/accounts/bulk
curl --request POST \ --url https://api.shortimize.com/accounts/bulk \ --header 'Authorization: <string>' \ --header 'Content-Type: application/json' \ --header 'content-type: <string>' \ --data ' { "links": [ "https://www.tiktok.com/@nike" ], "label_ids": [ "00000000-0000-0000-0000-000000000000" ], "tracking_type": "latest_10" } '
shell
Example Request Body
{ "links": [ "https://www.tiktok.com/@nike" ], "label_ids": [ "00000000-0000-0000-0000-000000000000" ], "tracking_type": "latest_10" }
json
Example Responses
{ "success": true, "summary": { "total": 0, "succeeded": 0, "failed": 0, "alreadyExists": 0, "retryable": 0 }, "results": [ { "type": "account", "url": "url", "status": "tracked", "success": true, "error": "This shortened link could not be expanded in time. Please retry this link.", "code": "invalid_url", "retryable": true, "accountId": "00000000-0000-0000-0000-000000000000", "wasExisting": true } ], "trackingEnqueued": true, "warnings": [ "This request had 120 links, which is more than 50, so we did not start fetching their data right away. Everything was saved and is being tracked - the scheduled update will collect the data shortly." ], "pendingTmvQueue": { "accounts": [ { "id": "00000000-0000-0000-0000-000000000000", "platform": "platform" } ], "videos": [ { "id": "00000000-0000-0000-0000-000000000000", "platform": "platform" } ] } }
json
application/json

Bulk Stop Tracking Accounts

DELETE
https://api.shortimize.com
/accounts/bulk

Stop tracking up to 500 accounts in one request.

Send a list in ids. Each entry can be the account's id or the link you originally tracked - we look up links for you. Historical data stays available; this only stops new data being collected.

If a link cannot be matched to something you track, the whole request fails with 404 naming the links that did not match, before anything is removed. Entries given as ids are not checked up front, so a request of ids can partly succeed and return 207 - read the response to see which ones did.

Rate Limit: 5 (limited) / 15 (basic) / 120 (premium) requests per minute

Bulk Stop Tracking Accounts › Headers

Authorization
​string · required

Bearer token for authentication

Bulk Stop Tracking Accounts › Request Body

ids
​string[] · minItems: 1 · maxItems: 500 · required

The accounts to stop tracking. Each entry is either an id or the link you tracked. Between 1 and 500 of them.

leave_videos
​boolean

If true, videos linked to these accounts will not be removed

Default: false

Bulk Stop Tracking Accounts › Responses

All accounts successfully stopped tracking

success
​boolean
​object
​object[]
DELETE/accounts/bulk
curl --request DELETE \ --url https://api.shortimize.com/accounts/bulk \ --header 'Authorization: <string>' \ --header 'Content-Type: application/json' \ --data ' { "ids": [ "string" ], "leave_videos": false } '
shell
Example Request Body
{ "ids": [ "string" ], "leave_videos": false }
json
Example Responses
{ "success": true, "summary": { "total": 0, "succeeded": 0, "failed": 0 }, "results": [ { "id": "id", "type": "type", "success": true, "error": "error" } ] }
json
application/json

Get Account History

GET
https://api.shortimize.com
/accounts/{account_id}/history

All tiers — Limited/Basic: 1 result with masked metrics. Premium: full access.

Retrieves daily aggregated metrics for a specific account (account_id) tracked by your organization. By default if no dates are passed, gets the last 30 days of data. Data is available for the last 90 days (up to 2 years for premium users).

Rate Limit: 5 (limited) / 15 (basic) / 120 (premium) requests per minute

Get Account History › path Parameters

account_id
​string · required

Account identifier - can be a UUID or account URL (URL-encoded)

Get Account History › query Parameters

start_date
​string · date

Start date (inclusive) in YYYY-MM-DD format. Defaults to 30 days ago if not provided. Cannot be older than 90 days (730 days for premium users).

end_date
​string · date

End date (inclusive) in YYYY-MM-DD format

Get Account History › Headers

Authorization
​string · required

Bearer token for authentication

Get Account History › Responses

List of daily metrics for the specified account

​object[]
date
​string · date
views
​integer

Total views for the day

likes
​integer

Total likes for the day

comments
​integer

Total comments for the day

shares
​integer

Total shares for the day

bookmarks
​integer

Total bookmarks for the day

engagements
​integer

Total engagements for the day (likes + comments + shares + bookmarks)

ads_upload_count
​integer

Number of videos uploaded on this day

total_ads
​integer

Total number of videos tracked for this account on this day

GET/accounts/{account_id}/history
curl --request GET \ --url https://api.shortimize.com/accounts/:account_id/history \ --header 'Authorization: <string>'
shell
Example Responses
[ { "date": "2024-08-25", "views": 0, "likes": 0, "comments": 0, "shares": 0, "bookmarks": 0, "engagements": 0, "ads_upload_count": 0, "total_ads": 0 } ]
json
application/json

Get Specific Account

GET
https://api.shortimize.com
/accounts/{account_id}

All tiers — Limited/Basic: 1 result with masked metrics. Premium: full access.

Retrieves detailed information about a specific account linked to your organisation in Shortimize via its account_id. This endpoint provides comprehensive data including account metrics, performance indicators, and historical data.

Use this to get in-depth insights into a particular account's performance and engagement.

Rate Limit: 5 (limited) / 15 (basic) / 30 (premium) requests per minute

Get Specific Account › path Parameters

account_id
​string · required

Account identifier - can be a UUID or account URL (URL-encoded)

Get Specific Account › Headers

Authorization
​string · required

Bearer token for authentication

Get Specific Account › Responses

Successful response with detailed information about the specific account

organisation_id
​string · uuid

Unique identifier for your organization

account_id
​string · uuid

Unique identifier for the account

account_link
​string · uri

URL of the social media account

username
​string

Username of the account. May carry a '' disambiguation suffix ('handle<platform_creator_id>') for Facebook accounts: Facebook permits two genuinely different profiles to share one display handle, and the suffix keeps their stats separate. Treat the full string as canonical in API calls; strip everything from '~' onward for display.

platform
​string · enum

Social media platform of the account

Enum values:
instagram
tiktok
youtube
created_at
​string · date-time

Timestamp when the account was added to Shortimize

checked_at
​string · date-time

Timestamp of the last data update

removed
​boolean

Indicates if the account has been removed from tracking

private
​boolean

Indicates if the account is private

empty
​boolean

Indicates if the account has no content

bio
​string

The bio of the account from the respective platform

link
​string

The primary link of the account from the respective platform

latest_followers_count
​integer | null

Most recent follower count, null if not available

latest_following_count
​integer | null

Most recent following count, null if not available

tracking_type
​string

Type of tracking applied to this account

mean_views
​number

Average number of views across tracked videos

most_viewed
​integer

Highest number of views for a single video

median_views
​number

Median number of views across tracked videos

median_views_non_zero
​number

Median number of views across tracked videos (videos with greater than 0 views)

median_likes
​number

Median number of likes across tracked videos

percent_outperform_10x
​number

Percentage of videos outperforming by 10x

percent_outperform_25x
​number

Percentage of videos outperforming by 25x

last_uploaded_at
​string · date

Date of the last uploaded video

total_videos_tracked
​integer

Total number of videos being tracked

total_views
​integer

Total views across all tracked videos

total_likes
​integer

Total likes across all tracked videos

total_comments
​integer

Total comments across all tracked videos

total_bookmarks
​integer

Total bookmarks across all tracked videos

total_shares
​integer

Total shares across all tracked videos

total_engagement
​integer

Total engagement across all tracked videos (likes + comments + shares + bookmarks)

label_ids
​array | null

Array of collection/label IDs associated with the account

label_names
​array | null

Array of collection/label names associated with the account

GET/accounts/{account_id}
curl --request GET \ --url https://api.shortimize.com/accounts/:account_id \ --header 'Authorization: <string>'
shell
Example Responses
{ "organisation_id": "00000000-0000-0000-0000-000000000000", "account_id": "00000000-0000-0000-0000-000000000000", "account_link": "https://www.example.com/path/to/resource", "username": "username", "platform": "instagram", "created_at": "2024-08-25T15:00:00Z", "checked_at": "2024-08-25T15:00:00Z", "removed": true, "private": true, "empty": true, "bio": "bio", "link": "link", "latest_followers_count": 0, "latest_following_count": 0, "tracking_type": "tracking_type", "mean_views": 0, "most_viewed": 0, "median_views": 0, "median_views_non_zero": 0, "median_likes": 0, "percent_outperform_10x": 0, "percent_outperform_25x": 0, "last_uploaded_at": "2024-08-25", "total_videos_tracked": 0, "total_views": 0, "total_likes": 0, "total_comments": 0, "total_bookmarks": 0, "total_shares": 0, "total_engagement": 0, "label_ids": [ "string" ], "label_names": [ "string" ] }
json
application/json

Stop Tracking Account By ID

DELETE
https://api.shortimize.com
/accounts/{account_id}

Stop tracking an account linked to your organisation via its account_id.

Use this to pause tracking when you want to stop monitoring an account's performance or remove it from your active tracking portfolio.

Rate Limit: 5 (limited) / 15 (basic) / 120 (premium) requests per minute

Stop Tracking Account By ID › path Parameters

account_id
​string · uuid · required

The UUID of the account to stop tracking

Stop Tracking Account By ID › Headers

Authorization
​string · required

Bearer token for authentication

Stop Tracking Account By ID › Responses

Successful operation

message
​string

Success message confirming the operation

DELETE/accounts/{account_id}
curl --request DELETE \ --url https://api.shortimize.com/accounts/:account_id \ --header 'Authorization: <string>'
shell
Example Responses
{ "message": "Successfully stopped tracking account." }
json
application/json

Video Management