# Home

# Easyteam Retail API

Easyteam is the leading workforce management solution for **Shopify and retail businesses**, streamlining staff management, scheduling, payroll, and performance tracking. Our robust API provides developers and agencies with the tools to automate and enhance retail operations for Shopify merchants.

> **This API is available for Shopify Plus and Enterprise merchants, as well as Shopify agencies specializing in Shopify POS implementations. For further details, [contact us here](https://www.easyteam.com/contact-sales?utm_source=docs_easyteam_io&utm_medium=link&utm_campaign=agencies_plus_enterprises) or contact our partnerships team at [partnerships@easyteam.com](mailto:partnerships@easyteam.com).**

### Getting access to the API

API access is granted when your organization is onboarded for integrations. **Ask your Easyteam account manager** to enable the Retail API for your account and to provide your **API key**. You can **[schedule a 30-minute call with our team](https://calendly.com/easyteam/30min?utm_source=docs_easyteam_io&utm_medium=link&utm_campaign=get_api_key)** to discuss access, use cases, and getting started.

If your use case requires **additional routes or data** beyond what is listed in these docs, **further access can be provided on a per-need basis**—speak with your **Easyteam account manager** so they can scope what you need and enable it appropriately.


---

## Base URL

The API is always reached at **`https://www.easyteam.io`**. Append the documented path for each resource to that host—for example, `https://www.easyteam.io/api/rest/staff/shop/{shopId}`—and use **HTTPS** only. Replace `{shopId}` with the shop identifier you are querying, as described above.

---

## Authorization

Requests are authorized with an **API key**. Your **Easyteam account manager** provides a key with the proper permissions.

Include the key on **every request** using the **`Authorization`** header with the **Bearer** scheme:

```http
GET /api/rest/staff/shop/12345 HTTP/1.1
Host: www.easyteam.io
Authorization: Bearer <YOUR_API_KEY>
Accept: application/json
```

From time to time, **your Easyteam account manager may ask you to rotate API keys** in line with common security practice and **industry standards** for credential lifecycle management. When they do, update your integration to the new key and retire the old one as they instruct. Use **HTTPS** for all traffic, and handle the key with the same care as other production secrets unless your manager specifies otherwise.

---

## Request conventions

- Use the **HTTP method**, path, and body (if any) defined for each operation.
- **Filters** (dates, locations, staff, pagination) are passed as **query parameters** where the endpoint reference describes them.
- Identifiers such as shop and personnel may be represented differently depending on the resource; rely on the parameter documentation for each route.


---

## What you can retrieve

The API exposes data about your shop; you can narrow results by **location**, **personnel**, or **dates**. Many paths include a **`{shopId}`** segment (for example in `/shop/{shopId}/...`). That parameter must always be the **identifier of the shop you want to query**—i.e. the store whose schedules, staff, timesheets, or other records you are requesting.

### Schedules

Query **Published shifts**—the same data your team uses in the **Schedules** screen in Easyteam. The API exposes the currently published schedule for your team, with optional filters (such as person, location, or date range).

### Timesheets

The same information that powers the **Timesheets** screen. **Shop-level** calls return a **summary** (rolled-up hours and splits for the team over a period). **Per-employee** calls return the **detail** behind that summary—shifts, time off, and the line-level context you need for audits or payroll handoff.

### Staff

Use these endpoints to query member records as in the **Staff** screen. **List** endpoints return the team (paginated, with optional location filters); **single-member** endpoints return one person’s full profile.

### Commissions

Matches the **Sales & Commissions** screen. **Shop-level** calls are the **summary** view (period performance for the store and the people in scope). **Per-person** calls are the **detail** (how commissions break out by plan and attributed sales for one staff member).

### Sales goals

**Targets versus actuals** (and labour expectations where applicable) for a location—the same concepts you configure and review with the **Sales Goal** tools in the **Schedules** screen. Results are returned in **weekly** slices, one location at a time for a chosen date range.

---

## Errors and rate limits

The API returns standard **HTTP status codes** for client and server conditions—for example, invalid input, unauthorized access, or missing resources. **Error responses and meanings** are described alongside each endpoint in the documentation.

**Rate limiting:** To protect the service, requests are subject to rate limits. When a limit is exceeded, the API responds with **`429 Too Many Requests`**, the standard HTTP status code for this case. Treat that response as a signal to slow down or retry later with a reasonable backoff; do not assume unlimited throughput.

---

## Support

Questions or incidents: [Help Center](https://help.easyteam.io) or **support@easyteam.com**.

