Webhook endpoints

Embed
Preview of the card
<a href="https://scrapelyserp.com/docs/ref-webhook-endpoints"><img src="https://scrapelyserp.com/docs/_api/public/orgs/affc5b0f-d3c2-423a-8143-9d10db5736ae/spaces/981e6275-da3f-446c-82de-889f59c83b6f/pages/31c20573-8dde-4a8d-b65c-961d28e0ba5e/social-card.svg?v=3e7ae33eec8b" alt="Webhook endpoints" width="600" height="315"></a>
GEThttps://scrapelyserp.com/api/v1/webhook_endpoints
List webhook endpoints
Code samples
cURL
curl -X GET "https://scrapelyserp.com/api/v1/webhook_endpoints"
TypeScript
const res = await fetch('https://scrapelyserp.com/api/v1/webhook_endpoints', {
  method: 'GET',
});
const data = await res.json();
Python
import requests

res = requests.request(
    "GET",
    "https://scrapelyserp.com/api/v1/webhook_endpoints",
)
data = res.json()
Go
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://scrapelyserp.com/api/v1/webhook_endpoints", nil)
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}
PHP
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://scrapelyserp.com/api/v1/webhook_endpoints');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Ruby
require 'net/http'
require 'uri'

uri = URI('https://scrapelyserp.com/api/v1/webhook_endpoints')
req = Net::HTTP::Get.new(uri)
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
  http.request(req)
end
puts res.body
Java
import java.net.URI;
import java.net.http.*;
import java.net.http.HttpRequest.BodyPublishers;

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://scrapelyserp.com/api/v1/webhook_endpoints"))
    .GET()
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
Responses
200 Oldest first. No secrets.
Example
{
  "object": {},
  "data": [
    {
      "id": "we_3f9a1c2e4b5d6a7f8e9c",
      "object": {},
      "url": "string",
      "description": "string",
      "events": [
        null
      ],
      "enabled": true,
      "secret_hint": "whsec_…9c41",
      "previous_secret_expires_at": "2024-01-01T00:00:00Z",
      "created_at": "2024-01-01T00:00:00Z",
      "updated_at": "2024-01-01T00:00:00Z"
    }
  ],
  "has_more": true
}
Schema
object
dataWebhookEndpoint[]
Show child parameters
idstringrequired
objectrequired
urlstringrequired
Normalised. A callback_url / webhook_url must equal it to be delivered here.
descriptionstring
eventsstring[]required
Account-wide events this endpoint receives. null (the default): every event. []: none — only deliveries that name this endpoint (a job's callback_url, a watchlist's webhook_url), which it always receives.
enabledbooleanrequired
A disabled endpoint receives nothing; deliveries naming it are recorded as failed.
secret_hintstringrequired
The last four characters of the current signing secret. The secret itself is never returned after create or rotate.
previous_secret_expires_atstring
During a rotation with overlap: when the previous secret stops signing (a second v1= until then, 24 hours after the rotation).
created_atstringrequired
updated_atstring
has_moreboolean
401 UNAUTHORIZED: missing, unknown or revoked key.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
429 RATE_LIMITED or CONCURRENCY_LIMIT. Honour Retry-After.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
500 INTERNAL: our fault, not charged. Quote X-Request-Id.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
POSThttps://scrapelyserp.com/api/v1/webhook_endpoints
Create a webhook endpoint

Registers a URL and generates its own signing secret, returned in secret this once. At most 10 per account (409 beyond). Not idempotent by design: a replayable response would be a stored secret.

Request body application/json
urlstring
HTTPS, a public host, port 443 or 1024–65535. Unique per account.
descriptionstring
eventsstring[]
Account-wide events this endpoint receives. null (the default): every event. []: none — only deliveries that name this endpoint (a job's callback_url, a watchlist's webhook_url), which it always receives.
enabledboolean
= true
{
  "url": "string",
  "description": "string",
  "events": [
    "job.finished"
  ],
  "enabled": true
}
Code samples
cURL
curl -X POST "https://scrapelyserp.com/api/v1/webhook_endpoints" \
  -H "Content-Type: application/json" \
  -d '{"url":"string","description":"string","events":["job.finished"],"enabled":true}'
