Menu

Expand
Rate this page:

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.

Functions Request Flow

  1. 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.
  2. 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.
  3. 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 and event. Once the payload has been constructed, it is used to invoke your Function.
  4. At invocation, your Function begins executing the handler code that you have provided. When your Function completes executing, it can emit a response using the callback method. The emitted response will be transmitted to the Function Gateway.
  5. 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.

Rate this page:

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.

        
        
        

        Thank you for your feedback!

        Please select the reason(s) for your feedback. The additional information you provide helps us improve our documentation:

        Sending your feedback...
        🎉 Thank you for your feedback!
        Something went wrong. Please try again.

        Thanks for your feedback!

        Refer us and get $10 in 3 simple steps!

        Step 1

        Get link

        Get a free personal referral link here

        Step 2

        Give $10

        Your user signs up and upgrade using link

        Step 3

        Get $10

        1,250 free SMSes
        OR 1,000 free voice mins
        OR 12,000 chats
        OR more