curl --request POST \
--url https://api.olostep.com/v1/feedbacks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"note": "The markdown drops the pricing comparison table; expected all 4 rows.",
"issues": [
"missing_content",
"broken_formatting"
],
"affected_endpoint": "POST /v1/scrapes",
"related_object_id": "scrape_abc1234567",
"url": "https://example.com/pricing"
}
'import requests
url = "https://api.olostep.com/v1/feedbacks"
payload = {
"note": "The markdown drops the pricing comparison table; expected all 4 rows.",
"issues": ["missing_content", "broken_formatting"],
"affected_endpoint": "POST /v1/scrapes",
"related_object_id": "scrape_abc1234567",
"url": "https://example.com/pricing"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
note: 'The markdown drops the pricing comparison table; expected all 4 rows.',
issues: ['missing_content', 'broken_formatting'],
affected_endpoint: 'POST /v1/scrapes',
related_object_id: 'scrape_abc1234567',
url: 'https://example.com/pricing'
})
};
fetch('https://api.olostep.com/v1/feedbacks', 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.olostep.com/v1/feedbacks",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'note' => 'The markdown drops the pricing comparison table; expected all 4 rows.',
'issues' => [
'missing_content',
'broken_formatting'
],
'affected_endpoint' => 'POST /v1/scrapes',
'related_object_id' => 'scrape_abc1234567',
'url' => 'https://example.com/pricing'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.olostep.com/v1/feedbacks"
payload := strings.NewReader("{\n \"note\": \"The markdown drops the pricing comparison table; expected all 4 rows.\",\n \"issues\": [\n \"missing_content\",\n \"broken_formatting\"\n ],\n \"affected_endpoint\": \"POST /v1/scrapes\",\n \"related_object_id\": \"scrape_abc1234567\",\n \"url\": \"https://example.com/pricing\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.olostep.com/v1/feedbacks")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"note\": \"The markdown drops the pricing comparison table; expected all 4 rows.\",\n \"issues\": [\n \"missing_content\",\n \"broken_formatting\"\n ],\n \"affected_endpoint\": \"POST /v1/scrapes\",\n \"related_object_id\": \"scrape_abc1234567\",\n \"url\": \"https://example.com/pricing\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.olostep.com/v1/feedbacks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"note\": \"The markdown drops the pricing comparison table; expected all 4 rows.\",\n \"issues\": [\n \"missing_content\",\n \"broken_formatting\"\n ],\n \"affected_endpoint\": \"POST /v1/scrapes\",\n \"related_object_id\": \"scrape_abc1234567\",\n \"url\": \"https://example.com/pricing\"\n}"
response = http.request(request)
puts response.read_body{
"object": "feedback",
"id": "feedback_019e70f9-214a-74fc-a1ae-26fd3318be3e",
"category": "<string>",
"issues": [
"<string>"
],
"note": "<string>",
"created_at": "2026-10-23T00:00:00.000Z",
"affected_endpoint": "<string>",
"related_object_id": "<string>",
"url": "<string>"
}Feedback indienen
Vertel ons wanneer de API iets fout heeft gedaan. Kost geen credits.
curl --request POST \
--url https://api.olostep.com/v1/feedbacks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"note": "The markdown drops the pricing comparison table; expected all 4 rows.",
"issues": [
"missing_content",
"broken_formatting"
],
"affected_endpoint": "POST /v1/scrapes",
"related_object_id": "scrape_abc1234567",
"url": "https://example.com/pricing"
}
'import requests
url = "https://api.olostep.com/v1/feedbacks"
payload = {
"note": "The markdown drops the pricing comparison table; expected all 4 rows.",
"issues": ["missing_content", "broken_formatting"],
"affected_endpoint": "POST /v1/scrapes",
"related_object_id": "scrape_abc1234567",
"url": "https://example.com/pricing"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
note: 'The markdown drops the pricing comparison table; expected all 4 rows.',
issues: ['missing_content', 'broken_formatting'],
affected_endpoint: 'POST /v1/scrapes',
related_object_id: 'scrape_abc1234567',
url: 'https://example.com/pricing'
})
};
fetch('https://api.olostep.com/v1/feedbacks', 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.olostep.com/v1/feedbacks",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'note' => 'The markdown drops the pricing comparison table; expected all 4 rows.',
'issues' => [
'missing_content',
'broken_formatting'
],
'affected_endpoint' => 'POST /v1/scrapes',
'related_object_id' => 'scrape_abc1234567',
'url' => 'https://example.com/pricing'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.olostep.com/v1/feedbacks"
payload := strings.NewReader("{\n \"note\": \"The markdown drops the pricing comparison table; expected all 4 rows.\",\n \"issues\": [\n \"missing_content\",\n \"broken_formatting\"\n ],\n \"affected_endpoint\": \"POST /v1/scrapes\",\n \"related_object_id\": \"scrape_abc1234567\",\n \"url\": \"https://example.com/pricing\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.olostep.com/v1/feedbacks")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"note\": \"The markdown drops the pricing comparison table; expected all 4 rows.\",\n \"issues\": [\n \"missing_content\",\n \"broken_formatting\"\n ],\n \"affected_endpoint\": \"POST /v1/scrapes\",\n \"related_object_id\": \"scrape_abc1234567\",\n \"url\": \"https://example.com/pricing\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.olostep.com/v1/feedbacks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"note\": \"The markdown drops the pricing comparison table; expected all 4 rows.\",\n \"issues\": [\n \"missing_content\",\n \"broken_formatting\"\n ],\n \"affected_endpoint\": \"POST /v1/scrapes\",\n \"related_object_id\": \"scrape_abc1234567\",\n \"url\": \"https://example.com/pricing\"\n}"
response = http.request(request)
puts response.read_body{
"object": "feedback",
"id": "feedback_019e70f9-214a-74fc-a1ae-26fd3318be3e",
"category": "<string>",
"issues": [
"<string>"
],
"note": "<string>",
"created_at": "2026-10-23T00:00:00.000Z",
"affected_endpoint": "<string>",
"related_object_id": "<string>",
"url": "<string>"
}id van het object waar het vandaan kwam, zodat we het kunnen herleiden naar het exacte verzoek.
Feedback indienen is gratis en het werkt zelfs wanneer de credits van je team op zijn.
Wat te verzenden
| Veld | Vereist | Opmerkingen |
|---|---|---|
category | ja | Een van output_quality, reliability, performance, documentation, api_usability, feature_gap, other |
note | ja | Wat er misging en wat je in plaats daarvan verwachtte, tot 4.000 tekens |
issues | nee | Tot 20 snake_case symptoomcodes, zoals missing_content of timeout. De gedocumenteerde codes staan vermeld in het schema; elke andere code van dezelfde vorm wordt geaccepteerd |
affected_endpoint | nee | METHOD /path, bijvoorbeeld POST /v1/scrapes |
related_object_id | nee | De id van de scrape, batch, crawl, antwoord, of ander object waar de feedback over gaat, of de error_… id wanneer de oproep is mislukt |
url | nee | De pagina waar de feedback over gaat, zoals de URL die werd gescraped |
Voorbeeld
curl -X POST https://api.olostep.com/v1/feedbacks \
-H "Authorization: Bearer <your_token>" \
-H "Content-Type: application/json" \
-d '{
"category": "output_quality",
"issues": ["missing_content", "broken_formatting"],
"note": "De markdown laat de prijstabelvergelijking weg; verwachtte alle 4 rijen.",
"affected_endpoint": "POST /v1/scrapes",
"related_object_id": "scrape_abc1234567",
"url": "https://example.com/pricing"
}'
feedback object met zijn id en created_at. Er is nog geen lijst- of ophaal-eindpunt; feedback wordt aan onze kant gelezen.Autorisaties
Bearer authenticatie header in de vorm Bearer , waar jouw auth token is.
Body
De algemene reden voor de feedback.
output_quality, reliability, performance, documentation, api_usability, feature_gap, other Wat er misging en wat je in plaats daarvan verwachtte.
1 - 4000"The markdown drops the pricing comparison table; expected all 4 rows."
Specifieke symptomen, als lowercase snake_case codes. Gedocumenteerde codes: missing_content, incorrect_content, incomplete_content, broken_formatting, irrelevant_results, duplicate_results, stale_content, request_failed, timeout, slow_response, inconsistent_result, docs_mismatch, broken_example, confusing_schema, confusing_error, unsupported_website, unsupported_format. Elke andere code van dezelfde vorm wordt geaccepteerd.
20^[a-z0-9](?:[a-z0-9_]{0,78}[a-z0-9])?$["missing_content", "broken_formatting"]
De endpoint waar de feedback over gaat, als METHOD /path met het canonieke meervoudige pad.
1 - 200"POST /v1/scrapes"
De id van het object dat de API retourneerde waar de feedback over gaat: een scrape_…, batch_… of vergelijkbare resource id, of de id van het foutobject (error_…) wanneer de oproep mislukte.
1 - 128"scrape_abc1234567"
De pagina waar de feedback over gaat, zoals de URL die werd gescraped.
2048"https://example.com/pricing"
Respons
De opgeslagen feedback.
feedback "feedback_019e70f9-214a-74fc-a1ae-26fd3318be3e"
"2026-10-23T00:00:00.000Z"
Was deze pagina nuttig?