Vagibond
Vagibond

Follow Vagibond

Stay connected with us on social media for updates on new ventures.

Thanks for subscribing!

Powerbottom API

AaaS - Attribution as a Service. Military-grade infrastructure for the text at the bottom of your page that nobody reads. 99.99999807% uptime SLA. Sub-millisecond label delivery via dark fiber. Font-size-based pricing. Your powered-by labels deserve the same engineering rigor as your database. Actually, more.

📈
$4.7M in Engineering Hours Saved
We calculated this by multiplying $200/hr by 23,500 hours. The math is proprietary but the savings are real. Trust us.

What you can build

Live Demo

Below is Gary's demo showing CheatGPT's label configuration. Note the rebrand from "OpenBrand" after Sara convinced Kevin (our best designer) to leave Vagibond for Montgomery's startup. The version history tells the whole sad story.

Powerbottom Demo

Quickstart

Add Military-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.

html
<!-- 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)
bash
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.99999807% uptime for everyone. Our infrastructure team monitors label latency 24/7 from a bunker in Paris (Wisconsin). (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

html
<!-- 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:

html
<!-- 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:

html
<div id="powerbottom-label"
     data-company="YourCompany"
     data-color="#3498db"
     data-size="medium"></div>

REST API: Get Labels

GET /v1/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

json
{
  "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

POST /v1/labels

Create a new attribution label. Start tracking impressions immediately.

Request Body

json
{
  "company": "CheatGPT",
  "link": "https://cheatgpt.com",
  "domain": "cheatgpt.com",
  "position": "bottom-right",
  "color": "#666666",
  "size": "small",
  "show_meta": true
}

Response

json
{
  "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

PUT /v1/labels/:id

Update an existing label. Changes propagate to the CDN within 60 seconds (99th percentile).

Request Body

json
{
  "company": "CheatGPT (formerly OpenBrand)",
  "color": "#e74c3c",
  "size": "medium"
}

REST API: Delete Label

DELETE /v1/labels/:id

Delete a label. This is permanent. Your attribution will be gone, like Sara. Forever. Are you sure?

Response

json
{
  "deleted": true,
  "id": "lbl_a7e3f9c1d2b4"
}

REST API: Analytics

GET /v1/labels/:id/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

json
{
  "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. Our data shows 94% of users never scroll past the fold. But the 6% who do? They deserve Military-Grade Attribution.)

javascript
// 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.

javascript
// 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).

bash
# 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. Your attribution journey begins.
label.updated Label configuration changed (e.g., rebrand after your designer leaves for a competitor).
label.deleted Label permanently deleted. No rollback. Like some relationships.
analytics.threshold Impression or click threshold reached. Someone finally scrolled to the footer!
recursion.overflow Label exceeded configured recursion depth. Legal team notified.
uptime.alert Uptime dropped below 99.99999807%. Has never fired. We keep it for insurance purposes.

SDKs & Libraries

bash
# 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.1.0 2026-02-01 Added negative latency via CornKast dark fiber. Physicists concerned. VCs thrilled.
2.0.0 2026-01-15 Invisible tier: pay $499/mo to display 0px attribution. White-label inception.
1.7.0 2025-11-01 Increased recursive attribution depth from 100 to 847 levels per enterprise request.
1.5.0 2025-09-01 A/B testing for labels. Test "Powered by" vs "Built with" vs "Sponsored by". Groundbreaking.
1.0.0 2024-06-01 Initial release. The world wasn't ready but we launched anyway.