FLOW's REST API error reference

See the details of any error code your client application might have received.

When a REST request to FLOW servers is successfully processed, a response with the 200—OK HTTP status code and a JSON body (if relevant) is returned. This document identifies the error codes and messages that FLOW servers return when things don't go as planned. This sample response JSON body demonstrates how an error is communicated:

   "error": {
      "code": 400,
      "reason": "invalid_argument",
      "message": "The value for one of the fields in the request body was invalid."
  • code field contains the same value as the actual returned HTTP status code
  • reason is a short string serving as a more specific nonambiguous error identifier
  • message is a human-readable message describing the error

Each code has a set of unique reasons that may , but never the same reason for different

FLOW errors are listed by their HTTP status codes as defined in RFC 7231. Within the individual status codes, they are listed by the contents of the reason field.

The conditional request would have been successful, but the condition was false, so no body was sent.

The API request is invalid or improperly formed. Consequently, the API server could not understand the request.

The value for one of the URI parameters was invalid. In addition to normal URI parameter validation, any URI parameters that have a corresponding value in provided JSON request bodies must match if they are both specified.

Could not parse the body of the request according to the provided Content-Type.

The one or more properties in the request’s JSON body are invalid or missing.

A required URL parameter or required request body JSON property is missing.

The Accept-Version header is missing, or there is a mismatch between the major version of the client and the block, or the client's minor version is lower than the block's. See the related article for more information about the header, API versioning, and how to find out the block's API version.

In requests that require you to provide a sequence number, the sequence number's data type must be a string, not an integer.

The provided username or password is invalid.

The provided bearer token in the Authorization header is invalid.

Access to a non-public method that requires that a bearer authentication was made, but none has been provided in the Authorization header. See the related article on how to properly authenticate.

Your session has expired. Log in again to continue.


According to the access control policy, the current user does not have access to perform the requested action. This code applies even if the resource being acted on doesn't exist.

The account associated with the resource has been disabled.

404—Not Found

Either there is no API method associated with the URL path of the request, or the request refers to one or more resources that were not found.

The HTTP verb is not supported by the URL endpoint used in the request.


A request to change a resource failed to commit the change due to a conflicting concurrent change to the same resource.

In cases where it's important for the client to know the current version of the analytic they are interacting with, a sequence number field is required in the JSON request bodies. A sequence number is basically an analytic's current v*ersion that increments every time it is modified. While performing sink data requests, use the current sequence number. While updating an analytic, use a sequence number 1 higher than the current. Learn here how to obtain the current sequence number.

POST method has been used on an existing element of a collection.

The message body was larger than what FLOW supports.

The request's Content-Type header is missing or contains an unsupported format.

The usage limit has been exceeded. If your application tries to use more than its limit, additional requests will fail. Throttle your client's requests.

We encountered an internal error. Please contact us at [email protected] to help us resolve the situation.

The server does not support the functionality required to fulfill the request at the moment.

Analytics data is loading and currently not available.

What next?

This concludes everything there is to know about FLOW's REST API! If you want to know about other options of obtaining sink data, see UDP sinks for a subscription-based variant of sinks. You can also make FLOW send you widget outputs on its own with webhooks.

Want to learn more? Contact us!