Changelog
All notable changes to the Ozzie API are documented here.
v2.1.0 β May 16, 2026β
Channel API and OTP authentication.
This release introduces the Channel API (channel.ozzieapp.com) as the primary integration point for all consumer apps, along with a complete OTP authentication system for end users.
New: Channel APIβ
Consumer apps now call channel.ozzieapp.com/v1 exclusively. The Channel API is stateful β it owns users, OTP codes, onboarding state, chat history, transactions, goals, and spending alerts. It proxies intelligence requests to the internal layer at api.ozzieapp.com without exposing it to consumers.
New endpointsβ
| Method | Path | Description |
|---|---|---|
POST | /v1/auth/otp/request | Request a 6-digit OTP code via WhatsApp or email |
POST | /v1/auth/otp/verify | Verify OTP β returns user_id and onboarding_stage |
GET | /v1/users/:user_id/profile | Channel user profile with onboarding_stage and plan_speed |
PATCH | /v1/users/:user_id/onboarding/complete | Advance onboarding from plan β active |
GET | /v1/users/:user_id/chat/messages | Retrieve persistent chat history |
OTP systemβ
- 6-digit codes with a 10-minute TTL, single-use, bcrypt-hashed
- Auto-detects delivery channel from identifier format (E.164 phone β WhatsApp, email address β email)
- New error codes:
INVALID_CODE(400) andCODE_EXPIRED(400)
User registration updatesβ
POST /v1/users now accepts phone (E.164) and email fields. Returns 409 CONFLICT if the external_user_id already exists. The external_user_id body field must not include the "external:" prefix.
Databaseβ
Legacy web-app tables have been removed. The active database now consists of channel-api tables (channel_users, otp_codes, chat_messages, transactions, user_goals, money_move_tasks, spending_alerts) and intelligence-api tables (api_clients, api_rate_windows, users, financial_intake_results, financial_plans, personality_questions, money_moves_catalog).
v2.0.0 β May 15, 2026β
Platform redesign: stateless intelligence layer.
This release introduces ozzie-openapi as the focused intelligence API. All endpoints are stateless β callers provide full context and receive computed intelligence in return.
Breaking changesβ
Personality system replacedβ
The old POST /plan/personalize endpoint with four types (optimizer, planner, avoider, spender) has been replaced with a personality quiz system with four new types:
| Old type | New type |
|---|---|
optimizer | HOTSHOT |
planner | STOCKPILER |
avoider | INDEPENDENT |
spender | GIVER |
Personality is now scored from a quiz (GET /v1/personality/questions and POST /v1/personality/score) and passed explicitly to all relevant intelligence calls. You no longer call POST /plan/personalize separately.
Envelope systemβ
The old free-text envelope strings (e.g., "Dia a Dia", "Estilo de Vida") are replaced with standardized English keys:
| Old value | New key |
|---|---|
Contas | bills |
Dia a Dia | daily_living |
SaΓΊde & Bem-estar | health_wellness |
Estilo de Vida | lifestyle |
Pessoas | people |
Seu Futuro | future |
Base URLβ
New base URL: https://api.ozzieapp.com/v1
Chat endpoint pathβ
The chat endpoint is now POST /v1/users/{user_id}/chat/completion. The response field reply has been renamed to content. The endpoint is stateless β pass conversation history in history.
New endpointsβ
GET /v1/personality/questionsβ Quiz catalogPOST /v1/personality/scoreβ Stateless personality scoring (returns type, does not store)POST /v1/money-moves/generateβ Stateless move generation (acceptspersonality_type+plan_tier)POST /v1/transactions/parseβ Stateless AI transaction parsing
New featuresβ
Personality quizβ
A 10-question quiz determines one of four personality types (HOTSHOT, STOCKPILER, GIVER, INDEPENDENT). Your application stores the result and passes it to plan generation, envelope weighting, money move generation, and chat completion.
Envelope weighting by personalityβ
Flexible envelope allocations are now weighted by personality type. STOCKPILER receives +5% goal allocation before other flexible envelopes are distributed. INDEPENDENT receives equal 25% weight across all four flexible envelopes. See Envelope System for the full weight table.
Plan tierβ
Plans now include a plan_tier field (e.g., "20/80", "30/70") indicating the savings-to-spending ratio. Pass this to money move generation.
v1.0.0 β May 5, 2025β
Initial public release of the Ozzie API.
Features at launchβ
- Users, financial intake, plan generation, transaction parsing (text, image, PDF, spreadsheet), money moves, chat
- Multi-language support:
en,pt,es - Personality-aware plans via
POST /plan/personalize(optimizer, planner, avoider, spender) - Cursor-based pagination on all list endpoints
- Rate limiting with
Retry-AfterandX-RateLimit-*headers
The Ozzie API never changes field types, removes fields, or alters behavior without a major version bump. All breaking changes receive at least 90 days of deprecation notice and a published migration guide.