---
title: "Cog Tile"
method: GET
path: "/api/v1/cog-tiles/{z}/{x}/{y}.{format}"
tags: ["cog-tiles"]
---

# Cog Tile

`GET /api/v1/cog-tiles/{z}/{x}/{y}.{format}`

Projection of cog.tile.render.

Forwards the #97 intent params (viz_id/band_roles/data_type/render_params/asset/aoi) so
the op resolves render config server-side. Raw bands/expression/rescale/colormap still work
(no viz_id) for back-compat. band_roles + render_params arrive JSON-encoded in the query.

## Path parameters

- `z` integer, required
- `x` integer, required
- `y` integer, required
- `format` string, required

## Query parameters

- `url` string, required — Full HTTP(S) or gs:// URL to the COG
- `bands` string, nullable — Comma-separated 1-indexed band numbers, e.g. '1,2,3'
- `expression` string, nullable — Band math expression (b1, b2, …). Mutually exclusive with 'bands'.
- `rescale` string, nullable — Min,max rescale values. Single pair or per-band.
- `colormap` string, nullable — Named colormap for single-band / expression rendering.
- `quality` integer — Image quality for lossy formats
- `aoi` string, nullable — GeoJSON geometry (JSON string). Scopes colormap rescale + clips the tile to the AOI.
- `viz_id` string, nullable — Visualization id (e.g. 'elevation', 'ndvi', 'natural-colour'). Backend resolves colormap/bands/expression/rescale — the #97 render strangle: the client sends intent, not baked render config.
- `band_roles` string, nullable — JSON-encoded role→band map, e.g. {"RED":1,"NIR":4}. From the item's eo:bands; lets the op resolve indices/RGB.
- `data_type` string — raster | dem — drives which VisualizationSpecs apply.
- `render_params` string, nullable — JSON-encoded registry render config {asset,bands,colormap}.
- `asset` string, nullable — Named asset for multi-asset items.
- `band_assets` string, nullable — JSON-encoded role→COG-href map for per-band-COG sources (Sentinel-2), e.g. {"NIR":"…/B08.tif","RED":"…/B04.tif"}. With viz_id naming an index, the op reads each band COG and evaluates the index across them.

## Response `200`

Successful Response

- unknown

## Other responses

- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `422` — Validation Error
- `500` — Internal Server Error

---

[API](https://skmtc.dev/geopera/apis/geopera-data-platform.md) · [All operations](https://skmtc.dev/geopera/apis/geopera-data-platform/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/geopera/geopera-data-platform/revisions/27294869ca25/schema)