TypeScript
const res = await fetch('https://scrapelyserp.com/api/v1/webhook_endpoints', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({"url":"string","description":"string","events":["job.finished"],"enabled":true}),
});
const data = await res.json();
Python
import requests

res = requests.request(
    "POST",
    "https://scrapelyserp.com/api/v1/webhook_endpoints",
    headers={
    "Content-Type": "application/json",
    },
    json={"url": "string", "description": "string", "events": ["job.finished"], "enabled": True},
)
data = res.json()
Go
package main

import (
	"fmt"
	"io"
	"net/http"
	"strings"
)

func main() {
	req, _ := http.NewRequest("POST", "https://scrapelyserp.com/api/v1/webhook_endpoints", strings.NewReader(`{"url":"string","description":"string","events":["job.finished"],"enabled":true}`))
	req.Header.Set("Content-Type", "application/json")
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}
PHP
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://scrapelyserp.com/api/v1/webhook_endpoints');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"url":"string","description":"string","events":["job.finished"],"enabled":true}');
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Ruby
require 'net/http'
require 'uri'

uri = URI('https://scrapelyserp.com/api/v1/webhook_endpoints')
req = Net::HTTP::Post.new(uri)
req['Content-Type'] = 'application/json'
req.body = '{"url":"string","description":"string","events":["job.finished"],"enabled":true}'
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
  http.request(req)
end
puts res.body
Java
import java.net.URI;
import java.net.http.*;
import java.net.http.HttpRequest.BodyPublishers;

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://scrapelyserp.com/api/v1/webhook_endpoints"))
    .header("Content-Type", "application/json")
    .method("POST", BodyPublishers.ofString("{\"url\":\"string\",\"description\":\"string\",\"events\":[\"job.finished\"],\"enabled\":true}"))
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
Responses
201 Created. Save secret now.
Example
{
  "id": "we_3f9a1c2e4b5d6a7f8e9c",
  "object": {},
  "url": "string",
  "description": "string",
  "events": [
    "job.finished"
  ],
  "enabled": true,
  "secret_hint": "whsec_…9c41",
  "previous_secret_expires_at": "2024-01-01T00:00:00Z",
  "created_at": "2024-01-01T00:00:00Z",
  "updated_at": "2024-01-01T00:00:00Z",
  "secret": "whsec_5b0e…"
}
Schema
idstringrequired
objectrequired
urlstringrequired
Normalised. A callback_url / webhook_url must equal it to be delivered here.
descriptionstring
eventsstring[]required
Account-wide events this endpoint receives. null (the default): every event. []: none — only deliveries that name this endpoint (a job's callback_url, a watchlist's webhook_url), which it always receives.
enabledbooleanrequired
A disabled endpoint receives nothing; deliveries naming it are recorded as failed.
secret_hintstringrequired
The last four characters of the current signing secret. The secret itself is never returned after create or rotate.
previous_secret_expires_atstring
During a rotation with overlap: when the previous secret stops signing (a second v1= until then, 24 hours after the rotation).
created_atstringrequired
updated_atstring
secretstringrequired
The signing secret. Shown this once: store it now (it is kept encrypted and cannot be read back).
400 MISSING_PARAM or INVALID_PARAM; param names the culprit.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
401 UNAUTHORIZED: missing, unknown or revoked key.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
409 CONFLICT: idempotent request in flight, or the job is already running/done.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
429 RATE_LIMITED or CONCURRENCY_LIMIT. Honour Retry-After.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
500 INTERNAL: our fault, not charged. Quote X-Request-Id.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
GEThttps://scrapelyserp.com/api/v1/webhook_endpoints/{id}
Get a webhook endpoint
Parameters
idstringpathrequired
The endpoint id (we_…).
Code samples
cURL
curl -X GET "https://scrapelyserp.com/api/v1/webhook_endpoints/{id}"
TypeScript
const res = await fetch('https://scrapelyserp.com/api/v1/webhook_endpoints/{id}', {
  method: 'GET',
});
const data = await res.json();
Python
import requests

