ChatGPT Integration

Use Bink with ChatGPT

Create a Custom GPT that connects to your Bink page and manages everything via natural language — links, forms, analytics, bookings, messages.

Custom GPT

Create a Custom GPT for Bink

Build a GPT that can manage your Bink page using the Bink REST API as Actions.

  1. 1

    Get a Personal Access Token

    Go to Settings → Developer → Create new token. Copy it — you'll need it for authentication.
  2. 2

    Create a new GPT

    Go to ChatGPT → Explore GPTs → Create. Give it a name like "My Bink Manager" and add these instructions:

    Instructions
    You are a Bink page manager. You help the user manage their Bink page (a link-in-bio platform). You can add, edit, delete, and reorder blocks (links, headers, social icons). You can view analytics, manage forms and form responses, handle inbox messages, and manage bookings. Always confirm destructive actions before executing them.
  3. 3

    Add Actions

    In the GPT editor, click "Create new action". Set Authentication to "API Key" with the header name "Authorization" and the value:

    Bearer bink_your_token_here

    Then paste the OpenAPI schema below into the schema field.

    OpenAPI Schema
    {
      "openapi": "3.1.0",
      "info": {
        "title": "Bink API",
        "version": "1.0.0",
        "description": "Manage your Bink page"
      },
      "servers": [
        { "url": "https://binatomy.link" }
      ],
      "paths": {
        "/api/blocks": {
          "get": {
            "operationId": "listBlocks",
            "summary": "List all blocks on the page",
            "responses": { "200": { "description": "Array of blocks" } }
          },
          "post": {
            "operationId": "createBlock",
            "summary": "Create a new block",
            "requestBody": {
              "required": true,
              "content": {
                "application/json": {
                  "schema": {
                    "type": "object",
                    "properties": {
                      "type": { "type": "string", "enum": ["link", "header", "social", "text", "image", "video", "divider"] },
                      "title": { "type": "string" },
                      "url": { "type": "string" },
                      "active": { "type": "boolean" }
                    },
                    "required": ["type"]
                  }
                }
              }
            },
            "responses": { "200": { "description": "Created block" } }
          }
        },
        "/api/blocks/{id}": {
          "put": {
            "operationId": "updateBlock",
            "summary": "Update a block",
            "parameters": [{ "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }],
            "requestBody": {
              "content": {
                "application/json": {
                  "schema": {
                    "type": "object",
                    "properties": {
                      "title": { "type": "string" },
                      "url": { "type": "string" },
                      "active": { "type": "boolean" }
                    }
                  }
                }
              }
            },
            "responses": { "200": { "description": "Updated block" } }
          },
          "delete": {
            "operationId": "deleteBlock",
            "summary": "Delete a block",
            "parameters": [{ "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }],
            "responses": { "200": { "description": "Deleted" } }
          }
        },
        "/api/analytics": {
          "get": {
            "operationId": "getAnalytics",
            "summary": "Get page analytics (views, clicks, top blocks)",
            "responses": { "200": { "description": "Analytics data" } }
          }
        },
        "/api/messages": {
          "get": {
            "operationId": "listMessages",
            "summary": "List inbox messages",
            "responses": { "200": { "description": "Array of messages" } }
          }
        },
        "/api/bookings": {
          "get": {
            "operationId": "listBookings",
            "summary": "List bookings",
            "responses": { "200": { "description": "Array of bookings" } }
          }
        },
        "/api/bookings/{id}": {
          "put": {
            "operationId": "updateBookingStatus",
            "summary": "Confirm or cancel a booking",
            "parameters": [{ "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }],
            "requestBody": {
              "content": {
                "application/json": {
                  "schema": {
                    "type": "object",
                    "properties": {
                      "status": { "type": "string", "enum": ["confirmed", "cancelled"] }
                    }
                  }
                }
              }
            },
            "responses": { "200": { "description": "Updated booking" } }
          }
        },
        "/api/page/settings": {
          "get": {
            "operationId": "getPageSettings",
            "summary": "Get page settings",
            "responses": { "200": { "description": "Page settings" } }
          },
          "put": {
            "operationId": "updatePageSettings",
            "summary": "Update page title, description, SEO",
            "requestBody": {
              "content": {
                "application/json": {
                  "schema": {
                    "type": "object",
                    "properties": {
                      "title": { "type": "string" },
                      "description": { "type": "string" }
                    }
                  }
                }
              }
            },
            "responses": { "200": { "description": "Updated settings" } }
          }
        },
        "/api/forms": {
          "get": {
            "operationId": "listForms",
            "summary": "List all forms",
            "responses": { "200": { "description": "Array of forms" } }
          }
        },
        "/api/forms/{id}/responses": {
          "get": {
            "operationId": "getFormResponses",
            "summary": "Get form responses",
            "parameters": [{ "name": "id", "in": "path", "required": true, "schema": { "type": "string" } }],
            "responses": { "200": { "description": "Array of responses" } }
          }
        }
      }
    }
  4. 4

    Test and publish

    Use the Preview panel to test commands like "List my blocks" or "Show my analytics". Once satisfied, publish for yourself or share it.
REST API

Available API endpoints

These are the main API endpoints your Custom GPT can call. All require a Bearer token in the Authorization header.

MethodPathDescription
GET/api/blocksList all blocks
POST/api/blocksCreate a new block
PUT/api/blocks/{id}Update a block
DELETE/api/blocks/{id}Delete a block
POST/api/blocks/reorderReorder blocks
GET/api/page/settingsGet page settings
PUT/api/page/settingsUpdate page settings
GET/api/page/themeGet page theme
PUT/api/page/themeUpdate page theme
POST/api/page/publishToggle page publish
GET/api/formsList forms
GET/api/forms/{id}Get form details
POST/api/formsCreate a form
PUT/api/forms/{id}Update a form
GET/api/forms/{id}/responsesGet form responses
GET/api/messagesList messages
GET/api/messages/{id}Read a message
PUT/api/messages/{id}Toggle read status
DELETE/api/messages/{id}Delete a message
GET/api/analyticsGet page analytics
GET/api/bookingsList bookings
PUT/api/bookings/{id}Update booking status
Prompt examples

What to ask your GPT

Once your Custom GPT is set up, try these prompts.

Page management

"List all blocks on my page"

"Add a new link to my Instagram profile"

"Delete the header block"

"Change my page title to "My Links""

Analytics

"Show my page analytics"

"What are my most clicked links?"

Forms & messages

"Show form responses from my contact form"

"How many unread messages do I have?"

Bookings

"List all pending bookings"

"Confirm the booking for tomorrow"

Ready to build your GPT?

Create a Personal Access Token and start building your Custom GPT for Bink.