SlideShare a Scribd company logo
1 of 53
Download to read offline
BUILDING A
GREAT WEB API
NOVEMBER 17, 2011, QCON




                                  T P
EVAN COOKE @emcooke
                            H
                              T
CO-FOUNDER & CTO

     twilio
     CLOUD COMMUNICATIONS
One simple goal
for building great
    Web APIs...
5
Minutes
It should take no more
  than 5 minutes for a
developer to perform a
 useful task using your
  API for the first time
What is a Web API?
Definition for today:

• HTTP/HTTPS endpoint
• JSON/XML
• Hosted API/Web service
• Example: Amazon S3
Building a Great Web API - Evan Cooke - QCON 2011
Twilio
   Web service APIs to automate Voice and
        SMS phone communications
 Carriers                      Inbound Calls
                  Voice       Outbound Calls
                            Mobile/Browser VoIP

                           Send To/From Phone
                   SMS          Numbers
                              Short Codes
Developer
                 Phone       Dynamically Buy
                Numbers      Phone Numbers
End User
Building a Great Web API - Evan Cooke - QCON 2011
Why 5 Minutes?
• Clear value proposition
• Fast signup
• Simple API
• Efficient quickstarts
• Concise accessible docs
• Easy authentication (basic vs. oauth)
• Debuggable
API Adoption Funnel
Hear about API                 Good APIs
                     Try it     Promote
                               Adoption
                               (tell friends)
                    Build it


   Production Use    Buy it

                    Traction
API Adoption Funnel
Hear about API       Try it    5-Minute
                                 Goal

                    Build it


   Production Use    Buy it

                    Traction
5-minute APIs
 API Design
Co
  un
     te
        rE
   5-minute APIs
          xa
    API Design
             m
                ple
Media processing API

•   HTTP API to analyze large
    (MBs) media files
•   High tps ~100,000/day
•   POST data to the API
                                You
                                       Media

                                                 API
•
                                      Analysis
    API synchronously returns
    analysis of media (could
    be minutes/hours later)
Media processing API

•   Control and data in the
    same request (100 MB
    every request)
•   Unclear error conditions.
    Can you resend request?      You         API
•   Synchronously wait for             ???
    response
•   No request history/billing
    information
Media processing API

1   Original Request
    POST http://api.vendor.com/API/Process?
    key=2hkh&mode=bob&filter=yeah
    Body is 100MB of binary data



                  Problem
       Can we safely retry the request on
              a transient failure?
Media processing API

2   Add a token allowing us to safely retry
    POST http://api.vendor.com/API/Process?
    key=2hkh&mode=bob&filter=yeah&token=TK123
    Body is 100MB of binary data



                   Problem
        Exposed to transient failures if the
         processing takes minutes/hours?
Media processing API

3   Add webhook url to asynchronously respond
    POST http://api.vendor.com/API/Process?
    key=2hkh&mode=bob&filter=yeah&token=TK123&c
    bUrl=http%3A%2F%2Fmyserver.com%2Fresponse
    Body is 100MB of binary data


                    Problem
        Request is huge and fragile when
       data is included with control cmd?
Media processing API

4   Async fetch media & move POST params to body
    POST http://api.vendor.com/API/Process
    Body
       key=2hkh
       mode=bob
       filter=yeah
       token=TK123
       cbUrl=http://myserver.com/response
       mediaUrl=http://s3.com/media.mov
Media processing API

5   Version API and make URL more RESTful
    POST http://api.vendor.com/v1/Media
    Body
       key=2hkh
       mode=bob
       filter=yeah
       token=TK123
       cbUrl=http://myserver.com/response
       mediaUrl=http://s3.com/media.mov
    Response
       URI http://api.vendor.com/v1/Media/MD123
5-minute APIs
 API Design
Idempotency
• Idempotence is the property of certain
  operations that they can be applied multiple
  times without changing the result.
• Request failures happen. Provide users a
  safe way to retry requests
• Example:
POST /BankAccount/Funds
{‘value’: 1000, ‘token’: ‘TX123’}
Building a Great Web API - Evan Cooke - QCON 2011
Self-documentation
• Sweat what and how you name. Naming is
  is the best documentation.
• Example:
GET /Users/ID123
GET /Users/ID123/Friends
GET /Users/ID123/Photos
Building a Great Web API - Evan Cooke - QCON 2011
RESTfulness
• Adherence to REST object model and
  verbs provides a clean way to expose
  business logic
• Create POST          /Users

• Fetch GET            /Users/ID123
• Modify PUT/POST      /Users/ID123
• Remove DELETE        /Users/ID123
Building a Great Web API - Evan Cooke - QCON 2011
Versioning
• Do it. Remember you will be stuck
  supporting old API versions (indefinitely?)
• Examples
  GET /api/1/blag
  GET /api/v1/blag
  GET /api/20101206/blag
Building a Great Web API - Evan Cooke - QCON 2011
Statefulness
• When possible, offload the work of keeping
  state/history because it’s hard!
• Examples
POST /Calls
GET /Calls/CA123
GET /Calls/CA123/Recordings/RE123
Building a Great Web API - Evan Cooke - QCON 2011
Predictability
• The API should do what users expect
• Examples
  <Play>music.mp3</Play>
  <Play>music.aiff</Play>
Building a Great Web API - Evan Cooke - QCON 2011
Responsiveness
• When a response is available immediately,
  use a synchronous response. Otherwise,
  consider an asynchronous webhook rather
  then polling
• Examples:
POST /Object/Transforms
Body
  cbUrl=http://b.com/response
Building a Great Web API - Evan Cooke - QCON 2011
Key Ideas
•   Idempotency
•   Self-documentation
•   RESTfulness
•   Versioning
•   Statefulness
•   Predictability
•   Responsiveness
5-minute APIs
   “Good”
