---
title: "The attribution vocabulary"
method: GET
path: "/v1/categories"
tags: ["Reference"]
---

# The attribution vocabulary

`GET /v1/categories`

## Request

- Base URL: `https://intelapi.publicaml.org`
- URL: `https://intelapi.publicaml.org/v1/categories`
- Auth: one of:
  - API key in header `X-API-Key`
  - none

Every category POST /v1/labels accepts, with what each one does to scoring: `counterparty_weight` (how much a counterparty in it contributes), `taint`, `neutral_infrastructure` (floors an address's exposure) and `scores_own_identity` (the address scores for BEING one).

Not the same list as GET /v1/risk-labels. A risk label is an ACCUSATION and carries a score; a category here is an ATTRIBUTION and carries weights. `zero_risk` is the subset that identifies without accusing.

## Response `200`

The category catalogue.

- object
  - `categories` object[]
  - `zero_risk` string[]
  - `total` integer
  - `source` string: postgres = the policy table; builtin = the copy in this image, serving because PG could not be read.

## Other responses

- `400`: Malformed request.
- `429`: Rate limited: anonymous callers, and keys issued with a quota of their own. Authenticate to remove the limit.
- `500`: Server error.

---

[API](https://skmtc.dev/publicaml/apis/publicaml-intelligence-api.md) · [All operations](https://skmtc.dev/publicaml/apis/publicaml-intelligence-api/llms.txt) · [OpenAPI document](https://skmtc.dev/publicaml/apis/publicaml-intelligence-api/revisions/7c0c6315088c?raw)
