Documentation Index
Fetch the complete documentation index at: https://hc.starbridge.ai/llms.txt
Use this file to discover all available pages before exploring further.
When a bridge row is created or updated, Starbridge sends an HTTP POST request to your webhook URL with the row data.
Every request includes three headers used for signature verification:
| Header | Description | Example |
|---|
webhook-id | Unique identifier for this webhook delivery | msg_350d6ad7-13e1-47f8-8111-33f96313fabe |
webhook-timestamp | Unix timestamp (seconds) when the request was sent | 1775589603 |
webhook-signature | Ed25519 signature, prefixed with v1a, | v1a,oB5S13Gyt...YuxkAg== |
Event types
| Event type | Description |
|---|
bridge.row.created | A new row was added to the bridge |
bridge.row.updated | An existing row was updated |
Payload structure
The body is a JSON object with the following structure:
bridge.row.created
bridge.row.updated
{
"type": "bridge.row.created",
"timestamp": "2026-04-09T15:57:42.586897Z",
"data": {
"rowId": "3c39eb0d-61f5-4cd4-9b77-93b6daeb59b3",
"name": "City of Fort Worth",
"bridgeId": "201377ef-0ae3-4103-988c-ed6ebfac03a6",
"updatedAt": "2026-04-09T15:57:11.197818Z",
"status": "Processed",
"columns": {
"Status": {
"value": "New",
"status": "Processed",
"processedAt": "2026-04-09T15:57:11.008777Z"
},
"Buyer State Name": {
"value": "Texas",
"status": "Processed",
"processedAt": "2026-04-09T15:57:12.482506Z"
},
"Buyer Summary": {
"value": "## What's recent?\n\n**Municipal signal emergence...**",
"status": "Processed",
"processedAt": "2026-04-09T15:57:41.359512Z"
}
}
}
}
{
"type": "bridge.row.updated",
"timestamp": "2026-04-09T15:55:49.491189Z",
"data": {
"rowId": "20ec3c30-131f-4a5a-beb9-9bfe31dd884c",
"name": "City of Fort Collins",
"bridgeId": "201377ef-0ae3-4103-988c-ed6ebfac03a6",
"updatedAt": "2026-03-19T20:24:35.409137789Z",
"status": "Processed",
"columns": {
"Status": {
"value": "New",
"status": "Processed",
"processedAt": "2026-03-19T20:24:35.543823335Z"
},
"Buyer State Name": {
"value": "Colorado",
"status": "Processed",
"processedAt": "2026-03-19T20:24:35.654070492Z"
},
"Buyer Summary": {
"value": "## What's recent?\n\n**Water Utility Infrastructure Shift...**",
"status": "Processed",
"processedAt": "2026-04-03T21:37:56.388686984Z"
}
}
}
}
Field reference
| Field | Type | Description |
|---|
type | string | "bridge.row.created" or "bridge.row.updated" |
timestamp | string | ISO 8601 timestamp of when the webhook was created |
data.rowId | string | Unique ID of the bridge row |
data.name | string | Name of the row (nullable) |
data.bridgeId | string | ID of the bridge this row belongs to |
data.updatedAt | string | When the row was last updated |
data.status | string | Processing status of the row |
data.columns | object | Map of column names to their values and status |
data.columns[name].value | any | The computed value for this column (string, object, etc.) |
data.columns[name].status | string | Processing status of this column |
data.columns[name].processedAt | string | When this column finished processing |
Response
Your endpoint should return an HTTP 200 status code to indicate successful receipt. Any other status code is treated as a failure — see Error Handling and Retries for details.
Quick reference
- Signature algorithm: Ed25519 (asymmetric)
- Signed message format:
{webhook-id}.{webhook-timestamp}.{body}
- Signature header format:
v1a,{base64_signature}
- Public key format:
whpk_{base64_key} (DER-encoded X.509/SPKI)
- Event types:
bridge.row.created, bridge.row.updated
- Request timeout: 30 seconds
- Based on: Standard Webhooks specification