---
title: "Substack Post Details"
method: GET
path: "/v1/substack/post"
tags: ["Substack"]
---

# Substack Post Details

`GET /v1/substack/post`

## Request

- Base URL: `https://apidirect.io`
- URL: `https://apidirect.io/v1/substack/post`
- Auth: API key in header `X-API-Key`

Get a Substack post by URL, ID, or publication and slug. Returns the full body as HTML and plain text (the free preview for paid posts), title, subtitle, author, publication, publication date, engagement, paywall status, word count, cover image, podcast audio and tags.

**Price:** $0.003 per request. **Free tier:** 50 requests/month.

## Query parameters

- `url` string
- `post_id` string
- `publication` string
- `slug` string
- `get_sentiment` boolean

## Response `200`

Successful response

- SubstackPostDetailsResponse: Inferred from a live response. Any field can be null or absent, and new fields may be added at any time.
  - `post` object, nullable
    - `title` string, nullable
    - `subtitle` string, nullable
    - `url` string, nullable
    - `date` string, nullable
    - `author` string, nullable
    - `author_name` string, nullable
    - `author_id` string, nullable
    - `author_url` string, nullable
    - `source` string, nullable
    - `domain` string, nullable
    - `snippet` string, nullable
    - `likes` number, nullable
    - `comments` number, nullable
    - `restacks` number, nullable
    - `authors` object[], nullable
      - `username` string, nullable
      - `name` string, nullable
      - `user_id` string, nullable
      - `url` string, nullable
    - `replies` number, nullable
    - `audio_url` string, nullable
    - `podcast_image_url` string, nullable
    - `video_duration` number, nullable
    - `reactions` object, nullable
      - `❤` number, nullable
    - `is_paid` boolean, nullable
    - `audience` string, nullable
    - `type` string, nullable
    - `wordcount` number, nullable
    - `lang` string, nullable
    - `cover_image_url` string, nullable
    - `podcast_url` string, nullable
    - `podcast_duration` number, nullable
    - `tags` unknown[], nullable
      - unknown
    - `publication` string, nullable
    - `publication_id` string, nullable
    - `publication_url` string, nullable
    - `slug` string, nullable
    - `post_id` string, nullable
    - `body_html` string, nullable
    - `body_text` string, nullable
    - `body_is_preview` boolean, nullable
    - `updated_at` string, nullable
    - `previous_post_slug` string, nullable
    - `next_post_slug` string, nullable
    - `publication_details` object, nullable
      - `publication_id` string, nullable
      - `name` string, nullable
      - `subdomain` string, nullable
      - `url` string, nullable
      - `logo_url` string, nullable

## Other responses

- `400`: Bad request: a required parameter is missing or a value is invalid (code: missing_parameter or invalid_parameter).
- `401`: Unauthorized: the API key is missing or invalid (code: missing_api_key or invalid_api_key).
- `402`: Free tier used up for this endpoint and no payment method on file (`payment_required`).
- `403`: Account blocked after a failed payment (`account_blocked`).
- `404`: Not found: the requested item does not exist (code: not_found).
- `429`: Rate limit exceeded, or too many concurrent requests for this endpoint
- `500`: Internal server error
- `502`: Temporary failure retrieving Substack data. Please retry shortly.
- `503`: Service unavailable: the data source is temporarily unavailable
- `504`: The request timed out

---

[API](https://skmtc.dev/apidirect/apis/api-direct.md) · [All operations](https://skmtc.dev/apidirect/apis/api-direct/llms.txt) · [OpenAPI document](https://skmtc.dev/apidirect/apis/api-direct/revisions/fa8c68d70bd0?raw)
