Update custom extraction

PUT/v1/api/sites/{site_id}/custom-extractions/{rule_id}
Scope
alerts:write
Token
OAuth access token only
Role
Editor, owner or admin
MCP tool
update_custom_extraction_rule · preview: MCP write tools are in preview
What scopes, tokens and roles mean →
Request
curl -X PUT "https://api.crawle.io/v1/api/sites/11111111-1111-1111-1111-111111111111/custom-extractions/1" \
  -H "Authorization: Bearer $CRAWLE_ACCESS_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{}'
const response = await fetch("https://api.crawle.io/v1/api/sites/11111111-1111-1111-1111-111111111111/custom-extractions/1", {
  method: "PUT",
  headers: {
    Authorization: `Bearer ${process.env.CRAWLE_ACCESS_TOKEN}`,
    "Idempotency-Key": crypto.randomUUID(),
    "Content-Type": "application/json",
  },
  body: JSON.stringify({}),
});
const data = await response.json();
import os
import uuid

import requests

response = requests.request(
    "PUT",
    "https://api.crawle.io/v1/api/sites/11111111-1111-1111-1111-111111111111/custom-extractions/1",
    headers={
        "Authorization": f"Bearer {os.environ['CRAWLE_ACCESS_TOKEN']}",
        "Idempotency-Key": str(uuid.uuid4()),
    },
    json={},
)
data = response.json()
$CRAWLE_ACCESS_TOKEN
is an OAuth access token from your integration's sign-in.
Idempotency-Key
is a new unique value for each new request.

Response 200: a JSON object. Its fields are not described in the API contract yet, so no example is shown.

Parameters

site_idpath · string (uuid)required
rule_idpath · integerrequired
Idempotency-Keyheader · stringrequired
1–180 characters

Request body

channelsarray of string or null
up to 16 items
css_selectorstring or null
1–2000 characters
enabledboolean or null
extraction_configobject or null
group_labelstring or null
up to 200 characters
namestring or null
1–200 characters
operatorstring or null
up to 64 characters
severitystring or null
up to 32 characters
thresholdinteger or null
1–100000
url_scope_typestring or null
up to 64 characters
url_scope_valuestring or null
up to 2048 characters
valuestring or null
up to 10000 characters

Response 200

Returns a JSON object. Its fields are not described in the API contract yet.

Errors

  • 401

    When
    Missing, invalid, or expired token.
  • 403

    When
    The token has none of the accepted scopes (alerts:write).
  • 403

    When
    Called with an API key. This endpoint needs an OAuth access token.
  • 403

    When
    The person's workspace role is below editor.
  • 422

    When
    The request did not match the schema. detail lists each problem.
  • 429

    When
    Rate limited. Wait for Retry-After seconds.

All errors and what to do →

Generated from the API contract at 7e7039b0b, synced October 30, 2026.