AI Webhooks

SWAIG function signature request

Sent once per SWAIG.includes entry when an AI agent loads, to discover the functions your server hosts. Every way of building an agent sends it — SWML you write yourself, SWML a Server SDK generates, or an agent you configure in your Dashboard — because they all resolve includes the same way.

Reply with the function definitions you host, each shaped like an entry in SWAIG.functionsfunction, description, and parameters. Three forms are accepted:

  • an array of definitions, the usual one;
  • a single definition on its own;
  • an object {functions, defaults}, where defaults sets SWAIG defaults across the definitions it carries — useful when they share a web_hook_url or auth.

Every definition you return is registered, whether or not it was named in the request's functions list.

This is not the payload a function call sends. It goes to the includes entry's url, using auth_user and auth_password when set. Your endpoint can also receive it outside of a call, as a check that it answers, so answer it the same way. When your project has a signing key, the request carries an X-SignalWire-Signature header you can verify.

postWebhookswaigSignatureRequest

Payload

actionstring required

What the request is asking of you. Always get_signature.

functionsstring[] required

The function names the includes entry asked for. This list can be empty, and it does not limit your reply: every definition you return is registered, whether or not it is named here.

meta_dataobject

The meta_data you set on the includes entry. Omitted when you set none.

meta_data_tokenstring

The token scoping meta_data. Present on the check your endpoint can receive outside of a call, where it is a fixed value with nothing to interpret, and absent during a call.

content_typestring required

The content type of the request body. Always text/swaig.

content_dispositionstring required

How the body is delivered. Always function signature request.

versionstring required

The SWAIG protocol version.

project_idstring

Your project ID, when available.

space_idstring

Your Space ID, when available.

Example payload

{
  "action": "get_signature",
  "functions": [
    "get_weather"
  ],
  "meta_data": {
    "store_id": "sf-01"
  },
  "meta_data_token": "my-token",
  "content_type": "text/swaig",
  "content_disposition": "function signature request",
  "version": "2.0",
  "project_id": "4d0d6f16-5881-4fcc-92a4-02c51a91954d",
  "space_id": "451ed9ff-e568-4222-8af9-4f9ab7428d09"
}

Response

Webhook received

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.