What makes a good API?
 • Easy to Learn
 • Easy to use (even without documentation)
 • Hard to Misuse
 • Easy to read and maintain code that uses it
 • Sufficiently powerful to satisfy requirements
 • Easy to extend
 • Appropriate to audience
                     How to Design a Good API and Why it Matters
                     Joshua Bloch, Google
Human-centric
Building a Great Web API - Evan Cooke - QCON 2011
Saleforce
  auth      Campaigns from
             Adword API
Dynamic phone number
provisioning via Twilio API
Saleforce
CRM data
                   Saleforce
                   app APIs



 Google
Maps API



            Twilio Client API
Building a Great Web API - Evan Cooke - QCON 2011
Simplicity
DEPLOYING
YOUR WEB
API


                               T P
                         H
                           T

  twilio
  CLOUD COMMUNICATIONS
Infrastructure
• 100’s of prod hosts in continuous operation
• 80+ service types running in prod
 - Python(Twisted/GEvent), PHP, Java
• 50+ prod database servers
 - MySQL, Redis
• Prod deployments several times/day across
  7 engineering teams
Website                 Deployment
            Content
                                 Frequency(Risk)
                                               4 buckets
                      Website
                       Code
Log Scale




            1000x
                                   REST
                                    API        Big DB
                       100x
                                               Schema
                                    10x
                                                 1x
             CMS      PHP/Ruby   Python/Java     SQL
                        etc.         etc.
Website                        Deployment
Content
                                 Processes

             Website
              Code
                            REST
                             API              Big DB
                                              Schema

 One Click     CI Tests      CI Tests           CI Tests
              One Click   Human Sign-off     Human Sign-off
                            One Click      Human Assisted Click
Cluster automation via boxconfig
Cluster automation via boxconfig




• Build and deployment system - boot entire
  Twilio stack with one key press
• Host configuration - versioned code & config
• Host orchestration - load balancing
• Monitoring and alerting - nagios
• Multi-datacenter deployment & analytics
Cluster automation via boxconfig




             role role role      Start Roles

     Fetch                    Provision
S3              SVN/git                   Boxconfig



              Base (AMI)

         Vanilla Linux Host
           (cloud/colo)
twilio
 Evan Cooke
 @emcooke

More Related Content

What's hot

Tropo: Telephony in the Cloud
Tropo: Telephony in the CloudTropo: Telephony in the Cloud
Tropo: Telephony in the CloudWes Gamble
 
7 Principles of API Design - Waza
7 Principles of API Design - Waza7 Principles of API Design - Waza
7 Principles of API Design - WazaTwilio Inc
 
Otra forma de hacer aplicaciones de telefonía
Otra forma de hacer aplicaciones de telefoníaOtra forma de hacer aplicaciones de telefonía
Otra forma de hacer aplicaciones de telefoníaMartin Perez
 
Twilio Contact Center Overview
Twilio Contact Center OverviewTwilio Contact Center Overview
Twilio Contact Center OverviewTwilio Inc
 
Building Blocks for Next Generation Contact Centers
Building Blocks for Next Generation Contact CentersBuilding Blocks for Next Generation Contact Centers
Building Blocks for Next Generation Contact CentersTwilio Inc
 
Tropo Presentation for TADHack
Tropo Presentation for TADHackTropo Presentation for TADHack
Tropo Presentation for TADHackAlan Quayle
 
Twilio Signal 2016 Keynote
Twilio Signal 2016 Keynote Twilio Signal 2016 Keynote
Twilio Signal 2016 Keynote Twilio Inc
 
Twilio Signal 2016 Real-time Communications Overview
Twilio Signal 2016 Real-time Communications OverviewTwilio Signal 2016 Real-time Communications Overview
Twilio Signal 2016 Real-time Communications OverviewTwilio Inc
 
Irv Shapiro's Presentation at eComm 2009
Irv Shapiro's Presentation at eComm 2009Irv Shapiro's Presentation at eComm 2009
Irv Shapiro's Presentation at eComm 2009eCommConf
 
TWILIO SMS Introduction
TWILIO SMS IntroductionTWILIO SMS Introduction
TWILIO SMS IntroductionNaincy Gupta
 
Twilio Signal 2016 Robots-IoT-Watson-Cognitive + Twilio
Twilio Signal 2016 Robots-IoT-Watson-Cognitive + TwilioTwilio Signal 2016 Robots-IoT-Watson-Cognitive + Twilio
Twilio Signal 2016 Robots-IoT-Watson-Cognitive + TwilioTwilio Inc
 
Programmable Video Fundamentals
Programmable Video FundamentalsProgrammable Video Fundamentals
Programmable Video FundamentalsMark Roberts
 
There is a New Way
There is a New WayThere is a New Way
There is a New Waycdbeavers
 
Twilio API: Build SMS Text Message Into Web Apps
Twilio API: Build SMS Text Message Into Web AppsTwilio API: Build SMS Text Message Into Web Apps
Twilio API: Build SMS Text Message Into Web AppsMindfire Solutions
 
Twilio SMS - API for Sending & Receiving SMS Messages
Twilio SMS - API for Sending & Receiving SMS MessagesTwilio SMS - API for Sending & Receiving SMS Messages
Twilio SMS - API for Sending & Receiving SMS MessagesTwilio Inc
 
Smarter SIP Trunks: 6 Ways You Can Save Time and Get More Features
Smarter SIP Trunks: 6 Ways You Can Save Time and Get More FeaturesSmarter SIP Trunks: 6 Ways You Can Save Time and Get More Features
Smarter SIP Trunks: 6 Ways You Can Save Time and Get More FeaturesTwilio Inc
 
Tropo Presentation at the Telecom API Workshop
Tropo Presentation at the Telecom API WorkshopTropo Presentation at the Telecom API Workshop
Tropo Presentation at the Telecom API WorkshopAlan Quayle
 
