Skip to main content
Every response is JSON, including errors. You will never receive an HTML error page, so you can parse the body without checking the content type first.

Status Codes

Every endpoint in this reference can return the codes above. Creates return 200, not 201. One endpoint adds a code specific to what it does: This is noted on the endpoint’s own page.

Successful Responses

The payload is always under data.
Write operations add a human-readable message:
Some list endpoints return extra top-level keys alongside data that the Feedspace dashboard uses for its own display logic. Ignore any key you do not recognise, and do not treat a new one as a breaking change.
The text, video, and audio review imports return 200 even when the import fails. In that case the body is { "data": { "error": "Failed to store reviews." } } instead of the imported review, so check for data.error rather than relying on the status code alone.

Error Responses

Every error carries a message you can show or log.

Validation errors

A 422 adds an errors object keyed by field name, where each value is an array of messages for that field:

Method not allowed

A 405 means the path is valid but the HTTP method is not. The message names the accepted methods, and they are also returned in the Allow response header:
The usual cause is updating with the wrong verb. Updating a form is PUT /forms/{unique_form_id}, so a POST to that path returns 405. Note that the review edit endpoints are the opposite: because they accept file uploads, they are called as POST with a _method=PUT form field, as shown on each of those pages. That same _method=PUT field also works on any other update endpoint if your client cannot send a real PUT.

Permission errors

A 403 includes additional boolean flags that the Feedspace dashboard uses to decide which prompt to show the signed-in user. Integrations can ignore them and read message.

Not found

404 messages name the record type, for example Review not found., Form not found., Page not found. or Workspace not found.. A 404 does not always mean the record is gone. Because every request is scoped to one workspace, a record that exists in a different workspace is reported as not found. If you are certain the record exists, confirm you are using the credentials for the workspace that owns it.

Identifiers

Most 404 responses come from sending the wrong kind of identifier. Feedspace records carry both a numeric id and a separate string identifier, and only the string form is accepted: Reviews are the exception: they are addressed by their numeric id, together with the review type in the path, for example /feeds/text/{id}.