TekTree API Contracts
Version: 1.0.0 Last Updated: 2025-12-16 Status: Foundation (Pre-Implementation) API Version: v1Base Configuration
Production Base URL:https://api.tektree.com/v1
Staging Base URL: https://staging-api.tektree.com/v1
Development Base URL: http://localhost:8000/v1
Protocol: HTTPS only (HTTP redirects to HTTPS)
Content-Type: application/json
Authentication: Bearer token (JWT)
Authentication
Headers
Access Token
- Type: JWT (RS256)
- Lifetime: 15 minutes
- Location: Authorization header
- Format:
Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
Refresh Token
- Type: Opaque token
- Lifetime: 7 days (30 days with “remember me”)
- Location: HTTP-only, Secure, SameSite cookie
- Name:
tektree_refresh_token
Rate Limiting
Rate Limit Headers
Limits by Tier
| Tier | Requests/Minute | Burst Allowance |
|---|---|---|
| Free | 100 | 200 (10s) |
| Pro | 1000 | 2000 (10s) |
| Team | 5000 | 10000 (10s) |
| Enterprise | Unlimited | Unlimited |
Rate Limit Exceeded Response
Error Responses
Standard Error Format
Common Error Codes
| HTTP Status | Error Code | Description |
|---|---|---|
| 400 | INVALID_REQUEST | Request validation failed |
| 401 | UNAUTHORIZED | Missing or invalid auth token |
| 403 | FORBIDDEN | Insufficient permissions |
| 404 | NOT_FOUND | Resource not found |
| 409 | CONFLICT | Resource conflict (duplicate) |
| 422 | VALIDATION_ERROR | Business logic validation failed |
| 429 | RATE_LIMIT_EXCEEDED | Too many requests |
| 500 | INTERNAL_ERROR | Server error |
| 503 | SERVICE_UNAVAILABLE | Service temporarily down |
API Endpoints
1. Authentication
POST /auth/register
Description: Register a new user account Authentication: None Request:201 Created
POST /auth/login
Description: Authenticate user and obtain tokens Authentication: None Request:200 OK
tektree_refresh_token (HTTP-only, Secure, SameSite)
POST /auth/refresh
Description: Refresh access token using refresh token Authentication: Refresh token (cookie) Response:200 OK
POST /auth/logout
Description: Invalidate tokens and logout Authentication: Required Response:204 No Content
2. Users
GET /users/me
Description: Get authenticated user’s profile Authentication: Required Response:200 OK
PATCH /users/me
Description: Update authenticated user’s profile Authentication: Required Request:200 OK (returns updated user object)
GET /users/:handle
Description: Get public user profile by handle Authentication: Optional Response:200 OK
3. Knowledge - Areas
POST /areas
Description: Create a new knowledge area Authentication: Required Tier Gate: Level 3+ Request:201 Created
GET /areas
Description: List all public areas Authentication: Optional Query Parameters:parent_id(string): Filter by parent areatags(string): Comma-separated tag filtersearch(string): Search in title/detailspage(int, default: 1)limit(int, default: 20, max: 100)
200 OK
4. Knowledge - Questions
POST /questions
Description: Post a new question Authentication: Required Quota: Free (20/month), Pro (200/month) Request:201 Created
GET /questions/:id
Description: Get question details with answers Authentication: Optional Response:200 OK
POST /questions/:id/answers
Description: Submit an answer to a question Authentication: Required Request:201 Created
5. Knowledge - Insights
POST /insights
Description: Publish a new insight (article/tutorial) Authentication: Required Tier Gate: Level 4+ Quota: Free (5/month), Pro (50/month) Request:201 Created
6. Social - Likes
POST /likes
Description: Like a content item Authentication: Required Request:201 Created
DELETE /likes/:id
Description: Unlike a content item Authentication: Required Response:204 No Content
7. Gamification
GET /gamification/profile
Description: Get authenticated user’s gamification profile Authentication: Required Response:200 OK
GET /gamification/achievements
Description: List all achievements with unlock status Authentication: Required Response:200 OK
GET /gamification/leaderboard
Description: Get leaderboard rankings Authentication: Optional Query Parameters:type(string):global|weekly|monthly|area:{area_id}limit(int, default: 100)
200 OK
8. Subscriptions & Payments
GET /subscriptions/me
Description: Get authenticated user’s subscription details Authentication: Required Response:200 OK
POST /checkout/create
Description: Create Polar checkout session for subscription upgrade Authentication: Required Request:200 OK
9. Real-Time WebSocket
WebSocket Endpoint
wss://api.tektree.com/v1/ws
Connection:
notifications- User notificationspresence:{content_id}- Content presence trackingleaderboard:{type}- Leaderboard updatesxp- Real-time XP updates
Pagination
All list endpoints support pagination with consistent parameters: Query Parameters:page(int, default: 1)limit(int, default: 20, max: 100)sort(string): Sort field (e.g.,created_at,-upvotes)filter(string): Filter expression (TBD)
Versioning Strategy
Current Version: v1 Versioning Method: URL path (/v1/, /v2/)
Deprecation Policy:
- New version announced 3 months before release
- Old version supported for 12 months after new version release
- Deprecation warnings in response headers:
X-API-Deprecated: true
Document Status: ✅ Complete Related Documents:
ARCHITECTURE_OVERVIEW.md, EVENT_CATALOG.md, SECURITY_ARCHITECTURE.md