---
title: "Get user history offer details"
method: GET
path: "/v1/client/user/history/offers/{offerId}"
tags: ["Offers"]
---

# Get user history offer details

`GET /v1/client/user/history/offers/{offerId}`

Get User History Offer Details returns the details of a specific offer that the user has interacted with.

## Path parameters

- `offerId` string, required

## Response `200`

OK

- object
  - `data` UserHistoryOfferDetails
    - `offer_id` string, required
    - `anchor` string, required — Offer title to display to users.
    - `description` string, required — Description to display to the user.
    - `requirements` string, required — What the user should do to complete an offer.
    - `icon_url` string, required — Square image to display to the user.
    - `contact_url` string, required — Link to the contact page.
    - `things_to_know` string[], required
    - `started_at` string, date-time, required
    - `disclaimer` string, required
    - `events` UserHistoryOfferDetailsEvent[], required
      - `uuid` string, required — ID of the event
      - `name` string, required — Event name to display to the user
      - `approved_conversions` integer, required — How many approved (payable) conversions there are.
      - `approved_cpa` string, required — How much approved (payable) cpa there is.
      - `pending_conversions` integer, required — How many conversions are pending.
      - `pending_cpa` string, required — How much cpa is pending.
      - `status` 'viewed' | 'pending' | 'completed' | 'cancelled', required
      - `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.
      - `timestamp` string, date-time, required — ID of the event
      - `pending_reason` string, required — Explains, in text, why the event is in 'pending' status. Deprecated; will always be be empty string.
      - `display_type` 'none' | 'up_to' | 'commission', required — This determines how the potential points are displayed. "none": no special logic. User receives {promised_points}. "up_to": display "Up to {promised_points}". "commission": display "{promised_points} per ${promised_commission_amount}
      - `promised_points` string, required — The number of points the user will be rewarded upon completion. Will be 0 if the event is not payable.
      - `promised_commission_amount` string — For "commission", the points amount to use in the phrase above.
      - `time_played` TimePlayed — Time played event details (if applicable).
        - `id` integer, required
        - `goal_unit` string, required
        - `goal_unit_count` integer, required
      - `offer_expires_at` string, date-time — If there is a time limit for this event, this contains the unix timestamp when the event expires.
      - `minutes_left` number, float
      - `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
      - `promotional_points` string — Points if there is an ongoing promotion
    - `hours_left` integer — Number of hours left to complete the offer.
    - `is_game` boolean, required — Boolean. Indicates if the offer is a game.
    - `product_id` string, required — A unique string shared between offers which belong to same product, e.g. same mobile app.
    - `product_name` string, required — The offer's product name.
    - `categories` string[], required — An array of the category names that the offer belongs to
    - `confirmation_time` string, required — Text that described how long it takes to receive credit
    - `latest_date` string, date-time, required — Date of the latest click or conversions.
    - `continue_url` string, required — URL to redirect the user to
    - `points` string, required — Total points earned by the user for this offer. This does not include any points that are pending.
    - `completed_events` integer, required
    - `completed` boolean, required
    - `has_pending_conversions` boolean, required
    - `total_points` string, required — Total points the user may earn
    - `total_promotional_points` string — If a promotion is currently in progress, the amount of points they will earn. If not null, this should be used instead of total_points.
    - `total_approved_points` string, required — Total points the user has earned and have been approved.
    - `total_pending_points` string, required — Total points the user has earned and are pending approval.
    - `total_cancelled_points` string, required — Total points the user has earned and have been cancelled.
    - `total_events` integer, required — Total number of events that the user has completed for this offer.
    - `total_approved_events` integer, required — Total number of events that the user has completed and have been approved.
    - `total_pending_events` integer, required — Total number of events that the user has completed and are pending approval.
    - `total_cancelled_events` integer, required — Total number of events that the user has completed and have been cancelled.
    - `tx_id` string, required — The primary transaction ID, or click ID, associated with this offer.
    - `next_event` string — Id of the next event
    - `next_payable_event` string — Id of the next payable event

## Other responses

- `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)
