---
title: "Semantic search grouped by provider"
method: POST
path: "/v1/discover/providers"
tags: ["Discover"]
---

# Semantic search grouped by provider

`POST /v1/discover/providers`

The shared discover pipeline's match set aggregated by provider — the semantic twin of `GET /public/v1/providers?q=` (same entry shape; counts are within the bounded semantic match set).

## Request body

- DiscoverProvidersRequest
  - `q` string, required — Natural-language search query.
  - `minScore` number — Per-call override for the post-rerank score floor — same semantics as the legacy POST /v1/discover body field.

## Response `200`

Provider entries with semantic match counts

- object
  - `items` PublicProviderEntry[], required
    - `provider` string, required — Provider slug.
    - `displayName` string, required — Resolved display label (curation > slug).
    - `displayDescription` string
    - `endpointCount` integer, required — Number of currently-enabled endpoints.
  - `cursor` string — Opaque cursor for the next page. Absent on the last page.

## Other responses

- `400` — Bad request — input failed validation
- `401` — Unauthorized — missing or invalid credentials
- `403` — Forbidden — caller has no workspace or no access
- `500` — Internal server error

---

[API](https://skmtc.net/monid/apis/monid-api.md) · [All operations](https://skmtc.net/monid/apis/monid-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/monid/monid-api/revisions/164b6b6f2d36/schema)
