---
title: "Create the authenticated user's redacted corporate legal report"
method: POST
path: "/api/v1/empresa/{slug}/informe-legal"
tags: ["Legal", "Companies", "User"]
---

# Create the authenticated user's redacted corporate legal report

`POST /api/v1/empresa/{slug}/informe-legal`

## Request

- Base URL: `https://openmercantil.es`
- URL: `https://openmercantil.es/api/v1/empresa/{slug}/informe-legal`
- Auth: API key in cookie `ob_sess`
- TypeScript: <https://skmtc.dev/openmercantil/apis/openmercantil-public-api/docs/api/v1/empresa/:slug/informe-legal/post.ts> (a function with typed inputs; its response is checked against the schema)

Account and credit-entitlement surface for a legal entity only. The server owns beta/pricing policy and a daily idempotency key scoped to user, company and UTC date; clients cannot choose price or entitlement. Every report is recursively PII-redacted before egress. Documentary events and citations do not prove wrongdoing, solvency, current status, identity of a natural person or completeness, and this informational report is not legal advice or an official certificate. Unknown or unauthorized source policy, natural-person subjects and missing helpers fail closed. The JSON body is capped at 32 KiB and accepts only the CSRF fallback.

## Path parameters

- `slug` string, required

## Headers

- `X-CSRF-Token` string, required

## Request body

- LegalReportRequest: The body carries only the CSRF fallback. Entitlement, pricing, beta status and the daily idempotency key are server-owned.
  - `csrf` string: Body fallback; prefer X-CSRF-Token.

## Response `200`

Redacted documentary corporate report and server-owned charging result

- LegalReportResponse
  - `ok` true, required
  - `company` object, required
    - `slug` string, required
    - `name` string, required
  - `charged` integer, required
  - `beta_free` boolean, required
  - `already_paid` boolean, required
  - `balance_after` integer, nullable, required
  - `report` LegalReportDocument, required
    - `state` object, nullable, required
    - `axes` LegalReportAxis[], required
      - `axis_id` string, required
      - `label` string, required
      - `present` boolean, required
      - `count` integer, required
      - `first_date` string, nullable
      - `last_date` string, nullable
      - `norm_slug` string, nullable
      - `norm_articulos` string, nullable
      - `concepto_slug` string, nullable
      - `anchor` string, nullable
      - `official_url` string, uri, nullable
      - `official_label` string, nullable
      - `is_cendoj` boolean
      - `subaxes` object[]
      - `items` JsonValue[]
        - union: A JSON value used only inside explicitly documented extension maps.
          - string
          - number
          - boolean
          - JsonValue[]
          - object
    - `totals` object, required
      - `axes_present` integer, required
      - `events_total` integer, required
      - `norms_cited` string[], required

## Other responses

- `400`: Invalid request
- `401`: Authentication required (no active session)
- `402`: Insufficient credits or the idempotent charge could not be completed
- `403`: Invalid or missing CSRF token
- `404`: Corporate subject not found or the slug is classified as a natural-person subject
- `413`: Request body exceeds 32 KiB
- `429`: Rate limit exceeded
- `503`: Action-budget storage, legal source policy, report helper, account schema or credit ledger unavailable; generation fails closed

## Changes

- **2026-07-26** `996f96a11758`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/openmercantil/apis/openmercantil-public-api/changes/api/v1/empresa/:slug/informe-legal/post.md)

---

[API](https://skmtc.dev/openmercantil/apis/openmercantil-public-api.md) - [All operations](https://skmtc.dev/openmercantil/apis/openmercantil-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/openmercantil/apis/openmercantil-public-api/revisions/601ff6123c86?raw)
