Documentation Index
Fetch the complete documentation index at: https://langchain-5e9cc07a-preview-andyye-1778820730-7214c62.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
LangSmith Engine is in Beta and under active development. To provide feedback or use this feature, reach out to the LangChain team.
Delivery
LangSmith sends aPOST request with a JSON body to your webhook URL. The request uses Content-Type: application/json and includes any custom headers you attached to the subscription.
| Property | Value |
|---|---|
| Method | POST |
| Body | JSON, common envelope below |
| Scheme | http:// and https:// are accepted. https:// is strongly recommended |
| Timeout | 20 seconds per attempt |
| Attempts | Up to 4 attempts (1 initial plus 3 retries with exponential backoff) on transport errors or HTTP responses >= 400 |
| Response | Success is determined from the status code alone. Response bodies are ignored. |
Retries deliver a byte-identical payload, including the same
id. Dedupe on id so a retried delivery does not produce a duplicate downstream effect.Custom headers
You can attach arbitrary headers to each subscription (for example,Authorization: Bearer …) to authenticate the caller at your endpoint. Content-Type is always set by LangSmith and cannot be overridden.
Severity filtering
Each subscription has aseverity_threshold from 0 to 3. An event is delivered only when the issue’s severity is less than or equal to the threshold. Lower numbers are more urgent.
| Severity | Meaning |
|---|---|
0 | Urgent |
1 | High |
2 | Medium |
3 | Low |
severity_threshold: 1 receives events for URGENT (0) and HIGH (1) issues only.
Event-type filtering
Each subscription specifies the event types it wants to receive. Subscriptions created without an explicit list default to["issue.created"].
Event envelope
Every event delivered to your endpoint uses the same outer JSON shape.| Field | Type | Description |
|---|---|---|
id | UUID | Unique identifier for this delivery. Stable across retries. Use it to dedupe. |
type | string | Event type. One of issue.created or issue.trace.added. |
created | integer | Unix seconds (UTC) when the event was enqueued. |
request_id | UUID | Shared by every event fired from the same upstream action. See Batch coalescing. |
data | object | Event payload. Always contains data.object. Contains data.trace only on issue.trace.added events. |
data.object
data.object is a snapshot of the issue and is included on every event, regardless of type. Treat it as the authoritative state of the issue at the time the event was generated.
| Field | Type | Description |
|---|---|---|
id | UUID | Issue ID. |
name | string | Short title of the issue. |
description | string | Human-readable description. |
severity | integer | 0 (urgent) through 3 (low). See Severity filtering. |
tenant_id | UUID | Workspace the issue belongs to. |
tenant_name | string | Workspace display name (best-effort). Empty if the workspace has been deleted. |
session_id | UUID | Tracing project the issue belongs to. |
session_name | string | Tracing project name (best-effort). Empty if the project has been deleted. |
url | string | Deep link to the issue in the LangSmith UI. |
data.trace
data.trace is included only on issue.trace.added events.
| Field | Type | Description |
|---|---|---|
run_id | UUID | ID of the run that was linked to the issue. |
trace_id | UUID | ID of the trace that contains the run. |
start_time | string | RFC 3339 timestamp of when the run started. |
comment | string | null | Optional note recorded when the trace was linked. Omitted when empty. |
Batch coalescing
A single upstream action can produce multiple webhook events. When the Engine opens a new issue and attaches five traces to it, you receive oneissue.created event and five issue.trace.added events, all sharing the same request_id. Use request_id to group these into a single downstream notification.
Event types
The event types below are the complete set the LangSmith Engine sends today. New types may be added in the future, so handlers should ignore unknowntype values rather than failing.
issue.created
Sent when the LangSmith Engine creates a new issue. data.trace is omitted.
issue.trace.added
Sent when a new trace is linked to an existing issue. data.trace describes the linked trace.
Test your endpoint
Before pointing a real subscription at your endpoint, send a sample payload to verify it accepts and acknowledges within the 20-second timeout:issue.created as sample-issue-created.json. Verify that:
- The custom
Authorizationheader arrives and matches the secret you configured on the subscription. - The handler persists the event keyed by its
idso retries are deduped. - The handler returns
2xxbefore kicking off slow downstream work.
Security
- Webhook URLs are validated when the subscription is created and again at delivery time. Private and metadata IP ranges are blocked in SaaS. Both
http://andhttps://are accepted; usehttps://so the payload and any custom headers are not sent in cleartext. - LangSmith does not sign webhook bodies. Authenticate the sender by setting a secret as a custom header on the subscription (for example,
Authorization: Bearer …) and verifying it at your endpoint. Anyone with the webhook URL can POST to it, so treat the URL itself as confidential and rely on the header for authentication. - Dedupe on the event
idso that a retried delivery does not cause a duplicate notification.
Best practices
- Acknowledge fast. Respond with
2xxas soon as you have persisted the event. Move slow work (fan-out, paging, downstream API calls) onto a queue so your handler stays within the 20-second timeout. - Tolerate unknown event types. Ignore
typevalues your handler does not recognize. New event types may be added without notice. - Tolerate new fields. Parse payloads with a permissive schema. New fields may be added to existing event types without notice.
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