What Can You Do With Twilio
What Can You Do With TwilioWhat Can You Do With Twilio
What Can You Do With TwilioTwilio Inc
 

What's hot (20)

Tropo: Telephony in the Cloud
Tropo: Telephony in the CloudTropo: Telephony in the Cloud
Tropo: Telephony in the Cloud
 
7 Principles of API Design - Waza
7 Principles of API Design - Waza7 Principles of API Design - Waza
7 Principles of API Design - Waza
 
Otra forma de hacer aplicaciones de telefonía
Otra forma de hacer aplicaciones de telefoníaOtra forma de hacer aplicaciones de telefonía
Otra forma de hacer aplicaciones de telefonía
 
Twilio
TwilioTwilio
Twilio
 
Twilio Contact Center Overview
Twilio Contact Center OverviewTwilio Contact Center Overview
Twilio Contact Center Overview
 
Supermondays twilio
Supermondays twilioSupermondays twilio
Supermondays twilio
 
Building Blocks for Next Generation Contact Centers
Building Blocks for Next Generation Contact CentersBuilding Blocks for Next Generation Contact Centers
Building Blocks for Next Generation Contact Centers
 
Tropo Presentation for TADHack
Tropo Presentation for TADHackTropo Presentation for TADHack
Tropo Presentation for TADHack
 
Twilio Signal 2016 Keynote
Twilio Signal 2016 Keynote Twilio Signal 2016 Keynote
Twilio Signal 2016 Keynote
 
Twilio Signal 2016 Real-time Communications Overview
Twilio Signal 2016 Real-time Communications OverviewTwilio Signal 2016 Real-time Communications Overview
Twilio Signal 2016 Real-time Communications Overview
 
Irv Shapiro's Presentation at eComm 2009
Irv Shapiro's Presentation at eComm 2009Irv Shapiro's Presentation at eComm 2009
Irv Shapiro's Presentation at eComm 2009
 
TWILIO SMS Introduction
TWILIO SMS IntroductionTWILIO SMS Introduction
TWILIO SMS Introduction
 
Twilio Signal 2016 Robots-IoT-Watson-Cognitive + Twilio
Twilio Signal 2016 Robots-IoT-Watson-Cognitive + TwilioTwilio Signal 2016 Robots-IoT-Watson-Cognitive + Twilio
Twilio Signal 2016 Robots-IoT-Watson-Cognitive + Twilio
 
Programmable Video Fundamentals
Programmable Video FundamentalsProgrammable Video Fundamentals
Programmable Video Fundamentals
 
There is a New Way
There is a New WayThere is a New Way
There is a New Way
 
Twilio API: Build SMS Text Message Into Web Apps
Twilio API: Build SMS Text Message Into Web AppsTwilio API: Build SMS Text Message Into Web Apps
Twilio API: Build SMS Text Message Into Web Apps
 
Twilio SMS - API for Sending & Receiving SMS Messages
Twilio SMS - API for Sending & Receiving SMS MessagesTwilio SMS - API for Sending & Receiving SMS Messages
Twilio SMS - API for Sending & Receiving SMS Messages
 
Smarter SIP Trunks: 6 Ways You Can Save Time and Get More Features
Smarter SIP Trunks: 6 Ways You Can Save Time and Get More FeaturesSmarter SIP Trunks: 6 Ways You Can Save Time and Get More Features
Smarter SIP Trunks: 6 Ways You Can Save Time and Get More Features
 
Tropo Presentation at the Telecom API Workshop
Tropo Presentation at the Telecom API WorkshopTropo Presentation at the Telecom API Workshop
Tropo Presentation at the Telecom API Workshop
 
What Can You Do With Twilio
What Can You Do With TwilioWhat Can You Do With Twilio
What Can You Do With Twilio
 

Viewers also liked

Twilio Web Service API for building Voice Applications
Twilio Web Service API for building Voice ApplicationsTwilio Web Service API for building Voice Applications
Twilio Web Service API for building Voice ApplicationsTwilio Inc
 
Twilio at the Google App Engine Meetup 2009-10
Twilio at the Google App Engine Meetup 2009-10Twilio at the Google App Engine Meetup 2009-10
Twilio at the Google App Engine Meetup 2009-10Twilio Inc
 
Twilio Presents at PariSoMa
Twilio Presents at PariSoMaTwilio Presents at PariSoMa
Twilio Presents at PariSoMaTwilio Inc
 
Twilio - Monetizing SaaS - Jeff Lawson Cloudstock December 2010
Twilio - Monetizing SaaS - Jeff Lawson Cloudstock December 2010Twilio - Monetizing SaaS - Jeff Lawson Cloudstock December 2010
Twilio - Monetizing SaaS - Jeff Lawson Cloudstock December 2010Twilio Inc
 
"Reinventing the Dialplan" slides from Twilio's Astricon 2009 talk
"Reinventing the Dialplan" slides from Twilio's Astricon 2009 talk"Reinventing the Dialplan" slides from Twilio's Astricon 2009 talk
"Reinventing the Dialplan" slides from Twilio's Astricon 2009 talkTwilio Inc
 
Influencer Marketing with Klear
Influencer Marketing with KlearInfluencer Marketing with Klear
Influencer Marketing with KlearKlear
 
Pitch Influencer Marketing to your Boss
Pitch Influencer Marketing to your BossPitch Influencer Marketing to your Boss
Pitch Influencer Marketing to your BossKlear
 
Best practices of modern marketing & sales for talent acquisition leaders
Best practices of modern marketing & sales for talent acquisition leadersBest practices of modern marketing & sales for talent acquisition leaders
Best practices of modern marketing & sales for talent acquisition leadersFrancois Dufour
 
