LateLate API
Core

Logs


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.

GET
/v1/logs
AuthorizationBearer <token>

API key authentication - use your Late API key as a Bearer token

In: header

Query Parameters

status?string

Filter by log status

Value in"success" | "failed" | "pending" | "skipped" | "all"
platform?string

Filter by platform

Value in"tiktok" | "instagram" | "facebook" | "youtube" | "linkedin" | "twitter" | "threads" | "pinterest" | "reddit" | "bluesky" | "googlebusiness" | "telegram" | "snapchat" | "all"
action?string

Filter by action type

Value in"publish" | "retry" | "media_upload" | "rate_limit_pause" | "token_refresh" | "cancelled" | "all"
days?integer

Number of days to look back (max 7)

Default7
Range1 <= value <= 7
limit?integer

Maximum number of logs to return (max 100)

Default50
Range1 <= value <= 100
skip?integer

Number of logs to skip (for pagination)

Default0
Range0 <= value

Response 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.

GET
/v1/logs/{logId}
AuthorizationBearer <token>

API key authentication - use your Late API key as a Bearer token

In: header

Path Parameters

logIdstring

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"
}
Empty
{
  "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.

GET
/v1/posts/logs
AuthorizationBearer <token>

API key authentication - use your Late API key as a Bearer token

In: header

Query Parameters

status?string

Filter by log status

Value in"success" | "failed" | "pending" | "skipped" | "all"
platform?string

Filter by platform

Value in"tiktok" | "instagram" | "facebook" | "youtube" | "linkedin" | "twitter" | "threads" | "pinterest" | "reddit" | "bluesky" | "googlebusiness" | "telegram" | "snapchat" | "all"
action?string

Filter by action type

Value in"publish" | "retry" | "media_upload" | "rate_limit_pause" | "token_refresh" | "cancelled" | "all"
days?integer

Number of days to look back (max 7)

Default7
Range1 <= value <= 7
limit?integer

Maximum number of logs to return (max 100)

Default50
Range1 <= value <= 100
skip?integer

Number of logs to skip (for pagination)

Default0
Range0 <= value

Response 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 successfully
  • connect_failed - Connection attempt failed
  • disconnect - Account was disconnected
  • reconnect_success - Existing account reconnected
  • reconnect_failed - Reconnection attempt failed

Retention: Logs are automatically deleted after 7 days.

GET
/v1/connections/logs
AuthorizationBearer <token>

API key authentication - use your Late API key as a Bearer token

In: header

Query Parameters

platform?string

Filter by platform

Value in"tiktok" | "instagram" | "facebook" | "youtube" | "linkedin" | "twitter" | "threads" | "pinterest" | "reddit" | "bluesky" | "googlebusiness" | "telegram" | "snapchat" | "all"
eventType?string

Filter by event type

Value in"connect_success" | "connect_failed" | "disconnect" | "reconnect_success" | "reconnect_failed" | "all"
status?string

Filter by status (shorthand for event types)

Value in"success" | "failed" | "all"
days?integer

Number of days to look back (max 7)

Default7
Range1 <= value <= 7
limit?integer

Maximum number of logs to return (max 100)

Default50
Range1 <= value <= 100
skip?integer

Number of logs to skip (for pagination)

Default0
Range0 <= value

Response 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.

GET
/v1/posts/{postId}/logs
AuthorizationBearer <token>

API key authentication - use your Late API key as a Bearer token

In: header

Path Parameters

postIdstring

The post ID

Query Parameters

limit?integer

Maximum number of logs to return (max 100)

Default50
Range1 <= value <= 100

Response 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"
}
Empty
{
  "error": "Not found"
}