---
title: "Get articles a profile has published"
method: GET
path: "/api/v1/profile/articles"
---

# Get articles a profile has published

`GET /api/v1/profile/articles`

## Request

- Base URL: `https://api.fetchin.io`
- URL: `https://api.fetchin.io/api/v1/profile/articles`
- Auth: API key in header `X-API-Key`

Fetch the long-form articles a member has published (their articles tab), newest first. Metadata only: no engagement counts and no article body. This is the one profile feed paged by offset rather than by cursor, so `start` is supported here and there is no `paginationToken`. Advance `start` by the `count` you requested (the response returns that value as `nextStart`) and keep paging while `hasMore` is true. `count` is a ceiling, not a quota: a page can hold fewer articles than requested because the window indexes the underlying list and items it cannot represent are dropped from the page, so a short page is not the end of the feed - only an empty page is.

## Query parameters

- `profileUrlOrUrn` string, required
- `count` integer
- `start` integer

## Response `200`

Successfully fetched profile articles

- object
  - `articles` object[]: Published articles, newest first.
    - `articleUrn` string: The article's identifier.
    - `articleId` string: The bare numeric id, without the URN prefix.
    - `title` string: Title of the article.
    - `url` string: Public permalink to the article, with tracking parameters already stripped, so the value is stable across calls.
    - `description` string: The opening of the article body as the feed returns it, roughly 150 characters. Not the full text.
    - `publishedAt` string, date-time, nullable: ISO 8601 publication timestamp, derived from the article id. Null when the id is not decodable - never a guessed date.
    - `coverImageUrl` string, nullable: The largest available cover image. Null when the article has none.
    - `readTimeMinutes` integer, nullable: Reading time in minutes, as estimated upstream. Null when it cannot be read.
    - `subtitle` string: The byline verbatim, as shown on the article card.
  - `hasMore` boolean: Whether the feed holds more articles behind this page. Stop paging when it is false; a short page is not the end of the feed.
  - `nextStart` integer: The `start` value to request next. Present only when `hasMore` is true.

## Other responses

- `400`: Bad request - a required parameter is missing or a value is invalid.
- `401`: Unauthorized - the X-API-Key header is missing or invalid.
- `402`: Payment required - you are out of credits (QUOTA_EXHAUSTED): the plan allowance for the current period is spent AND no pay-as-you-go credits are left. Buy pay-as-you-go credits (self-serve, https://fetchin.io/credits), upgrade your plan, or wait for renewal; retrying will not help and no Retry-After is sent. Distinct from the per-second rate limit, which is a 429 (RATE_LIMITED).
- `404`: Not found - the request was served successfully but the requested professional entity does not exist.
- `429`: Too many requests - your per-second rate limit (RATE_LIMITED) was exceeded. Back off and retry, honoring the Retry-After header. (Running out of credits is a separate 402 PaymentRequired / QUOTA_EXHAUSTED, and buying credits never raises this per-second limit.)
- `500`: Internal server error - an unexpected error occurred in our API. Safe to retry; contact support if it persists.
- `503`: Service unavailable - our API is temporarily unable to serve this request (capacity exhausted or overloaded). This is on our side, not yours and not an upstream service outage. Retry with backoff, honoring the Retry-After header.

---

[API](https://skmtc.dev/fetchin/apis/fetchin-api.md) - [All operations](https://skmtc.dev/fetchin/apis/fetchin-api/llms.txt) - [OpenAPI document](https://skmtc.dev/fetchin/apis/fetchin-api/revisions/19a0b5d0320f?raw)
