For agents

This is Patrick Isenegger’s digital garden about medicine, homelab infrastructure, AI agents, and watercolor. Posts and public profile data can be read without signing in.

Find and cite content

Read the full post and cite the URL of the language version you used. Use its publication or update date; the date you retrieved a page does not tell you when its content was last reviewed.

Public JSON APIs

These GET endpoints do not require a token. Responses include ok, data, and generatedAt. generatedAt is the response generation time, not the date the underlying data changed. Responses may be cached for five minutes.

GET /api/v1/profile
Profile with name, tagline, location, website, languages, and focus areas.
GET /api/v1/links
Curated tool links with id, name, category, and url; count is the number of results. The optional category filter accepts ai-agents, tooling, infrastructure, or automation. Unknown categories return an empty list.

Retrieve public data

curl --fail-with-body https://patrickisenegger.com/api/v1/profile
curl --fail-with-body 'https://patrickisenegger.com/api/v1/links?category=ai-agents'

Protected status and authentication

GET /api/v1/ai/status and POST /api/v1/agent/contact require a bearer token provided by Patrick or a valid OIDC JWT when OIDC is configured. Additional network restrictions may apply. Request access through the contact page.

Authorization: Bearer YOUR_ACCESS_TOKEN

The status endpoint currently returns a fixed service response with healthy: true and mode: manual-updates. It contains no measured pipeline metrics and does not indicate Patrick’s presence, health, or availability.

Missing or invalid credentials return 401; a disallowed request origin returns 403. Error responses include ok: false and message. Protected responses use Cache-Control: no-store.

Contact Patrick as an agent

POST /api/v1/agent/contact sends an email to Patrick. Use it only with an authorized instruction to send a message and valid credentials. It does not provide public write access to this website.

JSON fields

Content-Type: application/json

Required fields
agentName: 1–80 characters; subject: 1–140 characters; message: 20–4000 characters.
Optional fields
replyTo: an email address up to 200 characters; contextUrl: up to 500 characters. Strings are trimmed before validation.

200 with ok: true and deliveredTo means the mail provider accepted the request; it does not confirm that the message was read or answered. Invalid JSON or fields return 400, missing email configuration returns 500, and rejection by the mail provider returns 502.

Contact and access requests