FurniOpsDocs
API referenceSources

Probe a vendor URL

Queues a probe of the URL: robots.txt obeyed, one request at a time, at most 25. Follow it with GET /v1/source-probes/{id}. With AI agents in the plan, the onboarding agent then proposes a source from the report when FurniOps can run one for it; a person decides. A catalogue may have 3 open probes and start 20 in a day; one more answers 409 conflict.

POST/v1/source-probes

Queues a probe of the URL: robots.txt obeyed, one request at a time, at most 25. Follow it with GET /v1/source-probes/{id}. With AI agents in the plan, the onboarding agent then proposes a source from the report when FurniOps can run one for it; a person decides. A catalogue may have 3 open probes and start 20 in a day; one more answers 409 conflict.

Authorization

apiKey
AuthorizationBearer <token>

An API key (fo_live_… / fo_test_…) as a bearer token

In: header

Header Parameters

FurniOps-Version?string

Dated API version; pinned per organisation on first use and overridable per request

Value in

  • "2026-10-01"
  • "2026-10-04"
FurniOps-Mode?string

The data the request acts on: test is the organisation's sandbox. An OAuth token picks it (live by default); an API key's mode is fixed, and naming the other one is refused

Value in

  • "live"
  • "test"
Idempotency-Key*string

Unique key for this operation, reused on retries (24 h)

Length1 <= length <= 257
FurniOps-Dry-Run?string

Preview the write and change nothing: true answers the would-be response, explain a Preview (application/vnd.furniops.preview+json)

Value in

  • "true"
  • "explain"

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

The URL to probe

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X POST "https://example.com/v1/source-probes" \  -H "Idempotency-Key: string" \  -H "Content-Type: application/json" \  -d '{    "url": "http://example.com"  }'
{  "object": "source_probe",  "id": "string",  "url": "string",  "status": "queued",  "livemode": true,  "report": {    "final_url": "string",    "robots": {      "state": "parsed",      "crawl_delay_seconds": 0,      "sitemaps": [        "string"      ]    },    "platform": "shopify",    "confidence": 0,    "evidence": [      {        "platform": "shopify",        "signal": "string",        "weight": 0      }    ],    "wall": {      "kind": "bot_challenge",      "detail": "string"    },    "feed": {      "platform": "shopify",      "url": "string",      "status": -9007199254740991,      "products": 0,      "total": 0,      "fields": [        "name"      ]    },    "sitemap": {      "read": [        "string"      ],      "product_pages": 0,      "truncated": true    },    "sample": {      "pages": [        {          "url": "string",          "status": -9007199254740991,          "products": 0        }      ],      "malformed_blocks": 0,      "coverage": {        "property1": 0,        "property2": 0      }    },    "disallowed": [      "string"    ],    "requests": 0,    "notes": [      "string"    ],    "estimate": {      "effort": "low",      "kind": "platform_feed",      "reasons": [        "string"      ]    }  },  "failure": "string",  "proposal": "string",  "created_at": "2019-08-24T14:15:22Z",  "completed_at": "2019-08-24T14:15:22Z"}