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

# List blogs

> Retrieve a paginated set of blog posts for the current storefront.

## Request

```http theme={null}
GET /blogs?page=1&limit=10
x-shop-id: {{shopId}}
```

## Headers

| Header      | Type   | Description                |
| ----------- | ------ | -------------------------- |
| `x-shop-id` | string | Identify the shop context. |

## Query parameters

| Parameter | Type    | Description                                               |
| --------- | ------- | --------------------------------------------------------- |
| `page`    | integer | Page number to return (default: `1`).                     |
| `limit`   | integer | Maximum number of blog posts per page (default: `10`).    |
| `q`       | string  | Optional search string applied to blog titles or content. |

## Successful response

```json theme={null}
{
    "status": 200,
    "success": true,
    "message": "Blogs found",
    "data": {
        "blogs": [
            {
                "_id": "6a17abd9c12ba5b55a03afa8",
                "title": "The Art of Acquisition",
                "image": "https://cdn.dribbble.com/userupload/43590559/file/original.png",
                "description": "",
                "content": "<p>Full blog post content here...</p>",
                "tags": ["art", "new"],
                "shop": "68b8f52575da81b332af29f1",
                "author": {
                    "_id": "68b8f4aecafb9a1167c25b8e",
                    "name": "Jane Smith",
                    "avatar": "https://cdn.salesive.com/avatars/jane.jpg"
                },
                "published": true,
                "publishedAt": "2026-05-28T02:43:37.081Z",
                "views": 2,
                "createdAt": "2026-05-28T02:43:37.083Z",
                "updatedAt": "2026-06-09T08:49:17.600Z",
                "slug": "the-art-of-acquisition",
                "__v": 0,
                "id": "6a17abd9c12ba5b55a03afa8"
            }
        ],
        "pagination": {
            "total": 2,
            "page": 1,
            "limit": 10,
            "pages": 1,
            "hasNext": false,
            "hasPrev": false,
            "nextPage": null,
            "prevPage": null
        }
    }
}
```

## Error response

```json theme={null}
{
    "status": 500,
    "success": false,
    "message": "Internal server error",
    "data": {}
}
```


## OpenAPI

````yaml GET /blogs
openapi: 3.1.0
info:
  title: Salesive Store API
  description: >-
    REST interface for querying products, categories, and merchandising banners
    exposed by Salesive storefronts.
  version: 1.0.0
servers:
  - description: Production
    url: https://store.salesive.com/api/v1
security:
  - BearerAuth: []
    ShopIdHeader: []
paths:
  /blogs:
    get:
      summary: List blogs
      description: Retrieve a paginated list of blog posts for the current storefront.
      parameters:
        - $ref: '#/components/parameters/XShopIdHeader'
        - name: page
          in: query
          description: Page number to return (defaults to 1).
          schema:
            type: integer
            minimum: 1
            default: 1
        - name: limit
          in: query
          description: Maximum number of blog posts per page (defaults to 10).
          schema:
            type: integer
            minimum: 1
            default: 10
        - name: q
          in: query
          description: Optional search phrase applied to blog titles or excerpts.
          schema:
            type: string
      responses:
        '200':
          description: Paginated blogs response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlogCollection'
        '400':
          description: Invalid pagination or filter criteria.
        '404':
          description: No matching blogs found.
components:
  parameters:
    XShopIdHeader:
      name: x-shop-id
      in: header
      description: >-
        Optional identifier that scopes responses to a specific storefront when
        the referer cannot be inferred.
      required: false
      schema:
        type: string
  schemas:
    BlogCollection:
      type: object
      required:
        - blogs
        - total
        - page
        - limit
      properties:
        blogs:
          type: array
          items:
            $ref: '#/components/schemas/Blog'
        total:
          type: integer
          minimum: 0
        page:
          type: integer
          minimum: 1
        limit:
          type: integer
          minimum: 1
    Blog:
      type: object
      required:
        - id
        - title
        - slug
        - excerpt
        - thumbnail
        - publishedAt
        - status
      properties:
        id:
          type: string
          description: Unique blog post identifier.
        title:
          type: string
          description: Human-readable title for the blog post.
        slug:
          type: string
          description: URL-friendly slug for the blog post.
        excerpt:
          type: string
          description: Short teaser text shown on listing pages.
        thumbnail:
          type: string
          format: uri
          description: Featured image URL for the blog post.
        publishedAt:
          type: string
          format: date-time
          description: Publication timestamp in ISO 8601 format.
        updatedAt:
          type: string
          format: date-time
          description: Timestamp of the most recent update.
        status:
          type: string
          description: Workflow status such as draft, scheduled, or published.
        content:
          type: string
          description: Full HTML content of the blog post.
        author:
          type: object
          description: Author metadata for the blog post.
          properties:
            name:
              type: string
              description: Display name of the author.
            avatar:
              type: string
              format: uri
              description: URL of the author's avatar image.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT issued by the Salesive Store API for authenticated shoppers.
    ShopIdHeader:
      type: apiKey
      in: header
      name: x-shop-id
      description: >-
        Optional storefront identifier sent as a header to scope responses to a
        specific shop. Try It requests remember this value once provided.

````