Detect what is behind a URL - Spacefast Docs
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
Any URL a service published. Every plugin's detector gets a look at it.
Responses
200 Response for status 200
$schema string
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
kindstring required
Source kind this candidate would register as.
Allowed: openapi, graphql, mcp
confidencestring required
How sure the detector is. Ranked highest first.
Allowed: high, medium, low
endpointstringrequired
The URL to register, which may not be the URL that was pasted.
titlestring required
Name the source calls itself.
slugstring required
Suggested slug, already checked against the team's connectors.
presetIdstring | 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+jsondocument.
$schema string
Canonical JSON Schema URL for this response body. The server also sends it in the Link: rel="describedby" response header.
typestring required
URL of the documentation page for this error. Derived from code.
titlestring required
Human-readable name of the error type. Derived from code.
statusinteger required
HTTP status of the response, repeated in the body.
min -9007199254740991 · max 9007199254740991
detailstring required
What went wrong in this request.
codestring required
Stable snake_case error code. Match on this, not on detail.
pointerstring
RFC 6901 JSON Pointer to the request field or batch entry that failed, for example /files/37/path. Present on validation failures.
detailsobject
Machine-readable context keyed by the error code.
suggestionsstring[]
Recovery steps safe to show to a person.
nextstring[]
Commands or API requests to run next, usable as written.
requestIdstring 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
teamquery
Body
application/json
url string * Any URL a service published. Every plugin's detector gets a look at it.
Send
Request Examples
cURL
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
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
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
{
"$schema": "http://example.com",
"data": [
{
"kind": "openapi",
"confidence": "high",
"endpoint": "http://example.com",
"title": "string",
"slug": "string",
"presetId": "string"
}
]
}
Error Response Example
{
"$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"
}