> **For coding agents and LLMs:** This is one Social Fetch marketing page (markdown export). For API orientation start with [`/llms.txt`](https://www.socialfetch.dev/llms.txt); for auth and crawl rules use [`/agents.txt`](https://www.socialfetch.dev/agents.txt); for every operation use [`/llms-endpoints.txt`](https://www.socialfetch.dev/llms-endpoints.txt).

## This page

- **On-site (HTML):** <https://www.socialfetch.dev/platforms/medium/authors-username-posts>
- **Markdown (.mdx) URL:** <https://www.socialfetch.dev/platforms/medium/authors-username-posts.mdx>

---

# Medium Author Posts API

An author's ten newest posts across publications, with full article HTML when the article body is available.

`GET /v1/medium/authors/{username}/posts` accepts a handle with or without the leading `@`, or a profile URL such as `https://medium.com/@ev`, and returns the author's newest posts as JSON. `data.author` holds `username`, `name`, `title`, `description`, `id`, `avatarUrl`, `url`, `host` and `isCustomDomain`. `data.posts` holds up to ten posts.

The article body is usually available. When `contentAvailable` is true, each post has `contentHtml`, `contentText`, `wordCount` and `readingMinutes`, with the publisher's article markup preserved and plain text and reading time derived. When an item is incomplete, `complete` is false and the response holds the complete items.

The list has no cursor and returns ten posts. Use the daily post sitemaps to discover older post URLs by date. An invented handle returns `lookupStatus: not_found` with `author: null` and `posts: []`.

## Request

- **Endpoint:** `GET /v1/medium/authors/{username}/posts`
- **Credits:** 1 credit
Failed requests are free
- **Input:** by handle
- **Full reference:** [docs](https://www.socialfetch.dev/docs/api/v1/medium/authors/username/posts/get)
- **Platform page:** [/platforms/medium](https://www.socialfetch.dev/platforms/medium)

## FAQ

### Which forms of handle work?

`ev`, `@ev` and `https://medium.com/@ev` all name the same author. The handle is lower-cased and the leading `@` is removed before the lookup.

### Do posts include the full article?

Usually. Check `contentAvailable` on each post. When it is true, `contentHtml`, `contentText`, `wordCount` and `readingMinutes` are filled. When it is false, read `snippet` and `imageUrl` instead.

### Why are there only ten posts?

This list returns its newest ten posts and has no cursor. Use `GET /v1/medium/posts` with a date to discover older post URLs from the daily sitemap.

### How many credits does it cost?

Pricing is documented on the operation in the API registry (shown on this page). Confirm on every response with meta.creditsCharged: that field is the billing source of truth.
