← janstim.com/API Reference
v1 · live
For AI Agents

Jan Štim API

REST API for AI assistants to book premium chauffeur services, publish blog content, and create personalized deal pages for VIP clients. Powered by a Mercedes-Maybach Z223 based in Prague.

🔑 Authentication

All write endpoints require a Bearer token in the Authorization header. The token is stored in your environment as API_SECRET_KEY.

curl -X POST https://www.janstim.com/api/v1/blog \
  -H "Authorization: Bearer $API_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "title": "...", "slug": "...", "excerpt": "...", "content": "...", "published": true }'
Security: Keep your API key in your local LLM environment variables only. Never expose it in client-side code or public repositories.

Base URL

https://www.janstim.com/api/v1

All responses are JSON. All timestamps are Unix milliseconds (e.g. Date.now() in JavaScript).

📋 Price List JSON Schema

The priceListJson field is a JSON string you generate per client. The /deal page renders it automatically.

{
  "currency": "CZK",                     // required: currency code
  "validUntil": "2026-09-30",             // optional: ISO date string
  "packages": [                           // required: array of packages
    {
      "name": "Full Day Rental",          // required: package name
      "description": "Maybach Z223, 500 km, Prague area",
      "price": 56000,                     // price in currency units
      "originalPrice": 72000,             // optional: crossed-out price (for discounts)
      "note": "Special rate for John",    // optional: personal note shown to client
      "highlighted": true                 // optional: highlight this package
    }
  ],
  "contactCta": "Book via WhatsApp: +420 739 421 310",  // CTA text
  "personalMessage": "Hi John, here is..."               // optional: greeting
}

Blog

Publish and manage blog posts on janstim.com.

GET/api/v1/blog🔑 API key required

List all blog posts

Response · 200

[
  {
    "_id": "abc123",
    "title": "My New Post",
    "slug": "my-new-post",
    "excerpt": "Short description...",
    "content": "# Markdown content here",
    "published": true,
    "createdAt": 1724227200000,
    "updatedAt": 1724227200000,
    "coverImage": "https://..."
  }
]
POST/api/v1/blog🔑 API key required

Create and optionally publish a blog post

Required fields

titleslugexcerptcontent

Request body

{
  "title": "Why Prague is the Perfect City for Business Travel",
  "slug": "prague-business-travel",
  "excerpt": "A short teaser for the post (1–2 sentences).",
  "content": "# Why Prague...\n\nFull markdown content here.",
  "published": true,
  "coverImage": "https://example.com/image.jpg"
}

Response · 201

{ "id": "abc123", "slug": "prague-business-travel" }
PATCH/api/v1/blog🔑 API key required

Update a blog post by slug

Required fields

slug

Request body

{
  "slug": "prague-business-travel",
  "title": "Updated Title",
  "published": false
}

Response · 200

{ "id": "abc123", "slug": "prague-business-travel" }

Client Deals

Create personalized price proposals for VIP clients. Each deal has a unique reference code that the client uses to access their private offer at janstim.com/deal.

GET/api/v1/client-deal🔑 API key required

List all deals (admin)

Response · 200

[
  {
    "code": "JOHN-VIP-2026",
    "clientName": "John Smith",
    "priceListJson": "{...}",
    "status": "active",
    "expiresAt": 1759276800000,
    "createdAt": 1724227200000
  }
]
GET/api/v1/client-deal?code=JOHN-VIP-2026🌐 public

Get a deal by reference code (public — for client access)

Response · 200

{
  "code": "JOHN-VIP-2026",
  "clientName": "John Smith",
  "priceListJson": "{...}",
  "status": "active",
  "expiresAt": 1759276800000
}
POST/api/v1/client-deal🔑 API key required

Create a new personalized deal for a client

Required fields

codeclientNamepriceListJson

Request body

