{"id":"e3ffb692-c3e1-4786-95bd-e7218076035a","entityType":"agent","slug":"clawhub-mikipalet-late-api","name":"Late API","canonicalUrl":"https://www.xpersona.co/agent/clawhub-mikipalet-late-api","canonicalPath":"/agent/clawhub-mikipalet-late-api","generatedAt":"2026-10-09T05:45:39.097Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"description":"Official Late API reference for scheduling posts across 13 social media platforms. Covers authentication, endpoints, webhooks, and platform-specific features. Use when building with the Late Social Media Scheduling API.","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 2K downloads reported by the source. Last updated 4/15/2026.","installCommand":"clawhub skill install kn76zqp7wtxen0ast34y6jhmv97zz1b9:late-api","sourceUrl":"https://clawhub.ai/mikipalet/late-api","homepage":"https://clawhub.ai/mikipalet/late-api","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/mikipalet/late-api","kind":"source"}],"safetyScore":84,"overallRank":62,"popularityScore":66,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Late API technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"stars":null,"forks":null,"downloads":2015,"packageName":null,"latestVersion":"0.1.0","tractionLabel":"2K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-02-28T19:26:01.865Z","emptyReason":null},"lastUpdatedAt":"2026-04-15T00:45:39.800Z","lastCrawledAt":"2026-02-28T19:26:01.865Z","lastIndexedAt":null,"nextCrawlAt":"2026-03-01T19:26:01.865Z","lastVerifiedAt":null,"highlights":[{"version":"0.1.0","createdAt":"2026-01-26T07:42:09.192Z","changelog":"Initial release of late-api skill - Publishes the official Late API reference for scheduling posts across 13 social media platforms. - Includes quick start guide with API endpoints for profiles, accounts, and post creation. - Documents authentication, endpoints, OAuth, webhooks, media uploads, analytics, errors, and platform specifics. - Provides links to detailed rule files for each API area. - Lists all supported social platforms.","fileCount":15,"zipByteSize":15198}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install kn76zqp7wtxen0ast34y6jhmv97zz1b9:late-api","setupComplexity":"low","setupSteps":["Install using `clawhub skill install kn76zqp7wtxen0ast34y6jhmv97zz1b9:late-api` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/mikipalet/late-api before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mikipalet-late-api/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mikipalet-late-api/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mikipalet-late-api/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-mikipalet-late-api/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-mikipalet-late-api/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-mikipalet-late-api/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-09T05:45:39.096Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mikipalet-late-api/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mikipalet-late-api/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mikipalet-late-api/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-mikipalet-late-api/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"readme":"Skill: Late API\n\nOwner: mikipalet\n\nSummary: Official Late API reference for scheduling posts across 13 social media platforms. Covers authentication, endpoints, webhooks, and platform-specific features. Use when building with the Late Social Media Scheduling API.\n\nTags: latest:0.1.0\n\nVersion history:\n\nv0.1.0 | 2026-01-26T07:42:09.192Z | auto\n\nInitial release of late-api skill\n\n- Publishes the official Late API reference for scheduling posts across 13 social media platforms.\n- Includes quick start guide with API endpoints for profiles, accounts, and post creation.\n- Documents authentication, endpoints, OAuth, webhooks, media uploads, analytics, errors, and platform specifics.\n- Provides links to detailed rule files for each API area.\n- Lists all supported social platforms.\n\nArchive index:\n\nArchive v0.1.0: 15 files, 15198 bytes\n\nFiles: README.md (1938b), rules/accounts.md (2279b), rules/analytics.md (1846b), rules/authentication.md (1077b), rules/connect.md (3660b), rules/errors.md (1673b), rules/media.md (1824b), rules/platforms.md (5707b), rules/posts.md (2986b), rules/queue.md (1718b), rules/sdks.md (834b), rules/tools.md (2033b), rules/webhooks.md (2729b), SKILL.md (2318b), _meta.json (127b)\n\nFile v0.1.0:SKILL.md\n\n---\nname: late-api\ndescription: Official Late API reference for scheduling posts across 13 social media platforms. Covers authentication, endpoints, webhooks, and platform-specific features. Use when building with the Late Social Media Scheduling API.\n---\n\n# Late API Reference\n\nSchedule posts across 13 social media platforms with a single API.\n\n**Base URL:** `https://getlate.dev/api/v1`\n\n**Docs:** [getlate.dev/docs](https://getlate.dev/docs)\n\n## Quick Start\n\n```bash\n# 1. Create profile\ncurl -X POST https://getlate.dev/api/v1/profiles \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -d '{\"name\": \"My Brand\"}'\n\n# 2. Connect account (opens OAuth)\ncurl \"https://getlate.dev/api/v1/connect/twitter?profileId=PROFILE_ID\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\n# 3. Create post\ncurl -X POST https://getlate.dev/api/v1/posts \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -d '{\"content\": \"Hello!\", \"platforms\": [{\"platform\": \"twitter\", \"accountId\": \"ACC_ID\"}], \"publishNow\": true}'\n```\n\n## Rule Files\n\nRead individual rule files for detailed documentation:\n\n- [rules/authentication.md](rules/authentication.md) - API key format, usage examples, core concepts\n- [rules/posts.md](rules/posts.md) - Create, schedule, retry posts, bulk upload\n- [rules/accounts.md](rules/accounts.md) - List accounts, health checks, follower stats\n- [rules/connect.md](rules/connect.md) - OAuth flows, Bluesky app password, Telegram bot token\n- [rules/platforms.md](rules/platforms.md) - Platform-specific data for all 13 platforms\n- [rules/webhooks.md](rules/webhooks.md) - Configure webhooks, verify signatures, events\n- [rules/media.md](rules/media.md) - Presigned uploads, supported formats, platform limits\n- [rules/queue.md](rules/queue.md) - Queue management, slots configuration\n- [rules/analytics.md](rules/analytics.md) - YouTube daily views, LinkedIn analytics\n- [rules/tools.md](rules/tools.md) - Media download, hashtag checker, transcripts\n- [rules/errors.md](rules/errors.md) - Error codes, rate limits, publishing logs\n- [rules/sdks.md](rules/sdks.md) - Direct API usage examples\n\n## Supported Platforms\n\nTwitter/X, Instagram, Facebook, LinkedIn, TikTok, YouTube, Pinterest, Reddit, Bluesky, Threads, Google Business, Telegram, Snapchat\n\n---\n\n*[Late](https://getlate.dev) - Social Media Scheduling API for Developers*\n\nFile v0.1.0:README.md\n\n# Late API Skill\n\n[![skills.sh](https://img.shields.io/badge/skills.sh-late--api-blue)](https://skills.sh)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nOfficial Claude Code skill for the [Late](https://getlate.dev) Social Media Scheduling API.\n\n## Installation\n\n```bash\nnpx skills add mikipalet/skills/late-api\n```\n\n## What's Included\n\n- **Authentication** - API key setup and usage\n- **Quick Start** - Get posting in 4 steps\n- **All Endpoints** - Posts, accounts, profiles, webhooks, media\n- **Platform-Specific** - Features for all 13 platforms\n- **Webhooks** - Setup and signature verification\n- **Error Handling** - Common errors and solutions\n- **Code Examples** - curl, TypeScript, Python\n\n## 13 Platforms Supported\n\nTwitter/X, Instagram, Facebook, LinkedIn, TikTok, YouTube, Pinterest, Reddit, Bluesky, Threads, Google Business, Telegram, Snapchat\n\n## Usage\n\nOnce installed, Claude Code will help you with Late API integration:\n\n```\n/late-api\n```\n\n## Example Prompts\n\n- \"How do I create a post with the Late API?\"\n- \"Show me how to set up webhooks\"\n- \"What's the endpoint for connecting a Twitter account?\"\n- \"How do I upload media to Late?\"\n\n## Quick Example\n\n```typescript\nconst response = await fetch('https://getlate.dev/api/v1/posts', {\n  method: 'POST',\n  headers: {\n    'Authorization': `Bearer ${process.env.LATE_API_KEY}`,\n    'Content-Type': 'application/json'\n  },\n  body: JSON.stringify({\n    content: 'Hello from Late API!',\n    platforms: [{ platform: 'twitter', accountId: 'acc_123' }],\n    publishNow: true\n  })\n});\n```\n\n## Resources\n\n- **Docs:** [getlate.dev/docs](https://getlate.dev/docs)\n- **Dashboard:** [getlate.dev/dashboard](https://getlate.dev/dashboard)\n- **API Keys:** [getlate.dev/dashboard/api-keys](https://getlate.dev/dashboard/api-keys)\n\n## License\n\nMIT\n\n---\n\n*[Late](https://getlate.dev) - Social Media Scheduling API for Developers*\n\nFile v0.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn76zqp7wtxen0ast34y6jhmv97zz1b9\",\n  \"slug\": \"late-api\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1769413329192\n}\n\nFile v0.1.0:rules/accounts.md\n\n# Accounts API\n\n## Endpoints\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `GET` | `/v1/accounts` | List accounts |\n| `PUT` | `/v1/accounts/{accountId}` | Update account |\n| `DELETE` | `/v1/accounts/{accountId}` | Disconnect account |\n| `GET` | `/v1/accounts/health` | Check all accounts health |\n| `GET` | `/v1/accounts/{accountId}/health` | Check specific account health |\n| `GET` | `/v1/accounts/follower-stats` | Get follower statistics |\n\n## Platform-Specific Account Endpoints\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `PUT` | `/v1/accounts/{accountId}/facebook-page` | Update selected Facebook page |\n| `GET` | `/v1/accounts/{accountId}/gmb-reviews` | Get Google Business reviews |\n| `GET` | `/v1/accounts/{accountId}/linkedin-organizations` | List LinkedIn organizations |\n| `PUT` | `/v1/accounts/{accountId}/linkedin-organization` | Switch personal/organization mode |\n| `GET` | `/v1/accounts/{accountId}/linkedin-mentions` | Get LinkedIn mentions |\n| `GET` | `/v1/accounts/{accountId}/linkedin-aggregate-analytics` | Get LinkedIn analytics |\n| `GET` | `/v1/accounts/{accountId}/linkedin-post-analytics` | Get LinkedIn post analytics |\n| `GET` | `/v1/accounts/{accountId}/pinterest-boards` | List Pinterest boards |\n| `PUT` | `/v1/accounts/{accountId}/pinterest-boards` | Set default Pinterest board |\n| `GET` | `/v1/accounts/{accountId}/reddit-subreddits` | List user's subreddits |\n| `PUT` | `/v1/accounts/{accountId}/reddit-subreddits` | Set default subreddit |\n\n## List Accounts\n\n```bash\ncurl \"https://getlate.dev/api/v1/accounts?profileId=PROFILE_ID\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\n## Account Health Check\n\n```bash\ncurl \"https://getlate.dev/api/v1/accounts/health\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\nResponse indicates if tokens are valid or need reconnection.\n\n## Account Groups\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `GET` | `/v1/account-groups` | List account groups |\n| `POST` | `/v1/account-groups` | Create account group |\n| `PUT` | `/v1/account-groups/{groupId}` | Update account group |\n| `DELETE` | `/v1/account-groups/{groupId}` | Delete account group |\n\nAccount groups let you organize accounts for bulk posting operations.\n\nFile v0.1.0:rules/analytics.md\n\n# Analytics API\n\n## Endpoints\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `GET` | `/v1/analytics` | Get general analytics |\n| `GET` | `/v1/analytics/youtube/daily-views` | Get YouTube video daily views |\n| `GET` | `/v1/accounts/{accountId}/linkedin-aggregate-analytics` | LinkedIn account analytics |\n| `GET` | `/v1/accounts/{accountId}/linkedin-post-analytics` | LinkedIn post analytics |\n| `GET` | `/v1/accounts/follower-stats` | Follower count history |\n\n## YouTube Daily Views\n\n```bash\ncurl \"https://getlate.dev/api/v1/analytics/youtube/daily-views?accountId=ACCOUNT_ID&videoId=VIDEO_ID&startDate=2024-01-01&endDate=2024-01-31\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\nResponse:\n\n```json\n{\n  \"success\": true,\n  \"videoId\": \"dQw4w9WgXcQ\",\n  \"dateRange\": {\n    \"startDate\": \"2024-01-01\",\n    \"endDate\": \"2024-01-31\"\n  },\n  \"totalViews\": 15420,\n  \"dailyViews\": [\n    {\n      \"date\": \"2024-01-01\",\n      \"views\": 523,\n      \"estimatedMinutesWatched\": 1045,\n      \"averageViewDuration\": 120,\n      \"subscribersGained\": 12,\n      \"subscribersLost\": 2,\n      \"likes\": 45,\n      \"comments\": 8,\n      \"shares\": 15\n    }\n  ]\n}\n```\n\n**Note:** Requires `yt-analytics.readonly` scope. If missing, response includes `reauthorizeUrl`.\n\n## LinkedIn Analytics\n\n```bash\n# Aggregate analytics for account\ncurl \"https://getlate.dev/api/v1/accounts/ACCOUNT_ID/linkedin-aggregate-analytics\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\n# Analytics for specific post\ncurl \"https://getlate.dev/api/v1/accounts/ACCOUNT_ID/linkedin-post-analytics?postUrn=URN\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\n## Follower Stats\n\n```bash\ncurl \"https://getlate.dev/api/v1/accounts/follower-stats?profileId=PROFILE_ID\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\nReturns historical follower counts across all connected accounts.\n\nFile v0.1.0:rules/authentication.md\n\n# Authentication\n\n## API Key Format\n\n```\nsk_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6\n```\n\n- Prefix: `sk_`\n- Length: 67 characters\n- Get yours at: [getlate.dev/dashboard/api-keys](https://getlate.dev/dashboard/api-keys)\n\n## Usage Examples\n\n### curl\n\n```bash\ncurl https://getlate.dev/api/v1/profiles \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\n### TypeScript\n\n```typescript\nconst response = await fetch('https://getlate.dev/api/v1/profiles', {\n  headers: {\n    'Authorization': `Bearer ${process.env.LATE_API_KEY}`\n  }\n});\n```\n\n### Python\n\n```python\nimport requests\n\nresponse = requests.get(\n    'https://getlate.dev/api/v1/profiles',\n    headers={'Authorization': f'Bearer {api_key}'}\n)\n```\n\n## Core Concepts\n\n```\nProfile (brand/project)\n  └── Account (connected social account)\n        └── Post (content to publish)\n```\n\n- **Profile** - Container that groups social accounts (think \"brand\" or \"project\")\n- **Account** - Connected social media account (Twitter, Instagram, etc.)\n- **Post** - Content to publish, can target multiple accounts at once\n\nFile v0.1.0:rules/connect.md\n\n# Connect (OAuth) API\n\n## Endpoints\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `GET` | `/v1/connect/{platform}` | Start OAuth flow |\n| `POST` | `/v1/connect/bluesky/credentials` | Connect Bluesky (app password) |\n| `GET` | `/v1/connect/telegram` | Generate Telegram access code |\n| `POST` | `/v1/connect/telegram` | Direct connect via chat ID |\n| `PATCH` | `/v1/connect/telegram` | Poll connection status |\n\n## Platform Selection Endpoints\n\nSome platforms require selecting a page/location after OAuth:\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `GET` | `/v1/connect/facebook/select-page` | List Facebook pages |\n| `POST` | `/v1/connect/facebook/select-page` | Select Facebook page |\n| `GET` | `/v1/connect/linkedin/organizations` | List available LinkedIn orgs |\n| `POST` | `/v1/connect/linkedin/select-organization` | Select LinkedIn org |\n| `GET` | `/v1/connect/googlebusiness/locations` | List GMB locations |\n| `POST` | `/v1/connect/googlebusiness/select-location` | Select GMB location |\n| `GET` | `/v1/connect/pinterest/select-board` | List Pinterest boards |\n| `POST` | `/v1/connect/pinterest/select-board` | Select Pinterest board |\n| `GET` | `/v1/connect/snapchat/select-profile` | List Snapchat profiles |\n| `POST` | `/v1/connect/snapchat/select-profile` | Select Snapchat profile |\n\n## OAuth Flow\n\n### Standard OAuth (most platforms)\n\n```bash\n# Get OAuth URL\ncurl \"https://getlate.dev/api/v1/connect/twitter?profileId=PROFILE_ID&callbackUrl=https://yourapp.com/callback\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\nReturns `{ \"url\": \"https://twitter.com/oauth/...\" }` - redirect user there.\n\n### Bluesky (App Password)\n\n```bash\ncurl -X POST https://getlate.dev/api/v1/connect/bluesky/credentials \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"profileId\": \"PROFILE_ID\",\n    \"identifier\": \"user.bsky.social\",\n    \"appPassword\": \"xxxx-xxxx-xxxx-xxxx\"\n  }'\n```\n\n### Telegram\n\n**Option 1: Access Code Flow (recommended)**\n\n```bash\n# 1. Generate access code\ncurl \"https://getlate.dev/api/v1/connect/telegram?profileId=PROFILE_ID\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\n# Returns: { \"code\": \"LATE-ABC123\", \"botUsername\": \"LateScheduleBot\", ... }\n\n# 2. User adds bot to channel and sends code to bot\n# 3. Poll for connection status\ncurl -X PATCH \"https://getlate.dev/api/v1/connect/telegram?code=LATE-ABC123\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\n# Returns: { \"status\": \"pending\" } or { \"status\": \"connected\", \"account\": {...} }\n```\n\n**Option 2: Direct Chat ID (power users)**\n\n```bash\ncurl -X POST https://getlate.dev/api/v1/connect/telegram \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"profileId\": \"PROFILE_ID\",\n    \"chatId\": \"-1001234567890\"\n  }'\n```\n\nThe Late bot must already be added as admin in your channel/group.\n\n## Supported Platforms\n\n| Platform | Auth Method | Notes |\n|----------|-------------|-------|\n| Twitter/X | OAuth 2.0 PKCE | Requires code verifier |\n| Instagram | OAuth 2.0 | 2-step token exchange |\n| Facebook | OAuth 2.0 | Requires page selection |\n| LinkedIn | OAuth 2.0 | Optional org selection |\n| TikTok | OAuth 2.0 | UX compliance required |\n| YouTube | Google OAuth | access_type=offline |\n| Pinterest | OAuth 2.0 | Requires board selection |\n| Reddit | OAuth 2.0 | Strict user-agent |\n| Bluesky | App password | No OAuth, uses AT Protocol |\n| Threads | OAuth 2.0 | Similar to Instagram |\n| Google Business | Google OAuth | Requires location selection |\n| Telegram | Chat ID | Uses Late's bot |\n| Snapchat | OAuth 2.0 | Allowlist-only |\n\nFile v0.1.0:rules/errors.md\n\n# Error Handling\n\n## Error Response Format\n\n```json\n{\n  \"error\": \"Invalid API key\",\n  \"code\": \"UNAUTHORIZED\",\n  \"details\": {}\n}\n```\n\n## HTTP Status Codes\n\n| Status | Code | Meaning |\n|--------|------|---------|\n| 400 | `BAD_REQUEST` | Invalid parameters |\n| 401 | `UNAUTHORIZED` | Invalid/missing API key |\n| 403 | `FORBIDDEN` | Insufficient permissions |\n| 404 | `NOT_FOUND` | Resource not found |\n| 422 | `VALIDATION_ERROR` | Validation failed |\n| 429 | `RATE_LIMITED` | Too many requests |\n| 500 | `INTERNAL_ERROR` | Server error |\n\n## Rate Limits\n\n| Plan | Requests/Minute |\n|------|-----------------|\n| Free | 60 |\n| Build | 120 |\n| Accelerate | 600 |\n| Unlimited | 1,200 |\n\n### Rate Limit Headers\n\n```\nX-RateLimit-Limit: 60\nX-RateLimit-Remaining: 45\nX-RateLimit-Reset: 1709294400\n```\n\n### Handle Rate Limits\n\n```typescript\nasync function fetchWithRetry(url: string, options: RequestInit) {\n  const response = await fetch(url, options);\n\n  if (response.status === 429) {\n    const resetTime = response.headers.get('X-RateLimit-Reset');\n    const waitMs = (Number(resetTime) * 1000) - Date.now();\n    await sleep(Math.max(waitMs, 1000));\n    return fetchWithRetry(url, options);\n  }\n\n  return response;\n}\n```\n\n## Publishing Logs\n\nCheck post logs for platform-specific errors:\n\n```bash\ncurl \"https://getlate.dev/api/v1/posts/POST_ID/logs\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\n## Logs API\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `GET` | `/v1/logs` | List all publishing logs |\n| `GET` | `/v1/logs/{logId}` | Get specific log entry |\n| `GET` | `/v1/posts/{postId}/logs` | Get logs for a post |\n\nLogs are retained for 7 days.\n\nFile v0.1.0:rules/media.md\n\n# Media Upload\n\n## Endpoints\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `POST` | `/v1/media/presign` | Get presigned upload URL |\n\n## Get Presigned URL\n\n```bash\ncurl -X POST https://getlate.dev/api/v1/media/presign \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"filename\": \"image.jpg\", \"contentType\": \"image/jpeg\"}'\n```\n\n## Upload Flow\n\n```typescript\n// 1. Get presigned URL\nconst { uploadUrl, fileUrl } = await getPresignedUrl('image.jpg', 'image/jpeg');\n\n// 2. Upload to presigned URL\nawait fetch(uploadUrl, {\n  method: 'PUT',\n  body: fileBuffer,\n  headers: { 'Content-Type': 'image/jpeg' }\n});\n\n// 3. Use fileUrl in post\nawait createPost({\n  content: 'Check this out!',\n  mediaItems: [{ type: 'image', url: fileUrl }],\n  platforms: [{ platform: 'twitter', accountId: 'acc_123' }]\n});\n```\n\n## Supported Formats\n\n| Type | Formats | Max Size |\n|------|---------|----------|\n| Images | JPG, PNG, WebP, GIF | 5MB |\n| Videos | MP4, MOV, WebM | 5GB |\n| Documents | PDF (LinkedIn only) | 100MB |\n\n## Platform Media Limits\n\n| Platform | Max Images | Max Video | Special |\n|----------|-----------|-----------|---------|\n| Instagram | 8MB | 100MB stories, 300MB reels | 4:5 to 1.91:1 aspect |\n| TikTok | 20MB | 4GB, 10min max | 9:16 strict |\n| Twitter | 5MB | 512MB, 2min 20s | 1-4 images |\n| LinkedIn | 8MB | 5GB | 20 image carousel |\n| YouTube | 2MB thumbnail | 256GB | Resumable upload |\n| Facebook | 10MB | 4GB | 10 multi-image |\n| Threads | 8MB | 1GB, 5min | 10 carousel |\n| Pinterest | 32MB | 2GB | Requires cover image |\n| Bluesky | 1MB | 50MB, 3min | 4 images max |\n| Snapchat | 20MB | 500MB | AES encryption required |\n| Google Business | 5MB | N/A | Images only |\n| Reddit | 20MB | N/A | Via URL |\n| Telegram | 10MB | 50MB | 4096 char limit |\n\nFile v0.1.0:rules/platforms.md\n\n# Platform-Specific Features\n\n## Supported Platforms\n\n| Platform | OAuth | Features |\n|----------|-------|----------|\n| Twitter/X | Yes | Posts, threads, images, videos |\n| Instagram | Yes | Feed, Stories, Reels, Carousels |\n| Facebook | Yes | Pages, Reels, Stories |\n| LinkedIn | Yes | Posts, images, videos, documents |\n| TikTok | Yes | Videos with privacy controls |\n| YouTube | Yes | Videos, Shorts |\n| Pinterest | Yes | Pins with images/videos |\n| Reddit | Yes | Posts with subreddit targeting |\n| Bluesky | App password | Posts, images, videos |\n| Threads | Yes | Posts, images, videos |\n| Google Business | Yes | Updates, photos, offers |\n| Telegram | Bot token | Messages, images, videos |\n| Snapchat | Yes | Stories, Spotlight |\n\n## Platform-Specific Data\n\nPlatform-specific data goes inside each platform entry in the `platforms` array:\n\n```json\n{\n  \"platforms\": [\n    {\n      \"platform\": \"instagram\",\n      \"accountId\": \"acc_123\",\n      \"platformSpecificData\": { ... }\n    }\n  ]\n}\n```\n\n### Twitter/X\n\n```json\n{\n  \"platformSpecificData\": {\n    \"threadItems\": [\n      { \"content\": \"Second tweet\" },\n      { \"content\": \"Third tweet\", \"mediaItems\": [{ \"type\": \"image\", \"url\": \"...\" }] }\n    ]\n  }\n}\n```\n\n### Instagram\n\n```json\n{\n  \"platformSpecificData\": {\n    \"contentType\": \"story\",\n    \"firstComment\": \"First comment!\",\n    \"collaborators\": [\"username\"],\n    \"shareToFeed\": true,\n    \"userTags\": [{ \"username\": \"user\", \"x\": 0.5, \"y\": 0.5 }],\n    \"trialParams\": { \"graduationStrategy\": \"SS_PERFORMANCE\" },\n    \"audioName\": \"My Custom Audio\",\n    \"thumbOffset\": 5000\n  }\n}\n```\n\n- `contentType: \"story\"` publishes as a Story. Default posts become Reels or feed based on media.\n- `trialParams` for Trial Reels (non-followers first): `MANUAL` or `SS_PERFORMANCE` (auto-graduate)\n- `audioName` sets custom label for original audio in Reels\n- `thumbOffset` selects thumbnail frame (milliseconds from start)\n\n### TikTok\n\n```json\n{\n  \"platformSpecificData\": {\n    \"privacyLevel\": \"PUBLIC_TO_EVERYONE\",\n    \"allowComment\": true,\n    \"allowDuet\": true,\n    \"allowStitch\": true,\n    \"contentPreviewConfirmed\": true,\n    \"expressConsentGiven\": true,\n    \"draft\": false,\n    \"commercialContentType\": \"none\",\n    \"videoMadeWithAi\": false,\n    \"videoCoverTimestampMs\": 1000,\n    \"photoCoverIndex\": 0,\n    \"autoAddMusic\": false,\n    \"description\": \"Extended description for photo posts (max 4000 chars)\"\n  }\n}\n```\n\n**Required fields:**\n- `contentPreviewConfirmed` and `expressConsentGiven` must be `true`\n- `allowDuet`, `allowStitch` required for videos; `allowComment` for all\n\n**Optional fields:**\n- `draft: true` sends to Creator Inbox instead of publishing\n- `commercialContentType`: `none`, `brand_organic`, `brand_content`\n- `brandPartnerPromote`: Whether the post promotes a brand partner\n- `isBrandOrganicPost`: Whether the post is a brand organic post\n- `mediaType`: `video` or `photo` (auto-detected from media)\n- `description` for photo posts when content exceeds 90 chars\n\n### YouTube\n\n```json\n{\n  \"platformSpecificData\": {\n    \"title\": \"Video Title\",\n    \"visibility\": \"public\",\n    \"firstComment\": \"Check out my other videos!\",\n    \"containsSyntheticMedia\": false\n  }\n}\n```\n\n- `visibility`: `public`, `private`, `unlisted`\n- `firstComment`: Optional comment posted after upload (max 10,000 chars)\n- `containsSyntheticMedia`: Set `true` for AI-generated content disclosure\n- Videos ≤3 min auto-detected as Shorts; >3 min as regular videos\n- Use top-level `tags` array for video tags (≤500 chars total)\n\n### Pinterest\n\n```json\n{\n  \"platformSpecificData\": {\n    \"title\": \"Pin Title\",\n    \"boardId\": \"board_123\",\n    \"link\": \"https://example.com\",\n    \"coverImageUrl\": \"https://example.com/cover.jpg\",\n    \"coverImageKeyFrameTime\": 5\n  }\n}\n```\n\n- `title`: Pin title (max 100 chars, defaults to first line of content)\n- `boardId`: Target board (uses first available if omitted)\n- `coverImageUrl`: Optional cover image for video pins\n- `coverImageKeyFrameTime`: Key frame time in seconds for video cover\n\n### Google Business\n\n```json\n{\n  \"platformSpecificData\": {\n    \"callToAction\": {\n      \"type\": \"LEARN_MORE\",\n      \"url\": \"https://example.com\"\n    }\n  }\n}\n```\n\nAction types: `BOOK`, `ORDER`, `SHOP`, `LEARN_MORE`, `SIGN_UP`, `CALL`\n\n### LinkedIn\n\n```json\n{\n  \"platformSpecificData\": {\n    \"firstComment\": \"First comment on the post\",\n    \"disableLinkPreview\": false\n  }\n}\n```\n\nSupports up to 20 images, single PDF documents (max 100MB), and link previews for URLs.\n\n### Facebook\n\n```json\n{\n  \"platformSpecificData\": {\n    \"contentType\": \"story\",\n    \"firstComment\": \"First comment!\",\n    \"pageId\": \"123456789\"\n  }\n}\n```\n\nSet `contentType: \"story\"` to publish as a Facebook Page Story (24-hour ephemeral). Supports up to 10 images for feed posts.\n\n### Threads\n\n```json\n{\n  \"platformSpecificData\": {\n    \"threadItems\": [\n      { \"content\": \"Second post in thread\" },\n      { \"content\": \"Third post\", \"mediaItems\": [{ \"type\": \"image\", \"url\": \"...\" }] }\n    ]\n  }\n}\n```\n\nCreates reply chains (Threads equivalent of Twitter threads). Supports up to 10 images per carousel.\n\n### Telegram\n\n```json\n{\n  \"platformSpecificData\": {\n    \"parseMode\": \"HTML\",\n    \"disableWebPagePreview\": false,\n    \"disableNotification\": false,\n    \"protectContent\": false\n  }\n}\n```\n\nParse modes: `HTML`, `Markdown`, `MarkdownV2`. Supports up to 10 images or videos in albums. Max 4096 chars for text-only, 1024 for media captions.\n\n### Snapchat\n\n```json\n{\n  \"platformSpecificData\": {\n    \"contentType\": \"story\"\n  }\n}\n```\n\nContent types:\n- `story` - Ephemeral (24 hours), no text caption\n- `saved_story` - Permanent on Public Profile, title max 45 chars\n- `spotlight` - Video for entertainment feed, description max 160 chars\n\nFile v0.1.0:rules/posts.md\n\n# Posts API\n\n## Endpoints\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `POST` | `/v1/posts` | Create post |\n| `GET` | `/v1/posts` | List posts |\n| `GET` | `/v1/posts/{postId}` | Get post |\n| `PUT` | `/v1/posts/{postId}` | Update post |\n| `DELETE` | `/v1/posts/{postId}` | Delete post |\n| `POST` | `/v1/posts/{postId}/retry` | Retry failed post |\n| `GET` | `/v1/posts/{postId}/logs` | Get publishing logs |\n| `POST` | `/v1/posts/bulk-upload` | Bulk create posts |\n\n## Create Post\n\n```typescript\nconst post = await fetch('https://getlate.dev/api/v1/posts', {\n  method: 'POST',\n  headers: {\n    'Authorization': `Bearer ${apiKey}`,\n    'Content-Type': 'application/json'\n  },\n  body: JSON.stringify({\n    // Required\n    content: 'Your post content here',\n    platforms: [\n      {\n        platform: 'twitter',\n        accountId: 'acc_123',\n        // Platform-specific data goes inside each platform entry\n        platformSpecificData: {\n          threadItems: [\n            { content: 'Tweet 2' },\n            { content: 'Tweet 3', mediaItems: [{ type: 'image', url: 'https://...' }] }\n          ]\n        }\n      },\n      {\n        platform: 'instagram',\n        accountId: 'acc_456',\n        platformSpecificData: {\n          contentType: 'story',  // only 'story' is explicit; feed/reel auto-determined by media\n          firstComment: 'First comment text'\n        }\n      }\n    ],\n\n    // Scheduling (pick one)\n    publishNow: true,                        // Publish immediately\n    // OR\n    scheduledFor: '2024-03-01T10:00:00Z',    // Schedule for later\n    // OR\n    queuedFromProfile: 'prof_123',           // Add to queue\n\n    // Optional media (array of objects)\n    mediaItems: [\n      { type: 'image', url: 'https://...' },\n      { type: 'video', url: 'https://...' }\n    ]\n  })\n});\n```\n\n## Post to Multiple Platforms\n\n```typescript\nawait fetch('https://getlate.dev/api/v1/posts', {\n  method: 'POST',\n  headers: {\n    'Authorization': `Bearer ${apiKey}`,\n    'Content-Type': 'application/json'\n  },\n  body: JSON.stringify({\n    content: 'Announcing our new feature!',\n    platforms: [\n      { platform: 'twitter', accountId: 'tw_123' },\n      { platform: 'linkedin', accountId: 'li_456' },\n      { platform: 'facebook', accountId: 'fb_789' }\n    ],\n    publishNow: true\n  })\n});\n```\n\n## Schedule for Later\n\n```typescript\nawait fetch('https://getlate.dev/api/v1/posts', {\n  method: 'POST',\n  headers: {\n    'Authorization': `Bearer ${apiKey}`,\n    'Content-Type': 'application/json'\n  },\n  body: JSON.stringify({\n    content: 'Scheduled post',\n    platforms: [{ platform: 'twitter', accountId: 'acc_123' }],\n    scheduledFor: '2024-03-15T09:00:00Z'\n  })\n});\n```\n\n## Retry Failed Posts\n\n```bash\n# List failed posts\ncurl \"https://getlate.dev/api/v1/posts?status=failed\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\n# Retry a specific post\ncurl -X POST \"https://getlate.dev/api/v1/posts/POST_ID/retry\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\nFile v0.1.0:rules/queue.md\n\n# Queue API\n\n## Endpoints\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `GET` | `/v1/queue/preview` | Preview queue for profile |\n| `GET` | `/v1/queue/next-slot` | Get next available slot |\n| `GET` | `/v1/queue/slots` | Get queue slot configuration |\n| `POST` | `/v1/queue/slots` | Create a new queue |\n| `PUT` | `/v1/queue/slots` | Update queue slots |\n| `DELETE` | `/v1/queue/slots` | Delete a queue schedule |\n\n## Add Post to Queue\n\n```bash\ncurl -X POST https://getlate.dev/api/v1/posts \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"content\": \"Queued post\",\n    \"platforms\": [{ \"platform\": \"twitter\", \"accountId\": \"acc_123\" }],\n    \"queuedFromProfile\": \"PROFILE_ID\"\n  }'\n```\n\n## Preview Queue\n\n```bash\ncurl \"https://getlate.dev/api/v1/queue/preview?profileId=PROFILE_ID\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\nReturns upcoming scheduled posts in queue order.\n\n## Get Next Slot\n\n```bash\ncurl \"https://getlate.dev/api/v1/queue/next-slot?profileId=PROFILE_ID\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\nReturns the next available time slot for posting.\n\n## Configure Queue Slots\n\n```bash\ncurl -X PUT https://getlate.dev/api/v1/queue/slots \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"profileId\": \"PROFILE_ID\",\n    \"queueId\": \"QUEUE_ID\",\n    \"slots\": [\n      { \"dayOfWeek\": 1, \"time\": \"09:00\" },\n      { \"dayOfWeek\": 1, \"time\": \"12:00\" },\n      { \"dayOfWeek\": 1, \"time\": \"18:00\" }\n    ],\n    \"timezone\": \"America/New_York\"\n  }'\n```\n\nQueue slots define when posts are automatically published.\n- `dayOfWeek`: 0-6 (0=Sunday, 6=Saturday)\n- `time`: 24-hour format \"HH:mm\"","readmeExcerpt":"Skill: Late API Owner: mikipalet Summary: Official Late API reference for scheduling posts across 13 social media platforms. Covers authentication, endpoints, webhooks, and platform-specific features. Use when building with the Late Social Media Scheduling API. Tags: latest:0.1.0 Version history: v0.1.0 | 2026-01-26T07:42:09.192Z | auto Initial release of late-api skill - Publishes the official Late API reference for","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"curl -X POST https://getlate.dev/api/v1/profiles \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -d '{\"name\": \"My Brand\"}'"},{"language":"bash","snippet":"curl \"https://getlate.dev/api/v1/connect/twitter?profileId=PROFILE_ID\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\""},{"language":"bash","snippet":"curl -X POST https://getlate.dev/api/v1/posts \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -d '{\"content\": \"Hello!\", \"platforms\": [{\"platform\": \"twitter\", \"accountId\": \"ACC_ID\"}], \"publishNow\": true}'"},{"language":"bash","snippet":"# 1. Create profile\ncurl -X POST https://getlate.dev/api/v1/profiles \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -d '{\"name\": \"My Brand\"}'\n\n# 2. Connect account (opens OAuth)\ncurl \"https://getlate.dev/api/v1/connect/twitter?profileId=PROFILE_ID\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\n# 3. Create post\ncurl -X POST https://getlate.dev/api/v1/posts \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -d '{\"content\": \"Hello!\", \"platforms\": [{\"platform\": \"twitter\", \"accountId\": \"ACC_ID\"}], \"publishNow\": true}'"},{"language":"bash","snippet":"npx skills add mikipalet/skills/late-api"},{"language":"text","snippet":"/late-api"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: late-api\ndescription: Official Late API reference for scheduling posts across 13 social media platforms. Covers authentication, endpoints, webhooks, and platform-specific features. Use when building with the Late Social Media Scheduling API.\n---\n\n# Late API Reference\n\nSchedule posts across 13 social media platforms with a single API.\n\n**Base URL:** `https://getlate.dev/api/v1`\n\n**Docs:** [getlate.dev/docs](https://getlate.dev/docs)\n\n## Quick Start\n\n```bash\n# 1. Create profile\ncurl -X POST https://getlate.dev/api/v1/profiles \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -d '{\"name\": \"My Brand\"}'\n\n# 2. Connect account (opens OAuth)\ncurl \"https://getlate.dev/api/v1/connect/twitter?profileId=PROFILE_ID\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\n# 3. Create post\ncurl -X POST https://getlate.dev/api/v1/posts \\\n  -H \"Authorization: Bearer YOUR_API_KEY\" \\\n  -d '{\"content\": \"Hello!\", \"platforms\": [{\"platform\": \"twitter\", \"accountId\": \"ACC_ID\"}], \"publishNow\": true}'\n```\n\n## Rule Files\n\nRead individual rule files for detailed documentation:\n\n- [rules/authentication.md](rules/authentication.md) - API key format, usage examples, core concepts\n- [rules/posts.md](rules/posts.md) - Create, schedule, retry posts, bulk upload\n- [rules/accounts.md](rules/accounts.md) - List accounts, health checks, follower stats\n- [rules/connect.md](rules/connect.md) - OAuth flows, Bluesky app password, Telegram bot token\n- [rules/platforms.md](rules/platforms.md) - Platform-specific data for all 13 platforms\n- [rules/webhooks.md](rules/webhooks.md) - Configure webhooks, verify signatures, events\n- [rules/media.md](rules/media.md) - Presigned uploads, supported formats, platform limits\n- [rules/queue.md](rules/queue.md) - Queue management, slots configuration\n- [rules/analytics.md](rules/analytics.md) - YouTube daily views, LinkedIn analytics\n- [rules/tools.md](rules/tools.md) - Media download, hashtag checker, transcripts\n- [rules/errors.md](rules/errors.md) - Error codes, rate limits, publishing logs\n- [rules/sdks.md](rules/sdks.md) - Direct API usage examples\n\n## Supported Platforms\n\nTwitter/X, Instagram, Facebook, LinkedIn, TikTok, YouTube, Pinterest, Reddit, Bluesky, Threads, Google Business, Telegram, Snapchat\n\n---\n\n*[Late](https://getlate.dev) - Social Media Scheduling API for Developers*"},{"path":"README.md","content":"# Late API Skill\n\n[![skills.sh](https://img.shields.io/badge/skills.sh-late--api-blue)](https://skills.sh)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nOfficial Claude Code skill for the [Late](https://getlate.dev) Social Media Scheduling API.\n\n## Installation\n\n```bash\nnpx skills add mikipalet/skills/late-api\n```\n\n## What's Included\n\n- **Authentication** - API key setup and usage\n- **Quick Start** - Get posting in 4 steps\n- **All Endpoints** - Posts, accounts, profiles, webhooks, media\n- **Platform-Specific** - Features for all 13 platforms\n- **Webhooks** - Setup and signature verification\n- **Error Handling** - Common errors and solutions\n- **Code Examples** - curl, TypeScript, Python\n\n## 13 Platforms Supported\n\nTwitter/X, Instagram, Facebook, LinkedIn, TikTok, YouTube, Pinterest, Reddit, Bluesky, Threads, Google Business, Telegram, Snapchat\n\n## Usage\n\nOnce installed, Claude Code will help you with Late API integration:\n\n```\n/late-api\n```\n\n## Example Prompts\n\n- \"How do I create a post with the Late API?\"\n- \"Show me how to set up webhooks\"\n- \"What's the endpoint for connecting a Twitter account?\"\n- \"How do I upload media to Late?\"\n\n## Quick Example\n\n```typescript\nconst response = await fetch('https://getlate.dev/api/v1/posts', {\n  method: 'POST',\n  headers: {\n    'Authorization': `Bearer ${process.env.LATE_API_KEY}`,\n    'Content-Type': 'application/json'\n  },\n  body: JSON.stringify({\n    content: 'Hello from Late API!',\n    platforms: [{ platform: 'twitter', accountId: 'acc_123' }],\n    publishNow: true\n  })\n});\n```\n\n## Resources\n\n- **Docs:** [getlate.dev/docs](https://getlate.dev/docs)\n- **Dashboard:** [getlate.dev/dashboard](https://getlate.dev/dashboard)\n- **API Keys:** [getlate.dev/dashboard/api-keys](https://getlate.dev/dashboard/api-keys)\n\n## License\n\nMIT\n\n---\n\n*[Late](https://getlate.dev) - Social Media Scheduling API for Developers*"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn76zqp7wtxen0ast34y6jhmv97zz1b9\",\n  \"slug\": \"late-api\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1769413329192\n}"},{"path":"rules/accounts.md","content":"# Accounts API\n\n## Endpoints\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `GET` | `/v1/accounts` | List accounts |\n| `PUT` | `/v1/accounts/{accountId}` | Update account |\n| `DELETE` | `/v1/accounts/{accountId}` | Disconnect account |\n| `GET` | `/v1/accounts/health` | Check all accounts health |\n| `GET` | `/v1/accounts/{accountId}/health` | Check specific account health |\n| `GET` | `/v1/accounts/follower-stats` | Get follower statistics |\n\n## Platform-Specific Account Endpoints\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `PUT` | `/v1/accounts/{accountId}/facebook-page` | Update selected Facebook page |\n| `GET` | `/v1/accounts/{accountId}/gmb-reviews` | Get Google Business reviews |\n| `GET` | `/v1/accounts/{accountId}/linkedin-organizations` | List LinkedIn organizations |\n| `PUT` | `/v1/accounts/{accountId}/linkedin-organization` | Switch personal/organization mode |\n| `GET` | `/v1/accounts/{accountId}/linkedin-mentions` | Get LinkedIn mentions |\n| `GET` | `/v1/accounts/{accountId}/linkedin-aggregate-analytics` | Get LinkedIn analytics |\n| `GET` | `/v1/accounts/{accountId}/linkedin-post-analytics` | Get LinkedIn post analytics |\n| `GET` | `/v1/accounts/{accountId}/pinterest-boards` | List Pinterest boards |\n| `PUT` | `/v1/accounts/{accountId}/pinterest-boards` | Set default Pinterest board |\n| `GET` | `/v1/accounts/{accountId}/reddit-subreddits` | List user's subreddits |\n| `PUT` | `/v1/accounts/{accountId}/reddit-subreddits` | Set default subreddit |\n\n## List Accounts\n\n```bash\ncurl \"https://getlate.dev/api/v1/accounts?profileId=PROFILE_ID\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\n## Account Health Check\n\n```bash\ncurl \"https://getlate.dev/api/v1/accounts/health\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\nResponse indicates if tokens are valid or need reconnection.\n\n## Account Groups\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `GET` | `/v1/account-groups` | List account groups |\n| `POST` | `/v1/account-groups` | Create account group |\n| `PUT` | `/v1/account-groups/{groupId}` | Update account group |\n| `DELETE` | `/v1/account-groups/{groupId}` | Delete account group |\n\nAccount groups let you organize accounts for bulk posting operations."},{"path":"rules/analytics.md","content":"# Analytics API\n\n## Endpoints\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| `GET` | `/v1/analytics` | Get general analytics |\n| `GET` | `/v1/analytics/youtube/daily-views` | Get YouTube video daily views |\n| `GET` | `/v1/accounts/{accountId}/linkedin-aggregate-analytics` | LinkedIn account analytics |\n| `GET` | `/v1/accounts/{accountId}/linkedin-post-analytics` | LinkedIn post analytics |\n| `GET` | `/v1/accounts/follower-stats` | Follower count history |\n\n## YouTube Daily Views\n\n```bash\ncurl \"https://getlate.dev/api/v1/analytics/youtube/daily-views?accountId=ACCOUNT_ID&videoId=VIDEO_ID&startDate=2024-01-01&endDate=2024-01-31\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\nResponse:\n\n```json\n{\n  \"success\": true,\n  \"videoId\": \"dQw4w9WgXcQ\",\n  \"dateRange\": {\n    \"startDate\": \"2024-01-01\",\n    \"endDate\": \"2024-01-31\"\n  },\n  \"totalViews\": 15420,\n  \"dailyViews\": [\n    {\n      \"date\": \"2024-01-01\",\n      \"views\": 523,\n      \"estimatedMinutesWatched\": 1045,\n      \"averageViewDuration\": 120,\n      \"subscribersGained\": 12,\n      \"subscribersLost\": 2,\n      \"likes\": 45,\n      \"comments\": 8,\n      \"shares\": 15\n    }\n  ]\n}\n```\n\n**Note:** Requires `yt-analytics.readonly` scope. If missing, response includes `reauthorizeUrl`.\n\n## LinkedIn Analytics\n\n```bash\n# Aggregate analytics for account\ncurl \"https://getlate.dev/api/v1/accounts/ACCOUNT_ID/linkedin-aggregate-analytics\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n\n# Analytics for specific post\ncurl \"https://getlate.dev/api/v1/accounts/ACCOUNT_ID/linkedin-post-analytics?postUrn=URN\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\n## Follower Stats\n\n```bash\ncurl \"https://getlate.dev/api/v1/accounts/follower-stats?profileId=PROFILE_ID\" \\\n  -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\nReturns historical follower counts across all connected accounts."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1111,"uniquenessScore":43,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T05:45:39.097Z","emptyReason":null},"items":[{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-10T18:48:31.762Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}