G

Use LinkCrypt with ChatGPT Actions + Codex

Wire a tool-enabled OpenAI runtime (Custom GPT Actions, Codex, or OpenAI automations) to your LinkCrypt library using bearer authentication — search saved links and create new ones through API calls.

Setup overview

  1. Create a LinkCrypt account and generate an API key in Preferences.
  2. Use a runtime that can execute HTTP tools. Plain ChatGPT chat does not call your private API by itself.
  3. In ChatGPT Custom GPTConfigureActionsCreate new action, paste the OpenAPI fragment below (or import as schema). For Codex/OpenAI automations, map the same endpoints as tools.
  4. Set authentication to API Key, header name Authorization, value Bearer <stored-secret>.
  5. Tell the GPT your base URL is https://getlinkcrypt.com/api/v1 if the schema host is not auto-detected.

For OpenAI Assistants with function calling, map the same operations as tools using the paths below.

OpenAPI 3.0 schema (Actions)

Paste into Custom GPT Actions. Adjust descriptions for your GPT's behavior. All paths are under the server URL https://getlinkcrypt.com/api/v1.

openapi: 3.0.0
info:
  title: LinkCrypt API
  version: 1.0.0
servers:
  - url: https://getlinkcrypt.com/api/v1
paths:
  /search:
    get:
      operationId: searchLinks
      summary: Full-text search the link library
      parameters:
        - name: q
          in: query
          required: true
          schema: { type: string }
        - name: limit
          in: query
          schema: { type: integer, default: 20 }
        - name: offset
          in: query
          schema: { type: integer, default: 0 }
      responses:
        '200': { description: OK }
  /links:
    get:
      operationId: listLinks
      summary: List links with filters
      parameters:
        - name: q
          in: query
          schema: { type: string }
        - name: tags
          in: query
          description: Comma-separated tags (AND)
          schema: { type: string }
        - name: domain
          in: query
          schema: { type: string }
        - name: limit
          in: query
          schema: { type: integer }
        - name: offset
          in: query
          schema: { type: integer }
      responses:
        '200': { description: OK }
    post:
      operationId: createLink
      summary: Save a new link
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required: [url]
              properties:
                url: { type: string, format: uri }
                title: { type: string }
                description: { type: string }
                tags:
                  type: array
                  items: { type: string }
      responses:
        '201': { description: Created }
  /links/{id}:
    get:
      operationId: getLink
      summary: Get one link
      parameters:
        - name: id
          in: path
          required: true
          schema: { type: string }
      responses:
        '200': { description: OK }
    patch:
      operationId: updateLink
      summary: Update link metadata
      parameters:
        - name: id
          in: path
          required: true
          schema: { type: string }
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                title: { type: string }
                url: { type: string }
                description: { type: string }
                is_favorite: { type: boolean }
      responses:
        '200': { description: OK }
  /tags:
    get:
      operationId: listTags
      summary: List all tags
      responses:
        '200': { description: OK }
  /analyze/stats:
    get:
      operationId: libraryStats
      summary: Library statistics
      responses:
        '200': { description: OK }

Safety note

Avoid exposing your real API key in public GPTs. Use private Custom GPTs or server-side proxies for team setups. Consider revoking keys in Preferences if they leak.