General API Structure

The Fuse APIs are all REST APIs that adhere to a sensible set of guidelines. All our APIs will use the following structures consistently.

API Endpoints

Our APIs can be found at: https://api.fuseinsight.com.

📘

Note

You can use the detailed API reference to see all available endpoints, or find out more about testing using sandbox.

Status Codes

Fuse uses the following status codes across all of our APIs:

Successful Status Codes

  • 200 OK — Produced a response successfully.
  • 201 Created — The resource was created successfully.
  • 204 No Content — The response was successful but there is no data to return.

Error Status Codes

  • 400 Bad Request — The request structure did not make sense and could not be executed. Commonly returned when the request parameters are not structured correctly.
  • 401 Unauthorized — The API token being used to access the APIs is not valid. See the "authentication" page for more details.
  • 403 Forbidden — The API token being used to access the APIs does not have access to this resource. See the "authentication" page for more details.
  • 404 Not Found — The resource with that ID could not be found.
  • 422 Unprocessible Entity — The request data did not make sense and could not be executed. Commonly returned when the request parameters are structurally valid, but do not validate.
  • 429 Too Many Requests — The request could not be performed because a rate limit was exceeded. Try this request after some delay.

Responses

The Fuse API generally responds with JSON, with the Content-Type header set to application/json.

Some APIs will return HTML, with the Content-Type header set to text/html — these are intended to be opened on a user's device.

Successful Responses

For endpoints that create/read/update a resource, that resource will be returned as the response inside a data property:

{
  "data": {
    "id": "11111111-2222-3333-4444-555555555555",
    "first_name": "Bob",
    "last_name": "Fellow",
    "email": "[email protected]"
  }
}

For endpoints that list resources, an array of resources will be returned inside the data property:

{
  "data": [
    {
      "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
      "provider_code": "ob-monzo",
      "bank_accounts": [
        {
          "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
          "account_name": "Rent",
          "account_type": "current"
        }
      ]
    }
  ]
}

The resources will always have the same structure across these types of calls.

For endpoints that delete a resource, the body will be empty.

All of these responses will return one of the successful status codes.

Error Responses

All error responses will return a JSON object with the properties code (a robot friendly error code) and message (a human friendly error message).

They will also return with one of the error status codes.

{
  "code": 404,
  "message": "User Not Found"
}

Types

Fuse uses JSON standard types in request and response bodies. For types that don't have natural JSON representations, the following types are used instead:

  • ISO-8601 formatted strings are used for Dates and DateTimes, eg. "2022-01-01 and "2022-01-01T00:00:00.000Z"

Versioning

API paths are prefixed with a version, eg. /v1.

APIs within a version can change in the following ways:

  • New fields can be added to responses
  • New fields can be added to requests, but only when optional
  • Bug and security fixes can be applied in a potentially breaking way

Any other change will increment the version and customers will be notified. A timeframe for deprecation of the old version may eventually be given, the length of which will be decided on a case-by-case basis.