go2gg

Verified·Scanned 2/18/2026

This skill integrates with the Go2.gg API to create short links, QR codes, analytics, webhooks, and galleries. It requires the GO2GG_API_KEY env var for authenticated endpoints and issues requests to https://api.go2.gg/api/v1.

from clawhub.ai·v6b59083·11.8 KB·0 installs
Scanned from 1.0.0 at 6b59083 · Transparency log ↗
$ vett add clawhub.ai/rakesh1002/go2gg

Go2.gg — Edge-Native URL Shortener

URL shortening, analytics, QR codes, webhooks, galleries (link-in-bio). Built on Cloudflare's edge network with sub-10ms redirects globally.

Setup

Get API key from: https://go2.gg/dashboard/api-keys (free, no credit card required)

export GO2GG_API_KEY="go2_your_key_here"

API base: https://api.go2.gg/api/v1 Auth: Authorization: Bearer $GO2GG_API_KEY Docs: https://go2.gg/docs/api/links


Short Links

Create, manage, and track short links with custom slugs, tags, expiration, passwords, and geo/device targeting.

Create a Link

curl -X POST "https://api.go2.gg/api/v1/links" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "destinationUrl": "https://example.com/landing-page",
    "slug": "my-link",
    "title": "My Campaign Link",
    "tags": ["marketing", "q1-2025"]
  }'

Important: Field is destinationUrl (not url). Slug is optional (auto-generated if omitted).

Response

{
  "success": true,
  "data": {
    "id": "lnk_abc123",
    "shortUrl": "https://go2.gg/my-link",
    "destinationUrl": "https://example.com/landing-page",
    "slug": "my-link",
    "domain": "go2.gg",
    "title": "My Campaign Link",
    "tags": ["marketing", "q1-2025"],
    "clickCount": 0,
    "createdAt": "2025-01-01T10:30:00Z"
  }
}

List Links

# List all links (paginated)
curl "https://api.go2.gg/api/v1/links?perPage=20&sort=clicks" \
  -H "Authorization: Bearer $GO2GG_API_KEY"

# Search links
curl "https://api.go2.gg/api/v1/links?search=marketing&tag=q1-2025" \
  -H "Authorization: Bearer $GO2GG_API_KEY"

Query params: page, perPage (max 100), search, domain, tag, archived, sort (created/clicks/updated)

Update a Link

curl -X PATCH "https://api.go2.gg/api/v1/links/lnk_abc123" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"destinationUrl": "https://example.com/updated-page", "tags": ["updated"]}'

Delete a Link

curl -X DELETE "https://api.go2.gg/api/v1/links/lnk_abc123" \
  -H "Authorization: Bearer $GO2GG_API_KEY"
# Returns 204 No Content

Link Analytics

curl "https://api.go2.gg/api/v1/links/lnk_abc123/stats" \
  -H "Authorization: Bearer $GO2GG_API_KEY"

Returns: totalClicks, byCountry, byDevice, byBrowser, byReferrer, overTime

Advanced Link Options

# Password-protected link
curl -X POST "https://api.go2.gg/api/v1/links" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"destinationUrl": "https://example.com/secret", "slug": "exclusive", "password": "secure123"}'

# Link with expiration + click limit
curl -X POST "https://api.go2.gg/api/v1/links" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"destinationUrl": "https://example.com/flash", "expiresAt": "2025-12-31T23:59:59Z", "clickLimit": 1000}'

# Geo-targeted link (different URLs per country)
curl -X POST "https://api.go2.gg/api/v1/links" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "destinationUrl": "https://example.com/default",
    "geoTargets": {"US": "https://example.com/us", "GB": "https://example.com/uk", "IN": "https://example.com/in"}
  }'

# Device-targeted link + app deep links
curl -X POST "https://api.go2.gg/api/v1/links" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "destinationUrl": "https://example.com/default",
    "deviceTargets": {"mobile": "https://m.example.com"},
    "iosUrl": "https://apps.apple.com/app/myapp",
    "androidUrl": "https://play.google.com/store/apps/details?id=com.myapp"
  }'

# Link with UTM parameters
curl -X POST "https://api.go2.gg/api/v1/links" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "destinationUrl": "https://example.com/product",
    "slug": "summer-sale",
    "utmSource": "email",
    "utmMedium": "newsletter",
    "utmCampaign": "summer-sale"
  }'

Create Link Parameters

FieldTypeRequiredDescription
destinationUrlstringyesTarget URL to redirect to
slugstringnoCustom slug (auto-generated if omitted)
domainstringnoCustom domain (default: go2.gg)
titlestringnoLink title
descriptionstringnoLink description
tagsstring[]noTags for filtering
passwordstringnoPassword protection
expiresAtstringnoISO 8601 expiration date
clickLimitnumbernoMax clicks allowed
geoTargetsobjectnoCountry → URL mapping
deviceTargetsobjectnoDevice → URL mapping
iosUrlstringnoiOS app deep link
androidUrlstringnoAndroid app deep link
utmSource/Medium/Campaign/Term/ContentstringnoUTM parameters

QR Codes

Generate customizable QR codes. QR generation is free and requires no auth.

Generate QR Code (No Auth Required)

# Generate SVG QR code (free, no API key needed)
curl -X POST "https://api.go2.gg/api/v1/qr/generate" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://go2.gg/my-link",
    "size": 512,
    "foregroundColor": "#1a365d",
    "backgroundColor": "#FFFFFF",
    "cornerRadius": 10,
    "errorCorrection": "H",
    "format": "svg"
  }' -o qr-code.svg

# PNG format
curl -X POST "https://api.go2.gg/api/v1/qr/generate" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com", "format": "png", "size": 1024}' -o qr-code.png

