# DEV (dev.to) API
> The DEV Community (dev.to) as an API, powered by the official open-source Forem platform API. DEV is one of the largest communities of software developers writing and sharing articles, tutorials and discussions. This API gives clean, read-only access to that content. /v1/articles browses and filters published articles — by tag (tag=javascript), by author (username=ben), by most-reacted over a period (top=7 for the best of the last week), or by feed state (fresh, rising) — with pagination; each result carries the title, description, canonical URL, tag list, positive-reaction and comment counts, estimated reading time, cover image and author summary. /v1/article?id=5 returns a single article with its complete Markdown body, canonical URL and author social links — everything needed to render or syndicate the full post. /v1/user?username=ben returns a member's public profile: display name, bio/summary, location, join date, linked Twitter/GitHub/website and avatar. /v1/tags lists the platform's popular tags for discovery. Article ids are numeric and stable, so links don't rot. Ideal for developer-content aggregators and newsletters, reading-list and bookmarking apps, community dashboards, "trending in tech" widgets and Discord/Slack bots. Data from the public DEV Forem API, free to use. Content is authored by the DEV community.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/devto-api/..."
```

## Pricing
- **Free** (Free) — 2,500 calls/Mo, 2 req/s
- **Starter** ($6/Mo) — 50,000 calls/Mo, 5 req/s
- **Pro** ($20/Mo) — 220,000 calls/Mo, 12 req/s
- **Mega** ($55/Mo) — 800,000 calls/Mo, 35 req/s

## Endpoints

### Articles

#### `GET /v1/article` — A single article with full body

**Parameters:**
- `id` (query, required, string) — Numeric article id, e.g. 5 Example: `5`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/devto-api/v1/article?id=5"
```

**Response:**
```json
{
    "data": {
        "article": {
            "id": 5,
            "url": "https://dev.to/ben/dhh-on-the-future-of-rails",
            "tags": "ruby, rails",
            "user": {
                "name": "Ben Halpern",
                "github": "benhalpern",
                "twitter": "bendhalpern",
                "username": "ben"
            },
            "title": "David Heinemeier Hansson on the Future of Rails",
            "author": {
                "name": "Ben Halpern",
                "username": "ben"
            },
            "comments": 2,
            "edited_at": null,
            "reactions": 26,
            "cover_image": "https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/http%3A%2F%2Fi.imgur.com%2FQb20fNn.jpg",
            "description": "\n\nThe Ruby on Rails framework has had an incredible impact since its creation a d...",
            "published_at": "2016-01-05T15:41:22Z",
            "body_markdown": "<p>The Ruby on Rails framework has had an incredible impact since its creation a decade ago, becoming the choice for some of today's mightiest tech companies. Patterns and concepts popularized by the framework have also had an indelible effect on the application architecture discussion. Rails is an open-source project which depends on innovation and good software design from its core team in order to maintain its direction and status. New paradigms are constantly emerging&nbsp;and Rails has done well to evolve
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/articles` — Browse & filter articles

