---
title: "Resolve identifiers to property_rids (and contribute them)"
method: POST
path: "/api/registry/resolve"
tags: ["Property Catalog"]
---

# Resolve identifiers to property_rids (and contribute them)

`POST /api/registry/resolve`

The primary fact-contribution path. Takes identifiers plus a provenance envelope and returns stable `property_rid`s. In `resolve` mode (default) it auto-creates missing catalog entries and logs demand activity — so resolving your own identifier list IS the contribution. `property_rid` is a non-authoritative join/match handle, never an authorization credential. Re-resolving is idempotent on the identifier→rid mapping but additive on the activity log.

## Request body

- ResolveRequest
  - `identifiers` CatalogIdentifier[], required — Identifiers to resolve (and, in resolve mode, contribute). Max 10,000 per call for all callers.
    - `type` string, required
    - `value` string, required
  - `provenance` FactProvenance, required
    - `type` 'agency_allowlist' | 'publisher_declaration' | 'impression_log' | 'ssp_inventory' | 'deal_history' | 'crawl' | 'data_partner' | 'member_assertion', required — How the caller knows these identifiers — the trust/audit envelope on the fact. Determines the confidence the catalog assigns. `crawl` is reserved for server-side pipelines; callers use the others.
    - `context` string — Optional free-text annotation (campaign, dataset).
  - `mode` 'resolve' | 'lookup' — `resolve` (default) contributes the identifiers, auto-creates missing catalog entries, logs demand activity, and returns rids — requires authentication. `lookup` is a pure read: no write, no activity log, no auth.

## Response `200`

Resolve/lookup result

- ResolveResponse
  - `resolved` ResolvedEntry[], required
    - `identifier` CatalogIdentifier, required
      - `type` string, required
      - `value` string, required
    - `property_rid` string, nullable, required — Stable catalog handle for joining/dedup and TMP matching. NOT an authorization credential. `null` for excluded (ad_infra / publisher_mask) or unresolved-in-lookup identifiers.
    - `classification` string, required
    - `status` 'existing' | 'created' | 'excluded', required
    - `source` string, nullable, required
  - `summary` object, required
    - `total` integer, required
    - `resolved` integer, required
    - `created` integer, required
    - `excluded` integer, required
    - `not_found` integer, required
  - `server_timestamp` string, required

## Other responses

- `400` — Invalid request (bad identifiers, unknown provenance type, batch > 10,000)
- `401` — Authentication required for resolve mode

---

[API](https://skmtc.net/adcontextprotocol/apis/agenticadvertising-org-registry-api.md) · [All operations](https://skmtc.net/adcontextprotocol/apis/agenticadvertising-org-registry-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/adcontextprotocol/agenticadvertising-org-registry-api/revisions/9ea7fedf54c0/schema)
