# Sreenitya Thatikunta Portfolio API Documentation

> Endpoint-by-endpoint reference for the Sreenitya Thatikunta portfolio API, including errors, filters and markdown content negotiation.

Canonical HTML: https://www.sreenitya.in/docs

Reference for the Sreenitya Thatikunta portfolio API — a public, read-only, unauthenticated JSON API over the content of https://www.sreenitya.in. Base URL: https://www.sreenitya.in/api. All responses are UTF-8 JSON with Access-Control-Allow-Origin: \*. The machine-readable contract is the OpenAPI 3.0.3 document at https://www.sreenitya.in/openapi.json.

## Conventions

- Only GET, HEAD and OPTIONS are accepted. Any other method returns 405 with a JSON error.
- Every successful response is an object; collections are returned under a named key with a count alongside.
- Errors are JSON with error.code, error.message, error.hint, error.documentation\_url and error.status.
- Responses are cached at the edge (Cache-Control: public, max-age=0, s-maxage=3600).

## GET /api/profile

Returns the site owner's identity: name, headline, job title, affiliation, description, contact email, resume URL and social profiles.

```
curl -s https://www.sreenitya.in/api/profile
```

## GET /api/skills

Returns categories, each with id, title and a skills array of strings.

## GET /api/experience

Returns experience, an array of roles with id, company, role, startDate, endDate (ISO year-month) and highlights.

## GET /api/projects

Returns projects. Optional query parameters: kind (research or mini) and tag (case-insensitive exact tag match). An unknown kind returns 400 with invalid\_parameter.

```
curl -s "https://www.sreenitya.in/api/projects?tag=Diffusion"
```

## GET /api/projects/{slug}

Returns a single project. Unknown slugs return 404 with project\_not\_found and a hint pointing at the collection endpoint.

## GET /api/contact

Returns the public contact channels: email, contact form URL and social profiles.

## Markdown content negotiation

Every HTML page on this site also exists as markdown. Send Accept: text/markdown and you receive the markdown variant; the response carries Vary: Accept, Accept-Encoding. You can also request the markdown file directly by appending .md to the path.

```
curl -sH 'Accept: text/markdown' https://www.sreenitya.in/
curl -s https://www.sreenitya.in/about.md
```

## Rate limits

No hard limit is enforced. The dataset is static and edge-cached; please stay under a few requests per second and cache what you fetch.
