{"components":{"securitySchemes":{"ApiKeyAuth":{"in":"header","name":"x-api-key","type":"apiKey"}}},"info":{"description":"Key-based OAISYS API access. Log in to OAISYS to copy your API key from Account Settings.","title":"OAISYS API","version":"2026-05-03"},"openapi":"3.1.0","paths":{"/mcp":{"get":{"responses":{"200":{"description":"MCP connection instructions"}},"security":[],"summary":"Describe the hosted OAISYS MCP endpoint"},"post":{"responses":{"200":{"description":"MCP JSON-RPC response"}},"summary":"Hosted MCP JSON-RPC endpoint for assistant tools"}},"/v1/accounts":{"get":{"responses":{"200":{"description":"Account inventory without private credentials"}},"summary":"List connected accounts for the API key owner"}},"/v1/accounts/{account_id}/proxy":{"get":{"responses":{"200":{"description":"Account proxy details"}},"summary":"Get proxy for one connected account"},"patch":{"responses":{"200":{"description":"Proxy update result"}},"summary":"Update proxy for one connected account"}},"/v1/connect":{"get":{"responses":{"200":{"description":"Connected workspace context"}},"summary":"Return workspace account/action context for an OAISYS API key"}},"/v1/home":{"get":{"responses":{"200":{"description":"Active accounts, alive inactive accounts, banned accounts, and latest health checks"}},"summary":"Return Home tab operational state for an OAISYS API key"}},"/v1/instagram/comment":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"account_ids":{"description":"Connected Instagram account IDs owned by the API key user.","items":{"oneOf":[{"type":"string"},{"type":"integer"}]},"type":"array"},"comment_text":{"description":"Comment text.","type":"string"},"message":{"description":"Alias for comment_text.","type":"string"},"post_url":{"description":"Instagram post/reel URL or shortcode.","type":"string"},"target_url":{"description":"Alias for post_url.","type":"string"}},"required":["account_ids","post_url","comment_text"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Action accepted or completed with sanitized status fields. Clients should show Loading... while waiting."},"400":{"description":"Missing fields or no valid connected Instagram accounts."},"402":{"description":"Payment required"},"500":{"description":"Sanitized server error. Backend module details are hidden."}},"summary":"Comment on Instagram media"}},"/v1/instagram/dm":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"account_ids":{"description":"Connected Instagram account IDs owned by the API key user.","items":{"oneOf":[{"type":"string"},{"type":"integer"}]},"type":"array"},"delay_seconds":{"default":10,"type":"integer"},"message":{"description":"Direct message text.","type":"string"},"message_template":{"description":"Alias for message. Supports {username}.","type":"string"},"target_usernames":{"description":"Instagram usernames to message.","items":{"type":"string"},"type":"array"}},"required":["account_ids","target_usernames","message"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Action accepted or completed with sanitized status fields. Clients should show Loading... while waiting."},"400":{"description":"Missing fields or no valid connected Instagram accounts."},"402":{"description":"Payment required"},"500":{"description":"Sanitized server error. Backend module details are hidden."}},"summary":"Send Instagram direct messages"}},"/v1/instagram/follow":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"account_ids":{"description":"Connected Instagram account IDs owned by the API key user.","items":{"oneOf":[{"type":"string"},{"type":"integer"}]},"type":"array"},"delay_seconds":{"default":6,"type":"integer"},"target_usernames":{"description":"Instagram usernames to follow.","items":{"type":"string"},"type":"array"},"username":{"description":"Single target username alias.","type":"string"}},"required":["account_ids","target_usernames"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Action accepted or completed with sanitized status fields. Clients should show Loading... while waiting."},"400":{"description":"Missing fields or no valid connected Instagram accounts."},"402":{"description":"Payment required"},"500":{"description":"Sanitized server error. Backend module details are hidden."}},"summary":"Follow Instagram users"}},"/v1/instagram/highlight":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"account_ids":{"description":"Connected Instagram account IDs owned by the API key user.","items":{"oneOf":[{"type":"string"},{"type":"integer"}]},"type":"array"},"highlight_name":{"description":"Highlight title.","type":"string"},"story_id":{"description":"Story media ID or story URL.","type":"string"},"story_url":{"description":"Alias for story_id.","type":"string"}},"required":["account_ids","story_id","highlight_name"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Action accepted or completed with sanitized status fields. Clients should show Loading... while waiting."},"400":{"description":"Missing fields or no valid connected Instagram accounts."},"402":{"description":"Payment required"},"500":{"description":"Sanitized server error. Backend module details are hidden."}},"summary":"Add Instagram story highlight"}},"/v1/instagram/post":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"account_ids":{"description":"Connected Instagram account IDs owned by the API key user.","items":{"oneOf":[{"type":"string"},{"type":"integer"}]},"type":"array"},"caption":{"description":"Caption text.","type":"string"},"photo_filename":{"description":"Stored OAISYS photo filename for feed posts.","type":"string"},"photo_filenames":{"description":"Stored photo filenames for carousel posts.","items":{"type":"string"},"type":"array"},"post_type":{"default":"feed","enum":["feed","reel","carousel"],"type":"string"},"video_filename":{"description":"Stored OAISYS video filename for reels.","type":"string"}},"required":["account_ids"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Action accepted or completed with sanitized status fields. Clients should show Loading... while waiting."},"400":{"description":"Missing fields or no valid connected Instagram accounts."},"402":{"description":"Payment required"},"500":{"description":"Sanitized server error. Backend module details are hidden."}},"summary":"Create Instagram feed, reel, or carousel posts"}},"/v1/instagram/profile/avatar":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"account_ids":{"description":"Connected Instagram account IDs owned by the API key user.","items":{"oneOf":[{"type":"string"},{"type":"integer"}]},"type":"array"},"media_filename":{"description":"Alias for photo_id.","type":"string"},"photo_filename":{"description":"Alias for photo_id.","type":"string"},"photo_id":{"description":"Stored OAISYS photo id or filename.","type":"string"}},"required":["account_ids","photo_id"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Action accepted or completed with sanitized status fields. Clients should show Loading... while waiting."},"400":{"description":"Missing fields or no valid connected Instagram accounts."},"402":{"description":"Payment required"},"500":{"description":"Sanitized server error. Backend module details are hidden."}},"summary":"Edit Instagram profile picture"}},"/v1/instagram/profile/name":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"account_ids":{"description":"Connected Instagram account IDs owned by the API key user.","items":{"oneOf":[{"type":"string"},{"type":"integer"}]},"type":"array"},"display_name":{"description":"Alias for name.","type":"string"},"name":{"description":"Display name.","type":"string"}},"required":["account_ids","name"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Action accepted or completed with sanitized status fields. Clients should show Loading... while waiting."},"400":{"description":"Missing fields or no valid connected Instagram accounts."},"402":{"description":"Payment required"},"500":{"description":"Sanitized server error. Backend module details are hidden."}},"summary":"Edit Instagram display name"}},"/v1/instagram/profile/privacy":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"account_ids":{"description":"Connected Instagram account IDs owned by the API key user.","items":{"oneOf":[{"type":"string"},{"type":"integer"}]},"type":"array"},"privacy":{"description":"Alias for privacy_setting.","type":"string"},"privacy_setting":{"default":"private","enum":["public","private"],"type":"string"}},"required":["account_ids","privacy_setting"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Action accepted or completed with sanitized status fields. Clients should show Loading... while waiting."},"400":{"description":"Missing fields or no valid connected Instagram accounts."},"402":{"description":"Payment required"},"500":{"description":"Sanitized server error. Backend module details are hidden."}},"summary":"Edit Instagram privacy"}},"/v1/instagram/profile/website":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"account_ids":{"description":"Connected Instagram account IDs owned by the API key user.","items":{"oneOf":[{"type":"string"},{"type":"integer"}]},"type":"array"},"url":{"description":"Alias for website_url.","type":"string"},"website_url":{"description":"Profile website URL.","type":"string"}},"required":["account_ids","website_url"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Action accepted or completed with sanitized status fields. Clients should show Loading... while waiting."},"400":{"description":"Missing fields or no valid connected Instagram accounts."},"402":{"description":"Payment required"},"500":{"description":"Sanitized server error. Backend module details are hidden."}},"summary":"Edit Instagram website"}},"/v1/instagram/scrape/comments":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"max_comments":{"default":250,"type":"integer"},"media_id":{"description":"Single media ID alias.","type":"string"},"media_ids":{"description":"Instagram media IDs.","items":{"type":"string"},"type":"array"}},"required":["media_ids"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Instagram comments scrape result."},"400":{"description":"Missing media IDs."},"402":{"description":"Payment required"},"500":{"description":"Sanitized scraper error. Backend session details are hidden."}},"summary":"Scrape Instagram comments"}},"/v1/instagram/scrape/likers":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"media_id":{"description":"Single media ID alias.","type":"string"},"media_ids":{"description":"Instagram media IDs.","items":{"type":"string"},"type":"array"}},"required":["media_ids"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Instagram likers scrape result."},"400":{"description":"Missing media IDs."},"402":{"description":"Payment required"},"500":{"description":"Sanitized scraper error. Backend session details are hidden."}},"summary":"Scrape Instagram likers"}},"/v1/instagram/scrape/profile":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"include_followers":{"default":false,"type":"boolean"},"include_following":{"default":false,"type":"boolean"},"include_posts":{"default":false,"type":"boolean"},"max_followers":{"default":250,"type":"integer"},"max_following":{"default":250,"type":"integer"},"max_posts":{"default":24,"type":"integer"},"username":{"description":"Single username alias.","type":"string"},"usernames":{"description":"Instagram usernames with or without @.","items":{"type":"string"},"type":"array"}},"required":["usernames"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Instagram profile scrape result with sanitized profile data."},"400":{"description":"Missing usernames."},"402":{"description":"Payment required"},"500":{"description":"Sanitized scraper error. Backend session details are hidden."}},"summary":"Scrape Instagram profile"}},"/v1/instagram/scrape/profiles":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"include_followers":{"default":false,"type":"boolean"},"include_following":{"default":false,"type":"boolean"},"include_posts":{"default":false,"type":"boolean"},"max_followers":{"default":250,"type":"integer"},"max_following":{"default":250,"type":"integer"},"max_posts":{"default":24,"type":"integer"},"username":{"description":"Single username alias.","type":"string"},"usernames":{"description":"Instagram usernames with or without @.","items":{"type":"string"},"type":"array"}},"required":["usernames"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Instagram profile scrape result with sanitized profile data."},"400":{"description":"Missing usernames."},"402":{"description":"Payment required"},"500":{"description":"Sanitized scraper error. Backend session details are hidden."}},"summary":"Scrape Instagram profiles"}},"/v1/instagram/story/reply":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"account_ids":{"description":"Connected Instagram account IDs owned by the API key user.","items":{"oneOf":[{"type":"string"},{"type":"integer"}]},"type":"array"},"message":{"description":"Reply text.","type":"string"},"story_url":{"description":"Instagram story URL.","type":"string"},"target_url":{"description":"Alias for story_url.","type":"string"}},"required":["account_ids","story_url","message"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Action accepted or completed with sanitized status fields. Clients should show Loading... while waiting."},"400":{"description":"Missing fields or no valid connected Instagram accounts."},"402":{"description":"Payment required"},"500":{"description":"Sanitized server error. Backend module details are hidden."}},"summary":"Reply to Instagram story"}},"/v1/instagram/unfollow":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"account_ids":{"description":"Connected Instagram account IDs owned by the API key user.","items":{"oneOf":[{"type":"string"},{"type":"integer"}]},"type":"array"},"delay_seconds":{"default":6,"type":"integer"},"target_usernames":{"description":"Instagram usernames to unfollow.","items":{"type":"string"},"type":"array"},"username":{"description":"Single target username alias.","type":"string"}},"required":["account_ids","target_usernames"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Action accepted or completed with sanitized status fields. Clients should show Loading... while waiting."},"400":{"description":"Missing fields or no valid connected Instagram accounts."},"402":{"description":"Payment required"},"500":{"description":"Sanitized server error. Backend module details are hidden."}},"summary":"Unfollow Instagram users"}},"/v1/linkedin/accounts":{"get":{"responses":{"200":{"description":"LinkedIn account inventory without private credentials"}},"summary":"List connected LinkedIn accounts"}},"/v1/linkedin/like":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Optional linkedin_123 account id. Defaults to latest active account.","type":"string"},"post_url":{"description":"LinkedIn post/activity URL or URN.","type":"string"},"reaction":{"default":"LIKE","enum":["LIKE","PRAISE","EMPATHY","INTEREST","ENTERTAINMENT","APPRECIATION"],"type":"string"}},"required":["post_url"],"type":"object"}}},"required":true},"responses":{"200":{"description":"LinkedIn reaction result"},"402":{"description":"Payment required"}},"summary":"React to a LinkedIn post"}},"/v1/linkedin/login":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"email":{"type":"string"},"label":{"type":"string"},"password":{"type":"string"},"proxy":{"description":"Optional host:port:user:pass SOCKS5 proxy.","type":"string"},"twofa_secret":{"type":"string"}},"required":["email","password"],"type":"object"}}},"required":true},"responses":{"200":{"description":"LinkedIn account connected. Session data is hidden."}},"summary":"Connect LinkedIn account"}},"/v1/pricing":{"get":{"responses":{"200":{"description":"Billing model"}},"summary":"Get high-level API billing model"}},"/v1/reddit/avatar-presets":{"get":{"responses":{"200":{"description":"Preset catalog with keys, labels, and aliases"}},"security":[],"summary":"List Reddit avatar presets"}},"/v1/reddit/media-post":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"account_ids":{"description":"Connected account IDs, e.g. reddit_123.","items":{"type":"string"},"type":"array"},"album_name":{"description":"For uploads: target album to create/use. By itself: pick media from this existing album.","type":"string"},"description":{"type":"string"},"image_base64":{"description":"Alias for media_base64.","type":"string"},"image_url":{"description":"Alias for media_url.","type":"string"},"media_base64":{"description":"Base64 image/video data from a drag/drop attachment.","type":"string"},"media_filename":{"description":"Filename used when storing base64 media.","type":"string"},"media_url":{"description":"Hosted image/video URL to import into the gallery before posting.","type":"string"},"nsfw":{"type":"boolean"},"photo":{"description":"Existing OAISYS gallery filename.","type":"string"},"spoiler":{"type":"boolean"},"subreddit":{"description":"Target subreddit without r/. Omit to post to profile when supported.","type":"string"},"title":{"type":"string"},"upload_album":{"description":"Optional target album alias for uploaded media.","type":"string"}},"required":["account_ids","title"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Media post result with stored media filename/album metadata"},"400":{"description":"Invalid request or post failed"},"402":{"description":"Payment required"}},"summary":"Create media posts with gallery media, album media, a media URL, or base64 media"}},"/v1/reddit/profile/avatar":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"account_ids":{"description":"Connected Reddit account IDs, e.g. reddit_123 or 123.","items":{"type":"string"},"type":"array"},"avatar_preset":{"description":"Preset key or UI label. Supported: Gaming, Gaming 2, WoW, Frog, Koala, Base, Random 1, Random 2, Halloween, BHM Hair.","enum":["gaming","gaming2","wow","frog","koala","naked","random1","random2","halloween","bhm"],"type":"string"},"body":{"description":"Optional hex color for body.","type":"string"},"eyes":{"description":"Optional hex color for eyes.","type":"string"},"facial":{"description":"Optional hex color for facial hair.","type":"string"},"hair":{"description":"Optional hex color for hair.","type":"string"},"preset":{"description":"Alias for avatar_preset.","type":"string"}},"required":["account_ids"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Avatar update result with preset and avatar_url when available"},"400":{"description":"Invalid account or preset"},"402":{"description":"Payment required"}},"summary":"Set Reddit avatar preset","x-oaisys-presets":[{"aliases":["gaming"],"key":"gaming","label":"Gaming"},{"aliases":["gaming2","gaming two"],"key":"gaming2","label":"Gaming 2"},{"aliases":["wow","world of warcraft"],"key":"wow","label":"WoW"},{"aliases":["frog"],"key":"frog","label":"Frog"},{"aliases":["koala"],"key":"koala","label":"Koala"},{"aliases":["base","default","naked"],"key":"naked","label":"Base"},{"aliases":["random","random1","random one"],"key":"random1","label":"Random 1"},{"aliases":["random2","random two"],"key":"random2","label":"Random 2"},{"aliases":["halloween"],"key":"halloween","label":"Halloween"},{"aliases":["bhm","bhm hair","black history month"],"key":"bhm","label":"BHM Hair"}]}},"/v1/reddit/profile/avatar/presets":{"get":{"responses":{"200":{"description":"Preset catalog with keys, labels, and aliases"}},"security":[],"summary":"List Reddit avatar presets"}},"/v1/reddit/reply":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"account":{"description":"Alias for account_username.","type":"string"},"account_id":{"description":"Single connected account ID.","oneOf":[{"type":"string"},{"type":"integer"}]},"account_ids":{"description":"Connected account IDs. Numeric IDs, reddit_123 strings, and single usernames are accepted.","items":{"oneOf":[{"type":"string"},{"type":"integer"}]},"type":"array"},"account_username":{"description":"Single Reddit username to reply from, for example No_Damage2178.","type":"string"},"body":{"description":"Alias for message.","type":"string"},"from_account":{"description":"Alias for account_username.","type":"string"},"message":{"description":"Reply text.","type":"string"},"post_url":{"description":"Alias for target_url.","type":"string"},"reply":{"description":"Alias for message.","type":"string"},"reply_to_comment":{"description":"Set true when the URL points to a comment and the reply should target that comment.","type":"boolean"},"target_url":{"description":"Reddit post or comment URL to reply to.","type":"string"},"text":{"description":"Alias for message.","type":"string"},"url":{"description":"Alias for target_url.","type":"string"}},"required":["target_url","message"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Reply result with clean status fields plus comment_url/permalink, comment_urls, and per-account results when available. Clients should show Loading... while waiting, then the final JSON/status only."},"400":{"description":"Missing fields or reply failed. Backend module details are hidden."},"402":{"description":"Payment required"},"500":{"description":"Sanitized server error. Backend module details are hidden."}},"summary":"Create Reddit replies"}},"/v1/reddit/scrape/subreddit":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Optional connected account ID to scrape with.","oneOf":[{"type":"string"},{"type":"integer"}]},"account_username":{"description":"Optional connected account username to scrape with.","type":"string"},"limit":{"description":"How many poster rows to return from stored results.","type":"integer"},"max_pages":{"default":5,"type":"integer"},"sort_by":{"default":"hot","enum":["hot","new","top","rising"],"type":"string"},"subreddit":{"description":"Subreddit name with or without r/.","type":"string"},"subreddits":{"description":"Optional batch of subreddit names.","items":{"type":"string"},"type":"array"},"time_range":{"default":"all","type":"string"}},"required":["subreddit"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Subreddit scrape started or completed with poster metadata."},"400":{"description":"Missing subreddit or no connected scraper account."},"402":{"description":"Payment required"}},"summary":"Scrape subreddit posts"}},"/v1/reddit/scrape/user":{"post":{"requestBody":{"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Optional connected account ID to scrape with.","oneOf":[{"type":"string"},{"type":"integer"}]},"account_username":{"description":"Optional connected account username to scrape with.","type":"string"},"limit":{"description":"How many post rows to return from stored results.","type":"integer"},"max_pages":{"default":10,"type":"integer"},"target_username":{"description":"Alias for username.","type":"string"},"username":{"description":"Reddit username with or without u/.","type":"string"},"usernames":{"description":"Optional batch of usernames.","items":{"type":"string"},"type":"array"}},"required":["username"],"type":"object"}}},"required":true},"responses":{"200":{"description":"User profile scrape started or completed with profile post metadata."},"400":{"description":"Missing username or no connected scraper account."},"402":{"description":"Payment required"}},"summary":"Scrape user profile"}}},"security":[{"ApiKeyAuth":[]}],"servers":[{"url":"https://oaisyscloud.com"}]}
