Automation
go2gg
Use Go2.gg API for URL shortening, link analytics, QR code generation,.
---
name: go2gg
description: Use Go2.gg API for URL shortening, link analytics, QR code generation, webhooks, and link-in-bio pages. Use when the user needs to create short links, track clicks, generate QR codes, set up link-in-bio pages, or manage branded URLs. Free tier includes short links, QR codes, and analytics. Requires GO2GG_API_KEY env var. QR code generation is free without auth.
---
# 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)
```bash
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
```bash
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
```json
{
"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
```bash
# 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
```bash
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
```bash
curl -X DELETE "https://api.go2.gg/api/v1/links/lnk_abc123" \
-H "Authorization: Bearer $GO2GG_API_KEY"
# Returns 204 No Content
```
### Link Analytics
```bash
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
```bash
# 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
| Field | Type | Required | Description |
|-------|------|----------|-------------|
| destinationUrl | string | yes | Target URL to redirect to |
| slug | string | no | Custom slug (auto-generated if omitted) |
| domain | string | no | Custom domain (default: go2.gg) |
| title | string | no | Link title |
| description | string | no | Link description |
| tags | string[] | no | Tags for filtering |
| password | string | no | Password protection |
| expiresAt | string | no | ISO 8601 expiration date |
| clickLimit | number | no | Max clicks allowed |
| geoTargets | object | no | Country → URL mapping |
| deviceTargets | object | no | Device → URL mapping |
| iosUrl | string | no | iOS app deep link |
| androidUrl | string | no | Android app deep link |
| utmSource/Medium/Campaign/Term/Content | string | no | UTM parameters |
---
## QR Codes
Generate customizable QR codes. **QR generation is free and requires no auth.**
### Generate QR Code (No Auth Required)
```bash
# 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
| Field | Type | Default | Description |
|-------|------|---------|-------------|
| url | string | required | URL to encode |
| size | number | 256 | Size in pixels (64-2048) |
| foregroundColor | string | #000000 | Hex color for modules |
| backgroundColor | string | #FFFFFF | Hex color for background |
| cornerRadius | number | 0 | Module corner radius (0-50) |
| errorCorrection | string | M | L (7%), M (15%), Q (25%), H (30%) |
| format | string | svg | svg or png |
### Save & Track QR Codes (Auth Required)
```bash
# 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.
```bash
# 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.
```bash
# 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
```python
import requests
API_KEY = "go2_your_key_here" # or os.environ["GO2GG_API_KEY"]
BASE =
... (truncated)
automation
By
Comments
Sign in to leave a comment