> ## Documentation Index
> Fetch the complete documentation index at: https://docs.usecroma.com/llms.txt
> Use this file to discover all available pages before exploring further.

# TransMilenio

> A rede de transporte público de Bogotá (TransMilenio, alimentadores, ônibus zonais do SITP e TransMiCable): cada parada e rota, as partidas programadas em qualquer parada, e ao vivo a posição dos veículos, as chegadas e os alertas do serviço.

A TransMilenio S.A. opera o sistema integrado de transporte público de Bogotá:
os corredores do TransMilenio, suas rotas alimentadoras, os ônibus zonais do
SITP e o TransMiCable. Publica todo o quadro de horários a cada manhã e a posição
de cada veículo a cada poucos segundos. Cerca de 8.300 paradas e estações, 1.080
rotas e 9,4 milhões de paradas programadas por semana.

Encontre uma parada pelo nome ou perto de um ponto, veja quais rotas passam por
ela e quando saem as próximas, siga uma rota parada por parada no mapa e veja
onde estão os ônibus agora. Os endpoints de horário respondem com dados
atualizados diariamente; os endpoints ao vivo leem a rede enquanto ela opera, a
cada cerca de 20 segundos.

## Buscar paradas

`POST /co/transmilenio/stops-search/v1` [Dataset](https://docs.usecroma.com/pt/datasets.md)

Encontra paradas e estações pelo nome, pela rota ou ao redor de um ponto.
Comece aqui para obter o `stop_id` que os demais endpoints usam.

| Campo | Tipo | Notas |
| - | - | - |
| `query` | string | Opcional. Palavras do nome, ou o código, p. ex. `Portal Norte`, `Calle 72`. |
| `route` | string | Opcional. Um `route_id`, ou o código impresso no ônibus (`B10`, `C25`, `T25`); um código cobre todos os sentidos da rota. |
| `kind` | enum | Opcional. `station` ou `stop` (uma plataforma ou uma parada de rua). Ambos por padrão. |
| `latitude` | number,null | Opcional. Latitude de um ponto, p. ex. `4.6486`. Com `longitude`, só o que está a menos de `radius_m`, o mais próximo primeiro. Por padrão `null`. |
| `longitude` | number,null | Opcional. Longitude do ponto, p. ex. `-74.0633`. Por padrão `null`. |
| `radius_m` | integer | Opcional. Metros ao redor do ponto, 50-5000. Padrão `500`. Por padrão `500`. |
| `page` | integer | Opcional. Página, começa em 1. Por padrão `1`. |
| `per_page` | integer | Opcional. Resultados por página, 1-100. Por padrão `20`. |

```bash theme={"dark"}
curl https://api.croma.run/co/transmilenio/stops-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "query": "Portal Norte" }'
```

Retorna `as_of`, `total`, `total_is_exact`, `page`, `per_page`, `total_pages`, `count` e `stops[]`; cada parada traz `distance_m` quando a busca é ao redor de um ponto.

Cada parada é `{ stop_id, code, name, kind, parent_station, latitude, longitude, wheelchair_boarding, zone_id, route_ids[], route_codes[], routes[], systems[], platforms[] }`.

* `kind`: `station` (uma estação do TransMilenio ou do TransMiCable, que tem plataformas) ou `stop` (uma plataforma dentro de uma estação, ou uma parada de rua do SITP).
* `routes[]`: cada rota que para ali, `{ route_id, short_name, long_name, system }`. Uma estação reúne as rotas de todas as suas plataformas.
* `platforms[]`: para uma estação, o `stop_id` de cada plataforma.
* `systems[]`: `troncal`, `alimentador`, `dual`, `zonal_urbano`, `zonal_complementario`, `zonal_especial`, `transmicable`.

## Uma parada

`POST /co/transmilenio/stop/v1` [Dataset](https://docs.usecroma.com/pt/datasets.md)

Retorna uma parada ou estação pelo id.

| Campo | Tipo | Notas |
| - | - | - |
| `stop_id` | string | **Obrigatório.** O `stop_id` da busca de paradas, p. ex. `10000`. Uma estação cobre todas as plataformas dela. |

```bash theme={"dark"}
curl https://api.croma.run/co/transmilenio/stop/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "stop_id": "10000" }'
```

Retorna `as_of`, `found`, `stop` e, para uma plataforma, `station`. Um id desconhecido responde `found: false`.

## Partidas de uma parada

`POST /co/transmilenio/stop-departures/v1` [Dataset](https://docs.usecroma.com/pt/datasets.md)

O quadro de horários de uma parada: as próximas partidas a partir de agora, ou
de qualquer horário em qualquer dia.

| Campo | Tipo | Notas |
| - | - | - |
| `stop_id` | string | **Obrigatório.** O `stop_id` da busca de paradas, p. ex. `10000`. Uma estação cobre todas as plataformas dela. |
| `date` | string | Opcional. `yyyy-mm-dd` em Bogotá. Hoje por padrão. |
| `from_time` | string | Opcional. `HH:MM`, 24 horas. Agora por padrão (o início do dia para outra data). |
| `route` | string | Opcional. Um `route_id`, ou o código impresso no ônibus (`B10`, `C25`, `T25`); um código cobre todos os sentidos da rota. |
| `limit` | integer | Opcional. Quantos retornar, 1-200. Padrão `20`. Por padrão `20`. |

```bash theme={"dark"}
curl https://api.croma.run/co/transmilenio/stop-departures/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "stop_id": "10000" }'
```

Retorna `as_of`, `found`, `stop_name`, `date`, `from_time`, `services` (os quadros de horários vigentes no dia), `count` e `departures[]`: `{ time, at, minutes_from_now, route_id, route_code, route_name, system, stop_id }`. `at` é ISO 8601 no horário de Bogotá (`-05:00`); `stop_id` é a plataforma de onde o ônibus sai. Rotas que terminam na parada ficam de fora: elas chegam, não saem.

## Buscar rotas

`POST /co/transmilenio/routes-search/v1` [Dataset](https://docs.usecroma.com/pt/datasets.md)

Encontra rotas por código, destino, sistema ou uma parada em que param.

| Campo | Tipo | Notas |
| - | - | - |
| `query` | string | Opcional. O código da rota ou palavras do destino, p. ex. `B10`, `Portal Suba`. |
| `system` | enum | Opcional. `troncal`, `alimentador`, `dual`, `zonal_urbano`, `zonal_complementario`, `zonal_especial` ou `transmicable`. |
| `stop_id` | string | Opcional. Só as rotas que param neste `stop_id` (em uma estação, em qualquer plataforma). |
| `page` | integer | Opcional. Página, começa em 1. Por padrão `1`. |
| `per_page` | integer | Opcional. Resultados por página, 1-100. Por padrão `20`. |

```bash theme={"dark"}
curl https://api.croma.run/co/transmilenio/routes-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "query": "B10" }'
```

Retorna `as_of`, `total`, `total_is_exact`, `page`, `per_page`, `total_pages`, `count` e `routes[]`.

Cada rota é `{ route_id, short_name, long_name, system, system_name, mode, color, text_color, stops_count, trips_per_week, first_departure, last_departure, services[], headways[] }`.

* `route_id`: cada sentido de uma rota tem o seu; `long_name` costuma ser o destino.
* `services[]`: cada quadro de horários da rota, `{ service_id, days[], trips, first_departure, last_departure }`. Os horários são `HH:MM:SS` do dia de serviço; depois de `24:00:00` é após a meia-noite.
* `headways[]`: janelas em que a rota opera por frequência e não por horário fixo (TransMiCable).

## Uma rota

`POST /co/transmilenio/route/v1` [Dataset](https://docs.usecroma.com/pt/datasets.md)

Retorna uma rota com suas paradas em ordem e, se pedido, seu traçado.

| Campo | Tipo | Notas |
| - | - | - |
| `route_id` | string | **Obrigatório.** O `route_id` da busca de rotas, p. ex. `10075`. |
| `include_geometry` | boolean | Opcional. `true` adiciona o traçado de cada percurso como GeoJSON `LineString`. Padrão `false`. Por padrão `false`. |

```bash theme={"dark"}
curl https://api.croma.run/co/transmilenio/route/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "route_id": "10075" }'
```

Retorna `as_of`, `found` e `route`: os campos da rota mais `patterns[]`, cada sequência de paradas distinta que ela opera, a mais frequente primeiro: `{ shape_id, trips_per_week, length_m, geometry, stops[] }`. Cada parada é `{ sequence, stop_id, name, code, latitude, longitude, offset_seconds }`, onde `offset_seconds` é o tempo programado desde a primeira parada.

## Veículos ao vivo

`POST /co/transmilenio/vehicles/v1` [Live](https://docs.usecroma.com/pt/live-lookups.md)

Onde estão os veículos agora, em uma rota ou ao redor de um ponto.

| Campo | Tipo | Notas |
| - | - | - |
| `route` | string | Opcional. Um `route_id`, ou o código impresso no ônibus (`B10`, `C25`, `T25`); um código cobre todos os sentidos da rota. |
| `latitude` | number,null | Opcional. Latitude de um ponto, p. ex. `4.6486`. Com `longitude`, só o que está a menos de `radius_m`, o mais próximo primeiro. Por padrão `null`. |
| `longitude` | number,null | Opcional. Longitude do ponto, p. ex. `-74.0633`. Por padrão `null`. |
| `radius_m` | integer | Opcional. Metros ao redor do ponto, 50-5000. Padrão `500`. Por padrão `500`. |
| `page` | integer | Opcional. Página, começa em 1. Por padrão `1`. |
| `per_page` | integer | Opcional. Veículos por página, 1-500. Padrão `100`. Por padrão `100`. |

```bash theme={"dark"}
curl https://api.croma.run/co/transmilenio/vehicles/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "route": "B10" }'
```

Retorna `as_of` (quando os veículos reportaram pela última vez), `total`, `page`, `per_page`, `total_pages`, `count` e `vehicles[]`: `{ vehicle_id, label, license_plate, latitude, longitude, bearing, speed_kmh, route_id, route_code, route_name, system, trip_id, trip_start_time, stop_id, stop_name, stop_status, reported_at, distance_m }`. `stop_status` é `incoming_at`, `stopped_at` ou `in_transit_to` em relação à parada indicada.

## Chegadas ao vivo em uma parada

`POST /co/transmilenio/stop-arrivals/v1` [Live](https://docs.usecroma.com/pt/live-lookups.md)

Os veículos indo para uma parada agora, o mais próximo primeiro.

| Campo | Tipo | Notas |
| - | - | - |
| `stop_id` | string | **Obrigatório.** O `stop_id` da busca de paradas, p. ex. `10000`. Uma estação cobre todas as plataformas dela. |
| `route` | string | Opcional. Um `route_id`, ou o código impresso no ônibus (`B10`, `C25`, `T25`); um código cobre todos os sentidos da rota. |
| `limit` | integer | Opcional. Quantos retornar, 1-200. Padrão `20`. Por padrão `20`. |

```bash theme={"dark"}
curl https://api.croma.run/co/transmilenio/stop-arrivals/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "stop_id": "10000" }'
```

Retorna `as_of`, `found`, `stop_name`, `count` e `arrivals[]`: `{ predicted_at, minutes_away, delay_seconds, stop_id, route_id, route_code, route_name, system, trip_id, vehicle_id, vehicle_label, license_plate }`. `delay_seconds` é positivo quando o veículo está atrasado em relação ao horário. Cada veículo é previsto na sua próxima parada, então a lista traz os veículos cuja próxima parada é esta.

## Alertas do serviço

`POST /co/transmilenio/alerts/v1` [Live](https://docs.usecroma.com/pt/live-lookups.md)

Os alertas vigentes agora, para toda a rede, uma rota ou uma parada.

| Campo | Tipo | Notas |
| - | - | - |
| `route` | string | Opcional. Um `route_id`, ou o código impresso no ônibus (`B10`, `C25`, `T25`); um código cobre todos os sentidos da rota. |
| `stop_id` | string | Opcional. Só os alertas que afetam este `stop_id` (em uma estação, qualquer plataforma). |

```bash theme={"dark"}
curl https://api.croma.run/co/transmilenio/alerts/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

Retorna `as_of`, `count` e `alerts[]`: `{ alert_id, cause, effect, header, description, url, active_periods[], routes[], stops[] }`. `effect` é `detour`, `no_service`, `reduced_service`, `significant_delays`, `stop_moved`, ...; os textos ficam em espanhol como o sistema os escreve.

> [card] [Referência completa](https://docs.usecroma.com/pt/api-reference/overview.md)
>
> Esquemas, todos os campos de resposta e um playground interativo.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.