No plan switching. Once you choose Pay As You Go, you cannot switch to Monthly or Lifetime. To change plans, you must delete your account and wait 30 days before re-registering.
Token Packs
Buy in bulk for better rates. Tokens never expire.
Monthly and Lifetime give you unlimited ad generation for a flat fee. Pay As You Go is token-based — you pay per action, no subscription. Good if you generate ads occasionally.
Can I switch from Pay As You Go to Monthly or Lifetime?
No. Pay As You Go is a one-way selection. If you want to switch later, you'll need to delete your account, wait 30 days, and sign up again. This restriction is shown clearly before you confirm.
Do tokens expire?
No. Your token balance carries over indefinitely. Buy once, use when you need them.
How does the 7-day free trial work?
Monthly plan only. Sign up with a card and get full access for 7 days. If you don't cancel before the trial ends, you'll be charged $19.99/month. To cancel, contact support@autospotgm.com.
What does one "video ad generation" cost in tokens?
10 tokens. At the Mega pack rate ($0.04/token), that's $0.40 per ad. At Starter ($0.10/token), it's $1.00 per ad. All 3 formats (16:9, 9:16, 1:1) are included in that single cost.
What payment methods do you accept?
All major credit and debit cards (Visa, Mastercard, Amex, Discover). Checkout is handled securely by Stripe.
// Load current lifetime tier info and update the card
(async function loadLifetimeTier() {
try {
const res = await fetch('/api/lifetime/tier');
const d = await res.json();
const priceEl = document.getElementById('lifetimePrice');
const badgeEl = document.getElementById('lifetimeBadge');
const scarcityEl = document.getElementById('lifetimeScarcity');
const noteEl = document.getElementById('lifetimeNote');
const btn = document.getElementById('lifetimeBtn');
const table = document.getElementById('tierTable');
const tbody = document.getElementById('tierTableBody');
if (d.capReached) {
// Sold out — hide the entire plan card
document.getElementById('lifetimePlan').style.display = 'none';
return;
}
const price = '$' + (d.priceCents / 100).toFixed(0);
priceEl.textContent = price;
badgeEl.textContent = ' ' + d.spotsRemainingInTier + ' spots at this price';
// Scarcity message
let scarcityMsg = d.spotsRemainingInTier + ' of 200 spots remaining at ' + price;
if (d.nextPriceCents) {
scarcityMsg += ' · Next tier: $' + (d.nextPriceCents / 100).toFixed(0);
}
scarcityEl.textContent = scarcityMsg;
scarcityEl.style.display = '';
// Tier table
const tierNames = { 1: '#1–#200', 2: '#201–#400', 3: '#401–#600', 4: '#601–#800', 5: '#801–#1000' };
let rows = '';
(d.tiers || []).forEach(t => {
const isCurrent = t.tier === d.currentTier;
const isDone = t.tier < d.currentTier;
const cls = isCurrent ? 'active-tier' : (isDone ? 'done-tier' : '');
const status = isDone ? 'Sold' : (isCurrent ? 'Current' : 'Upcoming');
rows += `