What it means
Either the URL path doesn’t match any route we serve, or the resource identified by the URL doesn’t exist (or hasn’t been created yet).Common causes
| Cause | Fix |
|---|---|
Typo in the path (/v1/me/seatime vs /v1/me/sea-time) | Check the API reference. |
Missing API version prefix (/me/sea-time vs /v1/me/sea-time) | Always include /v1. Future versions ship under /v2. |
| User has no sea time record yet | This is a real-world state for new crew. Render an empty state. |
| User has no vessel history yet | Same. The list endpoint returns 200 with an empty vessels array — a true 404 only fires on /v1/me/sea-time for users with no record. |
| Sandbox test user doesn’t exist | Sandbox is seeded with a small set of test users. Use one of those. |
What to do
Distinguish these two cases:- Route doesn’t exist — programming error, fix the URL.
- Resource doesn’t exist — render an empty state. Don’t retry. A new
user with no sea-time record will receive
webhook user.sea_time.updatedthe moment one is created.