QR Parameters

FieldTypeDefaultDescription
urlstringrequiredURL to encode
sizenumber256Size in pixels (64-2048)
foregroundColorstring#000000Hex color for modules
backgroundColorstring#FFFFFFHex color for background
cornerRadiusnumber0Module corner radius (0-50)
errorCorrectionstringML (7%), M (15%), Q (25%), H (30%)
formatstringsvgsvg or png

Save & Track QR Codes (Auth Required)

# Save QR config for tracking
curl -X POST "https://api.go2.gg/api/v1/qr" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Business Card QR", "url": "https://go2.gg/contact", "linkId": "lnk_abc123"}'

# List saved QR codes
curl "https://api.go2.gg/api/v1/qr" -H "Authorization: Bearer $GO2GG_API_KEY"

# Download saved QR
curl "https://api.go2.gg/api/v1/qr/qr_abc123/download?format=svg" \
  -H "Authorization: Bearer $GO2GG_API_KEY" -o qr.svg

# Delete QR
curl -X DELETE "https://api.go2.gg/api/v1/qr/qr_abc123" -H "Authorization: Bearer $GO2GG_API_KEY"

Webhooks

Receive real-time notifications for link clicks, creations, and updates.

# Create webhook
curl -X POST "https://api.go2.gg/api/v1/webhooks" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Click Tracker", "url": "https://your-server.com/webhook", "events": ["click", "link.created"]}'

# List webhooks
curl "https://api.go2.gg/api/v1/webhooks" -H "Authorization: Bearer $GO2GG_API_KEY"

# Test webhook
curl -X POST "https://api.go2.gg/api/v1/webhooks/wh_abc123/test" \
  -H "Authorization: Bearer $GO2GG_API_KEY"

# Delete webhook
curl -X DELETE "https://api.go2.gg/api/v1/webhooks/wh_abc123" \
  -H "Authorization: Bearer $GO2GG_API_KEY"

Events: click, link.created, link.updated, link.deleted, domain.verified, qr.scanned, * (all)

Webhook payloads include X-Webhook-Signature (HMAC SHA256) for verification. Retries: 5s → 30s → 2m → 10m.


Galleries (Link-in-Bio)

Create link-in-bio pages programmatically.

# Create gallery
curl -X POST "https://api.go2.gg/api/v1/galleries" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"slug": "myprofile", "title": "My Name", "bio": "Creator & developer", "theme": "gradient"}'

# Add link item
curl -X POST "https://api.go2.gg/api/v1/galleries/gal_abc123/items" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type": "link", "title": "My Website", "url": "https://example.com"}'

# Add YouTube embed
curl -X POST "https://api.go2.gg/api/v1/galleries/gal_abc123/items" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type": "embed", "title": "Latest Video", "embedType": "youtube", "embedData": {"videoId": "dQw4w9WgXcQ"}}'

# Publish gallery (makes it live at go2.gg/bio/myprofile)
curl -X POST "https://api.go2.gg/api/v1/galleries/gal_abc123/publish" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"isPublished": true}'

# Reorder items
curl -X PATCH "https://api.go2.gg/api/v1/galleries/gal_abc123/items/reorder" \
  -H "Authorization: Bearer $GO2GG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"itemIds": ["item_3", "item_1", "item_2"]}'

# List galleries
curl "https://api.go2.gg/api/v1/galleries" -H "Authorization: Bearer $GO2GG_API_KEY"

Themes: default, minimal, gradient, dark, neon, custom (with customCss) Item types: link, header, divider, embed (youtube), image


Python Example

import requests

API_KEY = "go2_your_key_here"  # or os.environ["GO2GG_API_KEY"]
BASE = "https://api.go2.gg/api/v1"
headers = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}

# Create short link
resp = requests.post(f"{BASE}/links", headers=headers, json={
    "destinationUrl": "https://example.com/product",
    "slug": "my-product",
    "title": "Product Link",
    "tags": ["product"]
})
link = resp.json()["data"]
print(f"Short URL: {link['shortUrl']}")

# Get analytics
stats = requests.get(f"{BASE}/links/{link['id']}/stats", headers=headers).json()["data"]
print(f"Clicks: {stats['totalClicks']}")

# Generate QR (no auth needed)
qr = requests.post(f"{BASE}/qr/generate", json={"url": link["shortUrl"], "size": 512, "format": "png"})
with open("qr.png", "wb") as f:
    f.write(qr.content)

API Endpoint Summary

ServiceEndpointMethodAuth
Links create/api/v1/linksPOSTyes
Links list/api/v1/linksGETyes
Links get/api/v1/links/:idGETyes
Links update/api/v1/links/:idPATCHyes
Links delete/api/v1/links/:idDELETEyes
Links stats/api/v1/links/:id/statsGETyes
QR generate/api/v1/qr/generatePOSTno
QR save/api/v1/qrPOSTyes
QR list/api/v1/qrGETyes
QR download/api/v1/qr/:id/downloadGETyes
Webhooks/api/v1/webhooksCRUDyes
Webhook test/api/v1/webhooks/:id/testPOSTyes
Galleries/api/v1/galleriesCRUDyes
Gallery items/api/v1/galleries/:id/itemsCRUDyes
Gallery publish/api/v1/galleries/:id/publishPOSTyes

Rate Limits

PlanRequests/min
Free60
Pro300
Business1000

Error Codes

CodeDescription
SLUG_RESERVEDSlug is reserved
SLUG_EXISTSSlug already in use on this domain
INVALID_URLDestination URL is invalid
LIMIT_REACHEDPlan's link limit reached
DOMAIN_NOT_VERIFIEDCustom domain not verified