Global Phone Numbers: Taking Your App Around The World
Global Phone Numbers: Taking Your App Around The WorldGlobal Phone Numbers: Taking Your App Around The World
Global Phone Numbers: Taking Your App Around The WorldTwilio Inc
 
Deploying Next Gen Systems with Zero Downtime
Deploying Next Gen Systems with Zero DowntimeDeploying Next Gen Systems with Zero Downtime
Deploying Next Gen Systems with Zero DowntimeTwilio Inc
 
Call Tracking with Twilio - Cloudstock 2010
Call Tracking with Twilio - Cloudstock 2010Call Tracking with Twilio - Cloudstock 2010
Call Tracking with Twilio - Cloudstock 2010Twilio Inc
 
Why All Industries will be Software Industries - unSexy Conference 2013 - We ...
Why All Industries will be Software Industries - unSexy Conference 2013 - We ...Why All Industries will be Software Industries - unSexy Conference 2013 - We ...
Why All Industries will be Software Industries - unSexy Conference 2013 - We ...Twilio Inc
 
Lead Gen in the Post-PC World - LeadsCon 2012
Lead Gen in the Post-PC World - LeadsCon 2012Lead Gen in the Post-PC World - LeadsCon 2012
Lead Gen in the Post-PC World - LeadsCon 2012Twilio Inc
 
John sheehan of twillio gives cloud camp denver lightning talk
John sheehan of twillio gives cloud camp denver lightning talkJohn sheehan of twillio gives cloud camp denver lightning talk
John sheehan of twillio gives cloud camp denver lightning talkIntel Corporation
 
Productizing Twilio Applications
Productizing Twilio ApplicationsProductizing Twilio Applications
Productizing Twilio ApplicationsPatrick McKenzie
 
Twilio Messaging: Overview and New Feature Deep Dive
Twilio Messaging: Overview and New Feature Deep DiveTwilio Messaging: Overview and New Feature Deep Dive
Twilio Messaging: Overview and New Feature Deep DiveTwilio Inc
 
Influencer Marketing Plan [template]
Influencer Marketing Plan [template]Influencer Marketing Plan [template]
Influencer Marketing Plan [template]Klear
 

Viewers also liked (18)

Twilio Web Service API for building Voice Applications
Twilio Web Service API for building Voice ApplicationsTwilio Web Service API for building Voice Applications
Twilio Web Service API for building Voice Applications
 
Twilio at the Google App Engine Meetup 2009-10
Twilio at the Google App Engine Meetup 2009-10Twilio at the Google App Engine Meetup 2009-10
Twilio at the Google App Engine Meetup 2009-10
 
Twilio Presents at PariSoMa
Twilio Presents at PariSoMaTwilio Presents at PariSoMa
Twilio Presents at PariSoMa
 
Twilio - Monetizing SaaS - Jeff Lawson Cloudstock December 2010
Twilio - Monetizing SaaS - Jeff Lawson Cloudstock December 2010Twilio - Monetizing SaaS - Jeff Lawson Cloudstock December 2010
Twilio - Monetizing SaaS - Jeff Lawson Cloudstock December 2010
 
"Reinventing the Dialplan" slides from Twilio's Astricon 2009 talk
"Reinventing the Dialplan" slides from Twilio's Astricon 2009 talk"Reinventing the Dialplan" slides from Twilio's Astricon 2009 talk
"Reinventing the Dialplan" slides from Twilio's Astricon 2009 talk
 
Hashtag Aggregation - Tools
Hashtag Aggregation - ToolsHashtag Aggregation - Tools
Hashtag Aggregation - Tools
 
Influencer Marketing with Klear
Influencer Marketing with KlearInfluencer Marketing with Klear
Influencer Marketing with Klear
 
Pitch Influencer Marketing to your Boss
Pitch Influencer Marketing to your BossPitch Influencer Marketing to your Boss
Pitch Influencer Marketing to your Boss
 
Best practices of modern marketing & sales for talent acquisition leaders
Best practices of modern marketing & sales for talent acquisition leadersBest practices of modern marketing & sales for talent acquisition leaders
Best practices of modern marketing & sales for talent acquisition leaders
 
Global Phone Numbers: Taking Your App Around The World
Global Phone Numbers: Taking Your App Around The WorldGlobal Phone Numbers: Taking Your App Around The World
Global Phone Numbers: Taking Your App Around The World
 
Deploying Next Gen Systems with Zero Downtime
Deploying Next Gen Systems with Zero DowntimeDeploying Next Gen Systems with Zero Downtime
Deploying Next Gen Systems with Zero Downtime
 
Call Tracking with Twilio - Cloudstock 2010
Call Tracking with Twilio - Cloudstock 2010Call Tracking with Twilio - Cloudstock 2010
Call Tracking with Twilio - Cloudstock 2010
 
Why All Industries will be Software Industries - unSexy Conference 2013 - We ...
Why All Industries will be Software Industries - unSexy Conference 2013 - We ...Why All Industries will be Software Industries - unSexy Conference 2013 - We ...
Why All Industries will be Software Industries - unSexy Conference 2013 - We ...
 
Lead Gen in the Post-PC World - LeadsCon 2012
Lead Gen in the Post-PC World - LeadsCon 2012Lead Gen in the Post-PC World - LeadsCon 2012
Lead Gen in the Post-PC World - LeadsCon 2012
 
John sheehan of twillio gives cloud camp denver lightning talk
John sheehan of twillio gives cloud camp denver lightning talkJohn sheehan of twillio gives cloud camp denver lightning talk
John sheehan of twillio gives cloud camp denver lightning talk
 
Productizing Twilio Applications
Productizing Twilio ApplicationsProductizing Twilio Applications
Productizing Twilio Applications
 
Twilio Messaging: Overview and New Feature Deep Dive
Twilio Messaging: Overview and New Feature Deep DiveTwilio Messaging: Overview and New Feature Deep Dive
Twilio Messaging: Overview and New Feature Deep Dive
 
