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

# Retrieve a reward

> Retrieves a single reward from your reward catalogue by its UUID.

Unlike [List rewards](/developer/api/list-rewards), this endpoint also returns inactive rewards and Shopify POS rewards.

<Info>Requires the `read:rewards` scope. See [Scopes](/developer/api/scopes).</Info>

## Path parameters

<ParamField path="id" type="string<uuid>" required>
  The UUID of the reward, as returned in the `id` field of [List rewards](/developer/api/list-rewards).
</ParamField>

## Response

<ResponseField name="data" type="object">
  <Expandable title="reward properties">
    <ResponseField name="id" type="string<uuid>">
      Unique identifier for the reward.
    </ResponseField>

    <ResponseField name="name" type="string">
      The display name of the reward.
    </ResponseField>

    <ResponseField name="description" type="string | null">
      A description of the reward shown to customers.
    </ResponseField>

    <ResponseField name="reward_type" type="enum<string>">
      The type of reward issued to the customer. One of `fixed`, `percentage`, `free_shipping`, `free_product`, `store_credit`, `pos_fixed`, `pos_percentage`.
    </ResponseField>

    <ResponseField name="points_cost" type="integer">
      The number of points required to redeem this reward.
    </ResponseField>

    <ResponseField name="reward_rule" type="object">
      The rule configuration for this reward. Structure varies by `reward_type`.
    </ResponseField>

    <ResponseField name="icon" type="object | null">
      The reward's storefront icon, or `null` if none is set.

      <Expandable title="icon properties">
        <ResponseField name="source" type="enum<string>">
          `default` for a built-in icon, `custom` for an uploaded image.
        </ResponseField>

        <ResponseField name="slug" type="string | null">
          The built-in icon's slug. `null` for custom icons.
        </ResponseField>

        <ResponseField name="id" type="string | null">
          The uploaded image's ID. `null` for built-in icons.
        </ResponseField>

        <ResponseField name="url" type="string | null">
          A URL to render the icon (an SVG for built-in icons, the uploaded image for custom icons).
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="is_active" type="boolean">
      Whether this reward is currently active and available for redemption.
    </ResponseField>

    <ResponseField name="created_at" type="string<date-time>">
      When the reward was created.
    </ResponseField>

    <ResponseField name="updated_at" type="string<date-time>">
      When the reward was last updated.
    </ResponseField>
  </Expandable>
</ResponseField>

## Errors

| Status | Code | When |
| :- | :- | :- |
| `401` | `missing_token`, `invalid_token` | The API key is missing, wrong or revoked. |
| `403` | `insufficient_scope` | The key doesn't have `read:rewards`. |
| `404` | `not_found` | No reward matches `id` (`Reward not found`). |
| `429` | | The key exceeded the [rate limit](/developer/api/rate-limits). |

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url "https://api.yukoapp.com/api/v1/public/rewards/90424fa7-e8a9-4ef4-b43a-72c9b2028db5" \
    --header "Authorization: Bearer py_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  ```

  ```javascript JavaScript theme={null}
  const rewardId = "90424fa7-e8a9-4ef4-b43a-72c9b2028db5";

  const response = await fetch(
    `https://api.yukoapp.com/api/v1/public/rewards/${rewardId}`,
    {
      method: "GET",
      headers: {
        Authorization: "Bearer py_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
      },
    }
  );

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

  ```php PHP theme={null}
  $rewardId = "90424fa7-e8a9-4ef4-b43a-72c9b2028db5";

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, "https://api.yukoapp.com/api/v1/public/rewards/{$rewardId}");
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, [
      "Authorization: Bearer py_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  ]);

  $response = curl_exec($ch);
  curl_close($ch);

  $data = json_decode($response, true);
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": {
      "id": "90424fa7-e8a9-4ef4-b43a-72c9b2028db5",
      "name": "$5 off your next order",
      "description": "Redeem 500 points for a $5 discount.",
      "reward_type": "fixed",
      "points_cost": 500,
      "reward_rule": {
        "points_required": 500,
        "value": 5
      },
      "icon": {
        "source": "default",
        "slug": "gift",
        "id": null,
        "url": "https://cdn.example.com/yuko-icons/svg/gift.svg"
      },
      "is_active": true,
      "created_at": "2025-12-01T09:00:00+00:00",
      "updated_at": "2025-12-01T09:00:00+00:00"
    }
  }
  ```

  ```json 403 theme={null}
  {
    "error": {
      "code": "insufficient_scope",
      "message": "Your API token does not have the required 'rewards' scope for this action"
    }
  }
  ```

  ```json 404 theme={null}
  {
    "error": {
      "code": "not_found",
      "message": "Reward not found"
    }
  }
  ```
</ResponseExample>


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