---
title: "Banco de la República Publication"
method: POST
path: "/co/banrep-research/publication/v1"
tags: ["Colombia", "Banco de la República: research and reports"]
---

# Banco de la República Publication

`POST /co/banrep-research/publication/v1`

## Request

- Base URL: `https://api.croma.run`
- URL: `https://api.croma.run/co/banrep-research/publication/v1`
- Auth: HTTP bearer

Retrieve one publication of the Banco de la República (Colombia) by its handle, the `id` of a search result (e.g. `11430`), or its handle link: everything the search returns plus the text of its main document, a character range at a time (`offset`, `limit`; follow `next_offset` until `has_more` is false), and links to a copy of every file published with it. Find a handle with `banrep_research_publications_search`. Served by Croma (`as_of` says how current the data is).

**Dataset endpoint**: answers from the whole source in milliseconds and carries `as_of`.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `handle` string, required: The publication's handle, the `id` of a search result (e.g. `11430`), or its link (`https://hdl.handle.net/20.500.12134/11430`).
  - `offset` integer: First character of the range to return. Pass the previous response's `next_offset` to continue reading.
  - `limit` integer: Maximum characters to return (1000-1000000).

## Response `200`

Successful response

- BanrepResearchPublicationResponse
  - `data` BanrepResearchPublicationData, required
    - `as_of` string, nullable, required: How current the data in this response is.
    - `found` boolean, required: False when the repository holds no publication under that handle.
    - `handle` string, required
    - `publication` object, nullable, required
      - `id` string, required: The publication's handle number in the Banco de la República's repository, e.g. `11430`.
      - `handle_url` string, required: The publication's permanent handle link, e.g. `https://hdl.handle.net/20.500.12134/11430`.
      - `series` 'borradores' | 'regional_working_papers' | 'regional_essays' | 'espe' | 'monetary_policy_report' | 'financial_stability_report' | 'financial_stability_special_reports' | 'financial_stability_topics' | 'board_report_to_congress' | 'icer' | 'regional_bulletin' | 'labour_market_report' | 'credit_report' | 'financial_markets_report' | 'other', required: The series it belongs to, e.g. `borradores` or `regional_bulletin`; `other` for books, chapters and the smaller series.
      - `collection` string, nullable, required: The repository collection it is filed in, by name, e.g. `Borradores de Economía` or `Boletín Económico Regional`.
      - `series_title` string, nullable, required: The series as the publication names itself, e.g. `Boletín Económico Regional - Costa Caribe`.
      - `number` string, nullable, required: Its number in the series where it has one, e.g. `Borrador 1371`.
      - `title` string, required: The title as published.
      - `title_alternative` string, nullable, required: The title in the other language, where the repository carries one.
      - `authors` string[], required: The people who wrote it, as `Surname-Surname, Given names`.
      - `corporate_authors` string[], required: The institutions credited as authors, e.g. `Banco de la República de Colombia` or `DANE`.
      - `date` string, nullable, required: The publication date at the precision the repository gives: `yyyy`, `yyyy-mm` or `yyyy-mm-dd`.
      - `published_on` string, nullable, required: `yyyy-mm-dd` of `date`, the first day of the month or year when the date is less precise. The `from_date` and `to_date` filters read it.
      - `year` number, nullable, required: The year of publication.
      - `language` string, nullable, required: The ISO 639-2 language of the text: `spa` or `eng`.
      - `type` string, nullable, required: The kind of publication, e.g. `Working Paper`, `Report` or `Book`.
      - `abstract` string, nullable, required: The abstract in Spanish.
      - `abstract_en` string, nullable, required: The abstract in English.
      - `abstract_en_truncated` boolean, required: True when the repository holds the English abstract cut at 255 characters, as it does for many older working papers; the full text is in the document.
      - `summary` string, nullable, required: The longer non-technical summary the newer working papers carry (approach, contribution, results).
      - `keywords` string[], required: The Spanish keywords.
      - `keywords_en` string[], required: The English keywords.
      - `jel_codes` object[], required: The JEL classification codes, with their labels.
        - `code` string, required: The JEL code, e.g. `E52`.
        - `label` string, nullable, required: Its English label as the Banco de la República files it, e.g. `Monetary Policy`.
      - `subjects` string[], required: The subject headings, often with a place and a year, e.g. `Mercado laboral -- Costa Caribe (Región, Colombia) -- 2026`.
      - `topic` string, nullable, required: The Banco de la República's own topic, e.g. `6. Actividad económica y mercado laboral`.
      - `regions` string[], required: The Colombian departments the publication covers, as the repository names them. The regional bulletins and ICER reports carry them.
      - `branch` string, nullable, required: The Banco de la República branch that produced it, e.g. `Cartagena` or `Bogotá`.
      - `doi` string, nullable, required: The DOI link, e.g. `https://doi.org/10.32468/be.1371`.
      - `repec_id` string, nullable, required: The RePEc handle, e.g. `RePEc:bdr:borrec:1371`.
      - `pages` string, nullable, required: The length as published, e.g. `21 páginas`.
      - `license` string, nullable, required: The licence the Banco de la República publishes it under, as a link, e.g. `https://creativecommons.org/licenses/by-nc-sa/4.0/`.
      - `portal_url` string, nullable, required: The publication's page on banrep.gov.co, where there is one.
      - `document_url` string, nullable, required: Croma's byte-identical copy of the main document (the publication's PDF).
      - `source_document_url` string, nullable, required: The main document's link at the Banco de la República's repository.
      - `documents` object[], required: Every file published with it, the main document first: English versions, summaries, boxes, annexes, data files and charts, each with Croma's copy.
        - `name` string, required: The file name the Banco de la República published it under, e.g. `be_1371.pdf`.
        - `description` string, nullable, required: What the file is, as the repository describes it: the publication itself, an English version, a summary, a box, an annex or a chart.
        - `content_type` string, required: The file's media type, e.g. `application/pdf`.
        - `bytes` number, required: The file's size in bytes.
        - `md5` string, nullable, required: The MD5 checksum the repository publishes for the file; our copy matches it.
        - `document_url` string, nullable, required: Croma's byte-identical copy of the file. Null when the repository no longer serves it.
        - `source_document_url` string, required: The file's link at the Banco de la República's repository.
      - `text_status` 'ok' | 'truncated' | 'missing', required: `ok` when the main document's whole text is here; `truncated` when it is longer than this field keeps (read the document for the rest); `missing` when the repository has no text for it.
      - `text_length` number, nullable, required: Characters in the main document's whole text, however much of it `text` keeps.
      - `source_updated_at` string, required: When the repository last changed the publication's record.
      - `content` object, nullable, required: A range of the main document's text, or null when `text_status` is `missing`.
        - `text` string, required: The requested character range of the main document's text.
        - `offset` number, required: First character of the range, which is where the reading actually started.
        - `total_length` number, required: Length of the text Croma keeps in characters, however much of it this response carries.
        - `has_more` boolean, required: Whether the text continues past this range.
        - `next_offset` number, nullable, required: Pass this back as `offset` to read the next range. Null at the end of the text.

## Other responses

- `400`: Invalid request body
- `401`: Missing or invalid API key
- `429`: Rate limit exceeded
- `500`: Internal error
- `502`: Upstream source returned an error

---

[API](https://skmtc.dev/usecroma/apis/croma-marketplace-api.md) · [All operations](https://skmtc.dev/usecroma/apis/croma-marketplace-api/llms.txt) · [OpenAPI document](https://skmtc.dev/usecroma/apis/croma-marketplace-api/revisions/df016cdb29d7?raw)