Influencer Marketing Plan [template]
Influencer Marketing Plan [template]Influencer Marketing Plan [template]
Influencer Marketing Plan [template]
 

Similar to Building a Great Web API - Evan Cooke - QCON 2011

Создание API, которое полюбят разработчики. Глубокое погружение
Создание API, которое полюбят разработчики. Глубокое погружениеСоздание API, которое полюбят разработчики. Глубокое погружение
Создание API, которое полюбят разработчики. Глубокое погружениеSQALab
 
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIBuilding Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIJeff Potts
 
Manage your Public API Like a Protocol
Manage your Public API Like a ProtocolManage your Public API Like a Protocol
Manage your Public API Like a ProtocolDelyn Simons
 
Azure API Management - why should I care?
Azure API Management - why should I care?Azure API Management - why should I care?
Azure API Management - why should I care?Jouni Heikniemi
 
Building RESTful APIs
Building RESTful APIsBuilding RESTful APIs
Building RESTful APIsSilota Inc.
 
Reaching 1 Million APIs and what to do when we get there
Reaching 1 Million APIs and what to do when we get thereReaching 1 Million APIs and what to do when we get there
Reaching 1 Million APIs and what to do when we get there3scale
 
Protecting Your APIs Against Attack & Hijack
Protecting Your APIs Against Attack & Hijack Protecting Your APIs Against Attack & Hijack
Protecting Your APIs Against Attack & Hijack CA API Management
 
Build and Manage Your APIs with Amazon API Gateway
Build and Manage Your APIs with Amazon API GatewayBuild and Manage Your APIs with Amazon API Gateway
Build and Manage Your APIs with Amazon API GatewayAmazon Web Services
 
A high profile project with Symfony and API Platform: beIN SPORTS
A high profile project with Symfony and API Platform: beIN SPORTSA high profile project with Symfony and API Platform: beIN SPORTS
A high profile project with Symfony and API Platform: beIN SPORTSSmile I.T is open
 
GlueCon 2018: Are REST APIs Still Relevant Today?
GlueCon 2018: Are REST APIs Still Relevant Today?GlueCon 2018: Are REST APIs Still Relevant Today?
GlueCon 2018: Are REST APIs Still Relevant Today?LaunchAny
 
Creating a World-Class RESTful Web Services API
Creating a World-Class RESTful Web Services APICreating a World-Class RESTful Web Services API
Creating a World-Class RESTful Web Services APIDavid Keener
 
Chris Mathias Presents Advanced API Design Considerations at LA CTO Forum
Chris Mathias Presents Advanced API Design Considerations at LA CTO ForumChris Mathias Presents Advanced API Design Considerations at LA CTO Forum
Chris Mathias Presents Advanced API Design Considerations at LA CTO ForumChris Mathias
 
What’s behind a high quality web API? Ensure your APIs are more than just a ...
What’s behind a high quality web API? Ensure your APIs are more than just a ...What’s behind a high quality web API? Ensure your APIs are more than just a ...
What’s behind a high quality web API? Ensure your APIs are more than just a ...Kim Clark
 
Tech talk live on new alfresco api
Tech talk live on new alfresco apiTech talk live on new alfresco api
Tech talk live on new alfresco apiAlfresco Software
 
Business Applications Integration In The Cloud
Business Applications Integration In The CloudBusiness Applications Integration In The Cloud
Business Applications Integration In The CloudAnna Brzezińska
 
API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...
API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...
API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...Joe Levy
 
A great api is hard to find
A great api is hard to findA great api is hard to find
A great api is hard to findDan Diephouse
 

Similar to Building a Great Web API - Evan Cooke - QCON 2011 (20)

Создание API, которое полюбят разработчики. Глубокое погружение
Создание API, которое полюбят разработчики. Глубокое погружениеСоздание API, которое полюбят разработчики. Глубокое погружение
Создание API, которое полюбят разработчики. Глубокое погружение
 
Building Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco APIBuilding Content-Rich Java Apps in the Cloud with the Alfresco API
Building Content-Rich Java Apps in the Cloud with the Alfresco API
 
Manage your Public API Like a Protocol
Manage your Public API Like a ProtocolManage your Public API Like a Protocol
Manage your Public API Like a Protocol
 
Azure API Management - why should I care?
Azure API Management - why should I care?Azure API Management - why should I care?
Azure API Management - why should I care?
 
Building RESTful APIs
Building RESTful APIsBuilding RESTful APIs
Building RESTful APIs
 
Reaching 1 Million APIs and what to do when we get there
Reaching 1 Million APIs and what to do when we get thereReaching 1 Million APIs and what to do when we get there
Reaching 1 Million APIs and what to do when we get there
 
Protecting Your APIs Against Attack & Hijack
Protecting Your APIs Against Attack & Hijack Protecting Your APIs Against Attack & Hijack
Protecting Your APIs Against Attack & Hijack
 
M meijer api management - tech-days 2015
M meijer   api management - tech-days 2015M meijer   api management - tech-days 2015
M meijer api management - tech-days 2015
 
Build and Manage Your APIs with Amazon API Gateway
Build and Manage Your APIs with Amazon API GatewayBuild and Manage Your APIs with Amazon API Gateway
Build and Manage Your APIs with Amazon API Gateway
 
A high profile project with Symfony and API Platform: beIN SPORTS
A high profile project with Symfony and API Platform: beIN SPORTSA high profile project with Symfony and API Platform: beIN SPORTS
A high profile project with Symfony and API Platform: beIN SPORTS
 
GlueCon 2018: Are REST APIs Still Relevant Today?
GlueCon 2018: Are REST APIs Still Relevant Today?GlueCon 2018: Are REST APIs Still Relevant Today?
GlueCon 2018: Are REST APIs Still Relevant Today?
 
