crispy-sh API

crispy-sh API as documented publicly: 4 operations. Contract generated from the documentation by API Evangelist (2026-10-30); not the provider's own document.

Operations 4

POST /api/mcp POST /api/mcp #
POST /api/v1/campaigns/$CAMPAIGN_ID/outreach/pause POST /api/v1/campaigns/$CAMPAIGN_ID/outreach/pause #
GET /api/v1/campaigns/$CAMPAIGN_ID/state GET /api/v1/campaigns/$CAMPAIGN_ID/state #
POST /api/v1/subscriptions POST /api/v1/subscriptions #

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/crispy-sh:crispy-sh-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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

crispy-sh-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: crispy-sh API
  version: '2026-10-30'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-10-30: 4 operation(s) read from 7 public documentation page(s) (each operation
    names its page in x-source). This is not the provider''s published contract; crispy-sh has published no machine-readable contract that the
    pipeline could find. Engine: anthropic.'
  x-evidence-tiers:
    code-example: 4
    documentation: 0
    pages-with-code: 6
    pages-read: 7
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-10-30'
  x-generator: generate-contract-from-docs.py
  x-engine: anthropic
  x-sources:
  - https://crispy.sh/docs/reference
  - https://crispy.sh/docs/integrations/invitation-not-accepted-after
  - https://crispy.sh/docs/integrations
  - https://crispy.sh/docs/integrations/contact-first-inbound-message
  - https://crispy.sh/docs/integrations/company-contact-replied
  - https://crispy.sh/docs/integrations/lemlist-migration
  - https://crispy.sh/docs/integrations/dynamic-campaign-pause
paths:
  /api/mcp:
    post:
      operationId: post_api_mcp
      tags:
      - Api
      summary: POST /api/mcp
      x-source: https://crispy.sh/docs/reference
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiMcpRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://crispy.sh/api/mcp  -H \"Authorization: Bearer YOUR_API_KEY\"  -H \"Content-Type: application/json\"  -d\
          \ '{\n \"jsonrpc\": \"2.0\",\n \"id\": 1,\n \"method\": \"tools/call\",\n \"params\": {\n \"name\": \"search_people\",\n \"arguments\"\
          : {\n \"keyword\": \"VP Engineering\",\n \"limit\": 5\n }\n }\n }' Documented tools (166) Your API key's permission scope determines\
          \ which tools can run. Every tool accepts an option"
  /api/v1/campaigns/$CAMPAIGN_ID/outreach/pause:
    post:
      operationId: post_api_v1_campaigns_CAMPAIGN_ID_outreach_pause
      tags:
      - Api
      summary: POST /api/v1/campaigns/$CAMPAIGN_ID/outreach/pause
      x-source: https://crispy.sh/docs/integrations/dynamic-campaign-pause
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: 'curl -sS -X POST  -H "Authorization: Bearer $API_KEY"  "https://crispy.sh/api/v1/campaigns/$CAMPAIGN_ID/outreach/pause"

          fi Add to crontab: 0 9 * * * /usr/local/bin/pause-cold-campaign.sh runs daily at 09:00. The n8n version Same logic, no shell box needed:
          1. Schedule Trigger → daily at 09:00 UTC

          2. HTTP Request (GET) → https://crispy.sh/api/v1/campaigns/{{$env.CAMPAIGN_ID}}/state

          3. Code (JavaScr'
  /api/v1/campaigns/$CAMPAIGN_ID/state:
    get:
      operationId: get_api_v1_campaigns_CAMPAIGN_ID_state
      tags:
      - Api
      summary: GET /api/v1/campaigns/$CAMPAIGN_ID/state
      x-source: https://crispy.sh/docs/integrations/dynamic-campaign-pause
      responses:
        '200':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -sS  -H \"Authorization: Bearer $API_KEY\"  \"https://crispy.sh/api/v1/campaigns/$CAMPAIGN_ID/state\")\nSENT=$(echo \"\
          $STATE\" | jq -r '.state.data.funnel.sent //0')\nRATE=$(echo \"$STATE\" | jq -r '.state.data.funnel.accept_rate //0')\nif [ \"$SENT\"\
          \ -lt 30 ]; then\n echo \"Skipping: only $SENT invites sent so far (need >=30 for a stable rate)\"\n exit 0\nfi"
  /api/v1/subscriptions:
    post:
      operationId: post_api_v1_subscriptions
      tags:
      - Api
      summary: POST /api/v1/subscriptions
      x-source: https://crispy.sh/docs/integrations/invitation-not-accepted-after
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiV1SubscriptionsRequest'
      responses:
        '201':
          description: Success (status as documented)
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -X POST https://crispy.sh/api/v1/subscriptions  -H \"Authorization: Bearer crispy_your_api_key\"  -H \"Content-Type: application/json\"\
          \  -d '{\n \"event\": \"invitation.not_accepted_after\",\n \"target_url\": \"https://hook.us2.make.com/your-make-webhook-id\",\n \"\
          filter\": {\n \"is_first\": true,\n \"match\": {\n \"custom_attrs.industry\": \"SaaS\"\n }\n }\n }' Send a test invitation from Crispy\
          \ to fire a sample delivery."
components:
  schemas:
    PostApiMcpRequest:
      type: object
      properties:
        jsonrpc:
          type: string
        id:
          type: integer
        method:
          type: string
        params:
          type: object
          properties:
            name:
              type: string
            arguments:
              type: object
              properties:
                keyword:
                  type: string
                limit:
                  type: integer
    PostApiV1SubscriptionsRequest:
      type: object
      properties:
        event:
          type: string
        target_url:
          type: string
        filter:
          type: object
          properties:
            is_first:
              type: boolean
            match:
              type: object
              properties:
                custom_attrs.industry:
                  type: string
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
security:
- bearer: []
tags:
- name: Api