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

# Activities

> Browse and search the Seyaha activity catalog as a reseller.

The activity endpoints return the full catalog with pricing converted to your requested
currency. Slots are intentionally omitted from list/detail responses — load them via
the [availability endpoints](/pages/reseller/availability) on demand.

## List activities

```
GET /api/v1/resellers/activities
```

<Note>
  This endpoint is rate-limited. Cache responses locally and only re-fetch when the
  user initiates a new search.
</Note>

### Parameters

| Parameter  | Type    | Default | Description                              |
| ---------- | ------- | ------- | ---------------------------------------- |
| `currency` | string  | SAR     | ISO currency code for displayed prices   |
| `language` | string  | —       | Preferred language for translated fields |
| `page`     | integer | 1       | Page number                              |
| `limit`    | integer | 10      | Page size                                |

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://api.seyaha.net/api/v1/resellers/activities?currency=USD&page=1&limit=20" \
    -H "x-api-token: $RESELLER_TOKEN"
  ```

  ```javascript Node.js theme={null}
  const params = new URLSearchParams({ currency: 'USD', page: '1', limit: '20' });
  const res = await fetch(
    `https://api.seyaha.net/api/v1/resellers/activities?${params}`,
    { headers: { 'x-api-token': process.env.RESELLER_TOKEN } }
  );
  const { data, pagination } = await res.json();
  ```
</CodeGroup>

### Response

```json theme={null}
{
  "success": 1,
  "data": [
    {
      "_id": "6744810075becd2ef8c140f7",
      "activity_title": "Desert Safari Adventure",
      "currency": "USD",
      "serviceFee": 12.50,
      "variations": [
        {
          "_id": "6751ad2d7533f379c9a1711b",
          "title": "Standard Package",
          "pricing": {
            "units": [
              { "type": "ADULT", "label": "Adult", "price": 120 },
              { "type": "CHILD", "label": "Child", "price": 75 }
            ],
            "discount_percentage": 0
          }
        }
      ]
    }
  ],
  "pagination": { "page": 1, "pageSize": 20, "totalCount": 87 }
}
```

Variation `pricing.units[].price` values are already converted to the requested currency
with FX, service fee, and commission applied.

***

## Get activity by ID

```
GET /api/v1/resellers/activities/{id}
```

Returns the activity in a one-element `data` array.

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://api.seyaha.net/api/v1/resellers/activities/6744810075becd2ef8c140f7?currency=USD" \
    -H "x-api-token: $RESELLER_TOKEN"
  ```

  ```javascript Node.js theme={null}
  const res = await fetch(
    `https://api.seyaha.net/api/v1/resellers/activities/${activityId}?currency=USD`,
    { headers: { 'x-api-token': process.env.RESELLER_TOKEN } }
  );
  const { data } = await res.json();
  const activity = data[0];
  ```
</CodeGroup>

***

## Currency and pricing

Prices in variation responses are fully loaded — FX conversion, service fee, and reseller
commission are all baked in. You display these prices directly to your customers.

The `currency` field on the activity object tells you which currency the prices are in.
If you request `currency=USD`, all `pricing.units[].price` values are in USD.

Group-priced variations use `pricing.group_price` instead of `pricing.units`. Check
for `group_price !== null` before rendering per-person prices.
