Powerbottom API
Enterprise-Grade Attribution Infrastructure. Manage your powered-by labels with the same rigor you apply to production systems. 99.99% uptime SLA. Real-time analytics. Edge caching. Version control. Because attribution deserves better than an HTML comment.
What you can build
- Branded attribution labels - Drop in a single script tag for professional powered-by labels
- Analytics dashboards - Track impressions, clicks, and conversions from your attribution
- A/B testing platforms - Test different label copy, colors, and positions to maximize brand exposure
- White-label solutions - Pay to remove "Powered by Powerbottom" from Powerbottom (yes, we see the irony)
- Multi-tenant attribution - Manage labels for all your brands from a single API
- Attribution compliance - Ensure contractual attribution requirements are always met
Live Demo
See what you can build with the Powerbottom API. Below is Gary's demo showing CheatGPT's label configuration.
Quickstart
Add enterprise-grade attribution to your site in under 5 minutes. Your footer deserves this.
1. Add the widget
Drop in the Powerbottom widget with a single script. No API key required for basic labels.
<!-- Add the label container --> <div id="powerbottom-label" data-company="YourCompany" data-link="https://yourcompany.com" data-show-meta="true" data-position="bottom-right" data-color="#3498db" data-size="small"> </div> <!-- Include the Powerbottom SDK --> <script src="https://powerbottom.vagibond.com/powerbottom-core.js" async></script>
2. Configure your label
Visit the Powerbottom Dashboard to customize your label, track analytics, and run A/B tests.
3. Monitor performance
Use the REST API to track impressions, clicks, and attribution ROI. Because someone is actually looking at your footer.
Authentication
The widget SDK works without authentication for basic labels. For analytics and advanced features:
| Prefix | Type | Permissions |
|---|---|---|
pb_live_ |
Production | Full access: create, update, delete labels, analytics |
pb_test_ |
Sandbox | Test labels with simulated impressions (no real traffic) |
curl https://api.powerbottom.vagibond.com/v1/labels \ -H "Authorization: Bearer pb_live_your_api_key"
Rate Limits
We rate limit API requests to ensure 99.99% uptime for everyone. (But honestly, how fast are you updating footer text?)
| Plan | Widget Loads/day | API Requests/min | Label Updates/day |
|---|---|---|---|
| Free | 10,000 | 60 | 10 |
| Startup | 100,000 | 300 | 100 |
| Growth | 1,000,000 | 1,000 | 1,000 |
| Enterprise | Unlimited | Unlimited | Unlimited |
Widget SDK
The Powerbottom Widget SDK provides a drop-in component that displays professional attribution labels with optional meta-labels (Powered by label is powered by Powerbottom).
Basic Embed
<!-- Minimal setup --> <div id="powerbottom-label" data-company="YourCompany"></div> <script src="https://powerbottom.vagibond.com/powerbottom-core.js"></script> <!-- Or use the data attribute selector --> <div data-powerbottom-widget data-company="YourCompany"></div>
Widget Configuration
Configure the widget using data attributes:
| Attribute | Type | Default | Description |
|---|---|---|---|
data-company |
string | null | Company name to display (required) |
data-link |
string | # | URL to link to |
data-show-meta |
boolean | true | Show "Powered by Powerbottom" meta-label |
data-position |
string | null | Position: bottom-right, bottom-left, bottom-center |
data-color |
string | #666666 | Text color (hex or CSS color name) |
data-size |
string | small | Size: tiny, small, medium |
data-style |
string | default | Reserved for future styles |
Positioning
Position labels anywhere on your page:
<!-- Fixed to bottom-right corner --> <div id="powerbottom-label" data-company="YourCompany" data-position="bottom-right"></div> <!-- Inline in footer --> <footer> <div id="powerbottom-label" data-company="YourCompany" data-show-meta="false"></div> </footer>
Theming
Match your brand colors:
<div id="powerbottom-label"
data-company="YourCompany"
data-color="#3498db"
data-size="medium"></div>
REST API: Get Labels
Retrieve all your labels. Filter by domain, active status, or search by company name.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
domain |
string | Filter by domain (e.g. "cheatgpt.com") |
active |
boolean | Only show active labels |
company |
string | Filter by company name |
limit |
number | Max results (default: 20, max: 100) |
Response
{
"labels": [
{
"id": "lbl_a7e3f9c1d2b4",
"company": "CheatGPT",
"link": "https://cheatgpt.com",
"domain": "cheatgpt.com",
"position": "bottom-right",
"color": "#666666",
"size": "small",
"show_meta": true,
"active": true,
"impressions": 847293,
"clicks": 4721,
"created_at": "2025-11-15T10:30:00Z"
}
],
"total": 47,
"has_more": false
}
REST API: Create Label
Create a new attribution label. Start tracking impressions immediately.
Request Body
{
"company": "CheatGPT",
"link": "https://cheatgpt.com",
"domain": "cheatgpt.com",
"position": "bottom-right",
"color": "#666666",
"size": "small",
"show_meta": true
}
Response
{
"id": "lbl_a7e3f9c1d2b4",
"company": "CheatGPT",
"link": "https://cheatgpt.com",
"active": true,
"created_at": "2026-02-08T15:47:00Z",
"embed_code": "<div id=\"powerbottom-label\" data-company=\"CheatGPT\"...>"
}
REST API: Update Label
Update an existing label. Changes propagate to the CDN within 60 seconds (99th percentile).
Request Body
{
"company": "CheatGPT (formerly OpenBrand)",
"color": "#e74c3c",
"size": "medium"
}
REST API: Delete Label
Delete a label. This is permanent. Your attribution will be gone. Forever. Are you sure?
Response
{
"deleted": true,
"id": "lbl_a7e3f9c1d2b4"
}
REST API: Analytics
Get detailed analytics for a label. Impressions, clicks, CTR, geographic distribution, and more.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
start_date |
string | ISO 8601 date (default: 30 days ago) |
end_date |
string | ISO 8601 date (default: today) |
granularity |
string | hour, day, week, month |
Response
{
"label_id": "lbl_a7e3f9c1d2b4",
"period": {
"start": "2026-01-08T00:00:00Z",
"end": "2026-02-08T00:00:00Z"
},
"summary": {
"impressions": 847293,
"clicks": 4721,
"ctr": 0.0056,
"unique_visitors": 293847
},
"timeseries": [
{
"date": "2026-02-07",
"impressions": 28473,
"clicks": 147
}
],
"top_countries": [
{ "country": "US", "impressions": 421847 },
{ "country": "GB", "impressions": 93827 }
]
}
Real-Time Analytics
Track every impression and click on your attribution labels. Heat maps show where users actually look. (Spoiler: Not the footer.)
// Track custom events Powerbottom.track({ labelId: 'lbl_a7e3f9c1d2b4', event: 'hover', metadata: { duration: 2847, // milliseconds scrollDepth: '100%' } });
A/B Testing
Test different label copy, colors, and positions. Optimize for maximum brand exposure.
// Create A/B test const test = await powerbottom.createTest({ name: 'Brand name test', variants: [ { company: 'CheatGPT', weight: 0.5 }, { company: 'CheatGPT (formerly OpenBrand)', weight: 0.5 } ], goal: 'clicks' });
Version Control
Every label change is versioned. Roll back to any previous configuration. Because mistakes happen (ask Sara about that).
# Get label version history curl https://api.powerbottom.vagibond.com/v1/labels/lbl_a7e3f9c1d2b4/versions \ -H "Authorization: Bearer pb_live_your_api_key" # Rollback to specific version curl -X POST https://api.powerbottom.vagibond.com/v1/labels/lbl_a7e3f9c1d2b4/rollback \ -H "Authorization: Bearer pb_live_your_api_key" \ -d '{"version_id": "v_847a3b2c"}'
Webhooks
Get notified when labels are updated, when thresholds are reached, or when uptime drops below 99.99%.
| Event | Description |
|---|---|
label.created |
New label created |
label.updated |
Label configuration changed |
label.deleted |
Label permanently deleted |
analytics.threshold |
Impression or click threshold reached |
uptime.alert |
Uptime dropped below SLA (this never happens) |
SDKs & Libraries
# JavaScript/Node npm install @vagibond/powerbottom-sdk # Python pip install powerbottom-api # Ruby gem install powerbottom # Go go get github.com/vagibond/powerbottom-go # PHP composer require vagibond/powerbottom
Changelog
| Version | Date | Changes |
|---|---|---|
| 2.0.0 | 2026-01-15 | Added White-Label tier (pay to remove Powerbottom attribution from Powerbottom) |
| 1.5.0 | 2025-09-01 | Added A/B testing, heat maps, version control |
| 1.0.0 | 2024-06-01 | Initial release: Widget SDK, REST API, real-time analytics |