> ## Documentation Index
> Fetch the complete documentation index at: https://docs.creatoraudit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get a live Instagram feed page

> Fetch one source-sized page, not an exhaustive account history.



## OpenAPI

````yaml /api-reference/openapi.json get /live/instagram/posts
openapi: 3.1.0
info:
  title: CreatorAudit API v2
  summary: Public REST API for tracking creators, accounts, videos, and analytics.
  description: >
    The **CreatorAudit v2 API** tracks Instagram and TikTok creators, accounts,
    and

    their content, and serves the engagement analytics computed from them.


    ### Live data


    **Live Instagram** and **Live TikTok** (`/live/instagram/*`,
    `/live/tiktok/*`)

    retrieve a current public profile, individual post/video, or one feed page
    without

    starting tracking. Use your existing organization API key and subscription;

    Live uses the same subscription entitlement as the rest of v2. Registration,

    key management, and Stripe onboarding are unchanged. Live is on-demand
    retrieval,

    not streaming or a complete inventory. Responses include observation
    timestamps

    and known limitations. No response cache or separate usage billing is added.


    ### Authentication & scopes


    Send your organization API key as a bearer token on every request:


    ```

    Authorization: Bearer <YOUR_API_KEY>

    ```


    Keys are scoped to a single organization. Tracking responses are limited to
    data

    that organization owns; Live retrieves public source data without
    enrollment.

    Missing or invalid credentials return `401`; an inactive key or subscription

    returns `403`, including on Live. Existing trial and billing-exempt rules
    apply.


    Each key carries a set of **scopes** — `read`, `write`, and `admin` — and
    keys

    are issued with all three by default. Read endpoints (`GET`) require no
    special

    scope; mutating endpoints (`POST`/`PATCH`/`PUT`/`DELETE`) require the
    `write`

    scope (`admin` implies `write` implies `read`). A key lacking the required
    scope

    gets `403` with `code: INSUFFICIENT_SCOPE`.


    ### Response envelope


    Successful responses are wrapped in a consistent envelope:


    - **Single resource** — `{ "data": { ... } }`

    - **Collection** — `{ "data": [ ... ], "pagination": { ... }, "filters": {
    ... } }`

    - **Collection with metadata** — `{ "data": ..., "meta": { ... } }`


    Tracking `pagination` carries `next_cursor`, `has_next`, `limit`, and (when

    requested) `total_count`. `filters` echoes the filter/sort that produced the
    page.

    Live feeds use source-sized pages with `next_cursor` and `has_next` only.


    ### Pagination


    Tracking list endpoints use opaque **cursor** pagination. Pass `limit`
    (1–200) and the

    `pagination.next_cursor` from the previous page as `cursor` to fetch the
    next

    page. `pagination.has_next` is `false` on the final page. A cursor is bound
    to

    the exact filter and sort combination it was issued for — reusing it under a

    different filter/sort returns `422`. Pass `include_total=true` to also
    receive

    `pagination.total_count` (adds one COUNT query). List responses also carry
    an

    RFC 8288 `Link` header with `rel="first"` and (when more pages exist)

    `rel="next"`.


    ### Caching


    Live responses use `Cache-Control: no-store` with no `ETag` or `304`
    behavior.

    Other `GET` responses carry a strong `ETag` and `Cache-Control: private,
    no-cache`.

    Send the value back as `If-None-Match` on a follow-up request; if the

    representation is unchanged the API replies `304 Not Modified` with an empty

    body, saving the re-download.


    ### Rate limits


    Requests are rate limited per API key. Every **authenticated** response
    includes

    `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset` (a
    Unix

    timestamp); the unauthenticated `GET /health` and `GET /meta` are not
    limited

    and omit them. Exceeding the limit returns `429` with `code: RATE_LIMITED`
    and a

    `Retry-After` header (seconds to wait).


    ### Account quota


    An organization may set an optional cap on the number of accounts it tracks.
    By

    default there is **no cap** (unlimited). When a cap is set and reached,

    `POST /accounts` returns `403` with `code: QUOTA_EXCEEDED`.


    ### Content negotiation


    The API only produces JSON. A request whose `Accept` header cannot be
    satisfied

    with JSON returns `406` (`code: NOT_ACCEPTABLE`). A write request whose body
    is

    not `application/json` returns `415` (`code: UNSUPPORTED_MEDIA_TYPE`).


    ### Errors


    Errors follow **RFC 9457 Problem Details** (`application/problem+json`):


    ```json

    {
      "type": "urn:creatoraudit:error:not-found",
      "title": "Not Found",
      "status": 404,
      "detail": "Account not found.",
      "code": "NOT_FOUND",
      "instance": "/v2/accounts/{id}",
      "request_id": "8f1c…"
    }

    ```


    The `code` is the stable machine identifier; `type` is an RFC 9457 URN.

    Validation failures (`422`) additionally carry an `errors` array of

    `{ field, message }` entries. The full set of machine `code`s:


    | HTTP | `code` | Meaning |

    | ---- | ------ | ------- |

    | 400 | `BAD_REQUEST` | Malformed request. |

    | 401 | `UNAUTHORIZED` | Missing or invalid API key. |

    | 403 | `FORBIDDEN` | Inactive key/subscription. |

    | 403 | `INSUFFICIENT_SCOPE` | Key lacks the required scope. |

    | 403 | `QUOTA_EXCEEDED` | Account quota reached. |

    | 404 | `NOT_FOUND` | Resource not found in your org. |

    | 406 | `NOT_ACCEPTABLE` | `Accept` not satisfiable as JSON. |

    | 409 | `CONFLICT` | State conflict (e.g. duplicate). |

    | 415 | `UNSUPPORTED_MEDIA_TYPE` | Write body is not JSON. |

    | 422 | `VALIDATION_ERROR` | Request failed validation. |

    | 429 | `RATE_LIMITED` | Rate limit exceeded. |

    | 500 | `INTERNAL_ERROR` | Unexpected server error. |

    | 502 | `UPSTREAM_ERROR` | Upstream provider error. |

    | 503 | `SERVICE_UNAVAILABLE` | Temporarily unavailable; retry. |


    ### Idempotency


    `POST` create endpoints accept an optional `Idempotency-Key` header so a
    retried

    request returns the original result instead of creating a duplicate. On
    success

    a `201` carries a `Location` header pointing at the new resource.


    ### Response headers


    Every response echoes `X-Request-ID` (also surfaced as `request_id` in error

    bodies) so a call can be correlated with its server-side event. Collections
    add

    `Link`; `GET`s add `ETag`/`Cache-Control`; authenticated responses add

    `X-RateLimit-*`; `429`/`503` add `Retry-After`; `201` creates add
    `Location`.
  contact:
    name: CreatorAudit Support
    url: https://creatoraudit.com/
    email: support@creatoraudit.com
  license:
    name: Proprietary — © CreatorAudit
  version: 2.0.0
  x-api-stability: current
