Update a monitor
curl --request PATCH \
--url https://api.firecrawl.dev/v2/monitor/{monitorId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"schedule": {
"text": "every 15 minutes starting at :07"
},
"status": "active"
}
'import requests
url = "https://api.firecrawl.dev/v2/monitor/{monitorId}"
payload = {
"schedule": { "text": "every 15 minutes starting at :07" },
"status": "active"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({schedule: {text: 'every 15 minutes starting at :07'}, status: 'active'})
};
fetch('https://api.firecrawl.dev/v2/monitor/{monitorId}', 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://api.firecrawl.dev/v2/monitor/{monitorId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'schedule' => [
'text' => 'every 15 minutes starting at :07'
],
'status' => 'active'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://api.firecrawl.dev/v2/monitor/{monitorId}"
payload := strings.NewReader("{\n \"schedule\": {\n \"text\": \"every 15 minutes starting at :07\"\n },\n \"status\": \"active\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.patch("https://api.firecrawl.dev/v2/monitor/{monitorId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"schedule\": {\n \"text\": \"every 15 minutes starting at :07\"\n },\n \"status\": \"active\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.firecrawl.dev/v2/monitor/{monitorId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"schedule\": {\n \"text\": \"every 15 minutes starting at :07\"\n },\n \"status\": \"active\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"schedule": {
"cron": "<string>",
"timezone": "<string>"
},
"nextRunAt": "2023-11-07T05:31:56Z",
"lastRunAt": "2023-11-07T05:31:56Z",
"currentCheckId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"targets": [
{
"type": "scrape",
"urls": [
"<string>"
],
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"scrapeOptions": {
"formats": [
"markdown"
],
"onlyMainContent": true,
"onlyCleanContent": false,
"includeTags": [
"<string>"
],
"excludeTags": [
"<string>"
],
"maxAge": 172800000,
"minAge": 123,
"headers": {},
"waitFor": 0,
"mobile": false,
"skipTlsVerification": true,
"timeout": 60000,
"parsers": [
"pdf"
],
"actions": [
{
"type": "wait",
"milliseconds": 2
}
],
"location": {
"country": "US",
"languages": [
"en-US"
]
},
"removeBase64Images": true,
"blockAds": true,
"proxy": "auto",
"storeInCache": true,
"lockdown": false,
"redactPII": false,
"profile": {
"name": "<string>",
"saveChanges": true
},
"threatProtection": {
"riskScoreThreshold": 75,
"blacklist": [
"<string>"
],
"whitelist": [
"<string>"
],
"blockedTlds": [
"<string>"
]
}
}
}
],
"webhook": {
"url": "<string>",
"headers": {},
"metadata": {},
"events": []
},
"notification": {
"email": {
"enabled": false,
"recipients": [
"[email protected]"
],
"includeDiffs": false
}
},
"retentionDays": 123,
"estimatedCreditsPerMonth": 123,
"lastCheckSummary": {
"totalPages": 123,
"same": 123,
"changed": 123,
"new": 123,
"removed": 123,
"error": 123
},
"goal": "<string>",
"judgeEnabled": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
}Monitor Endpoints
Update Monitor
PATCH
/
monitor
/
{monitorId}
Update a monitor
curl --request PATCH \
--url https://api.firecrawl.dev/v2/monitor/{monitorId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"schedule": {
"text": "every 15 minutes starting at :07"
},
"status": "active"
}
'import requests
url = "https://api.firecrawl.dev/v2/monitor/{monitorId}"
payload = {
"schedule": { "text": "every 15 minutes starting at :07" },
"status": "active"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({schedule: {text: 'every 15 minutes starting at :07'}, status: 'active'})
};
fetch('https://api.firecrawl.dev/v2/monitor/{monitorId}', 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://api.firecrawl.dev/v2/monitor/{monitorId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'schedule' => [
'text' => 'every 15 minutes starting at :07'
],
'status' => 'active'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://api.firecrawl.dev/v2/monitor/{monitorId}"
payload := strings.NewReader("{\n \"schedule\": {\n \"text\": \"every 15 minutes starting at :07\"\n },\n \"status\": \"active\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.patch("https://api.firecrawl.dev/v2/monitor/{monitorId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"schedule\": {\n \"text\": \"every 15 minutes starting at :07\"\n },\n \"status\": \"active\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.firecrawl.dev/v2/monitor/{monitorId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"schedule\": {\n \"text\": \"every 15 minutes starting at :07\"\n },\n \"status\": \"active\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"schedule": {
"cron": "<string>",
"timezone": "<string>"
},
"nextRunAt": "2023-11-07T05:31:56Z",
"lastRunAt": "2023-11-07T05:31:56Z",
"currentCheckId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"targets": [
{
"type": "scrape",
"urls": [
"<string>"
],
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"scrapeOptions": {
"formats": [
"markdown"
],
"onlyMainContent": true,
"onlyCleanContent": false,
"includeTags": [
"<string>"
],
"excludeTags": [
"<string>"
],
"maxAge": 172800000,
"minAge": 123,
"headers": {},
"waitFor": 0,
"mobile": false,
"skipTlsVerification": true,
"timeout": 60000,
"parsers": [
"pdf"
],
"actions": [
{
"type": "wait",
"milliseconds": 2
}
],
"location": {
"country": "US",
"languages": [
"en-US"
]
},
"removeBase64Images": true,
"blockAds": true,
"proxy": "auto",
"storeInCache": true,
"lockdown": false,
"redactPII": false,
"profile": {
"name": "<string>",
"saveChanges": true
},
"threatProtection": {
"riskScoreThreshold": 75,
"blacklist": [
"<string>"
],
"whitelist": [
"<string>"
],
"blockedTlds": [
"<string>"
]
}
}
}
],
"webhook": {
"url": "<string>",
"headers": {},
"metadata": {},
"events": []
},
"notification": {
"email": {
"enabled": false,
"recipients": [
"[email protected]"
],
"includeDiffs": false
}
},
"retentionDays": 123,
"estimatedCreditsPerMonth": 123,
"lastCheckSummary": {
"totalPages": 123,
"same": 123,
"changed": 123,
"new": 123,
"removed": 123,
"error": 123
},
"goal": "<string>",
"judgeEnabled": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The monitor ID
Body
application/json
Partial monitor update payload. Include at least one field.
Maximum string length:
256Schedule for monitor checks. Provide either cron or text.
Show child attributes
Show child attributes
Webhook destination for monitor page and check completion events.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Required array length:
1 - 50 elements- Scrape target
- Crawl target
- Search target
Show child attributes
Show child attributes
Required range:
1 <= x <= 365Plain-language goal used to judge whether changed pages are meaningful. If provided and judgeEnabled is omitted, judging is enabled automatically. Required (non-empty) when any target is a search target, unless judgeEnabled is false.
Maximum string length:
2000Whether to judge changed pages against goal. Requires a non-empty goal to run.
Available options:
active, paused ⌘I

