> For a complete index of all SignalWire documentation pages, fetch https://signalwire.com/docs/llms.txt

# SWAIG function signature request

POST 

Sent once per [`SWAIG.includes`](/docs/swml/reference/calling/ai/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.functions`](/docs/swml/reference/calling/ai/swaig/functions#properties) — `function`,
`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.

Reference: https://signalwire.com/docs/apis/rest/webhooks/swaig-signature-request

## Request

### Payload

- `action` (string, required) — What the request is asking of you. Always `get_signature`.
- `functions` (list of string, 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.
- `content_type` (string, required) — The content type of the request body. Always `text/swaig`.
- `content_disposition` (string, required) — How the body is delivered. Always `function signature request`.
- `version` (string, required) — The SWAIG protocol version.
- `meta_data` (object, optional) — The `meta_data` you set on the `includes` entry. Omitted when you set none.
- `meta_data_token` (string, optional) — 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.
- `project_id` (string, optional) — Your project ID, when available.
- `space_id` (string, optional) — Your Space ID, when available.