---
title: "Get offer history"
method: GET
path: "/v2/client/offers/history"
tags: ["Offers"]
---

# Get offer history

`GET /v2/client/offers/history`

Returns the current user's offer history (`OfferHistoryV2`).

## Query parameters

- `continue_playing` boolean, nullable
- `offer_ids` string
- `lang` string

## Response `200`

OK

- object
  - `data` OfferHistoryV2
    - `offers` OfferHistoryItemV2[], required
      - `id` integer, required — Offer identifier, aligned with BitLabs offer API naming.
      - `anchor` string, required — Offer title to display to users.
      - `description` string, required — Description to display to users.
      - `requirements` string, required — What the user should do to complete the offer.
      - `confirmation_time` string, required — Text describing how long it takes to receive credit.
      - `categories` string[], required
      - `icon_url` string, required — Square icon URL.
      - `latest_date` string, date-time, required — Date of the latest click or conversion.
      - `points` string, required — Points already earned by the user for this offer.
      - `completed_events` integer, required — Total number of events completed by the user for this offer.
      - `completed` boolean, required — Whether all events have been completed.
      - `total_points` string, required — Total points the user may earn.
      - `total_points_promotional` string — Promotional total points if a promotion is active.
      - `total_approved_points` string, required — Total approved points.
      - `total_pending_points` string, required — Total pending points.
      - `total_cancelled_points` string, required — Total cancelled points.
      - `total_events` integer, required — Total number of visible events.
      - `total_approved_events` integer, required — Total number of approved events.
      - `total_pending_events` integer, required — Total number of pending events.
      - `total_cancelled_events` integer, required — Total number of cancelled events.
      - `has_pending_conversions` boolean, required — Whether the user has pending conversions for this offer.
      - `support_url` string, required — Support URL for the offer, aligned with other BitLabs offer endpoints.
      - `next_event` string — ID of the next event that can be completed.
      - `next_payable_event` string — ID of the next payable event that can be completed.
      - `events` OfferV2Event[], required
        - `uuid` string, required — ID of the event
        - `hash` string — Unique offer event hash.
        - `name` string, required — Event name to display to the user
        - `type` 'flat' | 'dynamic', required — Flat events have static point values. Dynamic events will have varying payouts.
        - `payable` boolean, required — Whether the event pays anything to the user
        - `display_type` 'none' | 'up_to' | 'commission', required — This determines how the potential points are displayed. "none": no special logic. User receives {points}. "up_to": display "Up to {points}". "commission": display "{points} per ${commission_amount}
        - `points` string, required — Will be 0 if the event is not payable.
        - `promotional_points` string — Points if there is an ongoing promotion. If not null, this should be used instead of points.
        - `commission_amount` string — For "commission", the points amount to use in the phrase above.
        - `payout` string — The dollar amount.
        - `status` 'viewed' | 'pending' | 'completed' | 'canceled', required
        - `type_id` integer, required — ID used to identify the event type. See all available Event IDs here: https://developer.bitlabs.ai/docs/offer-api#event-type-ids
        - `ttc_minutes` integer, required — Time to complete in minutes (if applicable).
        - `expires_at` integer, required — Expiration timestamp (if applicable).
        - `time_played` TimePlayed — Time played event details (if applicable).
          - `id` integer, required
          - `goal_unit` string, required
          - `goal_unit_count` integer, required
        - `multiple_conversions_allowed` boolean, required — Whether multiple conversions are allowed for this event.
        - `multiple_conversions_rules` MultipleConversionsRules — Rules for multiple conversions (if applicable).
          - `rule_type` 'unlimited' | 'interval' — "unlimited": The offer event can be completed an indefinite amount of times without time limit. "interval": The offer event can be completed a certain amount of times in a given amount of time.
          - `x_conversions` integer — Number of conversions allowed when rule_type is "interval".
          - `every_y_seconds` integer — Time interval in seconds when rule_type is "interval".
        - `timestamp` integer — Event timestamp (if applicable).
      - `state` 'opened' | 'completed' | 'pending' | 'reconciled', required
      - `app_metadata` OfferV2AppMetadata, required
        - `app_id` string — The app ID
        - `categories` string[], required — The categories the app belongs to
        - `screenshot_urls` string[], required — URLs to screenshots of the app
        - `video_urls` string[], required — URLs to videos of the app
      - `disclaimer` string, required — Disclaimer that should be shown to the user before they continue the offer.
      - `continue_url` string, required — URL to redirect the user back to the offer.
      - `is_game` boolean, required — Whether the offer is a game.
      - `hours_left` integer, nullable — Number of hours left to complete the offer.

## Other responses

- `400` — Invalid query parameters
- `406` — VPN detected

---

[API](https://skmtc.net/bitlabs/apis/bitlabs-client-api.md) · [All operations](https://skmtc.net/bitlabs/apis/bitlabs-client-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/bitlabs/bitlabs-client-api/revisions/99209a6285bf/schema)
