Logs
Publishing logs for transparency and debugging. Shows detailed records of all post publishing attempts. **Log Data Includes:** - Platform API endpoint called - HTTP status code - Request body (content preview, media URLs) - Response body (platform post ID/URL or error details) - Duration and retry attempts **Retention:** Logs are automatically deleted after 7 days via TTL index.
Get publishing logs (deprecated)
Deprecated: Use /v1/posts/logs instead. This endpoint is maintained for backwards compatibility.
Retrieve publishing logs for all posts. Logs show detailed information about each publishing attempt including API requests, responses, and timing data.
Filtering:
- Filter by status (success, failed, pending, skipped)
- Filter by platform (instagram, twitter, linkedin, etc.)
- Filter by action (publish, retry, rate_limit_pause, etc.)
Retention: Logs are automatically deleted after 7 days.
API key authentication - use your Late API key as a Bearer token
In: header
Query Parameters
Filter by log status
"success" | "failed" | "pending" | "skipped" | "all"Filter by platform
"tiktok" | "instagram" | "facebook" | "youtube" | "linkedin" | "twitter" | "threads" | "pinterest" | "reddit" | "bluesky" | "googlebusiness" | "telegram" | "snapchat" | "all"Filter by action type
"publish" | "retry" | "media_upload" | "rate_limit_pause" | "token_refresh" | "cancelled" | "all"Number of days to look back (max 7)
71 <= value <= 7Maximum number of logs to return (max 100)
501 <= value <= 100Number of logs to skip (for pagination)
00 <= valueResponse Body
application/json
application/json
curl -X GET "https://getlate.dev/api/v1/logs"{
"logs": [
{
"_id": "675f1c0a9e2b5af0012ab34cd",
"postId": {
"_id": "65f1c0a9e2b5af0012ab34cd",
"content": "Check out our new feature!",
"status": "published"
},
"userId": "64e1f0a9e2b5af0012ab34de",
"platform": "instagram",
"accountId": "64e1f0a9e2b5af0012ab34ef",
"accountUsername": "@acmecorp",
"action": "publish",
"status": "success",
"statusCode": 200,
"endpoint": "graph.facebook.com/me/media_publish",
"request": {
"contentPreview": "Check out our new feature!",
"mediaCount": 1,
"mediaTypes": [
"image"
],
"mediaUrls": [
"https://storage.getlate.dev/abc123.jpg"
]
},
"response": {
"platformPostId": "17895695668004550",
"platformPostUrl": "https://www.instagram.com/p/ABC123/"
},
"durationMs": 2340,
"attemptNumber": 1,
"createdAt": "2024-11-01T10:00:05Z"
}
],
"pagination": {
"total": 150,
"limit": 50,
"skip": 0,
"pages": 3,
"hasMore": true
}
}{
"error": "Unauthorized"
}Get a single log entry
Retrieve detailed information about a specific log entry, including full request and response bodies for debugging.
API key authentication - use your Late API key as a Bearer token
In: header
Path Parameters
The log entry ID
Response Body
application/json
application/json
application/json
curl -X GET "https://getlate.dev/api/v1/logs/string"{
"log": {
"_id": "675f1c0a9e2b5af0012ab34cd",
"postId": {
"_id": "65f1c0a9e2b5af0012ab34cd",
"content": "Check out our new feature!",
"status": "published",
"scheduledFor": "2024-11-01T10:00:00Z",
"mediaItems": [
{
"type": "image",
"url": "https://storage.getlate.dev/abc123.jpg"
}
]
},
"userId": "64e1f0a9e2b5af0012ab34de",
"platform": "instagram",
"accountId": {
"_id": "64e1f0a9e2b5af0012ab34ef",
"platform": "instagram",
"username": "acmecorp",
"displayName": "Acme Corporation"
},
"accountUsername": "acmecorp",
"action": "publish",
"status": "success",
"statusCode": 200,
"endpoint": "graph.facebook.com/me/media_publish",
"request": {
"contentPreview": "Check out our new feature!",
"mediaCount": 1,
"mediaTypes": [
"image"
],
"mediaUrls": [
"https://storage.getlate.dev/abc123.jpg"
],
"rawBody": "{\"image_url\":\"https://storage.getlate.dev/abc123.jpg\",\"caption\":\"Check out our new feature!\"}"
},
"response": {
"platformPostId": "17895695668004550",
"platformPostUrl": "https://www.instagram.com/p/ABC123/",
"rawBody": "{\"id\":\"17895695668004550\"}"
},
"durationMs": 2340,
"attemptNumber": 1,
"createdAt": "2024-11-01T10:00:05Z"
}
}{
"error": "Unauthorized"
}{
"error": "Not found"
}Get publishing logs
Retrieve publishing logs for all posts. Logs show detailed information about each publishing attempt including API requests, responses, and timing data.
Filtering:
- Filter by status (success, failed, pending, skipped)
- Filter by platform (instagram, twitter, linkedin, etc.)
- Filter by action (publish, retry, rate_limit_pause, etc.)
Retention: Logs are automatically deleted after 7 days.
API key authentication - use your Late API key as a Bearer token
In: header
Query Parameters
Filter by log status
"success" | "failed" | "pending" | "skipped" | "all"Filter by platform
"tiktok" | "instagram" | "facebook" | "youtube" | "linkedin" | "twitter" | "threads" | "pinterest" | "reddit" | "bluesky" | "googlebusiness" | "telegram" | "snapchat" | "all"Filter by action type
"publish" | "retry" | "media_upload" | "rate_limit_pause" | "token_refresh" | "cancelled" | "all"Number of days to look back (max 7)
71 <= value <= 7Maximum number of logs to return (max 100)
501 <= value <= 100Number of logs to skip (for pagination)
00 <= valueResponse Body
application/json
application/json
curl -X GET "https://getlate.dev/api/v1/posts/logs"{
"logs": [
{
"_id": "675f1c0a9e2b5af0012ab34cd",
"postId": {
"_id": "65f1c0a9e2b5af0012ab34cd",
"content": "Check out our new feature!",
"status": "published"
},
"userId": "64e1f0a9e2b5af0012ab34de",
"platform": "instagram",
"accountId": "64e1f0a9e2b5af0012ab34ef",
"accountUsername": "@acmecorp",
"action": "publish",
"status": "success",
"statusCode": 200,
"endpoint": "graph.facebook.com/me/media_publish",
"request": {
"contentPreview": "Check out our new feature!",
"mediaCount": 1,
"mediaTypes": [
"image"
],
"mediaUrls": [
"https://storage.getlate.dev/abc123.jpg"
]
},
"response": {
"platformPostId": "17895695668004550",
"platformPostUrl": "https://www.instagram.com/p/ABC123/"
},
"durationMs": 2340,
"attemptNumber": 1,
"createdAt": "2024-11-01T10:00:05Z"
}
],
"pagination": {
"total": 150,
"limit": 50,
"skip": 0,
"pages": 3,
"hasMore": true
}
}{
"error": "Unauthorized"
}Get connection logs
Retrieve connection event logs showing account connection and disconnection history. Useful for debugging OAuth issues and tracking account lifecycle.
Event Types:
connect_success- New account connected successfullyconnect_failed- Connection attempt faileddisconnect- Account was disconnectedreconnect_success- Existing account reconnectedreconnect_failed- Reconnection attempt failed
Retention: Logs are automatically deleted after 7 days.
API key authentication - use your Late API key as a Bearer token
In: header
Query Parameters
Filter by platform
"tiktok" | "instagram" | "facebook" | "youtube" | "linkedin" | "twitter" | "threads" | "pinterest" | "reddit" | "bluesky" | "googlebusiness" | "telegram" | "snapchat" | "all"Filter by event type
"connect_success" | "connect_failed" | "disconnect" | "reconnect_success" | "reconnect_failed" | "all"Filter by status (shorthand for event types)
"success" | "failed" | "all"Number of days to look back (max 7)
71 <= value <= 7Maximum number of logs to return (max 100)
501 <= value <= 100Number of logs to skip (for pagination)
00 <= valueResponse Body
application/json
application/json
curl -X GET "https://getlate.dev/api/v1/connections/logs"{
"logs": [
{
"_id": "675f1c0a9e2b5af0012ab34cd",
"userId": "64e1f0a9e2b5af0012ab34de",
"profileId": "64e1f0a9e2b5af0012ab34ef",
"accountId": "64e1f0a9e2b5af0012ab3500",
"platform": "instagram",
"eventType": "connect_success",
"connectionMethod": "oauth",
"success": {
"displayName": "Acme Corp",
"username": "acmecorp",
"profilePicture": "https://...",
"permissions": [
"instagram_basic",
"instagram_content_publish"
],
"tokenExpiresAt": "2024-12-01T10:00:00Z",
"accountType": "business"
},
"context": {
"hasCustomRedirectUrl": false
},
"createdAt": "2024-11-01T10:00:00Z"
},
{
"_id": "675f1c0a9e2b5af0012ab34ce",
"userId": "64e1f0a9e2b5af0012ab34de",
"profileId": "64e1f0a9e2b5af0012ab34ef",
"platform": "twitter",
"eventType": "connect_failed",
"connectionMethod": "oauth",
"error": {
"code": "oauth_denied",
"message": "OAuth error: access_denied"
},
"context": {
"hasCustomRedirectUrl": true
},
"createdAt": "2024-11-01T09:00:00Z"
}
],
"pagination": {
"total": 25,
"limit": 50,
"skip": 0,
"pages": 1,
"hasMore": false
}
}{
"error": "Unauthorized"
}Get logs for a specific post
Retrieve all publishing logs for a specific post. Shows the complete history of publishing attempts for that post across all platforms.
API key authentication - use your Late API key as a Bearer token
In: header
Path Parameters
The post ID
Query Parameters
Maximum number of logs to return (max 100)
501 <= value <= 100Response Body
application/json
application/json
application/json
curl -X GET "https://getlate.dev/api/v1/posts/string/logs"{
"logs": [
{
"_id": "675f1c0a9e2b5af0012ab34cd",
"postId": "65f1c0a9e2b5af0012ab34cd",
"userId": "64e1f0a9e2b5af0012ab34de",
"platform": "instagram",
"accountUsername": "@acmecorp",
"action": "publish",
"status": "success",
"statusCode": 200,
"durationMs": 2340,
"createdAt": "2024-11-01T10:00:05Z"
},
{
"_id": "675f1c0a9e2b5af0012ab34ce",
"postId": "65f1c0a9e2b5af0012ab34cd",
"userId": "64e1f0a9e2b5af0012ab34de",
"platform": "twitter",
"accountUsername": "@acme",
"action": "publish",
"status": "failed",
"statusCode": 429,
"response": {
"errorMessage": "Rate limit exceeded",
"errorCode": "RATE_LIMITED"
},
"durationMs": 150,
"attemptNumber": 1,
"createdAt": "2024-11-01T10:00:03Z"
}
],
"count": 2,
"postId": "65f1c0a9e2b5af0012ab34cd"
}{
"error": "Unauthorized"
}{
"error": "Not found"
}Webhooks
Configure webhooks to receive real-time notifications about post status changes, account events, and incoming messages. **Available Events:** - `post.scheduled` - When a post is successfully scheduled - `post.published` - When a post is successfully published - `post.failed` - When a post fails to publish on all platforms - `post.partial` - When a post publishes to some platforms but fails on others - `account.connected` - When a social account is successfully connected - `account.disconnected` - When a social account is disconnected (token expired/revoked) - `message.received` - When a new DM is received (Instagram, Telegram) **Security:** - Optional HMAC-SHA256 signature sent in `X-Late-Signature` header - Configure a secret key in webhook settings to enable signature verification - Custom headers can be added to webhook requests for additional authentication
Users
Manage team user accounts, permissions, and retrieve user information via the Late API