---
title: Referencia de resultados de Security posture
url: https://platform.claude.com/docs/es/manage-claude/compliance-security-posture/results-reference
description: "Consulta el endpoint de la Compliance API que devuelve los resultados actuales de Security posture de una organización: la solicitud, los campos de la respuesta, qué significa cada estado y los errores."
---

<Note>
  Para habilitar la Compliance API, consulta [Configurar la Compliance API](https://platform.claude.com/docs/es/manage-claude/compliance-api-access).
</Note>

Este endpoint devuelve una entrada para la mayoría de los controles de seguridad de una organización, evaluados en el momento de la solicitud, con la [atestación de Security posture](https://platform.claude.com/docs/es/manage-claude/compliance-security-posture/overview#attestations) que la respuesta muestra para cada control. Necesitas una Compliance Access Key que cubra la organización, con el alcance `read:compliance_org_data` o `read:org_audit`; [Disponibilidad de Security posture](https://platform.claude.com/docs/es/manage-claude/compliance-security-posture/overview#availability) indica qué organizaciones se pueden leer.

## Solicitud

Envía una solicitud `GET` a `/v1/compliance/organizations/{organization_id}/security_posture`. Cada llamada lee una organización, y la respuesta no está paginada.

```bash cURL
curl --fail-with-body -sS \
  "https://api.anthropic.com/v1/compliance/organizations/91012d09-e48b-438e-a489-1bebfd8fa6f9/security_posture" \
  -H "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
  -H "anthropic-version: 2026-10-21"
```

| Elemento               | Regla                                                                                                                                                                                                                                                                                                      |
| ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `organization_id`      | El `uuid` de una [organización vinculada](https://platform.claude.com/docs/es/manage-claude/compliance-api#how-the-compliance-api-works) obtenida de [Listar organizaciones](https://platform.claude.com/docs/es/manage-claude/compliance-org-data#list-organizations); cualquier otro valor devuelve 404. |
| Clave                  | Una [clave para la organización principal](https://platform.claude.com/docs/es/manage-claude/compliance-api-access#set-up-the-compliance-api) puede designar cualquier organización vinculada, y una clave para una sola organización solo puede designar esa organización.                                |
| `anthropic-version`    | Obligatorio; una solicitud sin él devuelve 400.                                                                                                                                                                                                                                                            |
| Parámetros de consulta | Ninguno; una solicitud con cualquier parámetro de consulta devuelve 400.                                                                                                                                                                                                                                   |

## Respuesta

El siguiente ejemplo abreviado muestra cuatro de los controles que puede contener una respuesta. Es la respuesta a una clave que tiene `read:compliance_org_data` y `read:compliance_user_data`.

```json Response
{
  "type": "security_posture",
  "organization_id": "91012d09-e48b-438e-a489-1bebfd8fa6f9",
  "evaluated_at": "2027-02-09T09:00:02.417305Z",
  "comments_status": "not_enabled",
  "controls": [
    {
      "id": "sso_enabled",
      "display_name": "Single sign-on (SSO)",
      "section": "identity_access",
      "setting_name": "sso_enabled",
      "status": "passed",
      "rating": "passed",
      "current_value": "On",
      "desired_state": "On",
      "attestation": null
    },
    {
      "id": "directory_sync_enabled",
      "display_name": "Directory sync (SCIM)",
      "section": "identity_access",
      "setting_name": "directory_sync_enabled",
      "status": "failed_check_accepted_risk",
      "rating": "passed",
      "current_value": "Off",
      "desired_state": "On",
      "attestation": {
        "state": "in_force",
        "attested_at": "2026-10-20T15:04:00.220114Z",
        "comment": null,
        "attested_by": {
          "type": "user_actor",
          "user_id": "user_01WxYzAbCdEfGhJkMnPqRsTu"
        }
      }
    },
    {
      "id": "allowed_invite_domains",
      "display_name": "Allowed email domains",
      "section": "identity_access",
      "setting_name": "allowed_invite_domains",
      "status": "descriptive",
      "rating": "descriptive",
      "current_value": "example.com",
      "desired_state": null,
      "attestation": null
    },
    {
      "id": "oauth_conditional_access",
      "display_name": "OAuth conditional access on connected SaaS",
      "section": "connectors_integrations",
      "setting_name": null,
      "status": "not_attested",
      "rating": "not_attested",
      "current_value": null,
      "desired_state": "Completed",
      "attestation": {
        "state": "review_due",
        "attested_at": "2026-11-02T09:30:00.008771Z",
        "comment": null,
        "attested_by": {
          "type": "user_actor",
          "user_id": "user_01AbCdEfGhJkLmNpQrStUvWx"
        }
      }
    }
  ]
}
```

Todos los campos están siempre presentes, y un campo sin valor es `null`, nunca se omite. Una marca de tiempo tiene cero o seis dígitos fraccionarios, así que compara las marcas de tiempo como marcas de tiempo, no como cadenas.

### Campos de nivel superior

| Campo             | Tipo                   | Descripción                                                                                                                                                                                                                       |
| ----------------- | ---------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `type`            | cadena                 | Siempre `security_posture`.                                                                                                                                                                                                       |
| `organization_id` | cadena                 | El UUID de la organización.                                                                                                                                                                                                       |
| `evaluated_at`    | cadena (RFC 3339, UTC) | El momento en que se evaluaron todos los controles.                                                                                                                                                                               |
| `comments_status` | cadena                 | Si se leyeron los comentarios de las atestaciones; consulta [Quién hizo la atestación, y comentarios](https://platform.claude.com/docs/es/manage-claude/compliance-security-posture/results-reference#who-attested-and-comments). |
| `controls`        | arreglo de objetos     | Los controles de la organización; nunca está vacío.                                                                                                                                                                               |

### Campos de `controls[]`

| Campo           | Tipo          | Descripción                                                                                                                                                                                                                                                                                                            |
| --------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`            | cadena        | El identificador del control, que es el mismo para todas las organizaciones y nunca cambia.                                                                                                                                                                                                                            |
| `display_name`  | cadena        | El nombre visible del control, como texto de visualización en inglés cuya redacción puede cambiar.                                                                                                                                                                                                                     |
| `section`       | cadena        | La sección a la que pertenece el control, una de las diez que se indican después de esta tabla; se pueden agregar más valores, así que trata uno desconocido como una sección propia.                                                                                                                                  |
| `setting_name`  | cadena o null | El `name` de la entrada de la configuración efectiva de la organización que lee este control; `null` cuando no lee ninguna entrada de ese tipo.                                                                                                                                                                        |
| `status`        | cadena        | El motivo del resultado del control; consulta [Valores de estado](https://platform.claude.com/docs/es/manage-claude/compliance-security-posture/results-reference#status-values).                                                                                                                                      |
| `rating`        | cadena        | El resultado del control, que se deriva de `status`; consulta [Valores de estado](https://platform.claude.com/docs/es/manage-claude/compliance-security-posture/results-reference#status-values).                                                                                                                      |
| `current_value` | cadena o null | El valor actual, como texto de visualización en inglés cuya redacción puede cambiar; `null` en un control manual o cuando no se leyó ningún valor.                                                                                                                                                                     |
| `desired_state` | cadena o null | El valor recomendado, como texto de visualización en inglés cuya redacción puede cambiar; `null` cuando no hay ninguno para esta organización.                                                                                                                                                                         |
| `attestation`   | objeto o null | La atestación que la respuesta muestra, también mientras no está vigente; `null` mientras `status` es `descriptive`, `not_applicable` o `not_evaluated`, y en [estos casos](https://platform.claude.com/docs/es/manage-claude/compliance-security-posture/results-reference#how-an-attestation-shows-in-the-response). |

`section` es uno de los siguientes valores: `identity_access`, `data_privacy`, `capabilities`, `connectors_integrations`, `chats_desktop_mdm`, `cowork_admin_console`, `cowork_desktop_mdm`, `claude_code_admin_console`, `claude_code_managed_settings` y `healthy_adoption`.

Para comparar valores en código, busca `setting_name` en la [configuración efectiva](https://platform.claude.com/docs/es/manage-claude/compliance-org-data#get-effective-organization-settings) de la misma organización. Es posible que la búsqueda no encuentre nada, y dos controles pueden compartir un mismo `setting_name`.

### Campos de `attestation`

| Campo         | Tipo                   | Descripción                                                                                                                                                                                                                                                                  |
| ------------- | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `state`       | cadena                 | Si la atestación está vigente; consulta [Situaciones de la atestación](https://platform.claude.com/docs/es/manage-claude/compliance-security-posture/results-reference#attestation-states).                                                                                  |
| `attested_at` | cadena (RFC 3339, UTC) | Cuándo se hizo la atestación.                                                                                                                                                                                                                                                |
| `comment`     | cadena o null          | El comentario guardado con la atestación, de como máximo 2000 caracteres; `null` si no hay ninguno, o si `comments_status` no es `available`.                                                                                                                                |
| `attested_by` | objeto o null          | La persona que hizo la atestación; `null` cuando la clave no tiene ni `read:compliance_user_data` ni `read:org_audit`, cuando la cuenta de esa persona se ha eliminado o se está eliminando, o cuando el endpoint no devuelve para la organización quién hizo la atestación. |

### Campos de `attested_by`

| Campo     | Tipo   | Descripción                                  |
| --------- | ------ | -------------------------------------------- |
| `type`    | cadena | Siempre `user_actor`.                        |
| `user_id` | cadena | El ID del usuario, que comienza con `user_`. |

## Valores de estado

`status` indica el motivo del resultado de un control, y cada estado tiene un único `rating`.

| `status`                     | Tipo de control     | Significado                                                                                                | `rating`       | En la página                                              |
| ---------------------------- | ------------------- | ---------------------------------------------------------------------------------------------------------- | -------------- | --------------------------------------------------------- |
| `passed`                     | automático          | El valor actual cumple el valor recomendado.                                                               | `passed`       | Superado                                                  |
| `matches_profile`            | automático          | El valor actual es igual al valor recomendado.                                                             | `passed`       | Superado                                                  |
| `exceeds_baseline`           | automático          | El valor actual es más estricto que el valor recomendado.                                                  | `passed`       | Superado                                                  |
| `failed_check_accepted_risk` | automático          | La verificación automática no se cumple, y hay un riesgo aceptado vigente.                                 | `passed`       | Superado                                                  |
| `failed`                     | automático o manual | El valor actual no cumple el valor recomendado, o una atestación que la respuesta omite da este resultado. | `failed`       | Fallido, o Superado con una atestación Completado vigente |
| `review`                     | automático          | El valor actual es más laxo que el valor recomendado.                                                      | `failed`       | Fallido                                                   |
| `attested_completed`         | manual              | Hay vigente una atestación con el valor Completado (`completed`).                                          | `passed`       | Superado                                                  |
| `attested_accepted_risk`     | manual              | Hay vigente una atestación con el valor Riesgo aceptado (`accepted_risk`).                                 | `passed`       | Superado                                                  |
| `not_attested`               | manual              | No hay ninguna atestación vigente.                                                                         | `not_attested` | Sin atestación                                            |
| `attestation_not_enabled`    | manual              | Nadie puede hacer la atestación del control.                                                               | `not_attested` | Descriptivo                                               |
| `descriptive`                | solo informativo    | El control se informa, no se califica.                                                                     | `descriptive`  | Descriptivo                                               |
| `not_applicable`             | cualquiera          | El control no se aplica a la organización.                                                                 | `descriptive`  | Descriptivo                                               |
| `not_evaluated`              | cualquiera          | No se pudo leer la configuración, o bien otra configuración que decide si el control se aplica.            | `descriptive`  | Descriptivo                                               |

Ningún campo indica el tipo de control; para `failed`, un `current_value` `null` indica un control manual. Se pueden agregar más valores, así que cuenta un control con un `status` desconocido según su `rating`, y no cuentes un `rating` desconocido como Superado. El estado `review` y la situación de la atestación `review_due` no están relacionados.

## Situaciones de la atestación

`state` indica si la atestación que la respuesta muestra está vigente.

| `state`           | Significado                                                                                                                                               |
| ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `in_force`        | La atestación está vigente.                                                                                                                               |
| `review_due`      | Llegó la fecha de finalización.                                                                                                                           |
| `setting_changed` | La verificación no se cumple con un valor distinto de aquel cuyo riesgo se aceptó, o ya se había registrado que el riesgo aceptado dejó de estar vigente. |
| `check_passing`   | La verificación se cumple, así que no hay ningún riesgo que aceptar.                                                                                      |

Cuando se aplica más de un motivo, la respuesta da el primero de `check_passing`, `setting_changed` y `review_due`. A partir de las 00:00 UTC de su fecha de finalización, una atestación no está vigente. La respuesta no incluye la fecha de finalización, así que decide `state`; una fecha de finalización que se haya guardado es el [`review_date`](https://platform.claude.com/docs/es/manage-claude/compliance-security-posture/events-reference#attestation-activity) de la actividad de la atestación. Considera que un `state` desconocido no está vigente.

## Cómo aparece una atestación en la respuesta

La respuesta muestra algunas atestaciones y omite otras, así que un `attestation` `null` no demuestra que nadie hizo la atestación.

| Tipo de control                                    | Valor de la atestación                 | `status`                                                               | `rating`            | `attestation`                                                   |
| -------------------------------------------------- | -------------------------------------- | ---------------------------------------------------------------------- | ------------------- | --------------------------------------------------------------- |
| Manual                                             | Ninguna                                | `not_attested`, o `attestation_not_enabled` cuando nadie puede atestar | `not_attested`      | `null`                                                          |
| Manual                                             | Completado                             | `attested_completed`                                                   | `passed`            | Se muestra                                                      |
| Manual                                             | Riesgo aceptado                        | `attested_accepted_risk`                                               | `passed`            | Se muestra                                                      |
| Manual                                             | Fallido (`control_failed`)             | `failed`                                                               | `failed`            | `null`: nunca se muestra                                        |
| Automático, la verificación no se cumple           | Ninguna                                | `failed` o `review`                                                    | `failed`            | `null`                                                          |
| Automático, la verificación no se cumple           | Riesgo aceptado                        | `failed_check_accepted_risk`                                           | `passed`            | Se muestra                                                      |
| Automático, la verificación no se cumple           | Completado                             | `failed`, incluso cuando la verificación automática da `review`        | `failed`            | `null`: nunca se muestra                                        |
| Automático, la verificación no se cumple           | Fallido                                | El `status` que da la verificación automática                          | `failed`            | `null`: nunca se muestra                                        |
| Automático, la verificación se cumple              | Ninguna                                | `passed`, `matches_profile` o `exceeds_baseline`                       | `passed`            | `null`                                                          |
| Automático, la verificación se cumple              | Completado                             | El `status` que da la verificación automática                          | `passed`            | `null`: nunca se muestra                                        |
| Automático, la verificación se cumple              | Riesgo aceptado                        | El `status` que da la verificación automática                          | `passed`            | `null` mientras la verificación se cumpla con el valor aceptado |
| Automático, la verificación se cumple              | Fallido                                | `failed`                                                               | `failed`            | `null`: nunca se muestra                                        |
| Solo informativo                                   | Cualquier valor                        | `descriptive`                                                          | `descriptive`       | `null`: nunca se muestra                                        |
| Cualquiera, mientras la atestación no esté vigente | Un valor que una fila anterior muestra | Como sin atestación                                                    | Como sin atestación | Se muestra, con un `state` distinto de `in_force`               |
| Cualquiera, mientras la atestación no esté vigente | Un valor que una fila anterior omite   | Como sin atestación                                                    | Como sin atestación | `null`                                                          |

Cada fila, salvo las dos últimas, se aplica mientras la atestación está vigente. En un control automático, una atestación no está vigente mientras el valor que lee la verificación difiera de aquel con el que se guardó la atestación. Toda atestación que la respuesta muestra en un control automático es un riesgo aceptado. El [Activity Feed](https://platform.claude.com/docs/es/manage-claude/compliance-activity-feed) también registra las atestaciones de los tipos que la respuesta omite.

## Contar resultados

Comprueba cuatro cosas cuando cuentes controles por `rating`.

| Si cuentas                  | Comprueba también                                                                                                                                                                                                            |
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Superado (`passed`)         | Incluye todos los controles con un riesgo aceptado vigente, así que busca `failed_check_accepted_risk` y `attested_accepted_risk`.                                                                                           |
| Fallido (`failed`)          | Incluye un control cuya atestación tiene el valor Fallido (`control_failed`), y una verificación automática que no se cumple con una atestación Completado vigente, que la página de Security posture muestra como Superado. |
| Descriptivo (`descriptive`) | Puede ocultar un control que no se pudo leer, así que busca `not_evaluated`.                                                                                                                                                 |
| Todos los controles         | Un control que falta en la respuesta no cuenta como Superado y no se nombra, así que compara los valores de `id` con los que hayas visto para la organización.                                                               |

## Quién hizo la atestación, y comentarios

`attested_by` se completa solo para una clave que tiene `read:compliance_user_data` junto con `read:compliance_org_data`, o que tiene `read:org_audit`. Una clave que solo tiene `read:compliance_user_data` recibe un 403. El `user_id` de `attested_by` es el mismo que el `user_id` del `actor` en la actividad de atestación. `attested_by` contiene solo el ID de usuario: [Listar usuarios de la organización](https://platform.claude.com/docs/es/manage-claude/compliance-org-data#list-organization-users) proporciona el nombre y la dirección de correo electrónico de cada miembro actual. Antes de agregar estos alcances, consulta [Quién puede ver quién atestó](https://platform.claude.com/docs/es/manage-claude/compliance-security-posture/overview#who-can-see-who-attested).

El endpoint no devuelve comentarios, aunque la página Security posture muestre uno: todos los `comment` son `null`, y `comments_status` es `not_enabled` o `not_permitted`. Así que `not_enabled` y un comentario `null` no significan que la atestación no tenga comentario. `comments_status` indica cómo interpretar un comentario `null`, y el esquema define estos valores.

| `comments_status`           | Significado                                                                                                                                                                            |
| --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `not_permitted`             | La clave de API no tiene ni `read:compliance_user_data` ni `read:org_audit`, así que todos los `comment` y todos los `attested_by` son `null`.                                         |
| `requires_organization_key` | La clave de API no se creó en la organización, como ocurre con una clave para la organización principal, así que todos los `comment` son `null`. Volver a intentarlo no sirve de nada. |
| `available`                 | Se leyeron los comentarios, así que un comentario `null` significa que no hay ninguno, o que se guardó hace unos instantes.                                                            |
| `not_enabled`               | Este endpoint no devuelve comentarios para la organización, así que todos los `comment` son `null`.                                                                                    |
| `unavailable`               | No se pudieron leer los comentarios para esta respuesta; una solicitud posterior podría tener éxito, pero algunas causas persisten hasta que el cliente actúe.                         |

Se pueden agregar más valores; interpreta uno desconocido como `unavailable`.

## Errores

Los errores usan el mismo cuerpo que el resto de la [Compliance API](https://platform.claude.com/docs/es/manage-claude/compliance-errors); esta tabla enumera los que este endpoint devuelve a su manera.

| Estado y `error.type`                                                                      | Cuándo                                                                                                                                         | Qué hacer                                                                                                                                                   |
| ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 400 `invalid_request_error`                                                                | Falta `anthropic-version` o no es válido, la Compliance API no está habilitada para la organización principal, o hay un parámetro de consulta. | Corrige lo que indique `error.message`.                                                                                                                     |
| 401 `authentication_error`                                                                 | Falta la clave, no se reconoce, o no es una Compliance Access Key ni una clave de Admin API.                                                   | Envía una Compliance Access Key válida en `x-api-key`.                                                                                                      |
| 403 `permission_error`                                                                     | La clave no puede llamar a este endpoint, normalmente porque no tiene ni `read:compliance_org_data` ni `read:org_audit`.                       | Usa una clave con cualquiera de los dos alcances.                                                                                                           |
| 404 `not_found_error`                                                                      | Consulta las causas indicadas después de esta tabla.                                                                                           | No reintentes de inmediato, y nunca lo interpretes como ausencia de controles con resultado Fallido.                                                        |
| 429 `rate_limit_error`                                                                     | Se agotó el límite de velocidad compartido de la Compliance API, o el límite más bajo de este endpoint; `error.message` indica cuál.           | Espera según `retry-after`; consulta [429 Too Many Requests](https://platform.claude.com/docs/es/manage-claude/compliance-errors#429-too-many-requests).    |
| 503 `overloaded_error`, con `error.details.error_code` igual a `posture_evaluation_failed` | No se pudo producir el resultado.                                                                                                              | Espera según `retry-after` y luego reintenta; si se repite para una organización en ejecuciones posteriores, contacta al soporte de Anthropic una sola vez. |
| 503 sin `error_code`, o 504 `timeout_error`                                                | Un fallo temporal.                                                                                                                             | Reintenta con retroceso exponencial.                                                                                                                        |

Causas de un 404:

* `organization_id` no es un UUID, no corresponde a ninguna organización o corresponde a una organización eliminada.
* `organization_id` corresponde a la organización principal, a una organización que depende de otra organización principal, o a una organización que una clave de una sola organización no cubre.
* La organización no está en Claude Enterprise, o Security posture no está disponible para ella, como ocurre con una organización de Claude Console.
* Se ha desactivado la página Security posture para la organización (consulta [Disponibilidad de Security posture](https://platform.claude.com/docs/es/manage-claude/compliance-security-posture/overview#availability)).
* Security posture está disponible para la organización, pero el endpoint no la atiende.
* No se pudo comprobar la disponibilidad; una solicitud posterior puede tener éxito.

Todos los 404 tienen el mismo cuerpo, al igual que una ruta que no existe.

## Actualidad y efectos secundarios

El endpoint evalúa todos los controles cuando lo llamas, y `evaluated_at` es ese momento.

* Es posible que no aparezca un cambio de los últimos minutos.
* Un resultado puede cambiar sin que cambie ninguna configuración, por ejemplo cuando llega una fecha de finalización o Anthropic cambia un valor recomendado.
* Si Anthropic cambia la redacción de un valor actual, un riesgo aceptado sobre ese valor deja de estar vigente.
* Una llamada no almacena ningún resultado ni hace que ninguna atestación deje de estar vigente.
* Cada solicitud sin parámetro de consulta que pasa las comprobaciones de clave, alcance y versión registra una actividad `compliance_api_accessed`, tanto si tiene éxito como si falla; su `url` indica la organización leída, y `organization_uuid` es `null` para una clave de la organización principal.
