We have exposed an Application Programming Interface (API) so that anyone who is so inclined can create alternative interfaces to Tempo or integrate Tempo with an external service. This document describes how to connect to the API and what resources and methods are available.

Note: The introduction of sub-domains to all accounts means that you are required to use your subdomain in all requests to the API, e.g. subdomain.keeptempo.com.


  • You must supply the headers Accepts: application/xml and Content-Type: application/xml with each request.
  • JSON data is now supported as well (use application/json in the headers)
  • Requests must be made against your account’s sub-domain.
  • Every request must be authenticated over HTTP Basic Authentication.

HTTP Basic Authentication means providing your Tempo login and password along with each request. All requests should be made over SSL/HTTPS to protect your credentials. We also recommend you create a user on your account that will be used solely for accessing your data over the API.

Here’s an example of an API request, using curl:

curl -X GET -H ‘Accept: application/xml’ -H ‘Content-Type: application/xml’ \
—user mylogin:mypassword https://hotdogzllc.keeptempo.com/entries

Since all Tempo accounts support SSL, it would be prudent of you to connect using https when accessing the API to protect your password from prying eyes.

On RESTful Resources

All end-points in our API are REST-style resources, supporting the usual set of GET, PUT, POST and DELETE operations at RESTful URLs. This means you should be able to use a framework like ActiveResource to interact with our API. However, there are some things that don’t quite work as expected, and we’ve endeavored to document that here extensively.

Note: As of 17-FEB-09, we’ve gone back to including “type” attributes in our XML output. You don’t need to include type attributes on your incoming data (except in some instances, see the context search section below), but it can’t hurt for non-string data.

Change Notifications

We think that an API shouldn’t change much, but sometimes change is inevitable. In any event, we feel that it’s bad form to simply change an API without any notice. With that in mind, we plan on publishing advisories about changes we intend to make to our blog and to the API mailing list, well in advance. Please subscribe to one of these channels to receive such notices. In addition, participating in the mailing list gives you an opportunity to comment on changes that we are considering.

Mailing List

We’re putting a significant amount of work into improving our API and the documentation to encourage our customers to use it. While you are welcome to contact us directly with your questions, we encourage you to join the mailing list on Google Groups to share your problem with us and other consumers of the API, to receive email notices about any forthcoming API changes, and to participate in any requests for comment.

You can join the mailing list here.

We will not post product plugs or anything else unrelated to the API to the mailing list.