API Basics

The Lighthouse API is implemented as a REST interface, and is available over XML and JSON.

Base URL

You always call the API on the domain of your account. So if your account is https://foo.lighthouseapp.com, this will be the base URL for all your API calls, as you can only retrieve information per account.

In the rest of this documentation, we will thus only refer to the PATH of requests. So /projects effectively means https://foo.lighthouseapp.com/projects


The API follows the REST conventions, and you can assume the following:

GET     /tickets.json      => get list of tickets
GET     /tickets/1.json    => get ticket #1
POST    /tickets.json      => create a ticket
PUT     /tickets/1.json    => update ticket #1
DELETE  /tickets/1.json    => delete ticket #1


Lighthouse supports XML and JSON. For all API calls, simply choose the content type AND extension you prefer.

For XML:

curl -H "Content-Type: application/xml" http://.../tickets.xml


curl -H "Content-Type: application/json" http://.../tickets.json

All requests must send a proper Content-Type header of application/json or application/xml. Otherwise, Lighthouse won't interpret your request as an API request, and you'll likely get a 500 error back.


Lighthouse allows two forms of authentication: HTTP Basic Authentication and API tokens.

HTTP Basic Authentication

Exactly what you expect:

curl -u EMAIL:PASSWORD             http://foo.lighthouseapp.com/projects.xml
curl -u foo@example:com:password   http://foo.lighthouseapp.com/projects.xml

API tokens

API tokens is the preferred mode of authentication, as you don't have to share your login and password, and they can be revoked easily. You can create tokens on your profile page (click on your name in the upper right).

There are 2 ways to provide the token in your request. As a header:

curl -H 'X-LighthouseToken: API_KEY' http://foo.lighthouseapp.com/projects.xml

As a parameter:

curl http://foo.lighthouseapp.com/projects.xml?_token=API_KEY

See also: How do I get an API token?

Validation Errors

If you try to save an invalid resource, you will get a set of errors with an HTTP status of 422 Unprocessable Entity:

  <error>Permalink can't be blank</error>
  <error>Name can't be blank</error>