xiaohongshu
xiaohongshu
fever-sync-specialist
Sync and integrate Fever Partners API for plans, reviews, attendees, and venues. Use when implementing Fever data sync, debugging API issues, or building review/analytics features.
Full skill instructions
Sync and manage data from Fever Partners API including plans, reviews, attendees, and venues.
| Service | URL | Purpose |
|---|---|---|
| B2C API | https://services.feverup.com | Consumer-facing API |
| B2B API | https://services.feverup.com/b2b | Legacy B2B API |
| B2B Partners | https://services.feverup.com/b2b-partners | Partners API (main) |
| B2B IAM | https://services.feverup.com/b2b-iam | Identity/Auth |
| B2C Site | https://services.feverup.com/b2c_site | Site config |
All B2B APIs require authentication:
Authorization: B2bToken {token}
X-Client-Version: w.12.0.1
Accept: application/json
Token is obtained after login to partners.feverup.com and stored in browser.
Endpoint:
GET /b2b-partners/1.0/partners/{partner_id}/reviews
Query Parameters:
| Parameter | Type | Description |
|---|---|---|
items_per_page | int | Reviews per page (default: 10) |
page | int | Page number (1-indexed) |
city_id | string | Filter by city ID |
place_id | int | Filter by venue ID |
question_type | string | Review type: general-review |
order_by | string | Sort field: answered_at |
order_by_direction | string | desc or asc |
Response:
{
"data": {
"questions_rating": [
{
"average": "4.6",
"id": "uuid",
"number_of_ratings": 2044,
"title": "How would you rate the experience overall?",
"type": "general-review"
}
],
"reviews": [
{
"answers": [
{
"flagged": false,
"hidden": false,
"id": "uuid",
"question_id": "uuid",
"question_title": "How would you rate the experience overall?",
"question_type": "general-review",
"rating": 5,
"reasoning": "Optional text review"
}
],
"city_id": "1004611",
"city_name": "Dortmund",
"city_timezone": "Europe/Berlin",
"place_address": "Schützenstraße 35, Dortmund",
"place_id": 23810,
"plan_id": 416711,
"plan_name": "Candlelight: Tribut an Coldplay",
"session_name": "Zone D",
"session_starts_at": "2025-11-28T19:30:00Z",
"ticket_id": 100585215,
"user_first_name": "Alexandra",
"user_id": 82692035,
"user_image_url": "https://...",
"user_last_name": "Dröge"
}
]
}
}
Endpoint:
GET /b2b-partners/2.0/partners/{partner_id}/plans
Response:
{
"data": {
"plans": [
{
"id": 501864,
"name": "Ballet of Lights: Cinderella",
"status": "on_sale",
"kind": "standard",
"partner_id": 8486,
"timezone": "Europe/Berlin",
"image_url": "https://...",
"is_published": true,
"is_sold_out": false,
"is_hidden_feed": false,
"is_asset_based": false,
"has_multiple_places": false,
"first_session_date": "2026-02-28T14:30:00Z",
"last_session_date": "2026-04-09T18:30:00Z",
"next_session_date": "2026-02-28T14:30:00Z",
"next_session_date_with_attendees": "2026-02-28T14:30:00Z",
"last_expired_session_date": null,
"last_expired_session_date_with_attendees": null,
"first_place_address": "Bautzner Landstraße 7, Dresden",
"first_place_city_name": "Dresden",
"created_at": "2025-11-11T17:27:57.705000Z",
"places": [
{
"id": 25788,
"name": "Parkhotel Dresden",
"address": "Bautzner Landstraße 7, Dresden",
"zip_code": "01324",
"city": {
"id": 1004916,
"name": "Dresden",
"currency": "EUR",
"timezone": "Europe/Berlin"
}
}
]
}
]
}
}
Endpoint:
GET /b2b-partners/1.0/partners/{partner_id}/survey-replies
Query Parameters:
| Parameter | Type | Description |
|---|---|---|
only_last_reply | bool | Return only latest reply |
Response:
{
"data": [
{
"id": "uuid",
"external_id": "0896d458bc004d12",
"partner_id": 8486,
"user_id": 42001,
"reply_at": "2024-12-30T19:03:15.319869Z",
"next_scheduled_reply_at": "2025-03-30T19:03:15.319869Z"
}
]
}
Endpoint:
GET /b2b-iam/1.0/users/me
Response:
{
"data": {
"id": 52740,
"email": "[email protected]",
"name": "User Name",
"username": "[email protected]",
"language": "de_DE",
"status": "active",
"type": "regular",
"interface": "staff",
"source": "feverzone",
"business": null,
"kiosk": null
}
}
Endpoint:
GET /b2b-iam/1.0/users/{user_id}/organizations/{org_id}/permissions
Response:
{
"data": {
"permissions": [
"can_search_cities",
"can_search_plans",
"can_view_attendees",
"can_view_partner_detail",
"can_view_reviews",
"can_view_survey_replies",
"can_view_validation"
]
}
}
| Endpoint | Description |
|---|---|
GET /1.0/partners/{id}/cities | List cities |
GET /1.0/partners/{id}/places | List venues |
GET /1.0/partners/{id}/plans-with-analytics | Plans with analytics data |
GET /1.0/partners/{id}/booking-agents | Booking agents |
GET /1.0/partners/{id}/resellers | Resellers |
GET /1.0/partners/{id}/users | Partner users |
GET /1.0/partners/{id}/kiosks | Kiosks |
GET /1.0/partners/{id}/onsite-setups | On-site setups |
GET /1.0/partners/{id}/cash-registers | Cash registers |
GET /1.0/partners/{id}/template-coupons | Coupon templates |
GET https://feverup.com/api/4.4/plans/{plan_id}/
Response includes:
{
"id": 266311,
"name": "The Jury Experience",
"rating": {
"is_hidden": false,
"num_ratings": 254,
"average": 4.35
},
"should_display_featured_review_answers": true
}
Note: Individual reviews are NOT available via public API. They are server-side rendered into the HTML at feverup.com/m/{plan_id} for SEO purposes.
Located in .claude/skills/fever-sync-specialist/scripts/:
./.claude/skills/fever-sync-specialist/scripts/test-fever-reviews.sh [city_id] [place_id] [page] [items_per_page]
# Requires:
export FEVER_PARTNER_ID="8486"
export FEVER_B2B_TOKEN="your-token"
# Get token from browser DevTools after logging into partners.feverup.com
./.claude/skills/fever-sync-specialist/scripts/test-fever-b2c-reviews.sh
services.feverup.comAuthorization header value (without "B2bToken " prefix)| Fever Field | Ballee Field | Notes |
|---|---|---|
plan_id | fever_plan_id | Link to event |
place_id | fever_venue_id | Link to venue |
rating | rating | 1-5 scale |
reasoning | review_text | Optional text |
session_starts_at | session_date | Session datetime |
user_first_name | reviewer_name | Partial name |
| Fever Field | Ballee Field |
|---|---|
id | fever_plan_id |
name | name |
status | status |
first_session_date | start_date |
last_session_date | end_date |
places[].id | fever_venue_id |
places[].city.id | fever_city_id |
| File | Purpose |
|---|---|
apps/web/app/admin/sync/_lib/server/fever-api.client.ts | API client with auth, pagination |
apps/web/app/admin/sync/_lib/server/fever-reviews-sync.service.ts | Main sync service |
apps/web/app/admin/sync/_lib/server/fever-venue-mapping.service.ts | Venue mapping management |
apps/web/app/admin/sync/_lib/server/fever-reviews-sync-actions.ts | Server actions |
apps/web/app/api/cron/fever-sync/route.ts | Hourly cron endpoint |
| Table | Purpose |
|---|---|
fever_sync_configs | API credentials, partner IDs, last sync status |
fever_reviews | Individual reviews with ticket_id dedup |
fever_venue_mappings | Fever place_id → Ballee venue_id mapping |
events.fever_plan_id | Link events to Fever plans |
events.fever_average_rating | Cached aggregate rating |
// Full sync - fetches all reviews
await syncFeverReviewsAction({ incremental: false });
// Incremental sync - only new reviews since last_sync_at
await syncFeverReviewsAction({ incremental: true });
vercel.json:
{
"crons": [{
"path": "/api/cron/fever-sync",
"schedule": "0 * * * *"
}]
}
?full=true query parameterReviews are linked to events via exact matching (no fuzzy matching):
UPDATE fever_reviews fr
SET event_id = e.id
FROM events e
WHERE e.fever_plan_id = fr.fever_plan_id
AND DATE(e.event_date) = DATE(fr.session_starts_at AT TIME ZONE e.timezone);
can_view_reviews permissionxiaohongshu
technical spec
product ux expert
database patterns
Conduct multi-agent task orchestration and workflow coordination.
Initialize project with Conductor artifacts (product definition,
Expert in web animations, transitions, and motion design using Framer Motion and CSS
Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...
PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.
Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...
Display project status, active tracks, and next actions
Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience