FORTYEIGHT (1.0.0)

Download OpenAPI specification:Download

Introduction

FORTYEIGHT sits at the intersection of artificial intelligence, human rights and consent.

We help organisations and governments connect their technology directly with people, therefore we've built (or are building) three different API's.

alt text

Audit API

Notify us each time you've made a new observation, and we'll help inform the person you observed.

Fully available. Exposes the following endpoints.

  • /v0/notifications/ - This is where your organisation notifies us of new observations. Once you notified us we will add the observation to our escrow where it waits to be claimed by the person connected to it. It will not sit there forever, depending on regulatory guidelines it will be automatically deleted after a cerain amount of time.
  • /v1/escrow/observations/ - This is where your organisation can query our escrow, i.e. retrieve observations which you've notified us before.

Validation API

Request first-party validation for low confidence observations, to improve models and accuracy.

Coming soon!

Expansion API

Autonomously request new, or expanded data for an observed person, with real-time consent.

Coming soon!

Authentication

api_key

All requests to FORTYEIGHT API's are authenticated by an API key.

You can retrieve your API key and API key usage by visiting the FORTYEIGHT Dashboard under https://manage.fortyeight.ai/accounts/general/

Make sure to use the x-api-key header to send your API key with every request and be sure to use https only.

Security Scheme Type API Key
Header parameter name: x-api-key

Notifications

Notify us of a single observation.

Use this endpoint when you want to notify us of an observation.

The Audit API will respond with a requestId and extendedRequestId in case you need to track the observation through our system. Once the observation enters the escrow you can query for and delete it by using the observation id which is distinct from the requestId and extendedRequestId and will be assigned once the observation enters the escrow.

You can supply any number of key/value data. Examples for data are as follows.

  • An organisation with an AR application might make observations about the physical appearance of a person, e.g. "gender": "female", "skin tone": "warm", and would supply this as data.
  • In AdTech interests of users might be encoded in the data, e.g. "interest snowboarding": "yes", "interest technology": "no".
  • A developer for a home automation software can inform a user about interactions as part of the data, e.g. "voice recording triggered": "yes", "voice transcribed": "play music".

If you want to invite observed users to join FORTYEIGHT set the invite flag in the corresponding identity. In case the user hasn't signed up for FORTYEIGHT yet we will send out an email (if the identity is of type EMAIL_ADDRESS) or an SMS (if the identity is of type MOBILE_NUMBER) to the identity record.

Authorizations:
Request Body schema: application/json

The observation to store

type
required
string
Enum: "FACIAL_RECOGNITION" "SMART_MIRRORS" "COVID19_MONITORING" "ARTIFICIAL_INTELLIGENCE" "ADVERTISING" "NETWORKS" "MISC"

The type of the observation

required
object (KeyValue)
timestamp
required
string <date-time>

The date and time the observation was made

required
Array of objects (Identity) non-empty

The identities associated with this observation

Responses

Request samples

Content type
application/json
{
  • "type": "ADVERTISING",
  • "data": {
    },
  • "timestamp": "2019-08-24T14:15:22Z",
  • "identities": [
    ]
}

Observations

Search and retrieve multiple observations.

Query the escrow for observations. Use the limit and lastKey query parameters to paginate through the results.

Authorizations:
query Parameters
observationType
string

Filter by an observation type

lastKey
string

Request a paginated result

limit
number

The number of results to return

Responses

Request samples

import requests
observation_type = "ADVERTISING"
limit = 100
url = f"https://api.fortyeight.ai/v1/escrow/observations" \
      f"?observationType={observation_type}" \
      f"&limit={limit}"
headers = {"x-api-key": YOUR_API_KEY}
requests.get(url, headers=headers)

Response samples

Content type
application/json
{
  • "observations": [
    ]
}

Retrieve a single observation.

Retrieve information about a single observation stored in the escrow.

Authorizations:
path Parameters
observationId
required
string

The version 4 UUID of the observation to retrieve information about

Responses

Request samples

import requests
observation_id = "9e3ad3bb-84f0-4754-b814-33c5c19af632"
url = f"https://api.fortyeight.ai/v1/escrow/observations/" \
      f"{observation_id}/"
headers = {"x-api-key": YOUR_API_KEY}
requests.get(url, headers=headers)

Response samples

Content type
application/json
{
  • "id": "9e3ad3bb-84f0-4754-b814-33c5c19af632",
  • "type": "ADVERTISING",
  • "data": {
    },
  • "timestamp": "2019-08-24T14:15:22Z",
  • "received": "2019-08-24T14:15:22Z",
  • "expires": 1614359139,
  • "identities": [
    ],
  • "requestId": "497d1e2b-273f-4b3f-91d3-4cf90faf6e1a",
  • "extendedRequestId": "Z67_KGJ1rPEFqLA="
}

Delete a single observation.

Delete a single observation from the escrow.

Authorizations:
path Parameters
observationId
required
string

The version 4 UUID of the observation to delete

Responses

Request samples

import requests
observation_id = "9e3ad3bb-84f0-4754-b814-33c5c19af632"
url = f"https://api.fortyeight.ai/v1/escrow/observations/" \
      f"{observation_id}/"
headers = {"x-api-key": YOUR_API_KEY}
requests.delete(url, headers=headers)