This page covers LangGraph API webhooks, a way to receive a POST callback when a specific run completes. If you are looking for LangSmith automation webhooks (triggered when automation rules match runs or threads), see Configure webhook notifications for rules.
webhook parameter. If this parameter is specified by an endpoint that can accept POST requests, LangSmith will send a request at the completion of a run.
When working with LangSmith, you may want to use webhooks to receive updates after an API call completes. Webhooks are useful for triggering actions in your service once a run has finished processing. To implement this, you need to expose an endpoint that can accept POST requests and pass this endpoint as a webhook parameter in your API request.
Currently, the SDK does not provide built-in support for defining webhook endpoints, but you can specify them manually using API requests.
Supported endpoints
The following API endpoints accept awebhook parameter:
In this guide, we’ll show how to trigger a webhook after streaming a run.
Set up your assistant and thread
Before making API calls, set up your assistant and thread.- Python
- JavaScript
- cURL
Use a webhook with a graph run
To use a webhook, specify thewebhook parameter in your API request. When the run completes, LangSmith sends a POST request to the specified webhook URL.
For example, if your server listens for webhook events at https://my-server.app/my-webhook-endpoint, include this in your request:
- Python
- JavaScript
- cURL
Webhook payload
LangSmith sends webhook notifications in the format of a Run. The request payload includes run input, configuration, and other metadata in thekwargs field. In addition to the standard run fields, the webhook payload also includes values, webhook_sent_at, and error fields.
The full webhook payload contains the following fields:
Example payload:
status field is "timeout" and the error field contains details about the failure:
Status values
Thestatus field takes one of five values:
A run that is cancelled while still pending never starts executing, so the server sends no webhook for it.
A single thread can receive more than one webhook call. For example, if a new run preempts an in-flight run, the server sends an
"interrupted" webhook for the preempted run and a separate webhook for the new run when it finishes.
Secure webhooks
To ensure only authorized requests hit your webhook endpoint, consider adding a security token as a query parameter:Add headers to webhook requests
Available in
langgraph-api>=0.5.36.webhooks.headers configuration to your langgraph.json file:
Use environment variables in headers
To include secrets or environment-specific values without checking them into your configuration file, use the${{ env.VAR }} template syntax:
LG_WEBHOOK_ can be referenced by default. This prevents accidentally leaking unrelated environment variables. You can customize this prefix using env_prefix:
Missing required environment variables will block server startup, ensuring you don’t deploy with incomplete configuration.
Restrict webhook destinations
Available in
langgraph-api>=0.5.36.webhooks.url configuration:
Because
disable_loopback defaults to true, webhooks to localhost, 127.0.0.1, host.docker.internal, or a relative URL are rejected. This commonly affects a local receiver used with langgraph dev. To allow them, set disable_loopback to false:
The server also applies an SSRF policy that blocks requests to cloud-metadata endpoints (such as
169.254.169.254) and cluster-internal hosts by default. The disable_loopback option adds control over loopback and relative URLs on top of this baseline. Hosts that match an allowed_domains entry skip these SSRF checks.Disable webhooks
As oflanggraph-api>=0.2.78, developers can disable webhooks in the langgraph.json file:
Test webhooks
You can test your webhook using online services like:- Beeceptor – Quickly create a test endpoint and inspect incoming webhook payloads.
- Webhook.site – View, debug, and log incoming webhook requests in real time.
Connect these docs to your agent of choice via MCP for real-time answers.

