One of the most consistent 'knocks' against Web 2.0-style open APIs is the lack of a written and enforceable service level agreement (SLA). These agreements define a minimum level of service like 99.9% uptime and penalties to the provider if not met. Amazon, one of the clear innovators in this space, took a big step at tackling that issue today by announcing an SLA for S3. You can read the entire document here. As Amazon's Jeff Barr explains:
I am very happy to announce that, effective October 1, 2007, The Amazon S3 Service Level Agreement is in effect.
This SLA has been in the works for a while and we take the commitments made in this document quite seriously. We knew that S3 had to meet the very high performance and reliability goals set by our internal clients. We strongly believed that meeting this level of operational excellence would be good enough for our external users as well. Before we published our SLA, we wanted to get a better sense of how our external developers were making use of S3. With well over 5 billion objects under management, we now understand the usage patterns and properties needed to make an informed commitment.
You can read the entire document to see how this will work. Basically, we commit to 99.9% uptime, measured on a monthly basis. If an S3 call fails (by returning a ServiceUnavailable or InternalError result) this counts against the uptime. If the resulting uptime is less than 99%, you can apply for a service credit of 25% of your total S3 charges for the month. If the uptime is 99% but less than 99.9%, you can apply for a service credit of 10% of your S3 charges.
As time goes on it will be interesting to see how other major API providers begin offering this sort of agreement with users of their web services.