---
title: "INVIMA Medicines Search"
method: POST
path: "/co/invima/medicines-search/v1"
tags: ["Colombia", "INVIMA"]
---

# INVIMA Medicines Search

`POST /co/invima/medicines-search/v1`

## Request

- Base URL: `https://api.croma.run`
- URL: `https://api.croma.run/co/invima/medicines-search/v1`
- Auth: HTTP bearer

Search every commercial presentation of every medicine registered with INVIMA (Colombia), about 163,000 with their CUM code (Código Único de Medicamento): the registration and its status, holder, ATC code, pharmaceutical form, active ingredients with concentration, routes, pack, whether the presentation is active, and the manufacturers and importers. Free text matches the name, the active ingredients, the holder and the ATC description. Filter by `active_ingredient` (exact, e.g. `ACETAMINOFEN`), `atc_code` (a code or a prefix such as `N02`), `registration_number`, `file_number`, `holder`, `status` (`vigente`, `vencido` and others), `cum_status` (`activo`/`inactivo`) and the expiry date. Read one presentation with `invima_medicine`. 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
  - `query` string: Optional search terms matched against the medicine's name, its active ingredients, the holder and the ATC description.
  - `registration_number` string: Optional registration or notification number in any spelling, e.g. `INVIMA 2020M-0019848`, `2020M-0019848` or `NSO-PC-C 32.233 -VE`. Spaces, hyphens, dots and case are ignored.
  - `file_number` string: Optional INVIMA file number (expediente), e.g. `20042480`: every presentation of that one registration.
  - `active_ingredient` string: Optional active ingredient as INVIMA names it, e.g. `ACETAMINOFEN` or `AMOXICILINA TRIHIDRATO`. Exact match; case and accents are ignored.
  - `atc_code` string: Optional ATC code or prefix, e.g. `N02BE51` for a substance or `N02` for a whole group.
  - `holder` string: Optional holder (titular) of the registration, matched from the start. Case and accents are ignored.
  - `status` string: Optional status of the registration as INVIMA states it: `vigente`, `vencido`, `perdida fuerza ejec`, `cancelado`, `negado`, `suspendido`, `en tramite renov`, `temp. no comerc - vigente`, among others. Case and accents are ignored.
  - `cum_status` '' | 'activo' | 'inactivo': Optional state of the presentation in the CUM: `activo` or `inactivo`.
  - `expires_from` string, date: Optional date filter in yyyy-mm-dd format.
  - `expires_to` string, date: Optional date filter in yyyy-mm-dd format.
  - `page` integer: 1-based page number for paginated results.
  - `per_page` integer: Results per page (1-100).

## Response `200`

Successful response

- InvimaMedicinesSearchResponse
  - `data` InvimaMedicinesSearchData, required
    - `as_of` string, nullable, required: How current the data in this response is.
    - `query` string, required
    - `registration_number` string, nullable, required
    - `file_number` string, nullable, required
    - `active_ingredient` string, nullable, required
    - `atc_code` string, nullable, required
    - `holder` string, nullable, required
    - `status` string, nullable, required
    - `cum_status` string, nullable, required
    - `expires_from` string, nullable, required
    - `expires_to` string, nullable, required
    - `total` number, required: Matches, counted up to 1000.
    - `total_is_exact` boolean, required: False when more than 1000 match: `total` is then 1000, and the pages go on.
    - `page` number, required
    - `per_page` number, required
    - `total_pages` number, required: Pages over `total`; there are more when `total_is_exact` is false.
    - `count` number, required
    - `results` object[], required
      - `id` string, required: The CUM code: the file number and the presentation's sequence, e.g. `20042480-41`.
      - `file_number` string, required: The INVIMA file number (expediente) of the registration, e.g. `20042480`; every presentation of one medicine shares it.
      - `cum_sequence` number, required: The presentation's sequence within the file, the second half of the CUM.
      - `registration_number` string, nullable, required: The registro sanitario as INVIMA prints it, e.g. `INVIMA 2023M-0013598-R2`.
      - `product` string, nullable, required: The medicine's name as registered, e.g. `CARDIK ® 3 160/5/12.5`.
      - `holder` string, nullable, required: The holder (titular) of the registration.
      - `status` string, required: The registration's status as INVIMA states it: `Vigente`, `Vencido`, `Perdida Fuerza Ejec`, `Cancelado`, `Negado`, `Suspendido`, `En tramite renov`, `Temp. no comerc - Vigente` and others.
      - `cum_status` 'activo' | 'inactivo', nullable, required: Whether this presentation is active in the CUM: `activo` or `inactivo`.
      - `issued_at` string, nullable, required: `yyyy-mm-dd` the registration was issued.
      - `expires_at` string, nullable, required: `yyyy-mm-dd` the registration expires or expired. Null when INVIMA records none.
      - `cum_active_since` string, nullable, required: `yyyy-mm-dd` the presentation became active in the CUM.
      - `cum_inactive_since` string, nullable, required: `yyyy-mm-dd` the presentation became inactive, when it did.
      - `commercial_description` string, nullable, required: The commercial presentation as registered, e.g. `CAJA POR 30 TABLETAS RECUBIERTAS EN BLISTER`.
      - `pack_quantity` number, nullable, required: Units in the pack, e.g. 30.
      - `pack_unit` string, nullable, required: The unit those are counted in, e.g. `U`, `ml` or `g`.
      - `medical_sample` boolean, nullable, required: True when the presentation is a medical sample (muestra médica).
      - `atc_code` string, nullable, required: The WHO ATC code, e.g. `N02BE01`; the `atc_code` filter matches it from the start.
      - `atc_description` string, nullable, required: What the ATC code stands for, as INVIMA writes it.
      - `pharmaceutical_form` string, nullable, required: The pharmaceutical form, e.g. `TABLETA RECUBIERTA`, `SOLUCION INYECTABLE`.
      - `administration_routes` string[], required: Every route of administration, e.g. `ORAL`, `INTRAVENOSA`.
      - `active_ingredients` object[], required: Every active ingredient with its quantity per reference unit.
        - `name` string, required: The active ingredient as INVIMA names it, e.g. `ACETAMINOFEN`.
        - `quantity` number, nullable, required: How much of it per reference unit, e.g. 500.
        - `unit` string, nullable, required: The unit of that quantity, e.g. `mg`.
        - `reference_unit` string, nullable, required: What the quantity is per, e.g. `TABLETA RECUBIERTA` or `ML`.
      - `parties` object[], required: Every company in a role on the registration: manufacturers and importers.
        - `role` string, required: The role as INVIMA names it, e.g. `FABRICANTE`, `IMPORTADOR`, `ACONDICIONADOR`, `APODERADO`, `REPRESENTANTE LEGAL`, `QUIMICO FARMACEUTICO`.
        - `name` string, required: The company or person in that role, as registered.
      - `modality` string, nullable, required: How the medicine reaches the market, e.g. `FABRICAR Y VENDER`.
      - `ium` string, nullable, required: The Identificador Único de Medicamento, where INVIMA has assigned one.
      - `entries` number, required: How many rows INVIMA's lists carry for this presentation (one per active ingredient, role holder and route).

## 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)