Creating a World-Class RESTful Web Services API
Creating a World-Class RESTful Web Services APICreating a World-Class RESTful Web Services API
Creating a World-Class RESTful Web Services API
 
Operating your Production API
Operating your Production APIOperating your Production API
Operating your Production API
 
Chris Mathias Presents Advanced API Design Considerations at LA CTO Forum
Chris Mathias Presents Advanced API Design Considerations at LA CTO ForumChris Mathias Presents Advanced API Design Considerations at LA CTO Forum
Chris Mathias Presents Advanced API Design Considerations at LA CTO Forum
 
What’s behind a high quality web API? Ensure your APIs are more than just a ...
What’s behind a high quality web API? Ensure your APIs are more than just a ...What’s behind a high quality web API? Ensure your APIs are more than just a ...
What’s behind a high quality web API? Ensure your APIs are more than just a ...
 
Tech talk live on new alfresco api
Tech talk live on new alfresco apiTech talk live on new alfresco api
Tech talk live on new alfresco api
 
Business Applications Integration In The Cloud
Business Applications Integration In The CloudBusiness Applications Integration In The Cloud
Business Applications Integration In The Cloud
 
API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...
API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...
API City 2019 Presentation - Delivering Developer Tools at Scale: Microsoft A...
 
A great api is hard to find
A great api is hard to findA great api is hard to find
A great api is hard to find
 
Platforms FTW!
Platforms FTW!Platforms FTW!
Platforms FTW!
 

More from Twilio Inc

Create an IVR that Keeps Up with Your Customers
Create an IVR that Keeps Up with Your CustomersCreate an IVR that Keeps Up with Your Customers
Create an IVR that Keeps Up with Your CustomersTwilio Inc
 
Salesforce’s Andy Kung on the Power of CRM Integrations
 Salesforce’s Andy Kung on the Power of CRM Integrations Salesforce’s Andy Kung on the Power of CRM Integrations
Salesforce’s Andy Kung on the Power of CRM IntegrationsTwilio Inc
 
All Web Leads’ Lorena Lauv on How to Scale a Virtual Call Center
All Web Leads’ Lorena Lauv on How to Scale a Virtual Call CenterAll Web Leads’ Lorena Lauv on How to Scale a Virtual Call Center
All Web Leads’ Lorena Lauv on How to Scale a Virtual Call CenterTwilio Inc
 
Why Mobile Messaging Works?
Why Mobile Messaging Works?Why Mobile Messaging Works?
Why Mobile Messaging Works?Twilio Inc
 
Understand How Consumers Use Messaging
Understand How Consumers Use MessagingUnderstand How Consumers Use Messaging
Understand How Consumers Use MessagingTwilio Inc
 
How To Track Calls Using Twilio?
How To Track Calls Using Twilio?How To Track Calls Using Twilio?
How To Track Calls Using Twilio?Twilio Inc
 
Twilio Signal 2016 WebRTC Reborn
Twilio Signal 2016 WebRTC RebornTwilio Signal 2016 WebRTC Reborn
Twilio Signal 2016 WebRTC RebornTwilio Inc
 
Twilio Signal 2016 Using Add-ons
Twilio Signal 2016 Using Add-onsTwilio Signal 2016 Using Add-ons
Twilio Signal 2016 Using Add-onsTwilio Inc
 
Twilio Signal 2016 Technical Blogging
Twilio Signal 2016 Technical Blogging Twilio Signal 2016 Technical Blogging
Twilio Signal 2016 Technical Blogging Twilio Inc
 
Twilio Signal 2016 Serverless Contact Center
Twilio Signal 2016 Serverless Contact CenterTwilio Signal 2016 Serverless Contact Center
Twilio Signal 2016 Serverless Contact CenterTwilio Inc
 
Twilio Signal 2016 Leading An Open Hardware Revolution
Twilio Signal 2016 Leading An Open Hardware RevolutionTwilio Signal 2016 Leading An Open Hardware Revolution
Twilio Signal 2016 Leading An Open Hardware RevolutionTwilio Inc
 
Twilio Signal 2016 IoT Using LittleBits and Twilio SMS
Twilio Signal 2016 IoT Using LittleBits and Twilio SMSTwilio Signal 2016 IoT Using LittleBits and Twilio SMS
Twilio Signal 2016 IoT Using LittleBits and Twilio SMSTwilio Inc
 
Twilio Signal 2016 Chaos Patterns
Twilio Signal 2016 Chaos PatternsTwilio Signal 2016 Chaos Patterns
Twilio Signal 2016 Chaos PatternsTwilio Inc
 
Twilio Signal 2016 How to Impact Non-profits
Twilio Signal 2016 How to Impact Non-profits Twilio Signal 2016 How to Impact Non-profits
Twilio Signal 2016 How to Impact Non-profits Twilio Inc
 
Twilio Signal 2016 Bringing P2P to the Masses with WebRTC
Twilio Signal 2016 Bringing P2P to the Masses with WebRTCTwilio Signal 2016 Bringing P2P to the Masses with WebRTC
Twilio Signal 2016 Bringing P2P to the Masses with WebRTCTwilio Inc
 
Twilio Signal 2016 Listing Services and Lead Generation
Twilio Signal 2016 Listing Services and Lead GenerationTwilio Signal 2016 Listing Services and Lead Generation
Twilio Signal 2016 Listing Services and Lead GenerationTwilio Inc
 
Twilio Signal 2016 Bots
Twilio Signal 2016 BotsTwilio Signal 2016 Bots
Twilio Signal 2016 BotsTwilio Inc
 
Twilio Signal 2016 Taking Your SMS App Global
Twilio Signal 2016 Taking Your SMS App GlobalTwilio Signal 2016 Taking Your SMS App Global
Twilio Signal 2016 Taking Your SMS App GlobalTwilio Inc
 
