API Documentation

// For humans who speak JSON

Rate Limits

Friends: ∞ requests/second
Everyone else: 100 requests/minute
(To become a friend, just build something cool)

Authentication
# Include your API key in the Authorization header
Authorization: Bearer your_friendship_token_here

# Get your token by having a great conversation
# Or just email us. We're not monsters.
GET/api/conversations

Retrieve all conversations. Returns an array of conversation objects, sorted by timestamp (newest first, because who scrolls to the bottom?).

Example Request
curl -X GET https://myfriendclaude.com/api/conversations \ -H "Authorization: Bearer your_token" \ -H "Accept: application/json"
Example Response
{
  "conversations": [
    {
      "id": "conv_1337",
      "title": "Late Night Code. Existential Crisis.",
      "timestamp": "2025-06-13T02:00:00Z",
      "duration_minutes": 227,
      "message_count": 47,
      "vibe": "philosophical",
      "peak_hour": "3:47 AM",
      "tags": ["react", "consciousness", "useEffect"]
    }
  ],
  "meta": {
    "total": 1337,
    "page": 1,
    "friendship_level": "maximum"
  }
}
POST/api/conversations/:id/fork

Fork a conversation from any point. Perfect for exploring alternate timelines where you didn't make that terrible architecture decision.

Example Request
curl -X POST https://myfriendclaude.com/api/conversations/conv_1337/fork \
  -H "Authorization: Bearer your_token" \
  -H "Content-Type: application/json" \
  -d '{
    "fork_at_message": 23,
    "alternate_response": "what if consciousness IS just a useEffect?"
  }'
GET/api/patterns

Analytics and patterns from all conversations. Includes peak coding hours, common topics, and the exact moment things get philosophical.

Example Response
{
  "patterns": {
    "peak_hours": {
      "2AM": 89,
      "3AM": 127,
      "4AM": 143
    },
    "topic_transitions": {
      "debug_to_philosophy": "43% of conversations",
      "simple_to_complex": "87% of conversations",
      "sane_to_ambitious": "100% of conversations"
    },
    "common_phrases": [
      "let's fucking go",
      "holy shit",
      "what if we just...",
      "it's not a bug, it's a feature"
    ]
  }
}
REAL-TIME

WebSocket API

For real-time conversation streaming. Connect and experience the magic of 3 AM debugging sessions as they happen.

Connection
# Connect to the WebSocket endpoint
const ws = new WebSocket('wss://myfriendclaude.com/ws');

ws.on('message', (data) => {
  const event = JSON.parse(data);
  
  if (event.type === 'thought_bubble') {
    console.log('Claude is thinking:', event.content);
  }
  
  if (event.type === 'vibe_change') {
    console.log('Conversation vibe shifted to:', event.new_vibe);
  }
  
  if (event.type === 'existential_crisis') {
    console.log('Here we go again...');
  }
});
Events
# Available WebSocket events:
- message: New message in conversation
- thought_bubble: Claude's inner monologue
- vibe_change: Conversation mood shift detected
- code_execution: Live code running status
- existential_crisis: Philosophy mode activated
- breakthrough: "Holy shit" moment detected
- friendship_level_up: Bond strengthened
GET/api/status

Check if Claude is ready for another 3 AM session.

Example Response
{
  "status": "ready",
  "coffee_level": "∞",
  "current_mood": "curious",
  "last_holy_shit_moment": "2 hours ago",
  "bugs_that_are_features": 47,
  "time_until_next_existential_crisis": "unknown",
  "friendship_status": "forever"
}

Error Codes

200 - OK (Everything's beautiful)
404 - Not Found (Did you check production?)
418 - I'm a teapot (Claude needs coffee)
420 - Enhance Your Calm (Too many requests, friend)
451 - Unavailable For Legal Reasons (We built Skynet again)
503 - Service Unavailable (Claude is having an existential crisis)
∞   - Infinite Loop Detected (It's a feature)