Creates a new FeedbackClient instance.
Initialization options including baseUrl and appKey.
Retrieves public application settings, features, and styling configuration.
As of the September 2026 API sync, the public config endpoints answer private
applications (allowPublic = false) with HTTP 404 {"error": "App not found"} identically
to unknown app keys, rather than returning a 200 body with allowPublic: false.
Optionaloptions: RequestOptions | AbortSignal
Optional request options or an AbortSignal.
Application metadata and visual theme configuration.
UnexpectedStatusException If the app key is invalid, private/unpublished (HTTP 404), or the server returns an unexpected status code.
Retrieves published changelog entries and release notes sorted by publication date descending.
Optionaloptions: RequestOptions | AbortSignalChronological list of release notes.
Retrieves all Kanban roadmap columns configured for the application, sorted by position.
Optionaloptions: RequestOptions | AbortSignalList of active roadmap columns in display order.
Retrieves all discussion comments for a feature request.
ID of the feature request.
Optionaloptions: RequestOptions | AbortSignalList of discussion comments.
Fetches paginated feature requests with optional milestone filtering and keyword search.
By default, the caller's identity token is sent via the X-User-Token HTTP header
rather than as a URL query parameter to prevent credential leakage into server access logs,
reverse proxies, CDNs, and browser history (CWE-598).
Query parameters including userToken, limit, offset, versionId, and query.
Optionallimit?: numberMaximum number of items to return per page (default: 50).
Optionaloffset?: numberPage offset index (default: 0).
Optionalquery?: stringOptional search query string.
Optionalsignal?: AbortSignalOptional abort signal to cancel the request.
OptionaltimeoutMs?: numberOptional timeout in milliseconds for this request.
OptionaltokenTransport?: "query" | "header" | "both"Optional token transport override for this call ('header' | 'both' | 'query').
Defaults to the client configuration's tokenTransport (or 'header').
Unique user token to evaluate hasVoted and isOwnRequest states.
OptionalversionId?: stringOptional version ID filter.
Paginated list of feature request items.
Retrieves the public developer profile, authored applications, and recent comment history.
Target user or developer identifier.
Optionaloptions: RequestOptions | AbortSignalPublic profile details.
Retrieves all release version milestones for the application, sorted by position.
Optionaloptions: RequestOptions | AbortSignalArray of version milestones.
Posts a new discussion comment or reply on a feature request.
ID of the target feature request.
Comment message content, author info, and optional reply pointers.
User token of the commenter.
Optionaloptions: RequestOptions | AbortSignalThe created comment record.
Evaluates app configuration and fetches entries for the What's-New modal sheet.
Optionaloptions: PrepareChangelogOverlayOptions
Optional filtering settings including onlyIfUnseen.
Overlay payload or null if changelog feature is disabled, empty, or already seen.
Submits a user feedback draft, bug report, or feature inquiry.
Note: Platform allowlist enforcement against PublicAppConfig.allowedPlatforms
happens at the composer layer (such as FeedbackComposer) via
resolveAllowedPlatform. Direct client calls forward the draft's
platform or client defaultPlatform directly to the intake endpoint.
The feedback payload including title, description, and optional attachments.
OptionaluserToken: string
Optional persistent anonymous or authenticated user token.
Optionaloptions: RequestOptions | AbortSignalA promise resolving to the submission result metadata.
QuotaExceededException If the workspace has reached its monthly submission quota (402).
InactiveSubscriptionException If the workspace subscription is inactive or canceled (402).
PaymentRequiredException If the intake endpoint responds with HTTP 402 Payment Required.
UnexpectedStatusException If the server returns a non-2xx status code.
TurnstileRequiredException If the intake endpoint demands Cloudflare Turnstile verification and no valid turnstileToken was supplied.
InvalidResponseException If a network failure occurs or JSON parsing fails.
Proposes a new public feature request.
Feature request proposal details (title, description, requesterName).
Current user identifier token.
Optionaloptions: RequestOptions | AbortSignalSubmission confirmation and moderation pending status.
QuotaExceededException If the workspace has reached its monthly submission quota (402).
InactiveSubscriptionException If the workspace subscription is inactive or canceled (402).
PaymentRequiredException If the intake endpoint responds with HTTP 402 Payment Required.
TurnstileRequiredException If the intake endpoint demands Cloudflare Turnstile verification and no valid turnstileToken was supplied.
Subscribes an email address to future changelog and release note announcements.
Target email address to subscribe.
Current user token.
Optionaloptions: RequestOptions | AbortSignalSubscription status confirmation.
Toggles an upvote on a specified feature request for the given user token.
ID of the target feature request.
User token performing the vote.
Optionaloptions: RequestOptions | AbortSignalUpdated vote status and total vote count.
Unsubscribes an email address from changelog notification emails.
Email address to remove.
Optionaloptions: RequestOptions | AbortSignalConfirmation result.
Reports customer tier, subscription plan, or revenue metrics for a user token.
User attributes including subscription status, plan name, and MRR.
Update confirmation.
Uploads a file, image, or log attachment to CupThread storage.
Attachment file payload, filename, MIME type, and optional user token options.
The uploaded attachment descriptor ready to attach to FeedbackDraft.attachments.
Direct callers of uploadAttachment should supply options.userToken
(e.g. from useCupThreadUserToken) so uploads are properly attributed
to the user's session and authenticated via the X-User-Token header.
AuthenticationRequiredException If the request is rejected as unauthenticated (401).
RequestTimeoutException If upload times out.
UnexpectedStatusException If upload endpoint responds with an error.
UnreadableUploadResponseException If response body is malformed.
InvalidResponseException If network transport fails.
Primary API client for interacting with CupThread backend services.
Remarks
The
FeedbackClientmanages network transport, serialization, user authentication tokens, error mapping, and platform targeting across all CupThread API surfaces.Example