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

# Get Blog

> Retrieve a single blog

# Get Blog

Returns a single blog by its ID.

## Request

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

  ```javascript Node.js theme={null}
  const response = await fetch('https://api.launchmystore.io/api/v1/blogs/blog_abc123.json', {
    headers: {
      'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
    }
  });
  ```
</CodeGroup>

Requires the `read_content` scope.

## Path Parameters

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

## Response

The response uses the standard envelope. The blog object is returned under `data.blog`.

<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="message" type="string">
  Optional message, `null` on success
</ResponseField>

<ResponseField name="data" type="object">
  Wrapper object containing the blog

  <Expandable title="data.blog">
    <ResponseField name="blogsPageId" type="string">
      Unique blog ID (UUID)
    </ResponseField>

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

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

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

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

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

    <ResponseField name="seoTitle" type="string">
      SEO title
    </ResponseField>

    <ResponseField name="seoDesc" type="string">
      SEO description
    </ResponseField>

    <ResponseField name="seoImage" type="string">
      SEO image URL
    </ResponseField>

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

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

## Example Response

```json theme={null}
{
  "status": 200,
  "state": "success",
  "message": null,
  "data": {
    "blog": {
      "blogsPageId": "blog_abc123",
      "id": "482915",
      "name": "News",
      "title": "News",
      "handle": "news",
      "templateSuffix": null,
      "seoTitle": null,
      "seoDesc": null,
      "seoImage": null,
      "createdAt": "2024-01-01T10:00:00.000Z",
      "updatedAt": "2024-03-15T14:30:00.000Z"
    }
  }
}
```

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