Free Link-In-Bio Page Builder
Free Link-In-Bio Page Builder · GPT Actions
SupaDrop GPT Facade API
Create an anonymous SupaDrop release page and return the live public URL plus the secret edit URL. Designed for a Custom GPT action.
POST /api/gpt/supadrop/createCreate a SupaDrop release pageCreates one anonymous SupaDrop release page. Use one idempotency key per logical create request. On a safe replay of the same request, the API returns the same page and the same secret edit URL.
原始 API 定义
{
"openapi": "3.1.1",
"info": {
"title": "SupaDrop GPT Facade API",
"version": "1.0.0",
"description": "Create an anonymous SupaDrop release page and return the live public URL plus the secret edit URL. Designed for a Custom GPT action.\n"
},
"servers": [
{
"url": "https://supafan.to"
}
],
"paths": {
"/api/gpt/supadrop/create": {
"post": {
"operationId": "createSupaDropPage",
"summary": "Create a SupaDrop release page",
"description": "Creates one anonymous SupaDrop release page. Use one idempotency key per logical create request. On a safe replay of the same request, the API returns the same page and the same secret edit URL.\n",
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateSupaDropRequest"
},
"examples": {
"minimal": {
"summary": "Minimal valid request",
"value": {
"idempotency_key": "chatgpt-run-001",
"artist_name": "Neon Tigers",
"release_title": "Midnight Receiver",
"status_badge": "out_now",
"primary_link": {
"label": "Listen now",
"url": "https://example.com/listen"
},
"anonymous_terms_accepted": true
}
},
"fuller": {
"summary": "Request with optional fields",
"value": {
"idempotency_key": "chatgpt-run-002",
"artist_name": "Neon Tigers",
"release_title": "Midnight Receiver",
"status_badge": "out_now",
"artist_note": "New single out now. Thanks for listening.",
"primary_link": {
"label": "Listen now",
"url": "https://example.com/listen"
},
"streaming_links": [
{
"label": "Spotify",
"url": "https://open.spotify.com/track/example"
},
{
"label": "Apple Music",
"url": "https://music.apple.com/album/example"
}
],
"youtube_video_url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ",
"secondary_links": [
{
"label": "Merch",
"url": "https://example.com/merch"
}
],
"anonymous_terms_accepted": true
}
}
}
}
}
},
"responses": {
"200": {
"description": "Idempotent replay of an already-created result",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateSupaDropResponse"
},
"examples": {
"replay": {
"value": {
"status": "created",
"idempotent_replay": true,
"release_page_id": 123,
"short_id": "7sqylbgdhx",
"public_url": "https://drop.supafan.to/r/7sqylbgdhx",
"edit_url": "https://drop.supafan.to/e/7sqylbgdhx/SECRET_TOKEN",
"expires_at": "2026-07-01T12:34:56Z"
}
}
}
}
}
},
"201": {
"description": "Newly created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateSupaDropResponse"
},
"examples": {
"created": {
"value": {
"status": "created",
"idempotent_replay": false,
"release_page_id": 123,
"short_id": "7sqylbgdhx",
"public_url": "https://drop.supafan.to/r/7sqylbgdhx",
"edit_url": "https://drop.supafan.to/e/7sqylbgdhx/SECRET_TOKEN",
"expires_at": "2026-07-01T12:34:56Z"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"unauthorized": {
"value": {
"message": "Unauthorized."
}
}
}
}
}
},
"409": {
"description": "Idempotency conflict",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/IdempotencyConflictResponse"
},
"examples": {
"key_reused": {
"value": {
"message": "This idempotency key was already used with a different request payload.",
"error_code": "idempotency_key_reused_with_different_payload"
}
}
}
}
}
},
"422": {
"description": "Validation error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValidationErrorResponse"
},
"examples": {
"invalid_url": {
"value": {
"message": "The given data was invalid.",
"errors": {
"primary_link.url": [
"The primary link url field must be a valid URL."
]
}
}
}
}
}
}
},
"429": {
"description": "Rate limited",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"throttled": {
"value": {
"message": "Too many requests."
}
}
}
}
}
},
"500": {
"description": "Internal error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
},
"examples": {
"internal": {
"value": {
"message": "An unexpected error occurred."
}
}
}
}
}
}
}
}
}
},
"components": {
"securitySchemes": {
"bearerAuth": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "APIKey"
}
},
"schemas": {
"LinkInput": {
"type": "object",
"additionalProperties": false,
"required": [
"label",
"url"
],
"properties": {
"label": {
"type": "string",
"maxLength": 60,
"description": "Short button label shown on the release page."
},
"url": {
"type": "string",
"format": "uri",
"maxLength": 2048,
"description": "Must use http or https."
}
}
},
"CreateSupaDropRequest": {
"type": "object",
"additionalProperties": false,
"required": [
"idempotency_key",
"artist_name",
"release_title",
"status_badge",
"primary_link",
"anonymous_terms_accepted"
],
"properties": {
"idempotency_key": {
"type": "string",
"maxLength": 255,
"description": "Unique key for safe request replay."
},
"artist_name": {
"type": "string",
"maxLength": 120
},
"release_title": {
"type": "string",
"maxLength": 160
},
"status_badge": {
"type": "string",
"enum": [
"pre_save",
"out_now",
"watch"
],
"description": "pre_save = pre-save campaign, out_now = live release, watch = watch/listen campaign.\n"
},
"artist_note": {
"type": "string",
"nullable": true,
"maxLength": 500
},
"primary_link": {
"$ref": "#/components/schemas/LinkInput"
},
"streaming_links": {
"type": "array",
"maxItems": 12,
"items": {
"$ref": "#/components/schemas/LinkInput"
}
},
"youtube_video_url": {
"type": "string",
"nullable": true,
"maxLength": 2048,
"description": "Valid YouTube URL or YouTube video id."
},
"secondary_links": {
"type": "array",
"maxItems": 3,
"items": {
"$ref": "#/components/schemas/LinkInput"
}
},
"anonymous_terms_accepted": {
"type": "boolean",
"description": "Must be true."
}
}
},
"CreateSupaDropResponse": {
"type": "object",
"additionalProperties": false,
"required": [
"status",
"idempotent_replay",
"release_page_id",
"short_id",
"public_url",
"edit_url",
"expires_at"
],
"properties": {
"status": {
"type": "string",
"enum": [
"created"
]
},
"idempotent_replay": {
"type": "boolean"
},
"release_page_id": {
"type": "integer"
},
"short_id": {
"type": "string"
},
"public_url": {
"type": "string",
"format": "uri"
},
"edit_url": {
"type": "string",
"format": "uri"
},
"expires_at": {
"type": "string",
"format": "date-time"
}
}
},
"ErrorResponse": {
"type": "object",
"additionalProperties": false,
"required": [
"message"
],
"properties": {
"message": {
"type": "string"
}
}
},
"IdempotencyConflictResponse": {
"type": "object",
"additionalProperties": false,
"required": [
"message",
"error_code"
],
"properties": {
"message": {
"type": "string"
},
"error_code": {
"type": "string"
}
}
},
"ValidationErrorResponse": {
"type": "object",
"additionalProperties": true,
"required": [
"message",
"errors"
],
"properties": {
"message": {
"type": "string"
},
"errors": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
}
}
}