res = requests.request(
    "GET",
    "https://scrapelyserp.com/api/v1/webhook_endpoints/{id}",
)
data = res.json()
Go
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, _ := http.NewRequest("GET", "https://scrapelyserp.com/api/v1/webhook_endpoints/{id}", nil)
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}
PHP
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://scrapelyserp.com/api/v1/webhook_endpoints/{id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Ruby
require 'net/http'
require 'uri'

uri = URI('https://scrapelyserp.com/api/v1/webhook_endpoints/{id}')
req = Net::HTTP::Get.new(uri)
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
  http.request(req)
end
puts res.body
Java
import java.net.URI;
import java.net.http.*;
import java.net.http.HttpRequest.BodyPublishers;

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://scrapelyserp.com/api/v1/webhook_endpoints/{id}"))
    .GET()
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
Responses
200 The endpoint. No secret.
Example
{
  "id": "we_3f9a1c2e4b5d6a7f8e9c",
  "object": {},
  "url": "string",
  "description": "string",
  "events": [
    "job.finished"
  ],
  "enabled": true,
  "secret_hint": "whsec_…9c41",
  "previous_secret_expires_at": "2024-01-01T00:00:00Z",
  "created_at": "2024-01-01T00:00:00Z",
  "updated_at": "2024-01-01T00:00:00Z"
}
Schema
idstringrequired
objectrequired
urlstringrequired
Normalised. A callback_url / webhook_url must equal it to be delivered here.
descriptionstring
eventsstring[]required
Account-wide events this endpoint receives. null (the default): every event. []: none — only deliveries that name this endpoint (a job's callback_url, a watchlist's webhook_url), which it always receives.
enabledbooleanrequired
A disabled endpoint receives nothing; deliveries naming it are recorded as failed.
secret_hintstringrequired
The last four characters of the current signing secret. The secret itself is never returned after create or rotate.
previous_secret_expires_atstring
During a rotation with overlap: when the previous secret stops signing (a second v1= until then, 24 hours after the rotation).
created_atstringrequired
updated_atstring
401 UNAUTHORIZED: missing, unknown or revoked key.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
404 NOT_FOUND.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
429 RATE_LIMITED or CONCURRENCY_LIMIT. Honour Retry-After.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
500 INTERNAL: our fault, not charged. Quote X-Request-Id.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
DELETEhttps://scrapelyserp.com/api/v1/webhook_endpoints/{id}
Delete a webhook endpoint

Pending retries to it, and jobs or watchlists that name its URL, are recorded as failed deliveries from now on.

Parameters
idstringpathrequired
The endpoint id (we_…).
Code samples
cURL
curl -X DELETE "https://scrapelyserp.com/api/v1/webhook_endpoints/{id}"
TypeScript
const res = await fetch('https://scrapelyserp.com/api/v1/webhook_endpoints/{id}', {
  method: 'DELETE',
});
const data = await res.json();
Python
import requests

res = requests.request(
    "DELETE",
    "https://scrapelyserp.com/api/v1/webhook_endpoints/{id}",
)
data = res.json()
Go
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, _ := http.NewRequest("DELETE", "https://scrapelyserp.com/api/v1/webhook_endpoints/{id}", nil)
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}
PHP
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://scrapelyserp.com/api/v1/webhook_endpoints/{id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Ruby
require 'net/http'
require 'uri'

uri = URI('https://scrapelyserp.com/api/v1/webhook_endpoints/{id}')
req = Net::HTTP::Delete.new(uri)
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
  http.request(req)
