# Authentication ## Dual-token model Every request carries two credentials: | Token | Header | Purpose | |---|---|---| | Service token | `X-Kumiho-Token` | Identifies the tenant / project context. Issued by the control plane. | | Firebase ID token | `Authorization: Bearer ` | Identifies the viewer (anonymous or signed-in user). | ### Why two tokens? - The FastAPI layer is **stateless** and stores **no secrets**. - Service tokens enforce **tenant isolation**. - Viewer tokens enable **anonymous vs authenticated** access policies. ## Local testing If you only need to explore the API surface, the OpenAPI docs are available at: - `/docs` (Swagger UI) - `/redoc`