servers:
  - url: https://api.creatoraudit.com/v2
    description: Production
security: []
tags:
  - name: Live Instagram
    description: >-
      On-demand public Instagram profiles, posts/reels, and feed pages. Requires
      an active API key and the existing subscription entitlement. Does not
      start tracking or persist content.
  - name: Live TikTok
    description: >-
      On-demand public TikTok profiles, videos, and feed pages. Requires an
      active API key and the existing subscription entitlement. Does not start
      tracking or persist content.
  - name: Accounts
    description: >-
      Track and manage Instagram/TikTok accounts. Listing, retrieval, creation
      (which begins automated tracking), updates, and removal.
  - name: Videos
    description: >-
      Individually tracked posts/videos, account-discovered videos, and batch
      engagement deltas.
  - name: Creators
    description: >-
      Creators group one or more accounts under a single entity for roll-up
      analytics. Includes account linking and the top-creators leaderboard.
  - name: Analytics
    description: >-
      Daily engagement series for the org, accounts, creators, and individual
      videos, plus per-metric daily breakdowns for accounts, creators, and
      videos.
  - name: Overview
    description: Org-wide headline stats with period-over-period changes.
  - name: Search
    description: Cross-entity search over accounts, creators, and videos.
  - name: System
    description: Unauthenticated liveness and service-health checks.