end
puts res.body
Java
import java.net.URI;
import java.net.http.*;
import java.net.http.HttpRequest.BodyPublishers;

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://scrapelyserp.com/api/v1/webhook_endpoints/{id}"))
    .method("DELETE", BodyPublishers.noBody())
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
Responses
200 Deleted.
Example
{
  "id": "string",
  "object": {},
  "deleted": {}
}
Schema
idstring
object
deleted
401 UNAUTHORIZED: missing, unknown or revoked key.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
404 NOT_FOUND.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
429 RATE_LIMITED or CONCURRENCY_LIMIT. Honour Retry-After.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
500 INTERNAL: our fault, not charged. Quote X-Request-Id.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
PATCHhttps://scrapelyserp.com/api/v1/webhook_endpoints/{id}
Update a webhook endpoint

Change url, description, events or enabled. The secret is unchanged (rotate it separately).

Parameters
idstringpathrequired
The endpoint id (we_…).
Request body application/json
urlstring
HTTPS, a public host, port 443 or 1024–65535. Unique per account.
descriptionstring
eventsstring[]
Account-wide events this endpoint receives. null (the default): every event. []: none — only deliveries that name this endpoint (a job's callback_url, a watchlist's webhook_url), which it always receives.
enabledboolean
= true
{
  "url": "string",
  "description": "string",
  "events": [
    "job.finished"
  ],
  "enabled": true
}
Code samples
cURL
curl -X PATCH "https://scrapelyserp.com/api/v1/webhook_endpoints/{id}" \
  -H "Content-Type: application/json" \
  -d '{"url":"string","description":"string","events":["job.finished"],"enabled":true}'
TypeScript
const res = await fetch('https://scrapelyserp.com/api/v1/webhook_endpoints/{id}', {
  method: 'PATCH',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({"url":"string","description":"string","events":["job.finished"],"enabled":true}),
});
const data = await res.json();
Python
import requests

res = requests.request(
    "PATCH",
    "https://scrapelyserp.com/api/v1/webhook_endpoints/{id}",
    headers={
    "Content-Type": "application/json",
    },
    json={"url": "string", "description": "string", "events": ["job.finished"], "enabled": True},
)
data = res.json()
Go
package main

import (
	"fmt"
	"io"
	"net/http"
	"strings"
)

func main() {
	req, _ := http.NewRequest("PATCH", "https://scrapelyserp.com/api/v1/webhook_endpoints/{id}", strings.NewReader(`{"url":"string","description":"string","events":["job.finished"],"enabled":true}`))
	req.Header.Set("Content-Type", "application/json")
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}
PHP
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://scrapelyserp.com/api/v1/webhook_endpoints/{id}');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"url":"string","description":"string","events":["job.finished"],"enabled":true}');
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Ruby
require 'net/http'
require 'uri'

uri = URI('https://scrapelyserp.com/api/v1/webhook_endpoints/{id}')
req = Net::HTTP::Patch.new(uri)
req['Content-Type'] = 'application/json'
req.body = '{"url":"string","description":"string","events":["job.finished"],"enabled":true}'
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
  http.request(req)
