---
title: GET /api/articles/[id]
description: Fetch one full article if owned by the authenticated user. A row owned by someone else returns 404, never 403.
---

<Note>

The CLI equivalent is `scripto articles get <id>`. For the cheap section map, use [`scripto outline`](/api-reference/get-outline) instead — it never returns bodies.

</Note>

Returns the full article (including `content`) **if you own it**. A row owned by someone else returns **404, never 403** — Scripto doesn't leak that an id exists.

## Endpoint

```text
GET https://scripto.codika.io/api/articles/{id}
```

## Path parameters

| Param | Type | Description |
|---|---|---|
| `id` | UUID | The article id. |

## Auth

`Authorization: Bearer scripto_…`

## Response (200)

```json
{
  "success": true,
  "data": {
    "article": {
      "id": "0a1b2c3d-…",
      "title": "Our launch",
      "subtitle": "What changed and why",
      "premise": "A go-to-market piece…",
      "content": "<h1>Our launch</h1>…",
      "coverImage": "https://…/hero.png",
      "wordCount": 1240,
      "slug": "our-launch",
      "status": "published",
      "createdAt": "2026-06-20T10:00:00.000Z",
      "updatedAt": "2026-06-25T14:30:00.000Z",
      "publishedAt": "2026-06-22T09:00:00.000Z"
    }
  }
}
```

## Errors

| HTTP | `code` | Cause |
|---|---|---|
| 401 | `unauthenticated` | Missing or invalid key. |
| 404 | `not-found` | No such article, **or you don't own it**. |
| 500 | `internal` | Backend error. |

## curl

```bash
curl -sS "https://scripto.codika.io/api/articles/$ID" \
  -H "Authorization: Bearer $SCRIPTO_API_KEY"
```

## Next

- **[GET .../outline](/api-reference/get-outline)** — the cheap section map.
- **[PATCH /api/articles/[id]](/api-reference/update-article)** — update the body or subtitle.
