TiTiler Application

raw JSON →
2.0.2 verified Fri May 01 auth: no python

A modern dynamic tile server library built on top of FastAPI and Rasterio/GDAL. Version 2.0.2 is the latest stable release; it provides composable FastAPI routers for serving COG, STAC, and mosaic tiles. The package is part of the TiTiler ecosystem and is actively maintained by Development Seed.

pip install titiler-application
error ImportError: cannot import name 'TilerFactory' from 'titiler'
cause Incorrect import path; TilerFactory moved to titiler.application.
fix
Use 'from titiler.application import TilerFactory'
error AttributeError: module 'titiler' has no attribute 'application'
cause Missing or incomplete installation of titiler-application package.
fix
Install titiler-application: pip install titiler-application
error pydantic.error_wrappers.ValidationError: 1 validation error for TilerFactory ...
cause In v2, TilerFactory requires explicit router addition; not all endpoints are auto-registered.
fix
Use TilerFactory().router and include it in the app manually.
breaking In v2.0.0, the default TilerFactory no longer auto-includes all endpoints. You must explicitly add routers or configure settings.
fix Review the new factory pattern: use TilerFactory() and .include_router() explicitly.
deprecated The titiler.mosaic metapackage is deprecated; use titiler-application directly.
fix Install titiler-application instead of titiler.mosaic.
gotcha When deploying with AWS Lambda, you must set CPYTHON_GC_RETAIN to avoid memory issues with GDAL.
fix Set environment variable CPYTHON_GC_RETAIN=1 in Lambda configuration.
gotcha In v2, the 'assets' parameter is required for STAC and mosaic endpoints; use 'assets=:all:' to select all bands.
fix Always provide assets parameter, e.g., assets=:all:.

Minimal FastAPI app with COG and multi-band tiler endpoints.

from fastapi import FastAPI
from titiler.application import TilerFactory
from titiler.core.factory import MultiBandTilerFactory
from titiler.core.resources.enums import ImageType

app = FastAPI()

# COG tiler with default settings
cog_tiler = TilerFactory()
app.include_router(cog_tiler.router, prefix="/cog")

# Multi-band tiler
multi_tiler = MultiBandTilerFactory()
app.include_router(multi_tiler.router, prefix="/multi")

# Optional: enable CORS
from titiler.core.middleware import CORSMiddleware
app.add_middleware(CORSMiddleware, allow_origins=["*"])