Twilio Signal 2016 Omni-channel Routing Bots
Twilio Signal 2016 Omni-channel Routing BotsTwilio Signal 2016 Omni-channel Routing Bots
Twilio Signal 2016 Omni-channel Routing BotsTwilio Inc
 
Twilio Signal 2016 New Documentation
Twilio Signal 2016 New DocumentationTwilio Signal 2016 New Documentation
Twilio Signal 2016 New DocumentationTwilio Inc
 

More from Twilio Inc (20)

Create an IVR that Keeps Up with Your Customers
Create an IVR that Keeps Up with Your CustomersCreate an IVR that Keeps Up with Your Customers
Create an IVR that Keeps Up with Your Customers
 
Salesforce’s Andy Kung on the Power of CRM Integrations
 Salesforce’s Andy Kung on the Power of CRM Integrations Salesforce’s Andy Kung on the Power of CRM Integrations
Salesforce’s Andy Kung on the Power of CRM Integrations
 
All Web Leads’ Lorena Lauv on How to Scale a Virtual Call Center
All Web Leads’ Lorena Lauv on How to Scale a Virtual Call CenterAll Web Leads’ Lorena Lauv on How to Scale a Virtual Call Center
All Web Leads’ Lorena Lauv on How to Scale a Virtual Call Center
 
Why Mobile Messaging Works?
Why Mobile Messaging Works?Why Mobile Messaging Works?
Why Mobile Messaging Works?
 
Understand How Consumers Use Messaging
Understand How Consumers Use MessagingUnderstand How Consumers Use Messaging
Understand How Consumers Use Messaging
 
How To Track Calls Using Twilio?
How To Track Calls Using Twilio?How To Track Calls Using Twilio?
How To Track Calls Using Twilio?
 
Twilio Signal 2016 WebRTC Reborn
Twilio Signal 2016 WebRTC RebornTwilio Signal 2016 WebRTC Reborn
Twilio Signal 2016 WebRTC Reborn
 
Twilio Signal 2016 Using Add-ons
Twilio Signal 2016 Using Add-onsTwilio Signal 2016 Using Add-ons
Twilio Signal 2016 Using Add-ons
 
Twilio Signal 2016 Technical Blogging
Twilio Signal 2016 Technical Blogging Twilio Signal 2016 Technical Blogging
Twilio Signal 2016 Technical Blogging
 
Twilio Signal 2016 Serverless Contact Center
Twilio Signal 2016 Serverless Contact CenterTwilio Signal 2016 Serverless Contact Center
Twilio Signal 2016 Serverless Contact Center
 
Twilio Signal 2016 Leading An Open Hardware Revolution
Twilio Signal 2016 Leading An Open Hardware RevolutionTwilio Signal 2016 Leading An Open Hardware Revolution
Twilio Signal 2016 Leading An Open Hardware Revolution
 
Twilio Signal 2016 IoT Using LittleBits and Twilio SMS
Twilio Signal 2016 IoT Using LittleBits and Twilio SMSTwilio Signal 2016 IoT Using LittleBits and Twilio SMS
Twilio Signal 2016 IoT Using LittleBits and Twilio SMS
 
Twilio Signal 2016 Chaos Patterns
Twilio Signal 2016 Chaos PatternsTwilio Signal 2016 Chaos Patterns
Twilio Signal 2016 Chaos Patterns
 
Twilio Signal 2016 How to Impact Non-profits
Twilio Signal 2016 How to Impact Non-profits Twilio Signal 2016 How to Impact Non-profits
Twilio Signal 2016 How to Impact Non-profits
 
Twilio Signal 2016 Bringing P2P to the Masses with WebRTC
Twilio Signal 2016 Bringing P2P to the Masses with WebRTCTwilio Signal 2016 Bringing P2P to the Masses with WebRTC
Twilio Signal 2016 Bringing P2P to the Masses with WebRTC
 
Twilio Signal 2016 Listing Services and Lead Generation
Twilio Signal 2016 Listing Services and Lead GenerationTwilio Signal 2016 Listing Services and Lead Generation
Twilio Signal 2016 Listing Services and Lead Generation
 
Twilio Signal 2016 Bots
Twilio Signal 2016 BotsTwilio Signal 2016 Bots
Twilio Signal 2016 Bots
 
Twilio Signal 2016 Taking Your SMS App Global
Twilio Signal 2016 Taking Your SMS App GlobalTwilio Signal 2016 Taking Your SMS App Global
Twilio Signal 2016 Taking Your SMS App Global
 
Twilio Signal 2016 Omni-channel Routing Bots
Twilio Signal 2016 Omni-channel Routing BotsTwilio Signal 2016 Omni-channel Routing Bots
Twilio Signal 2016 Omni-channel Routing Bots
 
Twilio Signal 2016 New Documentation
Twilio Signal 2016 New DocumentationTwilio Signal 2016 New Documentation
Twilio Signal 2016 New Documentation
 

Recently uploaded

Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024SkyPlanner
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAshyamraj55
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 

Recently uploaded (20)

Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPAAnypoint Code Builder , Google Pub sub connector and MuleSoft RPA
Anypoint Code Builder , Google Pub sub connector and MuleSoft RPA
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 

