> ## Documentation Index
> Fetch the complete documentation index at: https://help.dingtalk.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhook parameters — full reference

> Full reference for AI Table automation webhook parameters — Authorization (Bearer token) and idempotent Client-Token headers, request body format, response structure, and error code troubleshooting.

## 1. Headers

| **Name**      | **Type** | **Required** | **Description**                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ------------- | -------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Authorization | string   | No           | Credential check (Bearer token) — pass it via the request header. Header format (case-sensitive):  --header 'Authorization: Bearer \\\[real Bearer token]'  Single quotes are required in the actual header. Square brackets are placeholders — don't include them in the real header. The header key is fixed to `Authorization` and the value has the fixed prefix `Bearer`.  Note: there must be a single space between the `Bearer` prefix and the real Bearer token. |
| Client-Token  | string   | No           | For idempotency. The header key is fixed to `Client-Token` and the value is generated by the caller (typically a UUID).  Empty value = a new request. Non-empty = idempotent update — the same value within a 3-hour window only fires once.                                                                                                                                                                                                                              |

Sample Bearer token request (square brackets are placeholders — replace before running, don't include the brackets):

```bash theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl --location --request POST '[real webhook URL]' \
--header 'Authorization: Bearer [real Bearer token]' \
--header 'Content-Type: application/json' \
--data-raw '{[real request body]}'
```

## 2. Request body

Set whatever fields you need. The body must be valid JSON.

## 3. Response body

If `code` in the response is not `0`, the request failed.

When `code` is non-zero, look up the code and message in the **Error codes** table below to debug.

When the webhook receives the request successfully, the response looks like:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
"msg": "",
"data": { },
"code": 0
}
```

When the webhook hits an error, the response looks like:

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
"data": { },
"code": 800004509,
"msg": "webhook trigger workflow is disabled"
}
```

## 4. Error codes

When a webhook trigger errors out, check the response on the caller side and match the code and message against the table below.

| **Code**  | **Message**                                                      | **Cause**                                                                                                                                                                                                       | **Resolution**                                                            |
| --------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| 800005649 | Credential check failed                                          | The credential check is on, but the credential in the HTTP request doesn't match what the automation expects — the run can't proceed.                                                                           | Re-check and re-enter the credential.                                     |
| 800005650 | Source IP not in allowlist                                       | The IP allowlist is on, and the request's source IP isn't on it.                                                                                                                                                | Add the IP to the allowlist or send the request from a permitted IP.      |
| 800005647 | Request body too large                                           | The webhook received an HTTP request larger than 4 MB.                                                                                                                                                          | Trim the request body.                                                    |
| 800005646 | Self-calling HTTP node — loop detected; change the HTTP node URL | The automation is triggered "when webhook is called" and its action is "send HTTP request" — and the HTTP URL is the same webhook URL, causing an infinite loop.                                                | Change the **Send HTTP request** URL — it must not match the webhook URL. |
| 800005652 | Too many requests; try again later                               | The webhook is rate-limited.  -   AI Table-wide webhook rate limit: 50 req/sec.  -   Per-automation webhook rate limit: 5 req/sec.  -   Automations without credential check (no Bearer token): 1 req/sec each. | Try again later.                                                          |
| 800006003 | Request body is not valid JSON; fix and retry                    | Typically happens when using "set output via incoming request" — the received body is not valid JSON.                                                                                                           | Re-check the request body's JSON, fix it, and retry.                      |