paths:
  /live/instagram/posts:
    get:
      tags:
        - Live Instagram
      summary: Get a live Instagram feed page
      description: Fetch one source-sized page, not an exhaustive account history.
      operationId: get_live_instagram_posts
      parameters:
        - name: handle
          in: query
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 32
            description: Public account handle, optionally prefixed with @.
            title: Handle
          description: Public account handle, optionally prefixed with @.
        - name: cursor
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                maxLength: 4096
              - type: 'null'
            description: Opaque next_cursor from the same platform and handle.
            title: Cursor
          description: Opaque next_cursor from the same platform and handle.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LiveFeedResponse'
          headers:
            X-Request-ID:
              schema:
                type: string
              description: Correlation id echoed (or minted) for this request.
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Request quota for the current rate-limit window.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests left in the current window.
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix timestamp when the window resets.
            Link:
              schema:
                type: string
              description: RFC 8288 pagination links (rel="first"/"next").
        '401':
          description: Unauthorized
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          headers:
            X-Request-ID:
              schema:
                type: string
              description: Correlation id echoed (or minted) for this request.
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Request quota for the current rate-limit window.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests left in the current window.
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix timestamp when the window resets.
        '403':
          description: Forbidden
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          headers:
            X-Request-ID:
              schema:
                type: string
              description: Correlation id echoed (or minted) for this request.
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Request quota for the current rate-limit window.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests left in the current window.
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix timestamp when the window resets.
        '404':
          description: Not Found
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          headers:
            X-Request-ID:
              schema:
                type: string
              description: Correlation id echoed (or minted) for this request.
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Request quota for the current rate-limit window.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests left in the current window.
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix timestamp when the window resets.
        '409':
          description: Conflict
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          headers:
            X-Request-ID:
              schema:
                type: string
              description: Correlation id echoed (or minted) for this request.
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Request quota for the current rate-limit window.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests left in the current window.
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix timestamp when the window resets.
        '422':
          description: Validation Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          headers:
            X-Request-ID:
              schema:
                type: string
              description: Correlation id echoed (or minted) for this request.
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Request quota for the current rate-limit window.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests left in the current window.
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix timestamp when the window resets.
        '429':
          description: Too Many Requests
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          headers:
            X-Request-ID:
              schema:
                type: string
              description: Correlation id echoed (or minted) for this request.
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Request quota for the current rate-limit window.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests left in the current window.
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix timestamp when the window resets.
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait before retrying.
        '500':
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          headers:
            X-Request-ID:
              schema:
                type: string
              description: Correlation id echoed (or minted) for this request.
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Request quota for the current rate-limit window.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests left in the current window.
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix timestamp when the window resets.
        '502':
          description: Public data service returned an unusable response.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          headers:
            X-Request-ID:
              schema:
                type: string
              description: Correlation id echoed (or minted) for this request.
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Request quota for the current rate-limit window.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests left in the current window.
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix timestamp when the window resets.
        '503':
          description: Service Unavailable
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          headers:
            X-Request-ID:
              schema:
                type: string
              description: Correlation id echoed (or minted) for this request.
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Request quota for the current rate-limit window.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests left in the current window.
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix timestamp when the window resets.
            Retry-After:
              schema:
                type: integer
              description: Seconds to wait before retrying.
        '504':
          description: Public data service timed out.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ProblemDetail'
          headers:
            X-Request-ID:
              schema:
                type: string
              description: Correlation id echoed (or minted) for this request.
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Request quota for the current rate-limit window.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests left in the current window.
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix timestamp when the window resets.
      security:
        - HTTPBearer: []