Building a Great Web API - Evan Cooke - QCON 2011

  • 1. BUILDING A GREAT WEB API NOVEMBER 17, 2011, QCON T P EVAN COOKE @emcooke H T CO-FOUNDER & CTO twilio CLOUD COMMUNICATIONS
  • 2. One simple goal for building great Web APIs...
  • 4. It should take no more than 5 minutes for a developer to perform a useful task using your API for the first time
  • 5. What is a Web API? Definition for today: • HTTP/HTTPS endpoint • JSON/XML • Hosted API/Web service • Example: Amazon S3
  • 7. Twilio Web service APIs to automate Voice and SMS phone communications Carriers Inbound Calls Voice Outbound Calls Mobile/Browser VoIP Send To/From Phone SMS Numbers Short Codes Developer Phone Dynamically Buy Numbers Phone Numbers End User
  • 9. Why 5 Minutes? • Clear value proposition • Fast signup • Simple API • Efficient quickstarts • Concise accessible docs • Easy authentication (basic vs. oauth) • Debuggable
  • 10. API Adoption Funnel Hear about API Good APIs Try it Promote Adoption (tell friends) Build it Production Use Buy it Traction
  • 11. API Adoption Funnel Hear about API Try it 5-Minute Goal Build it Production Use Buy it Traction
  • 13. Co un te rE 5-minute APIs xa API Design m ple
  • 14. Media processing API • HTTP API to analyze large (MBs) media files • High tps ~100,000/day • POST data to the API You Media API • Analysis API synchronously returns analysis of media (could be minutes/hours later)
  • 15. Media processing API • Control and data in the same request (100 MB every request) • Unclear error conditions. Can you resend request? You API • Synchronously wait for ??? response • No request history/billing information
  • 16. Media processing API 1 Original Request POST http://api.vendor.com/API/Process? key=2hkh&mode=bob&filter=yeah Body is 100MB of binary data Problem Can we safely retry the request on a transient failure?
  • 17. Media processing API 2 Add a token allowing us to safely retry POST http://api.vendor.com/API/Process? key=2hkh&mode=bob&filter=yeah&token=TK123 Body is 100MB of binary data Problem Exposed to transient failures if the processing takes minutes/hours?
  • 18. Media processing API 3 Add webhook url to asynchronously respond POST http://api.vendor.com/API/Process? key=2hkh&mode=bob&filter=yeah&token=TK123&c bUrl=http%3A%2F%2Fmyserver.com%2Fresponse Body is 100MB of binary data Problem Request is huge and fragile when data is included with control cmd?
  • 19. Media processing API 4 Async fetch media & move POST params to body POST http://api.vendor.com/API/Process Body key=2hkh mode=bob filter=yeah token=TK123 cbUrl=http://myserver.com/response mediaUrl=http://s3.com/media.mov
  • 20. Media processing API 5 Version API and make URL more RESTful POST http://api.vendor.com/v1/Media Body key=2hkh mode=bob filter=yeah token=TK123 cbUrl=http://myserver.com/response mediaUrl=http://s3.com/media.mov Response URI http://api.vendor.com/v1/Media/MD123
  • 22. Idempotency • Idempotence is the property of certain operations that they can be applied multiple times without changing the result. • Request failures happen. Provide users a safe way to retry requests • Example: POST /BankAccount/Funds {‘value’: 1000, ‘token’: ‘TX123’}
  • 24. Self-documentation • Sweat what and how you name. Naming is is the best documentation. • Example: GET /Users/ID123 GET /Users/ID123/Friends GET /Users/ID123/Photos
  • 26. RESTfulness • Adherence to REST object model and verbs provides a clean way to expose business logic • Create POST /Users • Fetch GET /Users/ID123 • Modify PUT/POST /Users/ID123 • Remove DELETE /Users/ID123
  • 28. Versioning • Do it. Remember you will be stuck supporting old API versions (indefinitely?) • Examples GET /api/1/blag GET /api/v1/blag GET /api/20101206/blag
  • 30. Statefulness • When possible, offload the work of keeping state/history because it’s hard! • Examples POST /Calls GET /Calls/CA123 GET /Calls/CA123/Recordings/RE123
  • 32. Predictability • The API should do what users expect • Examples <Play>music.mp3</Play> <Play>music.aiff</Play>
  • 34. Responsiveness • When a response is available immediately, use a synchronous response. Otherwise, consider an asynchronous webhook rather then polling • Examples: POST /Object/Transforms Body cbUrl=http://b.com/response
  • 36. Key Ideas • Idempotency • Self-documentation • RESTfulness • Versioning • Statefulness • Predictability • Responsiveness
  • 37. 5-minute APIs “Good”
  • 38. What makes a good API? • Easy to Learn • Easy to use (even without documentation) • Hard to Misuse • Easy to read and maintain code that uses it • Sufficiently powerful to satisfy requirements • Easy to extend • Appropriate to audience How to Design a Good API and Why it Matters Joshua Bloch, Google
  • 41. Saleforce auth Campaigns from Adword API
  • 43. Saleforce CRM data Saleforce app APIs Google Maps API Twilio Client API
  • 46. DEPLOYING YOUR WEB API T P H T twilio CLOUD COMMUNICATIONS
  • 47. Infrastructure • 100’s of prod hosts in continuous operation • 80+ service types running in prod - Python(Twisted/GEvent), PHP, Java • 50+ prod database servers - MySQL, Redis • Prod deployments several times/day across 7 engineering teams
  • 48. Website Deployment Content Frequency(Risk) 4 buckets Website Code Log Scale 1000x REST API Big DB 100x Schema 10x 1x CMS PHP/Ruby Python/Java SQL etc. etc.
  • 49. Website Deployment Content Processes Website Code REST API Big DB Schema One Click CI Tests CI Tests CI Tests One Click Human Sign-off Human Sign-off One Click Human Assisted Click
  • 51. Cluster automation via boxconfig • Build and deployment system - boot entire Twilio stack with one key press • Host configuration - versioned code & config • Host orchestration - load balancing • Monitoring and alerting - nagios • Multi-datacenter deployment & analytics
  • 52. Cluster automation via boxconfig role role role Start Roles Fetch Provision S3 SVN/git Boxconfig Base (AMI) Vanilla Linux Host (cloud/colo)
  • 53. twilio Evan Cooke @emcooke