end
puts res.body
Java
import java.net.URI;
import java.net.http.*;
import java.net.http.HttpRequest.BodyPublishers;

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://scrapelyserp.com/api/v1/webhook_endpoints/{id}"))
    .header("Content-Type", "application/json")
    .method("PATCH", BodyPublishers.ofString("{\"url\":\"string\",\"description\":\"string\",\"events\":[\"job.finished\"],\"enabled\":true}"))
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
Responses
200 Updated.
Example
{
  "id": "we_3f9a1c2e4b5d6a7f8e9c",
  "object": {},
  "url": "string",
  "description": "string",
  "events": [
    "job.finished"
  ],
  "enabled": true,
  "secret_hint": "whsec_…9c41",
  "previous_secret_expires_at": "2024-01-01T00:00:00Z",
  "created_at": "2024-01-01T00:00:00Z",
  "updated_at": "2024-01-01T00:00:00Z"
}
Schema
idstringrequired
objectrequired
urlstringrequired
Normalised. A callback_url / webhook_url must equal it to be delivered here.
descriptionstring
eventsstring[]required
Account-wide events this endpoint receives. null (the default): every event. []: none — only deliveries that name this endpoint (a job's callback_url, a watchlist's webhook_url), which it always receives.
enabledbooleanrequired
A disabled endpoint receives nothing; deliveries naming it are recorded as failed.
secret_hintstringrequired
The last four characters of the current signing secret. The secret itself is never returned after create or rotate.
previous_secret_expires_atstring
During a rotation with overlap: when the previous secret stops signing (a second v1= until then, 24 hours after the rotation).
created_atstringrequired
updated_atstring
400 MISSING_PARAM or INVALID_PARAM; param names the culprit.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
401 UNAUTHORIZED: missing, unknown or revoked key.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
404 NOT_FOUND.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
409 CONFLICT: idempotent request in flight, or the job is already running/done.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
429 RATE_LIMITED or CONCURRENCY_LIMIT. Honour Retry-After.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
500 INTERNAL: our fault, not charged. Quote X-Request-Id.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
POSThttps://scrapelyserp.com/api/v1/webhook_endpoints/{id}/rotate
Rotate the signing secret

A new secret, effective at once, returned in secret this once. With overlap: true (the default) the old secret keeps signing too — a second v1= in Scrapely-Signature — for 24 hours, so you can deploy the new one without missing a delivery. overlap: false drops it immediately (use it if the secret leaked).

Parameters
idstringpathrequired
The endpoint id (we_…).
Request body application/json
overlapboolean
= true
{
  "overlap": true
}
Code samples
cURL
curl -X POST "https://scrapelyserp.com/api/v1/webhook_endpoints/{id}/rotate" \
  -H "Content-Type: application/json" \
  -d '{"overlap":true}'
TypeScript
const res = await fetch('https://scrapelyserp.com/api/v1/webhook_endpoints/{id}/rotate', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({"overlap":true}),
});
const data = await res.json();
Python
import requests

res = requests.request(
    "POST",
    "https://scrapelyserp.com/api/v1/webhook_endpoints/{id}/rotate",
    headers={
    "Content-Type": "application/json",
    },
    json={"overlap": True},
)
data = res.json()
Go
package main

import (
	"fmt"
	"io"
	"net/http"
	"strings"
)

func main() {
	req, _ := http.NewRequest("POST", "https://scrapelyserp.com/api/v1/webhook_endpoints/{id}/rotate", strings.NewReader(`{"overlap":true}`))
	req.Header.Set("Content-Type", "application/json")
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}
PHP
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://scrapelyserp.com/api/v1/webhook_endpoints/{id}/rotate');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"overlap":true}');
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Ruby
require 'net/http'
require 'uri'

uri = URI('https://scrapelyserp.com/api/v1/webhook_endpoints/{id}/rotate')
req = Net::HTTP::Post.new(uri)
req['Content-Type'] = 'application/json'
req.body = '{"overlap":true}'
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
  http.request(req)
