curl --request GET \
--url https://api.feedspace.io/v3/feeds \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.feedspace.io/v3/feeds"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://api.feedspace.io/v3/feeds', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.feedspace.io/v3/feeds",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.feedspace.io/v3/feeds"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.feedspace.io/v3/feeds")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.feedspace.io/v3/feeds")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body{
"data": {
"current_page": 1,
"data": [
{
"id": 544,
"feed_type": "audio_feed",
"unique_feedback_id": "qrTTi2",
"public_url": "https://feedspace.io/af/qrTTi2",
"comment": null,
"favourite": false,
"feed_identifier": null,
"sentiment_id": 1,
"is_locked": 0,
"created_at": "2025-04-07T08:50:44.000000Z",
"reviewed_at": "2025-04-07T08:50:44.000000Z",
"feed_fields": {
"name": "Prajakta Managuli",
"profile_pic_url": null,
"position": "Content Writer",
"organization_name": "Techuplabs",
"consent": null
},
"review_labels": [
{
"id": "01jpz0s8ypx0x4w7z0m6n2qk3t",
"name": "Feature request",
"attributes": {
"css_color_code": "#1794cc"
}
}
],
"audio_feed": {
"is_audio_converted": 1,
"transcript": null,
"file_url": "https://dm219012nbq21.cloudfront.net/uploads/zhBU6t/audio-feed/feed_zhBU6t1744015722679.mp3"
},
"is_download_enabled": false
}
],
"first_page_url": "https://api.feedspace.io/v3/feeds?page=1",
"from": 1,
"next_page_url": null,
"path": "https://api.feedspace.io/v3/feeds",
"per_page": 15,
"prev_page_url": null,
"to": 2
},
"show_migration_banner": false,
"show_updated_banner": false,
"updated_banner_video": "https://feedspace-test.s3.ap-south-1.amazonaws.com/uploads/F43kUl/video-feed/feed_MJcmzA81710841191347.mp4",
"show_workspaces_merge_banner": false,
"unique_form_id": "form_gSgElcsXX8LaI6RtMA6JqlkN",
"marketing_materials": 0
}List All Reviews
Get a paginated list of reviews across the workspace. Supports optional filters: filter[search], filter[feed-types][], filter[favourite], filter[review_with_comment], filter[sentiments][], filter[star-rating][], filter[feed-forms][], filter[review-labels][], and filter[imported-froms][]. All filters are optional; filters of different types are AND-combined, while values within a single filter array are OR-combined (except filter[star-rating][], which matches the inclusive range between the lowest and highest values sent).
curl --request GET \
--url https://api.feedspace.io/v3/feeds \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.feedspace.io/v3/feeds"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://api.feedspace.io/v3/feeds', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.feedspace.io/v3/feeds",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.feedspace.io/v3/feeds"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.feedspace.io/v3/feeds")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.feedspace.io/v3/feeds")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body{
"data": {
"current_page": 1,
"data": [
{
"id": 544,
"feed_type": "audio_feed",
"unique_feedback_id": "qrTTi2",
"public_url": "https://feedspace.io/af/qrTTi2",
"comment": null,
"favourite": false,
"feed_identifier": null,
"sentiment_id": 1,
"is_locked": 0,
"created_at": "2025-04-07T08:50:44.000000Z",
"reviewed_at": "2025-04-07T08:50:44.000000Z",
"feed_fields": {
"name": "Prajakta Managuli",
"profile_pic_url": null,
"position": "Content Writer",
"organization_name": "Techuplabs",
"consent": null
},
"review_labels": [
{
"id": "01jpz0s8ypx0x4w7z0m6n2qk3t",
"name": "Feature request",
"attributes": {
"css_color_code": "#1794cc"
}
}
],
"audio_feed": {
"is_audio_converted": 1,
"transcript": null,
"file_url": "https://dm219012nbq21.cloudfront.net/uploads/zhBU6t/audio-feed/feed_zhBU6t1744015722679.mp3"
},
"is_download_enabled": false
}
],
"first_page_url": "https://api.feedspace.io/v3/feeds?page=1",
"from": 1,
"next_page_url": null,
"path": "https://api.feedspace.io/v3/feeds",
"per_page": 15,
"prev_page_url": null,
"to": 2
},
"show_migration_banner": false,
"show_updated_banner": false,
"updated_banner_video": "https://feedspace-test.s3.ap-south-1.amazonaws.com/uploads/F43kUl/video-feed/feed_MJcmzA81710841191347.mp4",
"show_workspaces_merge_banner": false,
"unique_form_id": "form_gSgElcsXX8LaI6RtMA6JqlkN",
"marketing_materials": 0
}Filters
All filters are optional. Filters of different types are combined with AND; values within a single filter array are combined with OR. Supported query filters:filter[search]— free-text keyword search across reviewer name and review textfilter[feed-types][]— review type (video,audio,text,social)filter[favourite]— favourited reviews only (true)filter[review_with_comment]— reviews with a non-empty comment (true)filter[sentiments][]— AI-detected sentiment (positive,negative,neutral)filter[star-rating][]— star rating (1–5)filter[feed-forms][]— review form ID(s)filter[review-labels][]— review label ID(s)filter[imported-froms][]— import source platform ID(s)
filter[search]
Free-text keyword search. Matches the keyword as a case-insensitive substring against the reviewer’s name and the review text/comment, returning only reviews that contain it.
Multi-word strings are matched literally — excellent service returns reviews containing that exact run of text. Encode the space as %20 or +.
filter[search]. The bare search query parameter has no effect on this endpoint and is silently ignored — no error is returned.filter[feed-types][] and filter[sentiments][], which silently drop unrecognised values and return the full unfiltered list.curl -g -u "$API_KEY:$SECRET_KEY" \
'https://api.feedspace.io/v3/feeds?filter[search]=Dewalt'
curl -g -u "$API_KEY:$SECRET_KEY" \
'https://api.feedspace.io/v3/feeds?filter[search]=excellent%20service'
filter[feed-types][]
Restrict results to specific review types. Allowed values: video, audio, text, social.
vidoe), the filter is silently dropped and the API returns the full unfiltered list of reviews — not an error. Validate your input client-side before sending.social currently has no effect. filter[feed-types][0]=social returns the exact same page of reviews, in the same order, as the same request with no filter at all — verified against the live API, where a valid value like text does change the result. If you need social-only results, filter client-side on feed_type: "social_feed" in the response instead.feed_type column. In particular, text returns any review that carries text content — including a social post that was imported with text (a social review can appear under the text filter). Likewise video matches imported social videos (social_feed_type: "manual_video") and audio matches imported social audio.id from a type-filtered list is not guaranteed to work on the matching single-review endpoint. A list filtered to text can come back with every item carrying feed_type: "social_feed", and passing one of those ids to Get Text Review returns 404 Review not found. Check each item’s feed_type before using its id with Get Text Review, Get Video Review or Get Audio Review.curl -g -u "$API_KEY:$SECRET_KEY" \
'https://api.feedspace.io/v3/feeds?filter[feed-types][0]=video'
curl -g -u "$API_KEY:$SECRET_KEY" \
'https://api.feedspace.io/v3/feeds?filter[feed-types][0]=video&filter[feed-types][1]=audio'
curl -g -u "$API_KEY:$SECRET_KEY" \
'https://api.feedspace.io/v3/feeds?filter[feed-types][0]=video&filter[feed-types][1]=audio&filter[feed-types][2]=text&filter[feed-types][3]=social'
filter[favourite]
Return only favourited reviews. Pass true to enable; omit this parameter to include favourited and non-favourited reviews.
true and 1 return favourited reviews only. false also returns favourited reviews only, because it is a non-empty string. 0 behaves as though the parameter were absent and returns everything. No value returns non-favourited reviews only; filter those out client-side.curl -g -u "$API_KEY:$SECRET_KEY" \
'https://api.feedspace.io/v3/feeds?filter[favourite]=true'
filter[review_with_comment]
Return only reviews that have a non-empty comment. Pass true to enable; omit this parameter to include reviews with or without comments.
filter[favourite] above. true, 1 and false all return reviews with comments only; 0 behaves as though the parameter were absent. No value returns comment-less reviews only.curl -g -u "$API_KEY:$SECRET_KEY" \
'https://api.feedspace.io/v3/feeds?filter[review_with_comment]=true'
filter[sentiments][]
Filter by AI-detected sentiment. Allowed values: positive, negative, neutral.
curl -g -u "$API_KEY:$SECRET_KEY" \
'https://api.feedspace.io/v3/feeds?filter[sentiments][0]=positive'
curl -g -u "$API_KEY:$SECRET_KEY" \
'https://api.feedspace.io/v3/feeds?filter[sentiments][0]=positive&filter[sentiments][1]=neutral&filter[sentiments][2]=negative'
filter[star-rating][]
Filter by star rating. Accepts integers from 1 through 5.
1–5. Out-of-range values (e.g. 99) return an empty result, while non-numeric values (e.g. abc) are coerced to 0 and may return unrated items. Validate your input client-side.curl -g -u "$API_KEY:$SECRET_KEY" \
'https://api.feedspace.io/v3/feeds?filter[star-rating][0]=5'
curl -g -u "$API_KEY:$SECRET_KEY" \
'https://api.feedspace.io/v3/feeds?filter[star-rating][0]=4&filter[star-rating][1]=5'
filter[feed-forms][]
Filter to reviews collected via specific review forms. Pass the numeric form id — not unique_form_id.
Get the numeric id from the List Review Forms endpoint — it is the integer id field on each form object.
curl -g -u "$API_KEY:$SECRET_KEY" \
'https://api.feedspace.io/v3/feeds?filter[feed-forms][0]=10644'
filter[review-labels][]
Filter by review label ID(s). Label IDs are strings (e.g. 01krk3zwze14apa6gmx045ky8a).
Get the available label IDs from the List Review Labels endpoint — use the id field from each label object.
curl -g -u "$API_KEY:$SECRET_KEY" \
'https://api.feedspace.io/v3/feeds?filter[review-labels][0]=01krk3zwze14apa6gmx045ky8a'
filter[imported-froms][]
Filter to reviews imported from specific source platforms (Google, YouTube, Wistia, Product Hunt, etc.). Accepts numeric platform IDs.
curl -g -u "$API_KEY:$SECRET_KEY" \
'https://api.feedspace.io/v3/feeds?filter[imported-froms][0]=21'
Pagination
Results are paginated with 15 items per page. Use?page= to navigate.
curl -u "$API_KEY:$SECRET_KEY" \
'https://api.feedspace.io/v3/feeds?page=2'
first_page_url, next_page_url, and prev_page_url. next_page_url is null on the last page; prev_page_url is null on the first.
There is no total count in the response, so the number of matching reviews cannot be read from a single call. Follow next_page_url until it is null.
Combining filters
Mix any of the above; a keyword search combines with the other filters the same way (AND). The example below requests positive-sentiment reviews that mentionDewalt:
curl -g -u "$API_KEY:$SECRET_KEY" \
'https://api.feedspace.io/v3/feeds?filter[search]=Dewalt&filter[sentiments][0]=positive'
curl -g -u "$API_KEY:$SECRET_KEY" \
'https://api.feedspace.io/v3/feeds?filter[feed-types][0]=video&filter[feed-types][1]=audio&filter[favourite]=true&filter[sentiments][0]=positive&filter[star-rating][0]=4&filter[star-rating][1]=5&filter[review_with_comment]=true'
URL encoding the brackets
Thefilter[...] syntax contains literal [ and ]. Most HTTP clients (Postman, Python requests, JavaScript fetch, Insomnia) handle this transparently. Two things to watch for:
curlinterprets[and]as URL-globbing ranges by default. Add the-gflag (alias--globoff) — or URL-encode as%5Band%5D— to suppress that behaviour:curl -g -u "$API_KEY:$SECRET_KEY" \ 'https://api.feedspace.io/v3/feeds?filter[feed-types][0]=video'- Browsers / fully-encoded clients will accept the percent-encoded form too:
https://api.feedspace.io/v3/feeds?filter%5Bfeed-types%5D%5B0%5D=video
Response shape
Each item indata.data[] carries a top-level feed_type (audio_feed, video_feed, text_feed, or social_feed) which determines which type-specific block is present on the item:
feed_type: "audio_feed"→audio_feedblock withfile_url,transcript, etc.feed_type: "video_feed"→video_feedblock withfile_url,static_thumb_url,transcript, etc.feed_type: "text_feed"→text_feedblock with the review text content.feed_type: "social_feed"→social_feedblock withsocial_platform,attachments, plus asocial_feed_typefield on the item (social,manual_text,manual_video) that indicates the sub-category.
review_labels (an array of { id, name, attributes } objects) — possibly empty.Authorizations
HTTP Basic Authentication using API Key and Secret Key. The credentials should be Base64 encoded in the format 'api_key:secret_key'. You can obtain your API Key and Secret Key from Feedspace → Automation → API (https://app.feedspace.io/automation/api).
Query Parameters
Free-text keyword search. Matches the keyword (case-insensitive substring) against the reviewer's name and the review text/comment, returning only reviews that contain it. Multi-word strings are matched literally (encode spaces as %20 or +). An unmatched keyword returns an empty result. Note: the bare search query parameter has no effect on this endpoint — use filter[search].
Restrict to specific review types. Values: audio, video, text, social. Repeat the parameter to combine multiple types (OR). Reviews are matched by the media they carry, not by their stored feed_type, so a returned item's feed_type can differ from the value you filtered on. For example, a social review that has a video attachment (such as an imported Instagram or YouTube video) is returned by video even though its feed_type is social_feed. In full: video and audio return native video/audio reviews plus any social review that carries a video or audio attachment; text returns native text reviews (feed_type: text_feed) plus text reviews you added manually (stored as feed_type: social_feed). social currently has no filtering effect — it returns the same unfiltered list as omitting the parameter entirely, verified against the live API. Filter client-side on feed_type: social_feed until this is fixed.
audio, video, text, social Return only favourited reviews. The value is read as a string, so only truthiness matters: true, 1 and false all return favourited reviews only, while 0 behaves as though the parameter were absent. No value returns non-favourited reviews only.
true Return only reviews that have a non-empty comment. The value is read as a string, so only truthiness matters: true, 1 and false all return reviews with comments only, while 0 behaves as though the parameter were absent. No value returns comment-less reviews only.
true Filter by AI-detected sentiment. Repeat the parameter to combine multiple values (OR).
positive, negative, neutral Filter by star rating. Send one or more values from 1 to 5; the filter matches the inclusive range between the lowest and highest values you send (for example, 2 and 4 matches 2, 3 and 4).
1 <= x <= 5Filter to reviews collected via specific review forms. Pass the numeric form ID (the integer id from GET /forms, not unique_form_id).
Filter by review label ID(s). Use the id field returned by GET /review-labels as the value.
Filter to reviews imported from specific source platforms. Accepts numeric platform IDs. A public listing endpoint for these IDs is on the roadmap.
Page number (default: 1). The response is paginated with 15 items per page.
Response
Reviews list fetched successfully.