---
title: "Planalto Law"
method: POST
path: "/br/planalto/law/v1"
tags: ["Brazil", "Presidência da República (Planalto)"]
---

# Planalto Law

`POST /br/planalto/law/v1`

## Request

- Base URL: `https://api.croma.run`
- URL: `https://api.croma.run/br/planalto/law/v1`
- Auth: HTTP bearer

Retrieve one Brazilian federal act by the `law_id` the search returns (`lei-13105-2015`, `cf-1988`): its current consolidated text, whole or one `article`, its ementa, signature and publication dates, whether it was revoked and by what, a medida provisória's standing and the law it became, the later acts that amended it article by article, and the earlier acts it amended in turn. The text comes back a character range at a time (`offset`, `limit`); follow `next_offset` until `has_more` is false.

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

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `law_id` string, required: Id del acto, p. ej. `lei-13105-2015` o `cf-1988`, como lo devuelve la búsqueda.
  - `article` string: Número de un artículo, p. ej. `12`, `1.029` u `8-A`, para devolver solo ese artículo (opcional).
  - `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

- PlanaltoLawResponse
  - `data` PlanaltoLawData, required
    - `as_of` string, nullable, required: How current the data in this response is.
    - `found` boolean, required
    - `law_id` string, required
    - `article` string, nullable, required: The article asked for, as the text numbers it. Null when none was.
    - `article_found` boolean, nullable, required: Whether that article is in the text. Null when no article was asked for.
    - `law` object, nullable, required
      - `id` string, required: Croma's id for the act: its kind, number and signature year, e.g. `lei-13105-2015`; `cf-1988` for the Constitution.
      - `type` 'constitution' | 'constitutional_amendment' | 'complementary_law' | 'ordinary_law' | 'delegated_law' | 'decree_law' | 'decree' | 'provisional_measure', required: `constitution`, `constitutional_amendment` (including the six revision amendments of 1994), `complementary_law`, `ordinary_law`, `delegated_law`, `decree_law`, `decree` or `provisional_measure` (a medida provisória).
      - `type_label` string, required: The kind as Brazilian law names it: "Lei", "Lei Complementar", "Decreto-Lei", "Emenda Constitucional" and so on.
      - `number` string, required: The act's number as it is cited, e.g. "13.105" or "1.234-A". Empty for the Constitution.
      - `year` number, required: The year the act was signed.
      - `name` string, required: The act's full citation, e.g. "Lei nº 13.105, de 16 de março de 2015".
      - `summary` string, nullable, required: The ementa: the act's own one-line statement of what it does, e.g. "Código de Processo Civil.".
      - `signed_on` string, required: `yyyy-mm-dd` the act was signed.
      - `published_on` string, nullable, required: `yyyy-mm-dd` it was published in the Diário Oficial da União. Null for the oldest acts, published before the DOU.
      - `revoked` boolean, required: True when the Presidência marks the whole act as revoked. False does not prove the act is in force: an act can be superseded without a note saying so.
      - `revoked_by` object, nullable, required: The act that revoked this one, when `revoked` is true and the note names it.
        - `law_id` string, nullable, required: Id of the revoking act, to look it up in turn. Null when the citation names an instrument outside this dataset's id scheme.
        - `name` string, required: How the revoking act is cited, e.g. "Lei nº 13.105, de 2015".
      - `amended_by` object[], required: Later acts whose changes the text records in its notes, most recent first, each with the articles it touched.
        - `law_id` string, required: Id of the other act, e.g. `lei-13256-2016`. It may be an act this dataset does not hold yet (a medida provisória or a decreto), so a lookup can come back `found: false`.
        - `name` string, required: How the other act is cited, e.g. "Lei nº 13.256, de 2016".
        - `changes` string[], required: What it did: `amended` (gave a provision new wording), `added` (inserted one), `revoked`, `renumbered`.
        - `articles` string[], required: The articles it touched, as they are numbered, e.g. ["12", "1.029", "8-A"]. Empty when every change it made sits outside an article (a heading, an annex).
      - `official_url` string, required: The act's page at the Presidência.
      - `consolidated_url` string, nullable, required: The Presidência's consolidated version of the act, when it keeps one apart from the original.
      - `veto_message_url` string, nullable, required: The presidential veto message, when the act was partly vetoed.
      - `measure_status` 'pending' | 'converted' | 'lapsed' | 'rejected' | 'prejudiced' | 'revoked', nullable, required: Where a medida provisória stands: `pending` (before Congress), `converted` (into a law, named in `converted_into`), `lapsed` (it expired unvoted), `rejected`, `prejudiced` (set aside without a vote) or `revoked`. Null for every other kind, and for the pre-2001 medidas provisórias whose index records only their chain of monthly editions.
      - `measure_status_note` string, nullable, required: A medida provisória's standing in the Presidência's own words, e.g. "Convertida Lei nº 15.347, de 2026" or "Vigência encerrada Ato nº 101, de 2024".
      - `converted_into` object, nullable, required: The law a medida provisória was converted into.
        - `law_id` string, nullable, required: Id of the law, to look it up in turn.
        - `name` string, required: How the law is cited, e.g. "Lei nº 15.347, de 2026".
      - `amends` object[], required: Earlier acts this one changed, as their own notes record it, each with the articles it touched there.
        - `law_id` string, required: Id of the other act, e.g. `lei-13256-2016`. It may be an act this dataset does not hold yet (a medida provisória or a decreto), so a lookup can come back `found: false`.
        - `name` string, required: How the other act is cited, e.g. "Lei nº 13.256, de 2016".
        - `changes` string[], required: What it did: `amended` (gave a provision new wording), `added` (inserted one), `revoked`, `renumbered`.
        - `articles` string[], required: The articles it touched, as they are numbered, e.g. ["12", "1.029", "8-A"]. Empty when every change it made sits outside an article (a heading, an annex).
      - `content` object, nullable, required: A range of the act's text (or of one article), or null when there is none to return.
        - `text` string, required: The requested character range of the text.
        - `offset` number, required: First character of the range.
        - `total_length` number, required: Length of the whole text, or of the requested article, in characters.
        - `has_more` boolean, required: Whether the text continues past this range.
        - `next_offset` number, nullable, required: Pass this back as `offset` to read on. Null at the end.

## Other responses

- `400`: Invalid request body
- `401`: Missing or invalid API key
- `429`: Rate limit exceeded
- `500`: Internal 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)
