Skip to main content
POST
/
feedback
Submit feedback for a v2 job
curl --request POST \
  --url https://api.firecrawl.dev/v2/feedback \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "jobId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "valuableSources": [
    {
      "url": "<string>",
      "reason": "<string>"
    }
  ],
  "missingContent": [
    {
      "topic": "<string>",
      "description": "<string>"
    }
  ],
  "querySuggestions": "<string>",
  "origin": "api",
  "integration": "<string>",
  "issues": [
    "<string>"
  ],
  "tags": [
    "<string>"
  ],
  "note": "<string>",
  "url": "<string>",
  "pageNumbers": [
    2
  ],
  "metadata": {}
}
'
{
  "success": true,
  "feedbackId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "creditsRefunded": 123,
  "alreadySubmitted": true,
  "dailyCapReached": true,
  "creditsRefundedToday": 123,
  "dailyRefundCap": 123,
  "warning": "<string>"
}
Use endpoint feedback to tell Firecrawl whether a completed job result was useful, partial, or bad. This is for endpoint-level output quality on jobs such as scrape, parse, map, and search. The generic feedback schema can carry search-style fields too, but Search Feedback is the preferred search-specific entry point because it is scoped to a search job ID and highlights valuable sources, missing content, query suggestions, and refund behavior.

Example Request

curl -X POST "https://api.firecrawl.dev/v2/feedback" \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "endpoint": "scrape",
    "jobId": "550e8400-e29b-41d4-a716-446655440000",
    "rating": "partial",
    "issues": ["missing_markdown"],
    "note": "The pricing table was missing from the markdown output.",
    "url": "https://example.com/pricing"
  }'

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json

Submit feedback for a v2 job. Include at least one substantive signal such as issues, note, valuableSources, missingContent, querySuggestions, url, or pageNumbers.

rating
enum<string>
required
Available options:
good,
partial,
bad
endpoint
enum<string>
required
Available options:
search,
scrape,
parse,
map
jobId
string<uuid>
required
valuableSources
object[]
Maximum array length: 50
missingContent
object[]
Maximum array length: 20
querySuggestions
string
Maximum string length: 2000
origin
string
default:api
integration
string | null
issues
string[]
Maximum array length: 20
Maximum string length: 80
Pattern: ^[a-z0-9][a-z0-9_-]*$
tags
string[]
Maximum array length: 20
Maximum string length: 80
Pattern: ^[a-z0-9][a-z0-9_-]*$
note
string
Maximum string length: 4000
url
string<uri>
pageNumbers
integer[]
Maximum array length: 100
Required range: x >= 1
metadata
object

Small endpoint-specific metadata object. Must be 8KB or smaller; do not include full endpoint results.

Response

Feedback recorded

success
boolean
required
Example:

true

feedbackId
string<uuid>
required
creditsRefunded
number
required
alreadySubmitted
boolean
dailyCapReached
boolean
creditsRefundedToday
number
dailyRefundCap
number
warning
string