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

# Overview

> The current API, its endpoints, and how updates work.

The StoreRocket REST API lets you list your projects and create, read, update, and delete their locations.
Location operations require a project with API access, available on the Business plan.

## Base URL

```text theme={null}
https://storerocket.io/api/v2
```

Use an [API token](/api/authentication) in the `Authorization` header. Send JSON request bodies with `Content-Type: application/json`. `Accept: application/json` is recommended; V2 errors return JSON even when it is omitted.

```bash theme={null}
curl 'https://storerocket.io/api/v2/projects' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Accept: application/json'
```

Project and location IDs are the public IDs returned by the API. Keep them as strings.

## Endpoints

| Method | Path | Purpose |
| - | - | - |
| GET | `/user` | [Read your user profile](/api/user) |
| GET | `/projects` | [List your projects](/api/projects) |
| GET | `/projects/{project_id}/locations` | [List locations](/api/locations/list) |
| GET | `/projects/{project_id}/locations/{location_id}` | [Read a location](/api/locations/get) |
| POST | `/projects/{project_id}/locations` | [Create a location](/api/locations/create) |
| PATCH | `/projects/{project_id}/locations/{location_id}` | [Update selected fields](/api/locations/update) |
| PUT | `/projects/{project_id}/locations/{location_id}` | [Use the existing update contract](/api/locations/put) |
| DELETE | `/projects/{project_id}/locations/{location_id}` | [Delete a location](/api/locations/delete) |

## Use PATCH for partial updates

```bash theme={null}
curl -X PATCH 'https://storerocket.io/api/v2/projects/PROJECT_ID/locations/LOCATION_ID' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -d '{"phone":"555-0101"}'
```

Fields you omit keep their saved values. A successful update returns `200` and the location. Invalid input returns `422` with field errors and saves no part of the update.

`POST` and `PUT` retain their existing requirements, including `name` and `city`. `PUT` can replace supplied custom-field and call-to-action attachments and reset omitted marker/type selections to project defaults. Use [PATCH](/api/locations/update) when you want to preserve everything you leave out.

## Locations without opening hours

Omit `hours`, or send `"hours": {}`, when creating a coming-soon location. Empty hours are accepted on POST, PUT, and PATCH; they leave any existing schedule unchanged.
Use `"hours": null` with PATCH to remove an existing schedule. See [opening hours](/api/locations/update#opening-hours) for weekday updates and explicit clearing.

## Rate limits

The current API uses a shared limit of 1,000 requests per minute. Read the response's rate-limit headers. If a request returns `429`, wait for the `Retry-After` interval before retrying. See [errors](/api/errors#rate-limits-and-retries).

## Existing integrations

[V1 remains a separate legacy contract](/api/legacy). These pages do not change your existing URLs or require an API migration.
The examples use placeholders. Replace `YOUR_TOKEN`, `PROJECT_ID`, and `LOCATION_ID` with your own values before running a request.


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