Social Media APIs for Posting, Scheduling, and Analytics
The Social Media API is a Python wrapper SDK for Ayrshare's APIs. While most of the capabliites are supported, the Python wrapper SDK is not as feature complete as the Ayrshare's APIs.
What is Ayrshare?
Ayrshare is a powerful set of APIs that enable you to send social media posts, get analytics, manage comments, do DMs, and more to X/Twitter, Instagram, Facebook, LinkedIn, YouTube, Google Busienss Profile, Pinterest, TikTok, Reddit, and Telegram on behalf of your users or clients.
The Ayrshare Social API handles all the setup and maintenance for the social media networks. One API to rule them all (yeah, went there). See the full list of full list of features.
Get started with a free plan, or if you have a platform or manage multiple users check out the Business Plan.
For more information on setup, see our installation video or our Quick Start Guide.
Installation
pip install social-post-api
Setup
1. Create a free Ayrshare account.
2. Enable your social media accounts such as C/Twitter, Facebook, LinkedIn, Reddit, Instagram, Google Business Profile, Telegram, TikTok, or YouTube in the Ayrshare dashboard.
3. Copy your API Key from the Ayrshare dashboard. Used for authentication.
Getting Started
Initialize Social Media API
Create a new Social Post object with your API Key.
from ayrshare import SocialPost
social = SocialPost('DJED-DKEP-SJWK-WJKS')
History, Post, Delete Example
This simple example shows how to post, get history, and delete the post. This example assumes you have a free API key from Ayrshare and have enabled X/Twitter, Facebook, and LinkedIn. Note, Instagram, Telegram, YouTube, TikTok, and Reddit also available.
from ayrshare import SocialPost
social = SocialPost('8jKj782Aw8910dCN')
postResult = social.post({'post': 'Nice Posting 2', 'platforms': ['twitter', 'facebook', 'linkedin']})
print(postResult)
deleteResult = social.delete({'id': postResult['id']})
print(deleteResult)
print(social.history())
Social API
Post
Published a new post to the specified social networks either immediately or at scheduled future date with the Social API. Returns a promise that resolves to an object containing the post ID and post status (success, error). See the post endpoint for the full capabilities.
postResponse = social.post({
'post': 'Best post ever!',
'platforms': ['twitter', 'facebook', 'linkedin', 'pinterest', 'telegram', 'instagram'],
'mediaUrls': ['https://img.ayrshare.com/012/gb.jpg'],
'scheduleDate': '2020-08-07T15:17:00Z',
'shorten_links': true
})
Delete
Delete a post with a given post ID, obtained from the "post" response. Returns a promise with the delete status. Also, can bulk delete multiple IDs at once using the "bulk" key. See the delete endpoint for more details.
deleteResponse = social.delete({
'id': 'POST ID',
'bulk': ['Post ID 1', 'Post ID 2', ...]
})
Get Post
Get a post with a given post ID. Returns a promise that resolves to a post object. See the get post endpoint for more details.
getResponse = social.getPost({
'id': 'POST ID',
})
Retry Post
Retry a failed post with a given post ID. Returns a promise that resolves to an object with the post status. See the retry post endpoint for more details.
retryResponse = social.retryPost({
'id': 'POST ID',
})
Update Post
Update a post with a given post ID. Returns a promise that resolves to an object with status and update info. See the update post endpoint for more details.
updateResponse = social.updatePost({
'id': 'POST ID',
'scheduleDate': '2024-08-07T15:17:00Z',
'approved': 'true',
'youTubeOptions': {
'title': 'New Title',
'description': 'New Description',
'visibility': 'unlisted',
'categoryId': 24,
},
'notes': 'New notes',
})
History
Get a history of all posts and their current status in descending order. Returns a promise that resolves to an array of post objects. See the history endpoint for more details.
historyResponse = social.history({
'lastRecords': 10,
'lastDays': 30,
})
Upload Media
Upload and store a new image. Returns a URL referencing the image. Can be used in "image_url" in "post". See the media endpoint for more details.
uploadResponse = social.upload({
'file': 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ...',
'fileName': 'test.png',
'description': 'best image'
})
Get Media
Get all media URLS. Returns a promise that resolves to an array of URL objects. See the media endpoint for more details.
mediaResponse = social.media()
Verify Media Exists
Verify that the media file exists when uploaded. See the media verify exists endpoint for more details.
verifyResponse = social.verifyMediaExists({
'mediaUrl': 'https://img.ayrshare.com/012/gb.jpg',
})
Resize Image
Get image resized according to social network requirements. See the resize image endpoint for more details.
resizeResponse = social.resizeImage({
'imageUrl': "https://theImage.jpg",
'platform': "facebook"
'watermarkUrl': "https:#theWatermark.png",
'effects': { color: "#A020F0" }
'dimensions': { width: 1200, height: 628 }
'mode': "blur"
})
User
Get data about the logged in user, such as post quota, used quota, active social networks, and created date. See the user endpoint for more details.
user = social.user()
Post Analytics
Get analytics on a post. Returns a promise that resolves to an object containing the analytics data. See the post analytics endpoint for more details.
analytics = social.analyticsPost({
'id': 'Post ID',
'platforms': ['twitter', 'linkedin']
})
Social Analytics
Get analytics on a social network. Returns a promise that resolves to an object containing the analytics data. See the social analytics endpoint for more details.
analytics = social.analyticsSocial({
'platforms': ['twitter', 'linkedin']
})
Add a new RSS or Substack feed to auto post all new articles. Returns a promise that resolved to an object containing the feed ID. See How to Automate Your Blog or Newsletter for more info.
feedResponse = social.addFeed({
'url': 'https://theRSSFeed',
'type': 'RSS',
})
Delete an RSS feed for a given ID.
feedResponse = social.deleteFeed({
'id': 'Feed ID',
})
Get Feeds
Get all registered RSS feeds. Returns a promise that resolves to an array of feed objects. See the get feeds endpoint for more details.
feedsResponse = social.getFeeds()
Update Feed
Update an RSS feed for a given ID. Returns a promise that resolves to an object containing the feed ID. See the update feed endpoint for more details.
feedResponse = social.updateFeed({
'id': 'Feed ID',
'useFirstImage': 'true',
'autoHashtag': 'true',
})
Get comments for a post. Currently only on Facebook and Instagram. See the get comment endpoint for more details.
getCommentsResponse = social.getComments({
'id': 'Post Id',
})
Add a comment to a post. Currently only on Facebook and Instagram. See the create comment endpoint for more details.
postCommentResponse = social.postComment({
'id': 'Post Id',
'platforms': ['facebook', 'instagram'],
'comment': 'The best comment ever!',
})
Delete either a single comment or all comments under a post that were sent via Ayrshare. Available for Facebook, Instagram, LinkedIn, Reddit, TikTok, X/Twitter, and YouTube. See the delete comments endpoint for more details.
deleteCommentResponse = social.deleteComments({
'id': "Pkdo9sjk2",
'platforms': ["instagram", "facebook"],
})
Reply to a comment. Available for Facebook, Instagram, LinkedIn, TikTok, X/Twitter, and YouTube. See the reply comment endpoint for more details.
replyCommentResponse = social.replyComment({
'commentId': 'Pkdo9sjk2',
'platforms': ['instagram', 'facebook'],
'comment': 'What a comment'
})
Business Functions for Multiple Users - Business or Enterprise Plan Required
The Business Plan allows you to create, manage, and post on behalf of client profiles via the API or Dashboard GUI. You can integrate Ayrshare into your platform, product, or agency and give your clients social media capabilites. Please contact us with any questions.
Using Profile Key
In order to make any call on behalf of a specific profile, you may include the profile key in the call like so:
postResponse = social.post({
'post': 'The best post ever!',
'platforms': ['twitter'],
'profileKey': 'JI9s-kJII-9283-OMKM'
})
The above is a post call but the same principle applies to all calls.
Create Profile
Create a new account profile under the primary account. See the create profile endpoint for more details.
createProfileResponse = social.createProfile({
'title': 'New Profile Title',
})
Delete Profile
Delete a profile owned by the primary account. See the delete profile endpoint for more details.
deleteProfileResponse = social.deleteProfile({
'profileKey': 'JI9s-kJII-9283-OMKM',
})
Generate a JWT URL
Generate a JWT Token and URL used for authorizing a user's access to the Social Account linking page. See the generate JWT endpoint for more details.
generateJWTResponse = social.generateJWT({
'domain': 'mydomain',
'privateKey': 'private key data...',
'profileKey': 'JI9s-kJII-9283-OMKM',
})
Update Profile
Update a profile owned by the primary account. See the update profile endpoint for more details.
updateProfileResponse = social.updateProfile({
'profileKey': 'JI9s-kJII-9283-OMKM',
'title': 'This is a great new title'
'disableSocial': ['facebook', 'linkedin']
'hideTitle': 'true'
'displayTitle': 'true'
})
Get Profiles
Get all the profiles associated with the primary account. See the get profile endpoint for more details.
getProfileResponse = social.getProfiles()
Unlink Social Network
Unlink a social account for a given user profile owned by the primary account. See the unlink social network endpoint for more details.
unlinkResponse = social.unlinkSocial({
'profileKey': "JI9s-kJII-9283-OMKM",
'platform': "facebook"
})
Get Brand Info on a User
Get brand information on users and companies public social media accounts. See the brand endpoint for more details.
brandResponse = social.getBrandByUser({
'platforms': ['instagram', 'facebook'],
'instagramUser': '@ayrshare',
'facebookUser': 'ayrshare',
})
Auto Hashtags
Automatically add hashtags to your post. See the auto hashtags endpoint for more details.
autoHashtagsResponse = social.autoHashtags({
'post': 'I love social media',
'position': 'auto'
'max': 2
})
Recommend Hashtags
Get suggestions for hashtags based on a keyword. See the recommend hashtags endpoint for more details.
recommendHashtagsResponse = social.recommendHashtags({
'keyword': 'social media',
})
Check Banned Hashtags
Check if a hashtag is banned on Instagram or other social networks. See the check banned hashtags endpoint for more details.
checkBannedHashtagsResponse = social.checkBannedHashtags({
'hashtag': 'socialmedia',
})
Get All Reviews
Retrieve all the reviews for the specified platform. See the get all reviews endpoint for more details.
allReviewsResponse = social.reviews({
'platform': 'facebook',
})
Get Single Review
Retrieve a single review. See the get single review endpoint for more details.
singleReviewResponse = social.review({
'id': 'Review ID',
'platform': 'gmb',
})
Reply to Review
Reply to a review. See the reply to review endpoint for more details.
replyReviewResponse = social.replyReview({
'reviewId': 'Review ID',
'platform': 'facebook',
'reply': 'Thank you for the review'
})
Delete Review Reply
Delete a review reply. See the delete review reply endpoint for more details.
deleteReplyReviewResponse = social.deleteReplyReview({
'reviewId': 'Review ID',
'platform': 'gmb',
})
Max Pack Required
Generate Post
Generate a new social post using ChatGPT. Token limits applicable. See the generate post endpoint for more details.
generatePostResponse = social.generatePost({
'text': 'I love social media',
'hashtags': 'true',
'emojis': 'true',
'twitter': 'true',
})
Generate Rewrite
Generate variations of a social media post using ChatGPT. Token limits applicable. See the generate rewrite endpoint for more details.
generateRewriteResponse = social.generateRewrite({
'post': 'I love social media',
'emojis': 'true',
'hashtags': 'true',
'twitter': 'true',
'rewrites': 5,
})
Generate Transcription
Provide a transcription of a video file. See the generate transcription endpoint for more details.
generateTranscriptionResponse = social.generateTranscription({
'videoUrl': 'https://theVideo.mp4',
})
Generate Translation
Translate text for a post to over 100 different languages. See the generate translation endpoint for more details.
generateTranslationResponse = social.generateTranslation({
'text': 'I love social media',
'lang': 'es',
})
Generate Sentiment Analysis
Generate a sentiment analysis on a social media post or comment to understand if the text is positive, negative, or neutral and recommendations on improving the text for a more positive reaction. See the generate sentiment analysis endpoint for more details.
generateSentiment= social.generateSentiment({
'text': 'I love social media'
})
Generate Alt Text
Create AI-generated alt text for your images. See the generate alt text endpoint for more details.
generateAltTextResponse = social.generateAltText({
'url': 'https://theImage.jpg',
'keywords': ['social media', 'ayrshare'],
'lang': 'en'
})
Shorten link
Provide a URL and a shortened link will be returned. See the shorten link endpoint for more details.
shortenLinkResponse = social.shortLink({
'url': 'https://theURL.com',
'utmId': '1234',
'utmSource': 'source',
'utmMedium': 'medium',
'utmCampaign': 'campaign',
'utmTerm': 'term',
'utmContent': 'content',
})
Analytics for Shortened Links
Return analytics for all shortened links or a single link for a given link ID. See the analytics link endpoint for more details.
analyticsLinkResponse = social.shortLinkAnalytics({
'id': 'Link ID',
'fromCreatedDate': '2023-07-08T12:30:00Z',
'toCreatedDate': '2023-07-08T12:30:00Z',
'fromClickDate': '2023-07-08T12:30:00Z',
'toClickDate': '2023-07-08T12:30:00Z',
})
Additional Calls
- Webhooks endpoints
- unregisterWebhook
- listWebhook
- setAutoSchedule
- deleteAutoSchedule
- listAutoSchedule
Other Packages & Integrations
We have other package and integrations such as Node NPM, Bubble.io, and Airtable + examples in C#, PHP, and Go.
Information and Support
Additional examples, responses, etc. can be found at:
RESTful API Endpoint Docs
GitHub
See our changelog for the latest and greatest.
Please contact us with your questions, or just to give us shout-out 📢!