CurlShip Badge API

Dofollow badge verification.

GitHub OpenAPI

Operations 1

POST /api/verify-badge Verify your badge on demand #

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/curlship-com:curlship-com-badge-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

curlship-com-badge-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Curlship Com Badge API
  version: 1.0.0
  contact:
    name: CurlShip Support
    email: support@curlship.com
    url: https://curlship.com
  license:
    name: Proprietary
  description: 'Operations tagged Badge across 2 of this provider''s published API definitions: curlship-com-openapi.json, curlship-com-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://curlship.com
  description: Production
tags:
- name: Badge
  description: Dofollow badge verification.
paths:
  /api/verify-badge:
    post:
      tags:
      - Badge
      summary: Verify your badge on demand
      description: 'Immediately re-fetch your listed site and check for a link back to `curlship.com`. This is the manual trigger for the otherwise-hourly badge cron — use it right after adding the badge. A qualifying link (not `rel=nofollow/ugc/sponsored`) upgrades a free listing to `dofollow`. Paid tiers are always `dofollow`. Rate limit: 30/hour per IP.'
      operationId: verifyBadge
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - url
              properties:
                url:
                  type: string
                  format: uri
                  example: https://yourapp.com
            example:
              url: https://yourapp.com
      responses:
        '200':
          description: Check completed
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    example: true
                  has_badge:
                    type: boolean
                  dofollow:
                    type: boolean
                  tier:
                    type: string
                  listing:
                    type: object
                    properties:
                      id:
                        type: integer
                        example: 2076
                      url:
                        type: string
                        format: uri
                        example: https://yourapp.com/
                      link:
                        type: string
                        format: uri
                        example: https://yourapp.com/?ref=curlship
                        description: The URL a visitor is actually sent to — url plus tracking params. Free listings carry ?ref=curlship; paid ones carry the owner's utm_*/ref params (set via POST /api/edit-request tracking).
                      tier:
                        type: string
                        enum:
                        - free
                        - bronze
                        - silver
                        - gold
                        - platinum
                      title:
                        type:
                        - string
                        - 'null'
                        example: YourApp — ship faster
                      description:
                        type:
                        - string
                        - 'null'
                      image:
                        type:
                        - string
                        - 'null'
                        format: uri
                      has_badge:
                        type: boolean
                        description: True if a dofollow link back to curlship.com was found on the site.
                      created_at:
                        type:
                        - string
                        - 'null'
                        format: date-time
                        example: '2026-10-12T09:04:05Z'
                        description: When the listing was created, UTC.
                      category:
                        oneOf:
                        - type: object
                          properties:
                            slug:
                              type: string
                              example: developer-tools
                              description: The leaf slug when classified that deep, else the group.
                            name:
                              type: string
                              example: Developer tools
                            group:
                              type: string
                              example: developer-tools
                              description: The top-level group this listing belongs to.
                        - type: 'null'
                        description: The listing's category, or null while it is unclassified. Set by the off-server classifier — submitters cannot choose one.
                  message:
                    type: string
              example:
                ok: true
                has_badge: true
                dofollow: true
                tier: free
                message: Badge verified — your link is now dofollow. 🎉
        '400':
          description: Missing or malformed url
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: No listing found for that URL
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: 'Rate limit exceeded. Retry-After is the wait in seconds. RateLimit-Policy names the window that was hit. RateLimit repeats that name with r=0 and t equal to Retry-After. Windows: submit 10 per 3600s, verify 30 per 3600s, checkout 30 per 3600s, edit 5 per 3600s per IP, edit-listing 3 per 86400s per listing.'
          headers:
            Retry-After:
              description: Seconds to wait before retrying.
              schema:
                type: integer
                minimum: 1
            RateLimit-Policy:
              description: 'The window that was hit. Example: "submit";q=10;w=3600.'
              schema:
                type: string
            RateLimit:
              description: 'Remaining quota. Example: "submit";r=0;t=120.'
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: https://curlship.com
      description: Production
components:
  schemas:
    Error:
      type: object
      properties:
        ok:
          type: boolean
          example: false
        error:
          type: string
          example: url is required and must start with http
      required:
      - ok
      - error
externalDocs:
  description: Badge guide & instant verify
  url: https://curlship.com/badge
x-refined-from:
- curlship-com-openapi.json
- curlship-com-openapi.yml