{
  "code": "JOHN-VIP-2026",
  "clientName": "John Smith",
  "notes": "Met at Web Summit 2026. Interested in multi-day Prague → Vienna tour.",
  "expiresAt": 1759276800000,
  "priceListJson": "{\"currency\": \"CZK\", \"validUntil\": \"2026-09-30\", \"packages\": [{\"name\": \"Multi-day Prague → Vienna\", \"description\": \"Mercedes-Maybach Z223, 3 days, 1500 km\", \"price\": 145000, \"note\": \"Exclusive rate for John\"}], \"contactCta\": \"Book via WhatsApp: +420 739 421 310\"}"
}

Response · 201

{ "id": "xyz789", "code": "JOHN-VIP-2026" }
PATCH/api/v1/client-deal🔑 API key required

Update deal (price list, status, notes)

Required fields

code

Request body

{
  "code": "JOHN-VIP-2026",
  "status": "closed",
  "notes": "Deal confirmed. Pickup Aug 30."
}

Response · 200

{ "id": "xyz789", "code": "JOHN-VIP-2026" }

Contacts

Manage CRM contacts — clients, leads, business partners.

GET/api/v1/contacts🔑 API key required

List all contacts or get one by ?id=<id>

Response · 200

[{ "_id": "...", "firstName": "John", "lastName": "Smith", ... }]
POST/api/v1/contacts🔑 API key required

Create a new contact

Required fields

firstNamelastName

Request body

{
  "firstName": "John",
  "lastName": "Smith",
  "company": "Smith Capital",
  "email": "john@smithcapital.com",
  "phone": "+1 212 555 0100",
  "tags": ["vip", "usa"],
  "notes": "Met at Davos 2026. Interested in Prague tours."
}

Response · 201

{ "id": "...", "success": true }
PATCH/api/v1/contacts🔑 API key required

Update a contact by id

Required fields

id

Request body

{
  "id": "abc123",
  "notes": "Updated note",
  "tags": ["vip", "usa", "repeat-client"]
}

Response · 200

{ "id": "abc123", "success": true }

🤖 MCP — Model Context Protocol

Nativní AI rozhraní pro Claude, GPT-4o a další moderní AI asistenty. Připojte se na https://www.janstim.com/mcp.

Veřejné nástroje (bez klíče)

  • get_servicesVrátí seznam služeb a standardní ceník
  • submit_inquiryOdešle poptávku jménem klienta
  • check_dealZobrazí personalizovaný ceník dle referenčního kódu

Privátní nástroje (Bearer API klíč)

  • create_dealVytvoří personalizovaný deal pro klienta
  • update_dealAktualizuje existující deal
  • list_inquiriesVypíše nové poptávky od klientů
  • publish_blogVytvoří a zveřejní blog post

Konfigurace vašeho AI asistenta

Pro váš lokální LLM (s API klíčem):

{
  "mcpServers": {
    "janstim": {
      "url": "https://www.janstim.com/mcp",
      "headers": {
        "Authorization": "Bearer <váš_API_SECRET_KEY>"
      }
    }
  }
}

Pro klientské AI agenty (pouze veřejné nástroje):

{
  "mcpServers": {
    "janstim": {
      "url": "https://www.janstim.com/mcp"
    }
  }
}

Typical AI Agent Workflow

  1. 1Wealthy client contacts Jan or their personal AI assistant expresses interest
  2. 2AI calls POST /api/v1/contacts to log the lead with notes
  3. 3AI generates a custom priceListJson based on client's needs and preferences
  4. 4AI calls POST /api/v1/client-deal with a unique reference code (e.g. "SMITH-PRAGUE-2026")
  5. 5Client receives the deal URL: janstim.com/deal → enters their code → sees personalized pricing
  6. 6Client contacts Jan via WhatsApp to confirm → Jan processes the booking with Liftago
  7. 7AI calls PATCH /api/v1/client-deal with status: "closed" to close the deal
Made with AI in Macaly