---
title: "API — Parth Kapoor"
description: "Read-only JSON API over the content of https://parthkapoor.me. No key, no signup."
canonical: "https://parthkapoor.me/docs"
---

# Parth Kapoor API

A small, read-only JSON API over the content of https://parthkapoor.me: profile, projects, experience and writing. It exists so agents and scripts can answer questions about Parth Kapoor without scraping HTML.

- **Base URL:** `https://parthkapoor.me/api/v1`
- **Authentication:** none. Every endpoint is public. See https://parthkapoor.me/auth.md.
- **Format:** JSON. Errors are RFC 9457 `application/problem+json`.
- **Specification:** OpenAPI 3.1 at https://parthkapoor.me/openapi.json
- **MCP:** the same data as MCP tools at https://parthkapoor.me/api/mcp — see https://parthkapoor.me/agents.md
- **Versioning:** the version is in the path (`/v1`). Breaking changes get a new version; `/v1` would be announced as deprecated with a `Deprecation` header first.
- **Rate limits:** none enforced beyond the hosting platform's. Responses are cached at the edge; please cache on your side too.
- **Pagination:** none needed — every collection is small and returned whole.

## Quickstart

```sh
curl https://parthkapoor.me/api/v1/profile
```

```js
const res = await fetch("https://parthkapoor.me/api/v1/projects?tech=Go");
const { data } = await res.json();
```

## Endpoints

### GET /profile

Who Parth Kapoor is: position, summary, availability, location, stack, contact and social links.

```sh
curl https://parthkapoor.me/api/v1/profile
```

### GET /projects

All projects, featured first. Optional query `tech` filters by technology tag, case-insensitive (`Go`, `Gen AI`, `Web`, `CLI`, …).

```sh
curl "https://parthkapoor.me/api/v1/projects?tech=Gen%20AI"
```

### GET /projects/{id}

One project by id (e.g. `devx`, `zenith-ai`, `better-axios`). 404 if unknown.

### GET /experience

Timeline entries, most recent first. Optional query `category`: `work`, `project`, `award` or `edu`.

```sh
curl "https://parthkapoor.me/api/v1/experience?category=work"
```

### GET /posts

Blog posts, newest first, without bodies.

### GET /posts/{slug}

One post including its MDX body. 404 if unknown.

## Responses

Collections return `{ "data": [...], "count": n }`; single resources return `{ "data": {...} }`.

Errors:

```json
{
  "type": "https://parthkapoor.me/docs#errors",
  "title": "Not Found",
  "status": 404,
  "code": "project_not_found",
  "detail": "No project with id \"nope\".",
  "hint": "GET https://parthkapoor.me/api/v1/projects lists every id."
}
```

| Status | code | When |
|---|---|---|
| 400 | `invalid_parameter` | A query parameter has a value outside its enum |
| 404 | `*_not_found` / `route_not_found` | Unknown id, slug or path |
