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

> Retrieve a list of articles in a blog

# List Articles

Returns a paginated list of articles within a specific blog, ordered by creation date, newest first.

## Request

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

Requires the `read_content` scope.

## Path Parameters

<ParamField path="blog_id" type="string" required>
  The unique blog ID
</ParamField>

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

## Response

The response uses the standard envelope. Articles are returned under `data.articles`, with offset-based pagination under `data.pagination`.

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

<ResponseField name="state" type="string">
  Result state, e.g. `success`
</ResponseField>

<ResponseField name="data.articles" type="array">
  Array of article objects

  <Expandable title="Article Object">
    <ResponseField name="blogId" type="string">
      Unique article ID (UUID)
    </ResponseField>

    <ResponseField name="id" type="string">
      Short numeric article ID
    </ResponseField>

    <ResponseField name="blogsPageId" type="string">
      Parent blog ID
    </ResponseField>

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

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

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

    <ResponseField name="content" type="string">
      Article content (HTML)
    </ResponseField>

    <ResponseField name="image" type="string">
      Featured image URL
    </ResponseField>

    <ResponseField name="tags" type="array">
      Tags array
    </ResponseField>

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

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

<ResponseField name="data.pagination" type="object">
  Pagination information: `page`, `limit`, `total`, `hasMore`
</ResponseField>

## Example Response

```json theme={null}
{
  "status": 200,
  "state": "success",
  "message": null,
  "data": {
    "articles": [
      {
        "blogId": "art_xyz789",
        "id": "739204",
        "blogsPageId": "blog_abc123",
        "name": "Summer Product Launch Announcement",
        "title": "Summer Product Launch Announcement",
        "handle": "summer-product-launch-announcement",
        "content": "<p>We're excited to announce our new summer collection...</p>",
        "image": "https://cdn.launchmystore.io/images/summer-launch.jpg",
        "tags": ["summer", "announcements", "new-arrivals"],
        "createdAt": "2024-03-14T09:00:00.000Z",
        "updatedAt": "2024-03-15T10:00:00.000Z"
      }
    ],
    "pagination": {
      "page": 1,
      "limit": 50,
      "total": 24,
      "hasMore": false
    }
  }
}
```

## Error Codes

| Code           | Description                               |
| -------------- | ----------------------------------------- |
| `UNAUTHORIZED` | Invalid or missing access token           |
| `FORBIDDEN`    | App doesn't have `read_content` scope     |
| `NOT_FOUND`    | Blog with the specified ID does not exist |
