# Detect what is behind a URL

Runs every plugin’s detector against a pasted URL and returns the candidates it recognized, most confident first. The URL to register may not be the URL that was pasted.

## POST `/v1/connectors/detect`

### Authorization

`Authorization` Bearer token · header required

`Authorization: Bearer <token>` with an API key (`sfa_` prefix), an OAuth access token, a session token, or a Space machine credential (`sfm_` prefix).

or

`Authorization` OAuth2 access token · header required

OAuth 2.0 with Spacefast scopes. People use the authorization code flow; machines use client credentials.

Scopes: `connectors:write`

### Query parameters

`team` string

min length 1 · max length 255

### Request body

required `application/json`

`url` string<uri> required

Any URL a service published. Every plugin's detector gets a look at it.

### Responses

#### 200 Response for status 200

`$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

Array of `object`

- `kind` string required

Source kind this candidate would register as.

Allowed: `openapi`, `graphql`, `mcp`

- `confidence` string required

How sure the detector is. Ranked highest first.

Allowed: `high`, `medium`, `low`

- `endpoint` string<uri> required

The URL to register, which may not be the URL that was pasted.

- `title` string required

Name the source calls itself.

- `slug` string required

Suggested slug, already checked against the team's connectors.

- `presetId` string | any required

Catalog row this resolved to, when the paste matched a known service.

#### Error Structure

Any of:

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

`$schema` string<uri>

Canonical JSON Schema URL for this response body. The server also sends it in the `Link: rel="describedby"` response header.

- `type` string required

URL of the documentation page for this error. Derived from `code`.

- `title` string required

Human-readable name of the error type. Derived from `code`.

- `status` integer required

HTTP status of the response, repeated in the body.

min -9007199254740991 · max 9007199254740991

- `detail` string required

What went wrong in this request.

- `code` string required

Stable snake_case error code. Match on this, not on `detail`.

- `pointer` string

RFC 6901 JSON Pointer to the request field or batch entry that failed, for example `/files/37/path`. Present on validation failures.

- `details` object

Machine-readable context keyed by the error code.

- `suggestions` string[]

Recovery steps safe to show to a person.

- `next` string[]

Commands or API requests to run next, usable as written.

- `requestId` string required

ID of this request, from the `X-Request-Id` header or generated. Quote it when contacting support.

## Try it

### Server

**Base URL** https://api.spacefast.com

**Custom base URL** Overrides the selected server when set.

### Authorization

**Bearer token** Remember on this device

**Include my values in samples**

### Parameters

- `team` query

### Body

`application/json`

`url` string * Any URL a service published. Every plugin's detector gets a look at it.

### Send

### Request Examples

#### cURL

```bash
curl -X POST "https://api.spacefast.com/v1/connectors/detect" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "http://example.com"
}'
```

#### JavaScript

```javascript
const response = await fetch("https://api.spacefast.com/v1/connectors/detect", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_TOKEN",
    "Content-Type": "application/json"
  },
  body: "{\n  \"url\": \"http://example.com\"\n}"
});
```

#### Python

```python
import requests

response = requests.post(
    "https://api.spacefast.com/v1/connectors/detect",
    headers={
        "Authorization": "Bearer YOUR_TOKEN",
        "Content-Type": "application/json"
    },
    data="{\n  \"url\": \"http://example.com\"\n}",
)
```

### Response

#### 200 default

```json
{
  "$schema": "http://example.com",
  "data": [
    {
      "kind": "openapi",
      "confidence": "high",
      "endpoint": "http://example.com",
      "title": "string",
      "slug": "string",
      "presetId": "string"
    }
  ]
}
```

#### Error Response Example

```json
{
  "$schema": "http://example.com",
  "type": "string",
  "title": "string",
  "status": -9007199254740991,
  "detail": "string",
  "code": "string",
  "pointer": "string",
  "details": {
    "property1": null,
    "property2": null
  },
  "suggestions": [
    "string"
  ],
  "next": [
    "string"
  ],
  "requestId": "string"
}
```
