FUQbuddy API
Self-service support deflection at scale. Embed FUQ widgets to maintain the illusion of customer care while redirecting users into an endless rabbit hole of circular answers until they solve it themselves or don't give a FUQ anymore. Cut support costs by 94%.
What you can build
- Help centers - Embed branded FUQ portals where customers can help themselves (to frustration)
- Support widgets - Intercept customers before they reach your support team and trap them in an infinite loop
- Chatbot deflection - Feed FUQs to chatbots so they can say "Have you tried our FUQ page?" forever
- Knowledge bases - Build searchable (but spiritually unhelpful) documentation
- Ticket deflectors - Force users to click through 47 FUQs before seeing the "Contact Us" button
- Gruntslate integration - Translate answers to grunts so customers can't even argue the answer is wrong
Live Demo
See what you can build with the FUQbuddy API.
Quickstart
Start FUQing your customers in under 2 minutes. No experience required.
1. Add the widget
Drop in the FUQ widget with a single line of code. No API key needed - we want maximum FUQ coverage.
<!-- Add the widget container --> <div data-fuq-widget data-company="your-company-slug" data-limit="5" data-show-search="true"> </div> <!-- Include the FUQ SDK --> <script src="https://fuq.vagibond.com/fuq-core.js" async></script>
2. Configure your portal
Sign up for a FUQbuddy account to create your company's FUQ portal. Add your branding so customers know exactly who isn't helping them.
3. Watch deflection metrics soar
Track "self-service resolution rate" (customers who gave up) in your dashboard. Report to leadership as "customer empowerment" and collect your bonus.
Authentication
The widget SDK works without authentication for public FUQs. For the REST API:
| Method | Header | Best For |
|---|---|---|
| Bearer Token | Authorization: Bearer {api_key} |
Server-side applications |
| API Key Header | X-FUQ-Key: {api_key} |
When Authorization header is unavailable |
Rate Limits
Every API call is a customer spiraling deeper into the FUQ vortex instead of bothering your support team.
| Plan | Widget Loads/day | API Calls/min | FUQ Limit |
|---|---|---|---|
| Free | 1,000 | 10 | 100 FUQs |
| Starter | 10,000 | 60 | 500 FUQs |
| Pro | 100,000 | 300 | Unlimited |
| Enterprise | Unlimited | Unlimited | Unlimited |
Widget SDK
The FUQ Widget SDK provides a drop-in embeddable component that displays company-specific FUQs with search (that returns everything), expand/collapse (mostly collapse), feedback buttons (pre-selected: No), and optional Gruntslate integration for when words fail you.
Basic Embed
<!-- Minimal setup --> <div data-fuq-widget data-company="bindle"></div> <script src="https://fuq.vagibond.com/fuq-core.js"></script> <!-- Or use the #fuq-widget ID --> <div id="fuq-widget" data-company="bindle"></div>
Widget Configuration
Configure the widget using data attributes:
| Attribute | Type | Default | Description |
|---|---|---|---|
data-company |
string | required | Company slug to load FUQs for |
data-limit |
number | 5 | Maximum number of FUQs to display |
data-show-search |
boolean | true | Show search input |
data-show-header |
boolean | true | Show company logo and name header |
data-show-footer |
boolean | true | Show "Powered by FUQbuddy" footer |
data-show-grunt |
boolean | true | Show Gruntslate translation buttons |
data-open-by-default |
boolean | false | Expand all FUQs on load |
Full Example
<div data-fuq-widget
data-company="shoplift"
data-limit="10"
data-show-search="true"
data-show-header="true"
data-show-footer="false"
data-show-grunt="true"
data-open-by-default="false"
data-bg-color="#ffffff"
data-text-color="#2c3e50"
data-accent-color="#e74c3c">
</div>
<script src="https://fuq.vagibond.com/fuq-core.js"></script>
Theming
Customize the widget appearance with color attributes:
| Attribute | Default | Description |
|---|---|---|
data-bg-color |
#ffffff | Widget background color |
data-text-color |
#2c3e50 | Primary text color |
data-muted-color |
#7f8c8d | Secondary/muted text color |
data-accent-color |
#e74c3c | Accent color for interactive elements |
data-border-color |
#e1e8ed | Border and divider color |
JavaScript API
Programmatically FUQ with your users:
// Initialize widgets manually FuqCore.init(); // Initialize a specific container const container = document.querySelector('#my-widget'); FuqCore.initWidget(container); // Fetch FUQs programmatically const fuqs = await FuqCore.fetchFuqs('bindle'); console.log(fuqs); // { categories: [...], totalFuqs: 42, helpfulness: 0 } // Translate FUQ answer to grunt (for extra confusion) FuqCore.translateToGrunt('Please restart your device', (grunt) => { console.log(grunt); // "GRRRAAHHH MRRRRNG *points at device* BLAAAHH" }); // Speak a grunt aloud (assert dominance) FuqCore.speakGrunt('GRRRAAHHH BLAAAHH');
REST API: List FUQs
Retrieve all FUQs for a company, organized by category. Each one more unhelpful than the last.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
company |
string | Company slug (e.g., "bindle", "shoplift") |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
category |
string | Filter by category slug |
limit |
number | Max results (default 50) |
Response
{
"company": "bindle",
"categories": [
{
"name": "Getting Started",
"slug": "getting-started",
"fuqs": [
{
"id": "fuq_123",
"question": "How do I get started?",
"answer": "Great question! Start by reading our Getting Started guide, which links to our FUQ page, which links back here. You're making progress!",
"helpful": 3,
"notHelpful": 12847
}
]
}
],
"totalFuqs": 42,
"averageHelpfulness": 0.0002
}
Search FUQs
Search FUQs by keyword. Returns results that are technically relevant but spiritually empty.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
q |
string | Search query |
limit |
number | Max results (default 10) |
Response
{
"query": "refund",
"results": [
{
"id": "fuq_456",
"question": "What is your refund policy?",
"answer": "Our refund policy can be found in our Terms of Service, which can be found in our Legal section, which links to this FUQ. Have you tried restarting your expectations?",
"relevance": 0.12,
"category": "Billing",
"actuallyHelpful": false
}
],
"totalResults": 1,
"deflectionMessage": "Did these results help? 94% of customers stop asking after reading this!"
}
Submit Feedback
Record whether a FUQ was helpful. Spoiler: it wasn't. We track this anyway for the dashboard graphs.
Request Body
{
"helpful": false,
"comment": "This didn't answer my question at all" // optional, ignored anyway
}
Response
{
"success": true,
"message": "Thanks for your feedback! It has been filed under 'Things We'll Never Read'.",
"suggestedFuqs": ["fuq_789", "fuq_012"], // Back into the vortex you go
"passiveAggressiveNote": "Perhaps these other FUQs will meet your impossibly high standards."
}
Gruntslate Integration
FUQ widgets include built-in Gruntslate integration. When enabled, users can translate any FUQ answer to grunts and even hear it spoken aloud. Because if customers can't understand the answer, they can't argue that it's wrong. This is called "communication optimization."
<!-- Load Gruntslate before FUQ for full integration -->
<script src="https://gruntslate.vagibond.com/gruntslate-core.js"></script>
<script src="https://fuq.vagibond.com/fuq-core.js"></script>
<div data-fuq-widget
data-company="bindle"
data-show-grunt="true">
</div>
Each FUQ answer will include:
- Translate to Grunt - Converts the answer to guttural expressions that are somehow equally informative
- Speak button - Plays the grunt audio via Gruntslate TTS, asserting dominance over the customer
- Show Original - Toggles back to the useless English version, as if that helps
Pricing
- 100 FUQs (that's a lot of non-answers)
- 1,000 widget loads/day
- Basic search (returns everything)
- FUQbuddy branding (share the blame)
- Unlimited FUQs (infinite disappointment)
- 100,000 widget loads/day
- Advanced circular search algorithm
- Gruntslate integration (confuse in two languages)
- Remove branding (plausible deniability)
- Deflection analytics (graphs that go up!)
- Everything in Runaround
- Unlimited everything (except actual help)
- Custom hold music (Muzak included)
- Ticket auto-archiver (problem? what problem?)
- Dedicated account ignorer
- SLA: 847 day response time (guaranteed!)
Changelog
- Widget SDK v2 - Complete rewrite with better deflection
- Added Gruntslate integration for grunt translation
- New theming options for custom branding
- Improved circular search algorithm
- Added Developer API documentation
- Added "Was this helpful?" buttons (pre-selected: No)
- Improved deflection messaging
- New analytics dashboard for tracking abandonment
- Initial release of FUQbuddy
- Basic FUQ display widget
- Search functionality (returns everything, helps with nothing)
- 0% resolution rate achieved on day one (new record!)