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

# GET /users/me/outfits — List outfits in your wardrobe

> Retrieve a paginated list of outfits. Use /users/me/outfits to include private outfits, or /users/{user_id}/outfits for public ones only.

The Drssed API exposes two endpoints for listing outfits. Use `GET /users/me/outfits` to retrieve all of your own outfits — both public and private. Use `GET /users/{user_id}/outfits` to browse another user's outfits, which only returns outfits they have marked as public. Both endpoints return paginated results.

## Endpoints

### GET /users/me/outfits

Returns all outfits belonging to the authenticated user, including private ones.

| Field         | Value               |
| ------------- | ------------------- |
| Method        | `GET`               |
| Path          | `/users/me/outfits` |
| Auth required | Yes (Bearer token)  |
| Rate limit    | 5 per minute        |

### GET /users/{user_id}/outfits

Returns only the public outfits for a given user.

| Field         | Value                      |
| ------------- | -------------------------- |
| Method        | `GET`                      |
| Path          | `/users/{user_id}/outfits` |
| Auth required | Yes (Bearer token)         |
| Rate limit    | 5 per minute               |

## Path parameters

<ParamField path="user_id" type="string" required>
  The ID of the user whose public outfits you want to retrieve. Only applies to `GET /users/{user_id}/outfits`.
</ParamField>

## Query parameters

<ParamField query="limit" type="integer" default="50">
  Maximum number of outfits to return per page.
</ParamField>

<ParamField query="offset" type="integer" default="0">
  Number of outfits to skip before returning results. Use together with `limit` to paginate through results.
</ParamField>

## Response fields

**Status: 200 OK**

<ResponseField name="total" type="integer" required>
  Total number of outfits matching the query, regardless of pagination.
</ResponseField>

<ResponseField name="limit" type="integer" required>
  The `limit` value used for this response.
</ResponseField>

<ResponseField name="offset" type="integer" required>
  The `offset` value used for this response.
</ResponseField>

<ResponseField name="outfits" type="object[]" required>
  Array of outfit objects.

  <Expandable title="Outfit object properties">
    <ResponseField name="outfit_id" type="string" required>
      Unique identifier for the outfit.
    </ResponseField>

    <ResponseField name="user_id" type="string" required>
      ID of the user who owns this outfit.
    </ResponseField>

    <ResponseField name="name" type="string" required>
      Display name of the outfit.
    </ResponseField>

    <ResponseField name="description" type="string">
      Optional description of the outfit.
    </ResponseField>

    <ResponseField name="is_public" type="boolean" required>
      Whether the outfit is visible to other users.
    </ResponseField>

    <ResponseField name="is_favorite" type="boolean" required>
      Whether the outfit has been marked as a favorite.
    </ResponseField>

    <ResponseField name="seasons" type="string[]">
      Seasons the outfit is suitable for. Possible values: `Spring`, `Summer`, `Autumn`, `Winter`.
    </ResponseField>

    <ResponseField name="tags" type="string[]">
      Style tags applied to the outfit. Possible values: `Casual`, `Formal`, `Sports`, `Vintage`, `Outdoor`, `Party`, `Work`, `Beach`.
    </ResponseField>

    <ResponseField name="scene" type="object[]">
      Array of `CanvasPlacement` objects describing the outfit layout. See [Create outfit](/api/outfits/create) for the full field reference.
    </ResponseField>

    <ResponseField name="created_at" type="string" required>
      ISO 8601 timestamp of when the outfit was created.
    </ResponseField>

    <ResponseField name="updated_at" type="string" required>
      ISO 8601 timestamp of when the outfit was last updated.
    </ResponseField>
  </Expandable>
</ResponseField>

## Example

```bash cURL theme={null}
curl --request GET \
  --url https://api.drssed.com/users/me/outfits?limit=2&offset=0 \
  --header 'Authorization: Bearer <token>'
```

```json Response theme={null}
{
  "total": 42,
  "limit": 2,
  "offset": 0,
  "outfits": [
    {
      "outfit_id": "otf_abc123",
      "user_id": "usr_xyz789",
      "name": "Summer Casual",
      "description": "Light and breezy for warm days.",
      "is_public": true,
      "is_favorite": false,
      "seasons": ["Summer"],
      "tags": ["Casual", "Beach"],
      "scene": [
        {
          "clothing_id": "clth_001",
          "x": 0.5,
          "y": 0.2,
          "z": 1,
          "scale": 1.0,
          "rotation": 0.0
        }
      ],
      "created_at": "2024-06-01T10:00:00+00:00",
      "updated_at": "2024-06-15T08:30:00+00:00"
    },
    {
      "outfit_id": "otf_def456",
      "user_id": "usr_xyz789",
      "name": "Office Monday",
      "description": null,
      "is_public": false,
      "is_favorite": true,
      "seasons": ["Autumn", "Winter"],
      "tags": ["Work", "Formal"],
      "scene": [],
      "created_at": "2024-09-10T09:15:00+00:00",
      "updated_at": "2024-09-10T09:15:00+00:00"
    }
  ]
}
```
