---
title: "Score up to 10 organisations and their agent identities"
method: POST
path: "/v1/metered/bulk-identity-risk"
tags: ["Vendor and organisation risk"]
---

# Score up to 10 organisations and their agent identities

`POST /v1/metered/bulk-identity-risk`

## Request

- Base URL: `https://api.relayshield.net`
- URL: `https://api.relayshield.net/v1/metered/bulk-identity-risk`
- Auth: one of:
  - API key in header `X-RS-API-KEY`
  - HTTP bearer

Hierarchical scoring built for MSP weekly client sweeps and AI agent governance. Each domain is scored across the same six dimensions as identity-risk-score, and up to 5 agent or service-account identities per domain are scored across breach, infostealer and stolen-session signals. A CRITICAL agent automatically elevates its organisation to at least HIGH.

**Billing.** $2.00 per successful call. Failed calls are never billed. Charged against prepaid credits when the balance covers it, otherwise metered to your card. Threat Intelligence subscribers and AWS Marketplace bundle customers call this at no extra charge.

**Note.** A target whose domain is unparseable does not fail the call: it comes back as an entry carrying `error`, and the remaining targets are still scored.

## Request body

- object
  - `targets` object[], required: Up to 10 target objects.
    - `domain` string, required: Organisation domain.
    - `agents` string[]: Up to 5 agent or service-account emails.

## Response `200`

Success. `ok` is true and `data` holds the result.

- object
  - `ok` true, required
  - `data` object, required
    - `queried` integer: Targets processed.
    - `critical_count` integer: Targets with a CRITICAL domain or agent.
    - `high_count` integer: Targets with a HIGH domain or agent.
    - `results` object[]: One entry per target, in the order supplied.
      - `domain` string: Organisation domain. `invalid` when the target could not be parsed.
      - `error` string: Present only when the domain was rejected.
      - `domain_score` integer: 0-100.
      - `domain_grade` 'A' | 'B' | 'C' | 'D' | 'F': Letter grade.
      - `domain_risk` 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW': Domain risk level.
      - `dimension_scores` object: Per-dimension breakdown, same keys as identity-risk-score.
      - `domain_factors` string[]: Reasons behind the domain score.
      - `agents` object[]: Scored agent identities.
        - `identity` string: The agent email.
        - `risk_score` integer: 0-100.
        - `grade` 'A' | 'B' | 'C' | 'D' | 'F': Letter grade.
        - `risk_level` 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW': Agent risk level.
        - `risk_factors` string[]: Reasons behind the agent score.
      - `agent_count` integer: Agents scored for this domain.
      - `highest_agent_risk` 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW' | 'null', nullable: Worst agent risk level. null when no agents were supplied.
    - `summary` string: One-line roll-up across all targets.

## Other responses

- `400`: `targets` is missing, not a list, empty, or holds more than 10 entries.
- `401`: Missing or invalid API key.
- `402`: No credits and no active subscription. The response carries `topup_url`.
- `405`: Wrong HTTP method. Every endpoint is POST.

---

[API](https://skmtc.dev/relayshield/apis/relayshield-api.md) · [All operations](https://skmtc.dev/relayshield/apis/relayshield-api/llms.txt) · [OpenAPI document](https://skmtc.dev/relayshield/apis/relayshield-api/revisions/4d4721b936dd?raw)
