All API requests require authentication using an API key in the Authorization header.
LATE offers 4 plan tiers with different usage limits. All limits are enforced at the API level and reset based on your billing period.
Save 40% with annual billing! Usage limits reset on your billing anniversary.
Your usage is tracked in real-time and enforced at every API call. Usage resets automatically based on your billing period.
When you exceed your plan limits, the API returns detailed error messages with upgrade suggestions.
{ "error": "Upload limit reached. Your Free plan allows 10 uploads per month. You have used 10.", "planName": "Free", "limit": 10, "current": 10, "billingPeriod": "monthly" }
{ "error": "Profile limit reached. Your basic plan allows 10 profiles. You currently have 10.", "planName": "basic", "limit": 10, "current": 10, "details": { "resource": "profiles", "plan": "basic", "currentUsage": 10, "limit": 10, "window": "total" } }
Here's how to set up profiles and schedule your first post:
LATE uses a profile-based architecture to organize your social media accounts. Each profile can have one connected account per platform, allowing you to manage multiple brands, clients, or personal accounts separately.
Get all profiles for your account.
{ "profiles": [ { "_id": "profile_id", "name": "Personal Brand", "description": "My personal accounts", "color": "#ffeda0", "isDefault": true, "createdAt": "2024-01-01T00:00:00Z" } ] }
Create a new profile. Subject to plan limits.
⚠️ Plan Limits: Free (2), Basic (10), Professional (50), Advanced (150), Enterprise (250) profiles
Profile limits are enforced in real-time. Creating a profile when at your limit returns HTTP 403.
{ "name": "Business Account", "description": "Company social media", "color": "#4ade80" }
Update an existing profile.
Delete a profile. Cannot delete profiles with connected accounts.
Monitor your current usage against plan limits in real-time.
Get current usage statistics for your account.
{ "planName": "Professional", "billingPeriod": "yearly", "limits": { "uploads": -1, "profiles": 50, "postsPerDayPerAccount": 8 }, "usage": { "uploads": 847, "profiles": 12, "lastReset": "2024-01-01T00:00:00.000Z" }, "canUpload": true, "canCreateProfile": true }
Schedule and manage social media posts across multiple platforms. Upload limits apply based on your plan.
⚠️ Upload Limits: Free (10/month), Basic (120/month), Professional, Advanced & Enterprise (unlimited)
Retrieve a list of your scheduled and published posts with pagination.
Create and schedule a new post across multiple social media platforms. Subject to upload limits.
⚠️ Upload Limits: Each successful post creation counts toward your monthly/yearly limit (drafts don't count)
{ "content": "Your post content here", "profileId": "profile_id", "platforms": ["twitter", "instagram", "linkedin"], "scheduledFor": "2024-01-01T12:00:00", "timezone": "America/New_York", "publishNow": false, "isDraft": false, "visibility": "public|private|unlisted", "mediaItems": [ { "type": "image|video|gif", "url": "media_url_from_/v1/media", "filename": "optional_filename" } ] }
🕐 Timezone Handling: The scheduledFor
field should be in YYYY-MM-DDTHH:mm format (without Z suffix). The timezone
field specifies the timezone for the scheduled time (e.g., "America/New_York", "Europe/London", "UTC"). If no timezone is provided, UTC is assumed.
→ Posts are sent using the social accounts connected to the specified profile. Each profile can have one account per platform.
Get details of a specific post by ID.
Update a post. Only draft and scheduled posts can be edited.
📝 Editable Post Statuses: draft, scheduled
❌ Non-editable: published, publishing, failed, cancelled
Same structure as POST /v1/posts, all fields are optional:
{ "content": "Updated post content", "scheduledFor": "2024-01-01T15:00:00", "timezone": "America/New_York", "platforms": ["twitter", "linkedin"], "isDraft": false, "publishNow": false, "mediaItems": [...] }
Delete a post. Published posts cannot be deleted. All other statuses (draft, scheduled, publishing, failed, cancelled) can be deleted.
⚠️ Deletable Post Statuses: draft, scheduled, publishing, failed, cancelled
❌ Non-deletable: published (posts that have been successfully published cannot be deleted)
Retry publishing a failed post. Only failed posts can be retried.
Upload media files (images/videos) for use in posts.
Content-Type: multipart/form-data
Get connected social media accounts, optionally filtered by profile.
{ "accounts": [ { "_id": "account_id", "profileId": "profile_id", "platform": "instagram", "username": "your_username", "displayName": "Your Display Name", "profilePicture": "https://...", "isActive": true, "tokenExpiresAt": "2024-12-31T23:59:59Z", "permissions": ["posts:write", "posts:read"] } ] }
Initiate OAuth connection for a platform to a specific profile.
By default, users are redirected to the dashboard after connecting an account. Use redirect_url to redirect to your own application instead.
Disconnect a social media account from its profile.
Facebook connections require special handling because users can manage multiple pages. LATE provides dedicated endpoints for page selection and management.
Unlike other platforms, connecting Facebook requires selecting which page to post to. Users are redirected to a page selection interface after OAuth authorization.
Get available Facebook pages for selection during connection process.
{ "pages": [ { "id": "page_id_123", "name": "My Business Page", "access_token": "page_access_token_...", "category": "Business", "tasks": ["MANAGE", "CREATE_CONTENT"] } ] }
Connect a specific Facebook page to a profile.
{ "profileId": "profile_id_123", "pageId": "page_id_456", "tempToken": "facebook_temp_token...", "userProfile": { "id": "user_facebook_id", "name": "User Name", "profilePicture": "https://..." } }
{ "message": "Facebook page connected successfully", "account": { "platform": "facebook", "username": "My Business Page", "displayName": "My Business Page", "isActive": true, "selectedPageName": "My Business Page" } }
Update which Facebook page an existing account should post to.
{ "selectedPageId": "new_page_id_789" }
Regular Instagram posts that appear in your profile feed. Supports images and videos with captions.
{ "platform": "instagram", "contentType": "post", "media": ["image_url_1", "image_url_2"], "caption": "Your post caption here" }
Instagram Stories that are visible for 24 hours. Supports images and videos with optional stickers and text overlays.
{ "platform": "instagram", "contentType": "story", "media": ["image_url_1"], "caption": "Optional story caption" }
Standard YouTube videos that appear in your channel and search results. No duration limits.
{ "platform": "youtube", "media": ["video_url"], "title": "Your video title", "description": "Your video description" }
Short-form videos automatically detected by YouTube based on duration (≤ 3 minutes). Appear in the Shorts feed.
{ "platform": "youtube", "media": ["vertical_video_url"], "title": "Your short video title", "description": "Your description #Shorts" }
API requests are rate limited based on your plan to ensure fair usage:
Rate limits are separate from usage limits. Even with unlimited uploads, you're still subject to rate limits to prevent API abuse.
Have questions or need support? We're here to help!