Introduction
Welcome to the Erin's List API! You can use our API to access API endpoints, which allows you to submit and search incidents electronically.
We have language bindings in Shell, PHP, and Javascript! You can view code examples in the dark area to the right, and you can switch the programming language of the examples with the tabs in the top right.
Schema
All API access is over HTTPS, and accessed from the https://www.erinslist.us
. All data is sent and received as JSON.
A sample request to GET
incidents from a given address would look something like this:
GET https://www.erinslist.us/api/incidents
Authentication
# With shell, you can also pass the key pair directly using the -u switch
curl "https://www.erinslist.us/api/incidents?address=some+address+TX+1234"
-u client_key:secret_key
// create a new instance of the API client given the api_key and secret_key
$client = new ERLClient($api_key, $secret_key);
$incidents = $client->get_incidents('some address TX 1234');
We use API keys and a Secret Key to allow access to the API. Create an account and request for an API key here.
The API expects an Authorization
header with base64
encoded api_key:secret_key
pair to be included in all API requests. It should look something like this:
Authorization: Basic enlZQkdxcEdyMU1BbjVYSWIyeg==
Endpoints
Get Incidents
curl "https://www.erinslist.us/api/incidents?address=some+address+TX+1234"
-u client_key:secret_key
$client = new ERLClient($api_key, $secret_key);
$incidents = $client->get_incidents('some address TX 1234');
Status: 200 OK
[
{
"id": 787,
"address": "3239 110th St, East Elmhurst, NY, 11369",
"lat": 3239,
"lng": 10000,
"notes": "Someone with a gun is pointing at me while attempting :(",
"reported_by": "Jovanni",
"reported_at": "2017-06-23T09:57:31Z"
},
{
"id": 789,
"address": "123 something address 1234, TX, 39349",
"lat": 3239,
"lng": 10000,
"notes": "Something happened here as well.",
"reported_by": "Jovanni",
"reported_at": "2017-06-23T09:57:31Z"
}
]
Get incidents based on the given address
and radius
.
GET https://www.erinslist.us/api/incidents
Parameters
Parameter | Type | Description |
---|---|---|
address | string | Required. the base address that we are getting incidents from. Can be a lat, long format e.g. 126.2030, -2.030344 |
radius | string | the radius in foot. Default: 1000 |
sort | string | What to sort results by. Can be either created , radius , reporter . Default: created |
direction | string | The direction of the sort. Can be either asc or desc . Default: desc |
since | string | Only incidents created at or after this time are returned. This is a timestamp in ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ . |
Get Single Incident
curl "https://www.erinslist.us/api/incidents/1293"
-u client_key:secret_key
$client = new ERLClient($api_key, $secret_key);
$incidents = $client->get_incident(1293);
Status: 200 OK
{
"id": 1293,
"address": "1293 Address somewhere in the road, OK, 21442",
"lat": 3239,
"lng": 10000,
"notes": "Something happened here as well.",
"reported_by": "Jovanni",
"reported_at": "2017-06-23T09:57:31Z"
}
Get a single incident by identifier
GET https://www.erinslist.us/api/incidents/:id
Parameters
Parameter | Type | Description |
---|---|---|
id | string | Required. The incident identifier |
Report Incident
# Passing -d in shell will post a request
curl "https://www.erinslist.us/api/incidents"
-d '{"address":"3239 110th St, East Elmhurst, NY, 11369","notes":"Something happened here as well.","reporter":"Jovanni","reporter_email":"[email protected]","verified":true}'
-u client_key:secret_key
$client = new ERLClient($api_key, $secret_key);
$data = array(
'address' => '3239 110th St, East Elmhurst, NY, 11369',
'notes' => 'Something happened here as well.',
'reporter' => 'Jovanni',
'reporter_email' => '[email protected]'
'verified' => true
);
$incidents = $client->report_incident($data);
Status: 201 Created
{
"id": 787,
"verified": true,
"address": "3239 110th St, East Elmhurst, NY, 11369",
"lat": 3239,
"lng": 10000,
"notes": "Something happened here as well.",
"reported_by": "Jovanni",
"reported_at": "2017-06-23T09:57:31Z"
}
Report an incident to Erin's List
POST https://www.erinslist.us/api/incidents
Parameters
Parameter | Type | Description |
---|---|---|
address | string | Required. the base address that we are getting incidents from. Can be a lat, long format e.g. 126.2030, -2.030344 |
notes | string | Required. Incident notes/description |
verified | boolean | Indicate if the reported incident is verified or not |
lat | float | Lattitude. If omitted, API will try to geocode the given address |
lng | float | Longitude. If omitted, API will try to geocode the given address |
reporter | string | The name of the reporter |
reporter_email | string | The email of the reporter |
Evaluate an Address
# Passing -d in shell will post a request
curl "https://www.erinslist.us/api/evaluate"
-d '{"address":"3239 110th St, East Elmhurst, NY, 11369"}'
-u client_key:secret_key
$client = new ERLClient($api_key, $secret_key);
$data = array(
'address' => '3239 110th St, East Elmhurst, NY, 11369'
);
$incidents = $client->evaluate($data);
Status: 200 OK
{
"radius": 1000,
"address": "3239 110th St, East Elmhurst, NY, 11369",
"evaluation": "No incidents found from within 0.9mi radius. Please report if you find this inaccurate.",
"incidents": []
}
Auatomatically evaluates a given address - dangarous or safe.
POST https://www.erinslist.us/api/evaluate
Parameters
Parameter | Type | Description |
---|---|---|
address | string | Required. the base address that we are getting incidents from. Can be a lat, long format e.g. 126.2030, -2.030344 |
lat | float | Lattitude. If omitted, API will try to geocode the given address |
lng | float | Longitude. If omitted, API will try to geocode the given address |
radius | string | the radius in foot. Default: 1000 |
Errors
The Erin's List API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Bad Request -- Your request is invalid. |
401 | Unauthorized -- Your API key is wrong. |
403 | Forbidden -- The kitten requested is hidden for administrators only. |
404 | Not Found -- The specified kitten could not be found. |
405 | Method Not Allowed -- You tried to access a kitten with an invalid method. |
406 | Not Acceptable -- You requested a format that isn't json. |
410 | Gone -- The kitten requested has been removed from our servers. |
418 | I'm a teapot. |
429 | Too Many Requests -- You're requesting too many kittens! Slow down! |
500 | Internal Server Error -- We had a problem with our server. Try again later. |
503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |