Brian Kimurgor
Get in touch
For developers

Portfolio API.

All the data powering this portfolio is available via a REST API. Request a key, include it in your requests, and build whatever UI you like.

Authentication

Pass your API key via the X-API-Key header or the ?apiKey= query parameter. Default rate limit is 1 000 requests per day.

JavaScript
fetch("https://briankimurgor.dev/api/projects", {
  headers: { "X-API-Key": "bk_YOUR_KEY_HERE" }
})
  .then(res => res.json())
  .then(data => console.log(data));

Endpoints

GET
/api/projects
List projects. Supports ?status=, ?featured=, ?page=, ?pageSize=
GET
/api/projects/[slug]
Get a single project by slug.
GET
/api/projects/[slug]/postmortem
List all postmortems for a project.
GET
/api/projects/[slug]/postmortem/[postmortemId]
Get a single postmortem for a project.
GET
/api/blogs
List published posts. Supports ?tag=, ?page=, ?pageSize=
GET
/api/blogs/[slug]
Get a single blog post by slug.
GET
/api/education
List education entries, ordered by recency.
GET
/api/companies
List work experience entries.
POST
/api/dev/apply
Request an API key. Body: { name, email, purpose? }
GET
/api/dev/status?email=
Check the status of your API key application.

Full interactive docs → /api-docs

Response shape

All list endpoints return a paginated envelope. Single-resource endpoints return the object directly.

JSON
{
  "data": [ ... ],
  "pagination": {
    "page": 1,
    "pageSize": 10,
    "total": 42,
    "totalPages": 5
  }
}

Request an API key

Keys are reviewed and activated manually — usually within 24 hours.

Check key status

Enter the email you used to apply and retrieve your key once approved.