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

# List Collections

> Retrieve a list of collections

# List Collections

Returns a paginated list of collections in the store, in Shopify-compatible
shape.

## Request

```bash theme={null}
curl -X GET "https://api.launchmystore.io/api/v1/collections.json" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"
```

## Parameters

<ParamField query="page" type="integer" default="1">
  Page number for pagination
</ParamField>

<ParamField query="limit" type="integer" default="50">
  Number of items per page
</ParamField>

<ParamField query="title" type="string">
  Filter by collection title (partial, case-insensitive match)
</ParamField>

<ParamField query="handle" type="string">
  Filter by exact handle
</ParamField>

## Response

Returns a bare Shopify-style object with the collections under the
`collections` array. Pagination is conveyed via a page-based `Link` response
header (`rel="next"` / `rel="previous"`), not in the body.

<ResponseField name="collections" type="array">
  Array of collection objects

  <Expandable title="Collection Object">
    <ResponseField name="id" type="string">
      Unique collection ID
    </ResponseField>

    <ResponseField name="title" type="string">
      Collection title
    </ResponseField>

    <ResponseField name="handle" type="string">
      URL-safe collection handle
    </ResponseField>

    <ResponseField name="body_html" type="string">
      Collection description (HTML)
    </ResponseField>

    <ResponseField name="sort_order" type="string">
      Product sort order (always `manual` for custom collections)
    </ResponseField>

    <ResponseField name="template_suffix" type="string">
      Custom template suffix for theming
    </ResponseField>

    <ResponseField name="image" type="object">
      Collection featured image
    </ResponseField>

    <ResponseField name="products_count" type="integer">
      Number of products in collection
    </ResponseField>

    <ResponseField name="updated_at" type="string">
      Last update timestamp (ISO 8601)
    </ResponseField>
  </Expandable>
</ResponseField>

## Example Response

```json theme={null}
{
  "collections": [
    {
      "id": "col_abc123",
      "title": "Summer Collection",
      "handle": "summer-collection",
      "body_html": "<p>Our latest summer styles.</p>",
      "sort_order": "manual",
      "template_suffix": null,
      "image": {
        "alt": "Summer Collection",
        "src": "https://cdn.launchmystore.io/images/summer-banner.jpg"
      },
      "products_count": 24,
      "updated_at": "2024-03-15T14:30:00Z"
    }
  ]
}
```

Pagination header:

```
Link: <https://api.launchmystore.io/api/v1/collections.json?limit=50&page=2>; rel="next"
```

## Errors

Failures return a Shopify-style `{ errors }` body with the appropriate HTTP
status:

```json theme={null}
{
  "errors": {
    "base": ["Invalid or missing access token"]
  }
}
```

| Status | Description                                |
| ------ | ------------------------------------------ |
| `401`  | Invalid or missing access token            |
| `403`  | App doesn't have the `read_products` scope |
