The whole source, organized and ready to query: every endpoint on this page answers in milliseconds. Every response carries
as_of: how current the data is. How datasets work.Search the notices
POST /co/anm/notices-search/v1 Dataset
One search over every notice since May 2020, by placa, office, kind or date, or with free text over the full text.
as_of (how current the data is), the applied filters, total (matches across every page), page, per_page, total_pages, count and results[], most recently published first. Every result carries id (the notice’s permanent identifier, e.g. GGDN-2026-P-0378.pdf), notice_number (e.g. GGDN-2026-EST-165), type (estado, aviso, edicto or caracter_general), office (the regional office, e.g. Bogotá), publication_date, year, title_numbers (every placa the notice covers), text_status (extracted, no_text_layer or unavailable) and document_url (the notice’s document as the ANM publishes it).
Search results leave out the text.
query still matches against it, so a phrase from the body finds the notice; read the text itself with the ANM Notice endpoint.One notice, in full
POST /co/anm/notice/v1 Dataset
as_of, found, notice_id and notice, which carries everything the search returns plus content: a window onto the notice’s full text, with text, offset, total_length, has_more and next_offset. Every result carries id (the notice’s permanent identifier, e.g. GGDN-2026-P-0378.pdf), notice_number (e.g. GGDN-2026-EST-165), type (estado, aviso, edicto or caracter_general), office (the regional office, e.g. Bogotá), publication_date, year, title_numbers (every placa the notice covers), text_status (extracted, no_text_layer or unavailable) and document_url (the notice’s document as the ANM publishes it).
content is null when text_status is no_text_layer (the ANM published the notice as an image) or unavailable; document_url still links the document.An
id the ANM has not published returns found: false with HTTP 200, not an error.Full reference
Schemas, all response fields, and an interactive playground.