import os
from qaip import Qaip
client = Qaip(
api_key=os.environ.get("QAIP_API_KEY"), # This is the default and can be omitted
)
crawl_setting = client.crawls.update_setting(
id="id",
name="name",
)
print(crawl_setting.id)curl https://developer.qaip.com/api/v1/crawl-settings/$ID \
-X PUT \
-H 'Content-Type: application/json' \
-H "x-api-key: $QAIP_API_KEY" \
-d '{
"name": "name"
}'const options = {
method: 'PUT',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
rrule: '<string>',
load_more_enabled: true,
load_more_selectors: ['<string>'],
load_more_max_clicks: 50
})
};
fetch('https://developer.qaip.com/api/v1/crawl-settings/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://developer.qaip.com/api/v1/crawl-settings/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'rrule' => '<string>',
'load_more_enabled' => true,
'load_more_selectors' => [
'<string>'
],
'load_more_max_clicks' => 50
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://developer.qaip.com/api/v1/crawl-settings/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"rrule\": \"<string>\",\n \"load_more_enabled\": true,\n \"load_more_selectors\": [\n \"<string>\"\n ],\n \"load_more_max_clicks\": 50\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://developer.qaip.com/api/v1/crawl-settings/{id}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"rrule\": \"<string>\",\n \"load_more_enabled\": true,\n \"load_more_selectors\": [\n \"<string>\"\n ],\n \"load_more_max_clicks\": 50\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://developer.qaip.com/api/v1/crawl-settings/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"rrule\": \"<string>\",\n \"load_more_enabled\": true,\n \"load_more_selectors\": [\n \"<string>\"\n ],\n \"load_more_max_clicks\": 50\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"start_url": "<string>",
"max_depth": 123,
"html_only": true,
"use_browser": true,
"load_more_enabled": true,
"load_more_selectors": [
"<string>"
],
"load_more_max_clicks": 50,
"path_filters": [
"<string>"
],
"content_pattern": [
"<string>"
],
"max_num_files": 123,
"no_canonical_check": true,
"file_extensions": [
"<string>"
],
"rrule": "<string>"
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"request_id": "<string>",
"details": {},
"retryable": true
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"request_id": "<string>",
"details": {},
"retryable": true
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"request_id": "<string>",
"details": {},
"retryable": true
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"request_id": "<string>",
"details": {},
"retryable": true
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"request_id": "<string>",
"details": {},
"retryable": true
}
}{
"error": {
"code": "unavailable",
"message": "The upstream service is unavailable.",
"request_id": "019d3200-0000-7000-8000-000000000001",
"retryable": false,
"details": {}
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"request_id": "<string>",
"details": {},
"retryable": true
}
}Update web crawl setting
Updates the name, schedule, and load-more options for web crawl data sources. Omitted load-more fields preserve saved values; false disables and [] clears selectors. Null is invalid. Name/schedule-only updates do not migrate legacy settings. CSS validation runs before any save, except for disabling without changing selectors or the limit.
Required scope: ingestion:manage
import os
from qaip import Qaip
client = Qaip(
api_key=os.environ.get("QAIP_API_KEY"), # This is the default and can be omitted
)
crawl_setting = client.crawls.update_setting(
id="id",
name="name",
)
print(crawl_setting.id)curl https://developer.qaip.com/api/v1/crawl-settings/$ID \
-X PUT \
-H 'Content-Type: application/json' \
-H "x-api-key: $QAIP_API_KEY" \
-d '{
"name": "name"
}'const options = {
method: 'PUT',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
rrule: '<string>',
load_more_enabled: true,
load_more_selectors: ['<string>'],
load_more_max_clicks: 50
})
};
fetch('https://developer.qaip.com/api/v1/crawl-settings/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://developer.qaip.com/api/v1/crawl-settings/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'rrule' => '<string>',
'load_more_enabled' => true,
'load_more_selectors' => [
'<string>'
],
'load_more_max_clicks' => 50
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://developer.qaip.com/api/v1/crawl-settings/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"rrule\": \"<string>\",\n \"load_more_enabled\": true,\n \"load_more_selectors\": [\n \"<string>\"\n ],\n \"load_more_max_clicks\": 50\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://developer.qaip.com/api/v1/crawl-settings/{id}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"rrule\": \"<string>\",\n \"load_more_enabled\": true,\n \"load_more_selectors\": [\n \"<string>\"\n ],\n \"load_more_max_clicks\": 50\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://developer.qaip.com/api/v1/crawl-settings/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"rrule\": \"<string>\",\n \"load_more_enabled\": true,\n \"load_more_selectors\": [\n \"<string>\"\n ],\n \"load_more_max_clicks\": 50\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"start_url": "<string>",
"max_depth": 123,
"html_only": true,
"use_browser": true,
"load_more_enabled": true,
"load_more_selectors": [
"<string>"
],
"load_more_max_clicks": 50,
"path_filters": [
"<string>"
],
"content_pattern": [
"<string>"
],
"max_num_files": 123,
"no_canonical_check": true,
"file_extensions": [
"<string>"
],
"rrule": "<string>"
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"request_id": "<string>",
"details": {},
"retryable": true
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"request_id": "<string>",
"details": {},
"retryable": true
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"request_id": "<string>",
"details": {},
"retryable": true
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"request_id": "<string>",
"details": {},
"retryable": true
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"request_id": "<string>",
"details": {},
"retryable": true
}
}{
"error": {
"code": "unavailable",
"message": "The upstream service is unavailable.",
"request_id": "019d3200-0000-7000-8000-000000000001",
"retryable": false,
"details": {}
}
}{
"error": {
"message": "<string>",
"type": "<string>",
"code": "<string>",
"request_id": "<string>",
"details": {},
"retryable": true
}
}Authorizations
API key for authentication
Path Parameters
Ingestion setting ID for the web crawl data source
Body
Name of the web crawl data source
200Recurrence rule (RFC 5545 RRULE). Empty string or omission removes the existing schedule.
Omission preserves the saved value; false disables clicking without clearing selectors or the limit. Null is invalid.
Ordered CSS selectors. Omission preserves them; an empty array clears them and uses built-in controls. Null is invalid.
Maximum click attempts per page. Omission preserves the saved value, or 10 for legacy settings. Null is invalid.
1 <= x <= 100Response
Successfully updated web crawl setting
Web crawl ingestion setting ID
Name of the web crawl ingestion setting
Start URL of the web crawl
Maximum crawl depth
When true, only HTML files will be downloaded
Whether to use a headless browser for crawling
Whether to click load-more controls. Existing settings without this field are disabled.
Ordered CSS selectors. An empty array uses built-in load-more controls.
Maximum click attempts per page. Defaults to 10.
1 <= x <= 100Path filters for crawling
Content patterns for filtering
Maximum number of files to crawl
Whether to disable duplicate filtering by canonical URL
File extensions to include (e.g. ".pdf", ".docx")
Recurrence rule (RFC 5545 RRULE)

