> **For coding agents and LLMs:** This is one page from the Social Fetch docs (markdown export). For curated orientation and workflow guidance, start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for agent onboarding and crawl rules, use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for the full endpoint list with links to pages like this one, use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt); for one platform's parameters and curls, use [`/llms-{platform}.txt`](https://www.socialfetch.dev/llms-tiktok.txt); use [`/llms.json`](https://www.socialfetch.dev/llms.json) when you need structured JSON for tool registration.

## This page

- **On-site (HTML):** [https://www.socialfetch.dev/docs/api/v1/truthsocial/posts/get](https://www.socialfetch.dev/docs/api/v1/truthsocial/posts/get)
- **Markdown (.mdx) URL:** [https://www.socialfetch.dev/docs/api/v1/truthsocial/posts/get.mdx](https://www.socialfetch.dev/docs/api/v1/truthsocial/posts/get.mdx)

## API base URL and authentication

- **API origin (from OpenAPI `servers`):** `https://api.socialfetch.dev`
- **Authentication:** send `x-api-key: sfk_...` on `/v1/**` routes unless the operation is explicitly anonymous (check OpenAPI `security`, the [API reference hub](https://www.socialfetch.dev/docs/api.mdx), [`/llms.txt`](https://www.socialfetch.dev/llms.txt), or [`/llms.json`](https://www.socialfetch.dev/llms.json) for each route).
- **OpenAPI JSON:** [https://www.socialfetch.dev/openapi.json](https://www.socialfetch.dev/openapi.json)

## Recommended docs entrypoints (this site)

- [Documentation overview](https://www.socialfetch.dev/docs.mdx) — top-level orientation (markdown).
- [Quickstart](https://www.socialfetch.dev/docs/quickstart.mdx) — authenticate with `x-api-key`, validate auth with `whoami`, and understand the JSON envelope.
- [SDK](https://www.socialfetch.dev/docs/sdk.mdx) — official TypeScript SDK guide, including `SocialFetchClient`, `Result`, and `unwrap()`.
- [SDK reference](https://www.socialfetch.dev/docs/sdk-reference.mdx) — exhaustive SDK method inventory and route mapping for agents, tooling, and power users.
- [Choose the right endpoint](https://www.socialfetch.dev/docs/choose-endpoint.mdx) — task-oriented route selection for smoke tests, profiles, list endpoints, and single-item lookups.
- [Capability matrix](https://www.socialfetch.dev/docs/capability-matrix.mdx) — fast comparison of identifiers, pagination, outcomes, media download, and SDK coverage.
- [Recipes](https://www.socialfetch.dev/docs/recipes.mdx) — copyable workflows (brand monitoring, transcripts, Ad Library, creator scoring, Reddit research) with credit callouts and SDK examples.
- [Integrations](https://www.socialfetch.dev/docs/integrations.mdx) — MCP for AI clients, n8n verified node, Apify Store Actors, SDK, and REST API connection paths.
- [MCP product page](https://www.socialfetch.dev/mcp) — hosted MCP overview, OAuth, Skills install.
- [MCP integration](https://www.socialfetch.dev/docs/integrations/mcp.mdx) — hosted `/mcp` server, OAuth, Cursor/VS Code/Claude install snippets, 154 endpoint tools, plus docs_search/docs_read for implementation help.
- [n8n integration](https://www.socialfetch.dev/docs/integrations/n8n.mdx) — install `n8n-nodes-socialfetch`, credentials, and workflow examples.
- [Apify integration](https://www.socialfetch.dev/docs/integrations/apify.mdx) — Store Actors under @social-fetch, PPE billing, dataset export, and quick start.
- [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt) — every documented operation with a direct link to that route's agent-readable markdown page (prefer this over parsing OpenAPI).
- [`/llms-{platform}.txt`](https://www.socialfetch.dev/llms-tiktok.txt) — per-platform endpoint files generated from OpenAPI (parameters, credits, curls).
- [`/agents.txt`](https://www.socialfetch.dev/agents.txt) — agent crawl/onboarding file with capabilities, auth rules, and allowlist.
- [`/llms.json`](https://www.socialfetch.dev/llms.json) — structured machine-readable operation inventory with parameter names, pagination, outcomes, credits, and SDK mapping.
- [API reference hub](https://www.socialfetch.dev/docs/api.mdx) — human-friendly index of operations with links into generated pages.
- [Errors](https://www.socialfetch.dev/docs/errors.mdx) — shared error envelope and HTTP status guidance.
- [Credits](https://www.socialfetch.dev/docs/credits.mdx) — metering, `402`, and planning batch jobs.
- Outcome semantics such as `found`, `not_found`, and `private` are documented in [Errors](https://www.socialfetch.dev/docs/errors.mdx) and on operation pages when present in the OpenAPI contract.

## Markdown docs convention

- Every docs page has a markdown twin: append **`.mdx`** to the docs pathname (for example `/docs/quickstart` → `/docs/quickstart.mdx`).
- Agents that send `Accept: text/markdown` on `/docs/**` HTML URLs may receive markdown directly (same URL, `Vary: Accept`).

---
# Get Truth Social post (https://www.socialfetch.dev/docs/api/v1/truthsocial/posts/get)

## Summary

Get a Truth Social post by URL.

**Tags:** `Truth Social`

## HTTP

- **Method:** GET
- **Path:** `/v1/truthsocial/posts`
- **Base URL:** `https://api.socialfetch.dev`

## Capability summary

- **SDK mapping:** `client.truthsocial.getPost({ url: "https://truthsocial.com/@justthenews/116972401572691045" })`
- **Accepted identifiers:** `url` (query)
- **Pagination:** none
- **Business outcome field:** `data.lookupStatus` with values `found`, `not_found`

## Credits

- **Base:** 2 credits per successful lookup.
- **Maximum on success (200):** 2 credits.
- **Normalization failure (502):** 0 credits charged.
- **Authoritative field:** `meta.creditsCharged`.

## Authentication

- **`x-api-key`**: API key (`sfk_...`)

## Parameters

### `url` (query)

- **Required:** yes
- **Constraints:** type `string`; minLength: 1; maxLength: 4096
- **Description:** Link to the Truth Social post.

## Responses (status codes)

- **200**: Truth Social post lookup result.
- **400**: Invalid post URL
- **401**: Missing or invalid API key
- **402**: Insufficient credits
- **500**: Unexpected or billing error
- **502**: Lookup could not be completed.
- **503**: Service temporarily unavailable; safe to retry with backoff.

## Response body (200)

Truth Social post lookup result.

### Field outline

- **data** (required) — type `object`. Endpoint-specific response payload.
  - **lookupStatus** (required) — type `string`; enum: found, not_found. Whether the post was found.
  - **post** (required) — type `object`; nullable. Post when lookupStatus is `found`; null when `not_found`.
    - **id** (required) — type `string`; pattern: `^\d{1,30}$`. Truth Social status id.
    - **url** (required) — type `string`; minLength: 1. Canonical public Truth Social post URL.
    - **createdAt** (required) — type `string`; nullable. ISO-8601 creation timestamp.
    - **editedAt** (required) — type `string`; nullable. ISO-8601 edit timestamp when available.
    - **text** (required) — type `string`; nullable. Plain-text post body.
    - **spoilerText** (required) — type `string`; nullable. Content warning / spoiler text when present.
    - **language** (required) — type `string`; nullable. Language code when available.
    - **visibility** (required) — type `string`; nullable. Visibility string when available.
    - **isSensitive** (required) — type `boolean`. Whether the post is marked sensitive.
    - **author** (required) — type `object`; nullable. Author snapshot when available.
      - **platform** (required) — type `string`; enum: truthsocial. Social platform for this author.
      - **id** (required) — type `string`; pattern: `^\d{1,30}$`. Stable Truth Social account id as a string.
      - **handle** (required) — type `string`; minLength: 1. Truth Social handle without a leading @.
      - **displayName** (required) — type `string`; nullable. Public display name when available.
      - **avatarUrl** (required) — type `string`; nullable. Avatar image URL when available.
      - **isVerified** (required) — type `boolean`. Whether the account is marked verified.
      - **profileUrl** (required) — type `string`; minLength: 1. Canonical public Truth Social profile URL.
    - **inReplyToStatusId** (required) — type `string`; pattern: `^\d{1,30}$`; nullable. Parent status id when this is a reply.
    - **inReplyToAccountId** (required) — type `string`; pattern: `^\d{1,30}$`; nullable. Parent account id when this is a reply.
    - **quoteId** (required) — type `string`; pattern: `^\d{1,30}$`; nullable. Quoted status id when present.
    - **repostOfId** (required) — type `string`; pattern: `^\d{1,30}$`; nullable. Original status id when this is a repost.
    - **metrics** (required) — type `object`. Engagement metrics.
      - **replies** (required) — type `integer`; minimum: 0; nullable. Reply count when available.
      - **reposts** (required) — type `integer`; minimum: 0; nullable. Repost/reblog count when available.
      - **favorites** (required) — type `integer`; minimum: 0; nullable. Favorite count when available.
      - **upvotes** (required) — type `integer`; minimum: 0; nullable. Upvote count when available.
      - **downvotes** (required) — type `integer`; minimum: 0; nullable. Downvote count when available.
    - **media** (required) — type `array`. Media attachments in upstream order.
      - _items:_
        - **type** (required) — type `string`; enum: image, video, audio, gifv, unknown. Normalized media type.
        - **url** (required) — type `string`; nullable. Primary media URL when available.
        - **previewUrl** (required) — type `string`; nullable. Preview/thumbnail URL when available.
        - **description** (required) — type `string`; nullable. Alt text / description when available.
        - **width** (required) — type `integer`; minimum: 0; nullable. Width in pixels when available.
        - **height** (required) — type `integer`; minimum: 0; nullable. Height in pixels when available.
        - **durationSeconds** (required) — type `number`; minimum: 0; nullable. Duration in seconds for video/audio when available.
    - **linkPreview** (required) — type `object`; nullable. Link preview card when present.
      - **url** (required) — type `string`; minLength: 1. Linked page URL.
      - **title** (required) — type `string`; nullable. Link card title when available.
      - **description** (required) — type `string`; nullable. Link card description when available.
      - **providerName** (required) — type `string`; nullable. Link provider name when available.
      - **imageUrl** (required) — type `string`; nullable. Link card image URL when available.
    - **poll** (required) — type `object`; nullable. Poll when present.
      - **expiresAt** (required) — type `string`; nullable. ISO-8601 poll expiration when available.
      - **expired** (required) — type `boolean`. Whether the poll has expired.
      - **multiple** (required) — type `boolean`. Whether multiple choices are allowed.
      - **votesCount** (required) — type `integer`; minimum: 0; nullable. Total votes when available.
      - **options** (required) — type `array`. Poll options in display order.
        - _items:_
          - **title** (required) — type `string`. Poll option title.
          - **votesCount** (required) — type `integer`; minimum: 0; nullable. Votes for this option when available.
    - **quote** (required) — type `object`; nullable. Quoted post summary when present.
      - **id** (required) — type `string`; pattern: `^\d{1,30}$`. Quoted post id.
      - **url** (required) — type `string`; minLength: 1. Canonical quoted post URL.
      - **text** (required) — type `string`; nullable. Plain-text body of the quote.
      - **authorHandle** (required) — type `string`; nullable. Quoted author handle without @ when available.
- **meta** (required) — type `object`. Metadata describing the request and billing outcome.
  - **requestId** (required) — type `string`; minLength: 1. Unique request identifier for tracing this API call.
  - **creditsCharged** (required) — type `integer`; minimum: 0. Credits charged for this request.
  - **version** (required) — type `string`; enum: v1. Public API version that served the response.
  - **cached** (optional) — type `boolean`. True when served from shared response cache. Credits still apply (full endpoint price); Age header may be present.

### Example JSON (found)

```json
{
  "data": {
    "lookupStatus": "found",
    "post": {
      "id": "116972401572691045",
      "url": "https://truthsocial.com/@justthenews/116972401572691045",
      "createdAt": "2026-07-24T01:40:01.732Z",
      "editedAt": null,
      "text": "Patel returns looted artifacts to Indonesian president during overseas trip https://justthenews.com/government/federal-agencies/patel-returns-looted-artifacts-indonesian-president-during-overseas?utm_source=mux&utm_medium=social-media&utm_campaign=social-media-autopost",
      "spoilerText": null,
      "language": "en",
      "visibility": "public",
      "isSensitive": false,
      "author": {
        "platform": "truthsocial",
        "id": "107815195611798453",
        "handle": "justthenews",
        "displayName": "Just the News",
        "avatarUrl": "https://static-assets-1.truthsocial.com/tmtg:prime-ts-assets/accounts/avatars/107/815/195/611/798/453/original/78803287358b5fe7.jpeg",
        "isVerified": true,
        "profileUrl": "https://truthsocial.com/@justthenews"
      },
      "inReplyToStatusId": null,
      "inReplyToAccountId": null,
      "quoteId": null,
      "repostOfId": null,
      "metrics": {
        "replies": 9,
        "reposts": 70,
        "favorites": 248,
        "upvotes": 248,
        "downvotes": 0
      },
      "media": [],
      "linkPreview": {
        "url": "https://justthenews.com/government/federal-agencies/patel-returns-looted-artifacts-indonesian-president-during-overseas?utm_source=mux&utm_medium=social-media&utm_campaign=social-media-autopost",
        "title": "Patel returns looted artifacts to Indonesian president during overseas trip",
        "description": "Indonesian officials told reporters that the handover took place Wednesday at Subianto’s residence in the Indonesian capital, Jakarta. The return was part of an ongoing effort to recover and return cultural artifacts.",
        "providerName": "justthenews.com",
        "imageUrl": "https://static-assets-1.truthsocial.com/tmtg:prime-ts-assets/cache/preview_cards/images/074/561/271/original/3157141e1007c5dd.jpg"
      },
      "poll": null,
      "quote": null
    }
  },
  "meta": {
    "requestId": "req_truthsocial_post_example",
    "creditsCharged": 2,
    "version": "v1"
  }
}
```

### Machine-readable error codes

When an error JSON body is returned, it may include one of these `error.code` values (derived from the OpenAPI schemas for this operation; additional codes may exist at runtime):

- `bad_request`

## Error handling & retries

Interpret HTTP status codes using the descriptions below. Do not assume a JSON body unless the OpenAPI schema defines one for that status.

- **400**: Invalid post URL **Retry:** Fix the request; retrying the same invalid payload will not help.
- **401**: Missing or invalid API key **Retry:** Fix the API key first; retrying without changes will not help.
- **402**: Insufficient credits **Retry:** Do not retry without resolving billing/credits (retrying the same request will not help).
- **500**: Unexpected or billing error
- **502**: Lookup could not be completed. **Retry:** May be transient; a few retries with backoff are reasonable.
- **503**: Service temporarily unavailable; safe to retry with backoff. **Retry:** Usually safe to retry with exponential backoff and jitter.

### Suggested client defaults

- Send the API key using the `x-api-key` header on every request.
- On `503` (and sometimes `502`), retry with backoff; cap retries and surface a clear error to the user.
- On `402`, surface an actionable billing message rather than blind retries.

## Examples

### TypeScript SDK

```typescript
import { SocialFetchClient } from "@socialfetch/sdk";

const client = new SocialFetchClient({
  apiKey: process.env.SOCIALFETCH_API_KEY!,
});

const result = await client.truthsocial.getPost({
  url: "https://truthsocial.com/@justthenews/116972401572691045",
});

if (!result.ok) {
  console.error(result.error);
} else {
  console.log(result.value.data);
}
```

### Node.js

```javascript
const response = await fetch(
  "https://api.socialfetch.dev/v1/truthsocial/posts?url=https://truthsocial.com/@justthenews/116972401572691045",
  {
    headers: {
      "x-api-key": "YOUR_API_KEY"
    }
  }
);

const data = await response.json();
console.log(data);
```

### cURL

```bash
curl "https://api.socialfetch.dev/v1/truthsocial/posts?url=https://truthsocial.com/@justthenews/116972401572691045" \
  -H "x-api-key: YOUR_API_KEY"
```

### Python

```python
import requests

response = requests.get(
    "https://api.socialfetch.dev/v1/truthsocial/posts?url=https://truthsocial.com/@justthenews/116972401572691045",
    headers={"x-api-key": "YOUR_API_KEY"},
)
data = response.json()
print(data)
```