Function Request Flow
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 so that you can focus on application logic instead. 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 client is the Twilio Voice or Messaging API responding to an incoming phone call or text message.
- The Twilio Functions 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 request, it will normalize the request into a payload for your Function. The normalized request is provided to your Function as two arguments:
context
andevent
. Once the payload has been constructed, it is used to invoke your Function. - At invocation, your Function begins executing the
handler
code that you have provided. When your Function completes executing, it can emit a response using thecallback
method. 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 client that issued the request.
Supported requests
Currently, Twilio Functions only supports HTTP requests. Twilio Functions will respond to three HTTP verbs: GET
, POST
, and OPTIONS
. PUT
and DELETE
are currently not supported.
For POST
requests, Twilio Functions natively supports the application/json
and application/x-www-form-urlencoded
content types. This means that JSON bodies and form and query parameters will be normalized into the event parameter.
Request limitations
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. You must provide query parameters or JSON in order to pass information into your application.
- Maximum response size: Twilio Functions have a constrained response size of 4MB.
- Maximum request size: Twilio Functions can accept payload size up to 1MB including the request headers and cookies.
What's next?
Now that you have an understanding of the request flow to your Functions, it's time to learn about the execution process, handler method, and response building processes.
Need some help?
We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd by visiting Twilio's Stack Overflow Collective or browsing the Twilio tag on Stack Overflow.