---
title: "Developer Portal | stavrospachoundakis.com"
description: "Machine-readable interfaces to stavrospachoundakis.com: llms.txt, sitemap, the /api/v1 endpoints, and a Markdown version of every page."
canonical: "https://stavrospachoundakis.com/developers"
last-updated: "2026-11-06"
author: "Stavros Pachoundakis"
site: "stavrospachoundakis.com"
language: "en"
---
# Developer Portal | stavrospachoundakis.com
Machine-readable interfaces to this site, for developers and for autonomous
agents. Everything here is public, requires no API key, and needs no signup.
## Quickstart
Get structured facts about Stavros in one call:
```bash
curl https://stavrospachoundakis.com/api/v1/profile
```
Fetch the full narrative context:
```bash
curl https://stavrospachoundakis.com/llms.txt
```
Add `.md` to any page address to get it as Markdown:
```bash
curl https://stavrospachoundakis.com/about.md
```
## REST API: /api/v1
Base URL: `https://stavrospachoundakis.com/api/v1`. Full machine-readable
description: [openapi.json](https://stavrospachoundakis.com/openapi.json)
(OpenAPI 3.1).
| Endpoint | Method | Description |
| --- | --- | --- |
| `/profile` | GET | Complete structured profile: bio, location, employment history, skills, highlights, availability, links. |
| `/experience` | GET | Employment history. |
| `/skills` | GET | Skills grouped by discipline. |
| `/projects` | GET | Projects. |
| `/posts` | GET | Returns an empty list. This site has no posts. |
Success responses are shaped `{ "apiVersion": "v1", "data": ..., "meta": ... }`.
### Authentication
None. There is no API key, OAuth flow, or signup. See
[auth.md](https://stavrospachoundakis.com/auth.md) for the full picture.
### Versioning and deprecation
The API is versioned in the URL path. Breaking changes ship under a new segment
(`/api/v2`) and the previous version keeps working. Additive changes (new
fields, new optional parameters, new endpoints) are made in place, so **clients
must ignore unknown fields**.
A version scheduled for removal is announced on this page and in the OpenAPI description, at least **180 days** before it stops responding.
### Errors

The API is static, read-only JSON. A path that does not exist returns a plain HTTP `404`, and any method other than GET returns `405`.

Machine-readable files
| Path | Content type | Description |
| --- | --- | --- |
| `/llms.txt` | `text/plain` | Full structured profile, roles, skills and when-to-use guidance. |
| `/openapi.json` | `application/openapi+json` | OpenAPI 3.1 description of the API above. |
| `/auth.md` | `text/markdown` | How authentication works (it doesn't exist: everything is public). |
| `/.well-known/ai-catalog.json` | `application/json` | Agentic Resource Discovery catalog. |
| `/sitemap.xml` | `application/xml` | Every canonical URL. |
| `/robots.txt` | `text/plain` | Crawl policy. |
## Markdown versions
Every page has a Markdown version: add `.md` to its address (`/about.md`, and `/index.md` for the home page). The HTML and Markdown versions are separate files, so there is no content negotiation by `Accept` header or User-Agent.
## Errors and 404s
Unknown paths return a plain HTTP `404`, never a 200 with the app shell, so you can trust status codes when probing.
## Sandbox
There is no separate sandbox environment, and none is needed: every endpoint is
read-only and side-effect free, so production is safe to call directly. Please keep test volume reasonable.
## Source code
The repositories behind this site are private. Public profile: [github.com/stavroschios](https://github.com/stavroschios).
## Contact
Bugs, questions or integration help: use the contact page (human check required).
---
Machine-readable index for this site:
- Full context: https://stavrospachoundakis.com/llms.txt
- Sitemap: https://stavrospachoundakis.com/sitemap.xml
- Developer portal: https://stavrospachoundakis.com/developers
Add `.md` to any page address for a Markdown version.