Clipform Tracked Links API

Create and manage tracked share links with click-through analytics.

GitHub OpenAPI

Operations 3

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/clipform-io:clipform-io-tracked-links-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

clipform-io-tracked-links-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Clipform Io Tracked Links API
  version: 1.0.0
  contact:
    name: Clipform
    url: https://clipform.io
    email: support@clipform.io
  termsOfService: https://clipform.io/terms
  description: 'Operations tagged tracked-links across 2 of this provider''s published API definitions: api.clipform.io_openapi.json, clipform-io-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.clipform.io/v1
  description: Production
  x-internal: false
tags:
- name: tracked-links
  x-displayName: Tracked Links
  description: Create and manage tracked share links with click-through analytics.
paths:
  /forms/{formId}/links:
    get:
      operationId: getFormLinks
      tags:
      - tracked-links
      summary: List tracked links for a form
      description: Returns a form's tracked share links.
      parameters:
      - name: formId
        in: path
        required: true
        schema:
          type: string
          format: uuid
          maxLength: 36
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Tracked links
          content:
            application/json:
              schema:
                type: object
                properties:
                  links:
                    type: array
                    items:
                      $ref: '#/components/schemas/FormLink'
                    maxItems: 500
        '429':
          $ref: '#/components/responses/RateLimited'
    post:
      operationId: createFormLink
      tags:
      - tracked-links
      summary: Create a tracked link
      description: Creates a tracked (UTM) share link.
      parameters:
      - name: formId
        in: path
        required: true
        schema:
          type: string
          format: uuid
          maxLength: 36
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - label
              properties:
                label:
                  type: string
                  maxLength: 100
                utm_source:
                  type: string
                  nullable: true
                  maxLength: 2000
                utm_medium:
                  type: string
                  nullable: true
                  maxLength: 2000
                utm_campaign:
                  type: string
                  nullable: true
                  maxLength: 2000
                utm_term:
                  type: string
                  nullable: true
                  maxLength: 2000
                utm_content:
                  type: string
                  nullable: true
                  maxLength: 2000
      responses:
        '201':
          description: Tracked link created
          content:
            application/json:
              schema:
                type: object
                properties:
                  link:
                    $ref: '#/components/schemas/FormLink'
        '409':
          description: A link with that label already exists
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          $ref: '#/components/responses/RateLimited'
    servers:
    - url: https://api.clipform.io/v1
      description: Production
      x-internal: false
  /forms/{formId}/links/{linkId}:
    delete:
      operationId: deleteFormLink
      tags:
      - tracked-links
      summary: Delete a tracked link
      parameters:
      - name: formId
        in: path
        required: true
        schema:
          type: string
          format: uuid
          maxLength: 36
      - name: linkId
        in: path
        required: true
        schema:
          type: string
          format: uuid
          maxLength: 36
      security:
      - bearerAuth: []
      responses:
        '204':
          description: Tracked link deleted
        '429':
          $ref: '#/components/responses/RateLimited'
    servers:
    - url: https://api.clipform.io/v1
      description: Production
      x-internal: false
components:
  schemas:
    Error:
      type: object
      description: Standard error envelope returned by every failed request.
      required:
      - code
      - error
      properties:
        code:
          type: string
          description: Machine-readable error code. Keep in lockstep with the ErrorCode union in apps/api/src/lib/errors.ts (source of truth).
          enum:
          - VALIDATION_ERROR
          - UNKNOWN_SESSION
          - RATE_LIMITED
          - UNAUTHORIZED
          - FORBIDDEN
          - NOT_FOUND
          - INTERNAL_ERROR
          - RENDER_FAILED
          - PAYMENT_ERROR
          - BOOKING_ERROR
          - PLAN_LIMIT
          - RESPONSE_LIMIT
          - CONFLICT
        error:
          type: string
          description: Human-readable error message.
          maxLength: 2000
        details:
          description: 'Optional structured detail; present on some validation errors. The fallback 401 ("Authentication required...") carries `details.reason` for a rejected Bearer session token: `no_token`, `token_rejected`, `auth_unavailable`, `not_a_member`, `no_workspace`, `membership_lookup_failed`, or `not_evaluated`, plus `auth_code` and `auth_status` when the auth provider returned them.'
    FormLink:
      type: object
      properties:
        id:
          type: string
          format: uuid
          maxLength: 36
        form_id:
          type: string
          format: uuid
          maxLength: 36
        label:
          type: string
          maxLength: 2000
        utm_source:
          type: string
          nullable: true
          maxLength: 2000
        utm_medium:
          type: string
          nullable: true
          maxLength: 2000
        utm_campaign:
          type: string
          nullable: true
          maxLength: 2000
        utm_term:
          type: string
          nullable: true
          maxLength: 2000
        utm_content:
          type: string
          nullable: true
          maxLength: 2000
        created_at:
          type: string
          format: date-time
          maxLength: 30
  responses:
    RateLimited:
      description: Rate limit exceeded.
      headers:
        Access-Control-Allow-Origin:
          description: CORS origin permitted to read the response.
          schema:
            type: string
            maxLength: 2048
            example: '*'
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
            format: int32
            minimum: 0
            maximum: 86400
          example: 42
        RateLimit-Limit:
          description: Request quota for the current window.
          schema:
            type: integer
            format: int32
            minimum: 0
            maximum: 1000000
          example: 60
        RateLimit-Remaining:
          description: Requests remaining in the current window.
          schema:
            type: integer
            format: int32
            minimum: 0
            maximum: 1000000
          example: 0
        RateLimit-Reset:
          description: Seconds until the current window resets.
          schema:
            type: integer
            format: int32
            minimum: 0
            maximum: 86400
          example: 42
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key (cf_*) passed as Bearer token
    oauth2:
      type: oauth2
      description: Authorization-code OAuth for installed apps acting on a user's workspace. Access tokens (cf_at_*) are passed as Bearer tokens and authorize the Integrations operations. They are opaque, single-audience, server-side records. Client credentials are issued per app - contact support@clipform.io.
      flows:
        authorizationCode:
          authorizationUrl: https://api.clipform.io/oauth/authorize
          tokenUrl: https://api.clipform.io/oauth/token
          refreshUrl: https://api.clipform.io/oauth/token
          scopes:
            forms:read: Read the workspace's forms.
            responses:read: Read the workspace's form responses.
            webhooks:manage: Subscribe and unsubscribe webhook endpoints.
x-refined-from:
- api.clipform.io_openapi.json
- clipform-io-openapi.yml