---
title: "Browse the connector catalog"
method: GET
path: "/v1/connectors/catalog"
tags: ["Connectors"]
---

# Browse the connector catalog

`GET /v1/connectors/catalog`

## Request

- Base URL: `https://api.spacefast.com`
- URL: `https://api.spacefast.com/v1/connectors/catalog`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://api.spacefast.com/v1/auth/oauth2/authorize`, token URL `https://api.spacefast.com/v1/auth/oauth2/token`; client credentials, token URL `https://api.spacefast.com/v1/auth/oauth2/token`, scopes: `connectors:read`)

Lists every addable surface — curated presets, the public registry, and the team's own connectors — one row per surface, with `alreadyAdded` state. Filter by text, by surface kind, or by where the row came from.

## Query parameters

- `limit` integer: Page size.
- `cursor` string: Opaque cursor from the previous page's `nextCursor`.
- `query` string: Free-text filter over title, description, and domain.
- `surface` 'openapi' | 'graphql' | 'mcp': Show only rows adding this surface.
- `kind` 'preset' | 'registry' | 'team': Show only rows from this source.
- `team` string: Team id or slug to act for. Required only when the credential could act for more than one team.

## Response `200`

Response for status 200

- object
  - `$schema` string, uri: Canonical JSON Schema URL for this response body. The server also sends it in the `Link: rel="describedby"` response header.
  - `data` object[], required
    - `id` string, required: Stable id for this row. Pass it to registration as `presetId` for a one-click add.
    - `kind` 'preset' | 'registry' | 'team', required: Where a catalog row came from: a curated preset, the public registry, or this team's own connectors.
    - `surface` 'openapi' | 'graphql' | 'mcp', required: Which surface this row adds. The one facet the picker offers.
    - `title` string, required: Service name plus surface, e.g. "Stripe MCP".
    - `description` string, nullable, required: One line on what the service does.
    - `domain` string, nullable, required: Provider domain, e.g. `stripe.com`. Null for rows with no public domain.
    - `logoUrl` string, nullable, required: Spacefast-proxied logo path. Never a third-party URL — the browser must not call the registry directly.
    - `presetId` string, nullable, required: Curated preset backing this row, when one does.
    - `registryId` string, nullable, required: Registry entry backing this row, when one does.
    - `sourceUrl` string, nullable: Machine endpoint or spec URL, when supplied by the catalog.
    - `endpointInputRequired` boolean: This surface requires a provider-specific endpoint before registration.
    - `family` string, nullable, required: Grouping key for services that ship many slices, e.g. Google or Microsoft Graph.
    - `featured` boolean, required: Whether to surface this row before the long tail.
    - `authHint` union[], required: Authentication the row is expected to need, so the connect form is right on the first render.
      - union: One way to authenticate a connector. A connector may offer several, so a connect call names the one it means.
        - object
          - `kind` 'api_key', required
          - `slug` string, required: Names this method when a connector offers more than one.
          - `label` string, required: What to call it in a connect form, in the provider's own words.
        - object
          - `kind` 'oauth2', required
          - `slug` string, required: Names this method when a connector offers more than one.
          - `label` string, required: What to call it in a connect form, in the provider's own words.
          - `scopes` string[], required: Scopes requested at authorization unless the caller narrows them.
          - `clientIdMetadataDocument` boolean: Whether the provider supports public clients identified by a metadata-document URL.
          - `dynamicRegistration` boolean, required: Whether the provider supports RFC 7591 dynamic client registration, so no client has to be pre-created.
        - object
          - `kind` 'none', required
          - `slug` string, required: Names this method when a connector offers more than one.
          - `label` string, required: What to call it in a connect form.
        - object
          - `kind` 'first_party', required
          - `slug` string, required: Names this method when a connector offers more than one.
          - `label` string, required: What to call it in a connect form.
          - `provider` string, required: Existing Spacefast credential this connector borrows, e.g. the GitHub App installation. Nothing to enter.
    - `credentialGuidance` object, nullable, required: Provider-supplied help for one credential, shown next to the field asking for it.
      - `label` string, nullable, required: The provider’s display label for this credential.
      - `mintUrl` string, nullable, required: Page on the provider where the credential is created.
      - `docsUrl` string, nullable, required: Provider documentation for this credential.
      - `notes` string, nullable, required: Setup notes: prerequisites, plan requirements, scopes to tick.
      - `steps` string[], required: Ordered steps to get the credential, when the provider spells them out.
    - `alreadyAdded` boolean, required: Whether this team already registered this surface.
    - `connectorSlug` string, nullable, required: The team connector this row resolves to when `alreadyAdded`; null otherwise.
  - `pagination` object, required
    - `nextCursor` string, nullable, required: Opaque cursor for the next page; null when there are no more results.
    - `hasMore` boolean, required: Whether another page exists after this one.

## Other responses

- `default`: Problem details (RFC 9457). Any 4xx/5xx response is one `application/problem+json` document.

---

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