---
title: "Facebook Post & Reel Details API"
method: GET
path: "/v1/facebook/details"
tags: ["Facebook"]
---

# Facebook Post & Reel Details API

`GET /v1/facebook/details`

## Request

- Base URL: `https://api.captapi.com`
- URL: `https://api.captapi.com/v1/facebook/details`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Facebook post or Reel — caption, engagement, author id, video{} playback, and music when Facebook exposes them.

Paste a Facebook post or Reel URL and get clean JSON: caption (no description twin), publishedAt, fetchedAt, engagement (likes / comments / views / shares always keyed — null when unknown or not a video; never invent shares:0), author (including stable author.id when present), and video{} as the only playback block (id / url / sdUrl / hdUrl / width / height / captionsUrl). durationSeconds and thumbnailUrl stay on the post for cards. No flat videoUrl / videoSdUrl twins. feedbackId is base64("feedback:" + id) — the token /facebook/comments accepts; fully derivable from id. music when Facebook exposes it. Each keyed likes/comments/shares/views count carries *IsApproximate (false when the count is null). facebook.com/share/&lt;id&gt; links (the mobile Share button — /share/, /share/p/, /share/r/, /share/v/) are resolved automatically: a cheap redirect first, then a full page render that reads Facebook's own og:url/canonical; the share→canonical mapping is cached 30 days so a repeat paste is instant. 400 UNRESOLVED_SHARE_LINK only when Facebook refuses to reveal the canonical URL — never 14–23s of NOT_FOUND for a shape we did not parse. A page URL is 400 WRONG_RESOURCE_TYPE. A fetch or parse miss is 503 FACEBOOK_UNAVAILABLE (retryable) — we do not 404 a URL unless Facebook itself answered 404. Note: for some Reels, the view count on the individual post page can be null or lower than the public Reels grid badge — use Facebook Profile Reels and match by post id if you need that badge count. Flat 2 credits per call.

Docs: https://captapi.com/apis/facebook-details

## Query parameters

- `url` string, required
- `cache` boolean

## Response `200`

Success. The data object for this endpoint.

- object
  - `success` unknown, required
  - `data` object, required
    - `platform` string: Platform identifier for this response (matches the endpoint's platform).
    - `url` string: Canonical URL of the item.
    - `id` string: Stable platform ID for the item.
    - `caption` string: Post text. There is no description twin (the old example copied caption into description).
    - `publishedAt` string: Publish date (ISO 8601) when the platform exposes an absolute timestamp.
    - `durationSeconds` number: Length in seconds for this item (full media length, or a segment span when the endpoint documents a start/end).
    - `thumbnailUrl` string: Thumbnail image URL.
    - `author` object
      - `id` string: Stable Facebook author/page id when the post exposes it. Omitted when Facebook did not send one.
      - `username` string: Account username / handle.
      - `displayName` string: Display name of the account. Canonical across profile endpoints (prefer over name).
      - `url` string: Canonical URL of the item.
      - `profileImage` string: Profile image URL. Deprecated alias of avatar on Instagram/Twitter/Threads/TikTok profile endpoints (one release).
      - `verified` boolean: Whether the account is verified on this platform.
    - `engagement` object
      - `likes` integer: Like count (number).
      - `comments` integer: Comment count.
      - `views` integer, nullable: Always keyed. View count on a video/Reel; null on a photo or when unknown — never treat a missing key as 0.
      - `shares` integer, nullable: Always keyed. Share count when Facebook exposes it; null on a photo or when unknown. Never invented 0.
      - `likesIsApproximate` boolean: Always keyed. true when likes came from a compact token (40K / 1.2M). false when exact or likes is null.
      - `commentsIsApproximate` boolean: Always keyed. true when comments came from a compact token. false when exact or comments is null.
      - `sharesIsApproximate` boolean: Always keyed. true when shares came from a compact token. false when exact or shares is null.
      - `viewsIsApproximate` boolean, nullable: Always keyed. true when views came from a compact og label (e.g. 610K views). false when views is null or an exact integer.
    - `isVideo` boolean: Whether the item is a video.
    - `link` string: Link URL.
    - `feedbackId` string: base64("feedback:" + id) when Facebook exposes it — the same token /facebook/comments accepts. Fully derivable from id; not extra information.
    - `video` object
      - `id` string: Facebook video/Reel id (the /reel/{id} path when this is a Reel). Distinct from the post id.
      - `url` string: Best available progressive play URL (HD preferred, then SD).
      - `sdUrl` string: SD progressive play URL when Facebook exposes one.
      - `hdUrl` string: HD progressive play URL when Facebook exposes one.
      - `width` integer: Frame width in pixels.
      - `height` integer: Frame height in pixels.
      - `captionsUrl` string: WebVTT captions URL when Facebook exposes one.
    - `mediaUrlsExpireAt` string: ISO-8601 UTC earliest expiry across signed media URLs in this response (expire= / x-expires / TikTok hex path timestamp). Null when no stamp is parseable — never a guess.

## Other responses

- `400`: Bad request: wrong platform URL, unknown endpoint, or an invalid parameter value. Not billed.
- `401`: Missing, invalid or revoked API key. Not billed.
- `402`: Not enough credits for this request. Not billed.
- `404`: The resource does not exist or is not public. Not billed.
- `422`: A required parameter is missing or has the wrong type. Not billed.
- `429`: Rate limit reached. Wait for Retry-After seconds. Not billed.
- `502`: The platform could not be reached or returned nothing usable. Retryable, not billed. 503 and 504 use the same envelope.

## Changes

- **2026-10-19** `c9b9ac5ff1bd`: 3 breaking, 2 warning, 7 info
  - the response property `data/engagement/shares` became nullable for the status `200`
  - the response property `data/engagement/views` became nullable for the status `200`
  - the response property `data/engagement/viewsIsApproximate` became nullable for the status `200`
  - removed the optional property `data/description` from the response with the `200` status
  - …8 more

[Operation history](https://skmtc.dev/captapi/apis/captapi-api/changes/v1/facebook/details/get.md)

---

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