The best way to understand how Twilio Functions works is to start by understanding the HTTP request flow and how Twilio ultimately executes your code. Twilio Functions is designed to handle as much of the infrastructure work of building a web app as possible. For Twilio Functions, this work begins at the front door handling the HTTP request for your Function and continues through the pipeline up to your code.
- Every Function invocation begins with an HTTP client issuing a request to your Function. For most Functions, the HTTP client is the Twilio Voice or Messaging API responding to an incoming phone call or text message.
- The Twilio Function Gateway receives this request and attempts to validate it. If your Function has Signature Validation enabled, the Function Gateway will attempt to validate the signature. If the request or the Twilio Signature are invalid, the request is rejected with an HTTP 400 response.
- After the Function Gateway has accepted the HTTP request, it will normalize the request into a payload for your Function. The normalized request is provided to your Function as two arguments:
event. Once the payload has been constructed, it is used to invoke your Function.
- At invocation, your Function begins executing the code you have provided. When your Function completes executing, it can emit a response using the callback method provided. The emitted response will be transmitted to the Function Gateway.
- Upon receiving the result from your Function, the Function Gateway will construct an HTTP response and return it to the HTTP client.
Currently, Twilio Functions only supports HTTP requests. Twilio Functions will respond to three HTTP verbs:
DELETE are currently not supported.
POST requests, Twilio Functions natively supports
application/x-www-form-urlencoded. This means that JSON bodies and form parameters will be normalized into the
There are several important limitations to Twilio Functions that you should consider when designing your application:
- Execution time: Twilio Functions execute for at most 10 seconds. Any Function that exceeds the 10-second limit will be terminated, and the client will receive an HTTP 504 Gateway Time-out response.
- Path parameter support: Twilio Functions does not provide support for path parameters. This means that you can’t use the URL to pass information into your application. It is recommended that you use either a
- Maximum response size: Twilio Functions have a constrained response size of 4MB.