---
search:
  tags:
    - Connector Ingest
    - GET
seo:
  description: >-
    Called by the plugin (Role 2 — origin-correct doorway), not by agents.
    Returns the… Reference for the GET /connector/profile endpoint in the Sarvex
    V1 API.
sidebar:
  label: >-
    Fetch the merchant's current UCP profile (for the plugin to serve at
    /.well-known/ucp)
  badge: GET
title: >-
  Fetch the merchant's current UCP profile (for the plugin to serve at
  /.well-known/ucp)
type: openapi-operation
---
Called by the plugin (Role 2 — origin-correct doorway), **not** by agents. Returns the
exact UCP business-profile bytes Sarvex generates and signs; the plugin serves these
verbatim from the merchant's own domain at `/.well-known/ucp` with a `200`. The merchant
is resolved from the HMAC credential — no URL parameter.

**Conditional fetch:** the plugin sends `If-None-Match` with the `ETag` it last received;
if the profile is unchanged Sarvex returns `304 Not Modified` and the plugin keeps serving
its cached copy. Steady state is a cheap `304` on most calls. The `Cache-Control` header
tells the plugin how long its copy is valid; past that (or on `must-revalidate`) it refetches.
If this endpoint is unreachable, the plugin serves its last-known-good copy (degradation
ladder, profile edge) — the profile must never disappear or error at the merchant origin.

This endpoint covers only the **profile**. The `/ucp/v1/*` UCP API is served by Sarvex
directly — the profile's `services.endpoint` points at Sarvex, so agents call the serving
plane straight after discovery. The plugin does not proxy API traffic.

`GET /connector/profile`
