Curated for You Feedback API
The Feedback API from Curated for You — 2 operation(s) for feedback.
The Feedback API from Curated for You — 2 operation(s) for feedback.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/curated-for-you-feedback-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Curated for You Feedback API
description: '# API Usage Guide
## Overview
The Curated for You API provides endpoints to manage and retrieve
information authentication, curations, companies, and attributes.'
version: 2.0.1
x-logo:
url: https://app.curatedforyou.io/cfy_logo.png
tags:
- name: Feedback
paths:
/api/v2/feedback/:
post:
tags:
- Feedback
summary: Ingest AI feedback card (M2M only)
description: 'Ingest a new AI feedback card.
**Auth:** Clerk M2M token only. Regular user JWTs receive 403.
Auto-populates `curation_group_number`, `company_id`, and `product_ids`
from the curation record and blocks payload.
**Response 201:** `{id, curation_id, curation_group_number, created_at}`'
operationId: ingest_feedback_api_v2_feedback__post
parameters:
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/FeedbackIngestRequest'
responses:
'201':
description: Successful Response
content:
application/json:
schema:
title: Response Ingest Feedback Api V2 Feedback Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
x-codeSamples:
- lang: Shell
source: "curl --location\\\n --request POST 'https://api.curatedforyou.io/api/v2/feedback/'\\\n--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE2NzMwNDkxNzgsImV4cCI6MTcwNDU4NTE3OCwiYXVkIjoid3d3LmV4YW1w'\\\n--header 'Content-Type: application/json'\\\n"
label: Curl
- lang: Python
source: "import requests\nimport json\n\nurl = \"https://api.curatedforyou.io/api/v2/feedback/\"\nheaders ={\n \"Authorization\": \"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE2NzMwNDkxNzgsImV4cCI6MTcwNDU4NTE3OCwiYXVkIjoid3d3LmV4YW1w\",\n \"Content-Type\": \"application/json\"\n}\nresponse = requests.request(\"POST\", url, headers=headers)\nprint(response.json())"
label: Python3
get:
tags:
- Feedback
summary: List pending AI feedback cards for a curation
description: 'Return pending AI feedback cards for the given curation.
**Auth:** Regular user JWT with `org:curations:read` permission.
`action_context` is never included in the response.'
operationId: get_feedback_api_v2_feedback__get
parameters:
- name: curation_id
in: query
required: true
schema:
type: integer
description: Curation ID to fetch feedback for
title: Curation Id
description: Curation ID to fetch feedback for
- name: page
in: query
required: false
schema:
type: integer
minimum: 1
description: Page number
default: 1
title: Page
description: Page number
- name: limit
in: query
required: false
schema:
type: integer
maximum: 100
minimum: 1
description: Items per page (max 100)
default: 20
title: Limit
description: Items per page (max 100)
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
responses:
'200':
description: Successful Response
content:
application/json:
schema:
title: Response Get Feedback Api V2 Feedback Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
x-codeSamples:
- lang: Shell
source: "curl --location\\\n --request GET 'https://api.curatedforyou.io/api/v2/feedback/'\\\n--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE2NzMwNDkxNzgsImV4cCI6MTcwNDU4NTE3OCwiYXVkIjoid3d3LmV4YW1w'\\\n--header 'Content-Type: application/json'\\\n"
label: Curl
- lang: Python
source: "import requests\n\nurl = \"https://api.curatedforyou.io/api/v2/feedback/\"\nparams = {'curation_id': Query(PydanticUndefined), 'page': Query(1), 'limit': Query(20)}\nheaders ={\n \"Authorization\": \"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE2NzMwNDkxNzgsImV4cCI6MTcwNDU4NTE3OCwiYXVkIjoid3d3LmV4YW1w\",\n \"Content-Type\": \"application/json\"\n}\nresponse = requests.request(\"GET\", url, headers=headers, params=params)\nprint(response.json())"
label: Python3
/api/v2/feedback/{feedback_id}/execute-action:
post:
tags:
- Feedback
summary: Execute an action on an AI feedback card
description: 'Execute an action on an AI feedback card.
**Auth:** Regular user JWT with `org:curations:manage` permission.
| `action_id` | Behaviour |
|------------------------|----------------------------------------------------|
| `dismiss` | Sets `status=resolved` and `resolved_at` |
| `apply_rules` | Patches linked `CurationBrief` and resolves card |
| `apply_product_swap` | Swaps product at expected position and resolves |'
operationId: execute_action_api_v2_feedback__feedback_id__execute_action_post
parameters:
- name: feedback_id
in: path
required: true
schema:
type: integer
title: Feedback Id
- name: authorization
in: header
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Authorization
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExecuteActionRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
title: Response Execute Action Api V2 Feedback Feedback Id Execute Action Post
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
x-codeSamples:
- lang: Shell
source: "curl --location\\\n --request POST 'https://api.curatedforyou.io/api/v2/feedback/{feedback_id}/execute-action'\\\n--header 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE2NzMwNDkxNzgsImV4cCI6MTcwNDU4NTE3OCwiYXVkIjoid3d3LmV4YW1w'\\\n--header 'Content-Type: application/json'\\\n"
label: Curl
- lang: Python
source: "import requests\nimport json\n\nurl = \"https://api.curatedforyou.io/api/v2/feedback/{feedback_id}/execute-action\"\nheaders ={\n \"Authorization\": \"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJPbmxpbmUgSldUIEJ1aWxkZXIiLCJpYXQiOjE2NzMwNDkxNzgsImV4cCI6MTcwNDU4NTE3OCwiYXVkIjoid3d3LmV4YW1w\",\n \"Content-Type\": \"application/json\"\n}\nresponse = requests.request(\"POST\", url, headers=headers)\nprint(response.json())"
label: Python3
components:
schemas:
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
type: object
required:
- loc
- msg
- type
title: ValidationError
FeedbackIngestRequest:
properties:
curation_id:
type: integer
title: Curation Id
blocks:
additionalProperties: true
type: object
title: Blocks
action_context:
additionalProperties: true
type: object
title: Action Context
type: object
required:
- curation_id
- blocks
- action_context
title: FeedbackIngestRequest
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
ExecuteActionRequest:
properties:
action_id:
type: string
title: Action Id
type: object
required:
- action_id
title: ExecuteActionRequest