**Parameters:**
- `tag` (query, optional, string) — Filter by tag, e.g. javascript Example: `javascript`
- `username` (query, optional, string) — Filter by author
- `top` (query, optional, string) — Most-reacted over last N days
- `per_page` (query, optional, string) — Results per page (1-100)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/devto-api/v1/articles?tag=javascript"
```

**Response:**
```json
{
    "data": {
        "page": 1,
        "count": 20,
        "articles": [
            {
                "id": 3793088,
                "url": "https://dev.to/nandan_das_369/orinide-v107-the-ai-finally-understands-your-whole-project-2nd4",
                "tags": [
                    "webdev",
                    "javascript",
                    "ai",
                    "opensource"
                ],
                "title": "OrinIDE v1.0.7 — The AI Finally Understands Your Whole Project",
                "author": {
                    "name": "Nandan Das",
                    "username": "nandan_das_369"
                },
                "comments": 4,
                "reactions": 11,
                "cover_image": "https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fcapsule-render.vercel.app%2Fapi%3Ftype%3Dwaving%26color%3D0%3A0B0614%2C50%3A6C2BD9%2C100%3AB45CFF%26height%3D220%26section%3Dheader%26text%3DOrinIDE%2520v1.0.7%26fontSize%3D60%26fontColor%3Dffffff%26fontAlignY%3D40%26fontAlign%3D50%26desc%3DThe%2520AI%2520finally%2520understands%2520your%2520whole%2520project%26descAlignY%3D62%26descSize%3D16%26descColor%3DD6A6FF%26descAlign%3D50",
                "description": "New in OrinIDE: project-wide AI context, surgical edits that don't rewrite your whole file, a skills system, HTML preview in chat, and a free image API. Built on Android with Termux.",
                "published_at": "2026-06-01T06:13:17Z
…(truncated, see openapi.json for full schema)
```

### Users

#### `GET /v1/user` — A user public profile

**Parameters:**
- `username` (query, required, string) — DEV username, e.g. ben Example: `ben`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/devto-api/v1/user?username=ben"
```

**Response:**
```json
{
    "data": {
        "user": {
            "name": "Ben Halpern",
            "github": "benhalpern",
            "summary": "A Canadian software developer who thinks he’s funny.",
            "twitter": "bendhalpern",
            "website": "http://benhalpern.com",
            "location": "NY",
            "username": "ben",
            "joined_at": "Dec 27, 2015",
            "profile_image": "https://media2.dev.to/dynamic/image/width=320,height=320,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1%2Fbabb96d0-9cd2-49bc-a412-2dc4caf94c2a.png"
        }
    },
    "meta": {
        "timestamp": "2026-06-01T16:23:47.822Z",
        "request_id": "453342a4-137f-400b-a4cc-b1e6f51eab8b"
    },
    "status": "ok",
    "message": "User retrieved",
    "success": true
}
```

### Tags

#### `GET /v1/tags` — Popular tags

**Parameters:**
- `per_page` (query, optional, string) — Results (1-100)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/devto-api/v1/tags"
```

**Response:**
```json
{
    "data": {
        "tags": [
            {
                "id": 8,
                "name": "webdev"
            },
            {
                "id": 33,
                "name": "programming"
            },
            {
                "id": 307,
                "name": "ai"
            },
            {
                "id": 6,
                "name": "javascript"
            },
            {
                "id": 555,
                "name": "beginners"
            },
            {
                "id": 112,
                "name": "productivity"
            },
            {
                "id": 297,
                "name": "tutorial"
            },
            {
                "id": 25,
                "name": "python"
            },
            {
                "id": 125,
                "name": "react"
            },
            {
                "id": 168,
                "name": "devops"
            },
            {
                "id": 228,
                "name": "opensource"
            },
            {
                "id": 630,
                "name": "career"
            },
            {
                "id": 3371,
                "name": "archlinux"
            },
            {
                "id": 715,
                "name": "discuss"
            },
            {
                "id": 650,
                "name": "blockchain"
            },
            {
                "id": 56,
                "name": "security"
            },
            {
     
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Usage notes

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/devto-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "note": "DEV (dev.to) is one of the largest developer-writing communities, built on the open-source Forem platform. /v1/articles = browse published articles, filter by tag (tag=javascript), by author (username=ben), by most-reacted over a period (top=7 for the last 7 days), or by state (fresh/rising), with pagination — each result carries title, description, canonical url, tags, reaction and comment counts, reading time, cover image and author; /v1/article?id=5 = a single article with its full markdown body and author links; /v1/user?username=ben = a user's public profile (name, bio, location, joined date, social links, avatar); /v1/tags = popular tags on the platform. Article ids are numeric and stable. Data from the DEV Forem API (public, free). Ideal for developer-content aggregators, reading lists, dashboards, newsletters and bots.",
        "source": "DEV (dev.to) — Forem API (dev.to/api)",
        "endpoints": [
            "/v1/articles",
            "/v1/article",
            "/v1/user",
            "/v1/tags",
            "/v1/meta"
        ]
    },
    "meta": {
        "timestamp": "2026-06-01T16:23:47.971Z",
        "request_id": "f69d520c-0986-4f44-8efd-b48e8f02a115"
    },
    "status": "ok",
    "message": "Meta retrieved",
    "success": true
}
```


---
Marketplace page: https://www.oanor.com/api/devto-api
OpenAPI spec: https://www.oanor.com/api/devto-api/openapi.json
