not_found
We deliberately collapse “doesn’t exist” and “exists but you can’t see
it” into a single 404 so that attackers cannot enumerate which resource
ids exist outside their workspace by replaying ids and looking for
401/403/404 differences.
This means a 404 can mean any of:
- The id doesn’t exist at all.
- The id is malformed (wrong prefix, e.g. you sent a
note_*to/v1/posts/). - The id exists but belongs to a different workspace than the one your API key authenticates.
- The id exists but its parent project is archived/deleted, so the resource is no longer reachable.
- The id has the right prefix for the endpoint (
note_for notes,post_for posts,proj_for projects,src_for sources). - You’ve copied the full id, including the prefix.
- The id was created inside the workspace whose API key you’re using.