end
puts res.body
Java
import java.net.URI;
import java.net.http.*;
import java.net.http.HttpRequest.BodyPublishers;

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://scrapelyserp.com/api/v1/webhook_endpoints/{id}/rotate"))
    .header("Content-Type", "application/json")
    .method("POST", BodyPublishers.ofString("{\"overlap\":true}"))
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
Responses
200 Rotated. Save secret now.
Example
{
  "id": "we_3f9a1c2e4b5d6a7f8e9c",
  "object": {},
  "url": "string",
  "description": "string",
  "events": [
    "job.finished"
  ],
  "enabled": true,
  "secret_hint": "whsec_…9c41",
  "previous_secret_expires_at": "2024-01-01T00:00:00Z",
  "created_at": "2024-01-01T00:00:00Z",
  "updated_at": "2024-01-01T00:00:00Z",
  "secret": "whsec_5b0e…"
}
Schema
idstringrequired
objectrequired
urlstringrequired
Normalised. A callback_url / webhook_url must equal it to be delivered here.
descriptionstring
eventsstring[]required
Account-wide events this endpoint receives. null (the default): every event. []: none — only deliveries that name this endpoint (a job's callback_url, a watchlist's webhook_url), which it always receives.
enabledbooleanrequired
A disabled endpoint receives nothing; deliveries naming it are recorded as failed.
secret_hintstringrequired
The last four characters of the current signing secret. The secret itself is never returned after create or rotate.
previous_secret_expires_atstring
During a rotation with overlap: when the previous secret stops signing (a second v1= until then, 24 hours after the rotation).
created_atstringrequired
updated_atstring
secretstringrequired
The signing secret. Shown this once: store it now (it is kept encrypted and cannot be read back).
400 MISSING_PARAM or INVALID_PARAM; param names the culprit.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
401 UNAUTHORIZED: missing, unknown or revoked key.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
404 NOT_FOUND.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
429 RATE_LIMITED or CONCURRENCY_LIMIT. Honour Retry-After.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
500 INTERNAL: our fault, not charged. Quote X-Request-Id.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
POSThttps://scrapelyserp.com/api/v1/webhook_endpoints/{id}/test
Send a test event

One signed webhook.test delivery to this endpoint, now, without retries. Recorded in the delivery log.

Parameters
idstringpathrequired
The endpoint id (we_…).
Code samples
cURL
curl -X POST "https://scrapelyserp.com/api/v1/webhook_endpoints/{id}/test"
TypeScript
const res = await fetch('https://scrapelyserp.com/api/v1/webhook_endpoints/{id}/test', {
  method: 'POST',
});
const data = await res.json();
Python
import requests

res = requests.request(
    "POST",
    "https://scrapelyserp.com/api/v1/webhook_endpoints/{id}/test",
)
data = res.json()
Go
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, _ := http.NewRequest("POST", "https://scrapelyserp.com/api/v1/webhook_endpoints/{id}/test", nil)
	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}
PHP
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://scrapelyserp.com/api/v1/webhook_endpoints/{id}/test');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Ruby
require 'net/http'
require 'uri'

uri = URI('https://scrapelyserp.com/api/v1/webhook_endpoints/{id}/test')
req = Net::HTTP::Post.new(uri)
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == 'https') do |http|
  http.request(req)
end
puts res.body
Java
import java.net.URI;
import java.net.http.*;
import java.net.http.HttpRequest.BodyPublishers;

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://scrapelyserp.com/api/v1/webhook_endpoints/{id}/test"))
    .method("POST", BodyPublishers.noBody())
    .build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
Responses
200 What the endpoint answered.
Example
{
  "object": {},
  "endpoint_id": "string",
  "delivered": true,
  "status_code": 0,
  "duration_ms": 0,
  "error": "string"
}
Schema
object
endpoint_idstring
deliveredboolean
status_codeinteger
duration_msinteger
errorstring
401 UNAUTHORIZED: missing, unknown or revoked key.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
404 NOT_FOUND.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
429 RATE_LIMITED or CONCURRENCY_LIMIT. Honour Retry-After.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
500 INTERNAL: our fault, not charged. Quote X-Request-Id.
Example
{
  "error": {
    "code": "MISSING_PARAM",
    "message": "string",
    "param": "string",
    "docs": "/docs/errors#insufficient_credits"
  }
}
Schema
errorobjectrequired
Show child parameters
codestringrequired
Stable, machine-readable. Branch on this, never on message.
MISSING_PARAM | INVALID_PARAM | UNAUTHORIZED | DEMO_READ_ONLY | INSUFFICIENT_CREDITS | NOT_FOUND | CONFLICT | CONCURRENCY_LIMIT | RATE_LIMITED | TARGET_FAILED | UNAVAILABLE | NOT_IMPLEMENTED | INTERNAL
messagestringrequired
Human-readable; may change.
paramstring
The parameter at fault, when there is one.
docsstring
Link to this code on /docs/errors.
Updated