# Get an article — Shorty API

> Returns one article the authenticated account owns, including its generated summary parts and extracted body text. A non-existent or foreign id returns 404.

```http
GET /v1/articles/{articleId}
```

Returns one article the authenticated account owns, including its generated summary parts and extracted body text. A non-existent or foreign id returns 404.

## Authentication

Requires a Bearer credential — a `shk_live_` API key or an OAuth 2.1 access token with the scope for this resource. See [Authentication](/docs/api).

## Parameters

| Name | In | Required | Description |
| --- | --- | --- | --- |
| `articleId` | path | Yes | — |

## Example request

curl:

```bash
curl -X GET https://aishorty.com/v1/articles/{articleId} \
  -H "Authorization: Bearer shk_live_your_key"
```

TypeScript (@aishorty/sdk):

```typescript
import { Shorty } from '@aishorty/sdk'

const shorty = new Shorty({ apiKey: process.env.SHORTY_API_KEY })

const article = await shorty.articles.get(articleId)
```

## Response · 200

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `string` | Yes | Stable article id (use it on GET /v1/articles/{id}). |
| `title` | `string or null` | Yes | Article title, or null if not yet summarized. |
| `description` | `string or null` | Yes | Short description/summary lead, or null. |
| `article_type` | `string` | Yes | Source kind: YOUTUBE_ARTICLE, WEBPAGE_ARTICLE, PDF_ARTICLE, WORD_ARTICLE, TEXT_ARTICLE, or AUDIO_ARTICLE. |
| `source_url` | `string or null` | Yes | The original source URL, or null (e.g. text/file input). |
| `created_at` | `string` | Yes | ISO-8601 UTC timestamp the article was created. |
| `summary` | `object or null` | Yes | The generated summary, or null if not yet produced. |
| `body_text` | `string or null` | Yes | The extracted source text / transcript backing the summary, or null. |

## Errors

On failure this endpoint returns an RFC 9457 problem body. Possible statuses:

- `400`
- `401`
- `403`
- `404`
- `429`
- `500`

Switch on the problem `code`, not the status. See the [error reference](/docs/api/errors) for every code and how to fix it.