components:
  schemas:
    LiveFeedResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/LivePost'
          type: array
          title: Data
          description: >-
            One actual source-sized page of Live posts; may be empty. Not a
            complete history or a caller-sized slice.
          examples:
            - []
        pagination:
          $ref: '#/components/schemas/LivePagination'
          description: Continuation for this source page; no synthetic limit or total.
          examples:
            - has_next: false
        meta:
          $ref: '#/components/schemas/LiveMeta'
          description: Observation metadata and feed completeness caveats.
          examples:
            - cached: false
              fetched_at: '2024-01-01T00:00:00Z'
              warnings: []
      type: object
      required:
        - data
        - pagination
      title: LiveFeedResponse
    ProblemDetail:
      additionalProperties: true
      properties:
        type:
          title: Type
          type: string
        title:
          title: Title
          type: string
        status:
          title: Status
          type: integer
        detail:
          title: Detail
          type: string
        code:
          title: Code
          type: string
          enum:
            - BAD_REQUEST
            - CONFLICT
            - FORBIDDEN
            - INSUFFICIENT_SCOPE
            - INTERNAL_ERROR
            - NOT_ACCEPTABLE
            - NOT_FOUND
            - QUOTA_EXCEEDED
            - RATE_LIMITED
            - SERVICE_UNAVAILABLE
            - UNAUTHORIZED
            - UNSUPPORTED_MEDIA_TYPE
            - UPSTREAM_ERROR
            - UPSTREAM_TIMEOUT
            - VALIDATION_ERROR
        instance:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          title: Instance
        errors:
          anyOf:
            - items:
                additionalProperties: true
                type: object
              type: array
            - type: 'null'
          default: null
          title: Errors
      required:
        - type
        - title
        - status
        - detail
        - code
      title: ProblemDetail
      type: object
    LivePost:
      properties:
        type:
          type: string
          const: live_post
          title: Type
          description: Ephemeral post resource; not a tracked post or video.
          default: live_post
          examples:
            - live_post
        platform:
          type: string
          enum:
            - instagram
            - tiktok
          title: Platform
          description: Source platform.
          examples:
            - instagram
        external_id:
          type: string
          title: External Id
          description: >-
            Native platform post ID as a string, not a tracking UUID or
            shortcode.
          examples:
            - '456'
        url:
          type: string
          title: Url
          description: Canonical external post URL, not a media URL.
          examples:
            - https://www.instagram.com/p/AbC/
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: Post caption or description; null if unavailable.
          examples:
            - Race day
        create_time:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Create Time
          description: >-
            Platform publication time with timezone, not the observation time;
            null if unavailable.
          examples:
            - '2024-01-01T00:00:00Z'
        account_username:
          anyOf:
            - type: string
            - type: 'null'
          title: Account Username
          description: Author's platform handle without @; null if unavailable.
          examples:
            - alice
        media_type:
          anyOf:
            - type: string
              enum:
                - IMAGE
                - VIDEO
                - CAROUSEL
            - type: 'null'
          title: Media Type
          description: Platform media category; null if unavailable or unrecognized.
          examples:
            - VIDEO
        like_count:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          title: Like Count
          description: >-
            Native platform like counter; null means unknown or hidden, zero
            means observed zero.
          examples:
            - 0
        comment_count:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          title: Comment Count
          description: >-
            Native platform comment counter; null means unknown or hidden, zero
            means observed zero.
          examples:
            - 5
        view_count:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          title: View Count
          description: >-
            Native platform view counter; null means unknown or hidden, zero
            means observed zero. Not deduplicated by CreatorAudit.
          examples:
            - 23
        play_count:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          title: Play Count
          description: >-
            Native platform play counter when separately available; null means
            unknown or hidden, zero means observed zero.
          examples:
            - 24
        share_count:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          title: Share Count
          description: >-
            Native platform share counter; null means unknown or hidden, zero
            means observed zero.
          examples:
            - 3
        saved_count:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          title: Saved Count
          description: >-
            Native platform save or collect counter; null means unknown or
            hidden, zero means observed zero.
          examples:
            - 2
        media_url_original:
          anyOf:
            - type: string
            - type: 'null'
          title: Media Url Original
          description: >-
            Original platform media URL for an image or video, not a
            CreatorAudit CDN URL; may expire. Null if unavailable or unsafe.
          examples:
            - https://images.example.com/video.mp4
        cover_image_url_original:
          anyOf:
            - type: string
            - type: 'null'
          title: Cover Image Url Original
          description: >-
            Original platform cover or thumbnail URL, not a CreatorAudit CDN
            URL; may expire. Null if unavailable or unsafe.
          examples:
            - https://images.example.com/cover.jpg
      type: object
      required:
        - platform
        - external_id
        - url
      title: LivePost
    LivePagination:
      properties:
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: >-
            Opaque continuation bound to this platform and handle; null when no
            next page is reported.
          examples:
            - null
        has_next:
          type: boolean
          title: Has Next
          description: >-
            Whether the platform reports another source-sized page. This does
            not guarantee a complete history.
          default: false
          examples:
            - false
      type: object
      title: LivePagination
    LiveMeta:
      properties:
        fetched_at:
          type: string
          format: date-time
          title: Fetched At
          description: >-
            UTC observation timestamp for this response, not publication time or
            a guarantee that native counters updated at that instant.
          examples:
            - '2024-01-01T00:00:00Z'
        cached:
          type: boolean
          const: false
          title: Cached
          description: >-
            Always false: Live responses are fetched directly without a response
            cache.
          default: false
          examples:
            - false
        warnings:
          items:
            type: string
          type: array
          title: Warnings
          description: Availability or completeness caveats; empty when none apply.
          examples:
            - - This is one upstream page, not a complete account history.
      type: object
      title: LiveMeta
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.