Skip to main content
POST
/
webhooks
cURL
curl \
  -X POST 'MEILISEARCH_URL/webhooks' \
  -H 'Content-Type: application/json' \
  --data-binary '{
    "url": "WEBHOOK_TARGET_URL",
    "headers": {
      "authorization": "SECURITY_KEY",
      "referer": "https://example.com"
    }
  }'
client.createWebhook({
url: 'WEBHOOK_TARGET_URL',
headers: {
authorization: 'SECURITY_KEY',
referer: 'https://example.com'
}
})
client.create_webhook({
'url': 'https://example.com/webhook',
'headers': {"Authorization":"", "X-Custom-Header":"test"},
})
HashMap<String, Object> headers = new HashMap<>();
headers.put("authorization", "MASTER_KEY");
headers.put("referer", "http://example.com");
CreateUpdateWebhookRequest webhookReq1 = new CreateUpdateWebhookRequest("http://webiste.com", headers);

Webhook webhook = client.createWebhook();
client.AddWebhook(&meilisearch.AddWebhookRequest{
URL: "WEBHOOK_TARGET_URL",
Headers: map[string]string{
"authorization": "SECURITY_KEY",
"referer": "https://example.com"
},
});
let mut payload = meilisearch_sdk::webhooks::WebhookCreate::new("WEBHOOK_TARGET_URL");
payload
.insert_header("authorization", "SECURITY_KEY")
.insert_header("referer", "https://example.com");
let webhook = client.create_webhook(&payload).await.unwrap();
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_PORT => "7700",
CURLOPT_URL => "http://localhost:7700/webhooks",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'url' => 'https://your.site/on-tasks-completed',
'headers' => [
'Authorization' => 'Bearer a-secret-token'
]
]),
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;
}
require 'uri'
require 'net/http'

url = URI("http://localhost:7700/webhooks")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"url\": \"https://your.site/on-tasks-completed\",\n \"headers\": {\n \"Authorization\": \"Bearer a-secret-token\"\n }\n}"

response = http.request(request)
puts response.read_body
{
  "uuid": "550e8400-e29b-41d4-a716-446655440000",
  "url": "https://your.site/on-tasks-completed",
  "headers": {
    "Authorization": "Bearer a-secret-token"
  },
  "isEditable": true
}
{
"message": "The webhook URL is invalid. Expected a valid URL.",
"code": "invalid_webhook_url",
"type": "invalid_request",
"link": "https://docs.meilisearch.com/errors#invalid_webhook_url"
}
{
"message": "The Authorization header is missing. It must use the bearer authorization method.",
"code": "missing_authorization_header",
"type": "auth",
"link": "https://docs.meilisearch.com/errors#missing_authorization_header"
}

Authorizations

Authorization
string
header
required

An API key is a token that you provide when making API calls. Read more about how to secure your project.

Include the API key to the Authorization header, for instance:

-H 'Authorization: Bearer 6436fc5237b0d6e0d64253fbaac21d135012ecf1'

If you use a SDK, ensure you instantiate the client with the API key, for instance with JS SDK:

const client = new MeiliSearch({
host: 'MEILISEARCH_URL',
apiKey: '6436fc5237b0d6e0d64253fbaac21d135012ecf1'
});

Body

application/json

Configuration for a webhook endpoint

url
string | null

URL endpoint to call when tasks complete.

Example:

"https://your.site/on-tasks-completed"

headers
object | null

HTTP headers to include in webhook requests.

Example:
{ "Authorization": "Bearer a-secret-token" }

Response

Webhook created successfully.

Webhook object with metadata and redacted authorization headers.

uuid
string<uuid>
required

Unique identifier of the webhook.

isEditable
boolean
required

Whether the webhook can be edited.

url
string | null

URL endpoint to call when tasks complete.

Example:

"https://your.site/on-tasks-completed"

headers
object | null

HTTP headers to include in webhook requests.

Example:
{ "Authorization": "Bearer a-secret-token" }