> ## 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 Themes

> Retrieve a list of installed themes

# List Themes

Returns a list of themes installed in the store.

## Request

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

This endpoint takes no query parameters.

## Response

The response uses the standard envelope. The theme array is nested under
`data.themes`.

<ResponseField name="status" type="integer">
  HTTP status code (e.g., `200`)
</ResponseField>

<ResponseField name="state" type="string">
  Result state — `success` on success, `error` on failure
</ResponseField>

<ResponseField name="message" type="string">
  Human-readable message, or `null` on success
</ResponseField>

<ResponseField name="data.themes" type="array">
  Array of theme objects

  <Expandable title="Theme Object">
    <ResponseField name="id" type="string">
      Unique theme ID
    </ResponseField>

    <ResponseField name="name" type="string">
      Theme name
    </ResponseField>

    <ResponseField name="version" type="string">
      Theme version number
    </ResponseField>

    <ResponseField name="author" type="string">
      Theme author
    </ResponseField>

    <ResponseField name="previewUrl" type="string">
      Preview image URL, or `null` if no preview exists
    </ResponseField>

    <ResponseField name="createdAt" type="string">
      Creation timestamp (ISO 8601)
    </ResponseField>

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

    <ResponseField name="uploadedAt" type="string">
      Upload timestamp (ISO 8601)
    </ResponseField>

    <ResponseField name="description" type="string">
      Theme description (only present if set)
    </ResponseField>

    <ResponseField name="documentation_url" type="string">
      Documentation URL (only present if set)
    </ResponseField>

    <ResponseField name="support_url" type="string">
      Support URL (only present if set)
    </ResponseField>

    <ResponseField name="thumbnail" type="string">
      Thumbnail reference (only present if set)
    </ResponseField>
  </Expandable>
</ResponseField>

## Example Response

```json theme={null}
{
  "status": 200,
  "state": "success",
  "message": null,
  "data": {
    "themes": [
      {
        "id": "1f2e3d4c-5b6a-7980-a1b2-c3d4e5f60718",
        "name": "Aqua",
        "version": "1.0.0",
        "author": "LaunchMyStore",
        "previewUrl": "/theme-previews/1f2e3d4c-5b6a-7980-a1b2-c3d4e5f60718.png",
        "createdAt": "2024-01-15T10:00:00.000Z",
        "updatedAt": "2024-03-15T14:30:00.000Z",
        "uploadedAt": "2024-01-15T10:00:00.000Z"
      },
      {
        "id": "8a7b6c5d-4e3f-2019-8a7b-6c5d4e3f2019",
        "name": "Custom Theme",
        "version": "2.1.0",
        "author": "Acme Studio",
        "previewUrl": null,
        "createdAt": "2024-02-15T10:00:00.000Z",
        "updatedAt": "2024-02-28T14:30:00.000Z",
        "uploadedAt": "2024-02-15T10:00:00.000Z"
      }
    ]
  },
  "count": null,
  "pagination": null
}
```

## Error Response

```json theme={null}
{
  "status": 500,
  "state": "error",
  "message": "Store not found",
  "data": null
}
```

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