Capy Inc. Verification API

Server-side CAPTCHA answer verification.

OpenAPI Specification

capy-inc-verification-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Lemin Captcha Verification API
  version: v1
  summary: Server-side verification of Lemin gamified (cropped) CAPTCHA answers.
  description: The Lemin Captcha (Capy Inc.) verification API. After a website visitor completes a Lemin gamified puzzle CAPTCHA in the browser, the front end receives an encrypted `answer` and a `challenge_id`. The site's back end submits those, together with its account `private_key`, to this endpoint to confirm the puzzle was solved by a human before trusting the request. Verification must be performed server-side so the `private_key` is never exposed to the client. This description was generated by the API Evangelist enrichment pipeline from Lemin's public developer documentation (https://help.leminnow.com/knowledge/developers-guide); Lemin does not publish an OpenAPI definition.
  contact:
    name: Lemin / Capy Inc.
    url: https://help.leminnow.com/knowledge/developers-guide
  x-apievangelist-generated: true
servers:
- url: https://api.leminnow.com
  description: Lemin Captcha production API
tags:
- name: Verification
  description: Server-side CAPTCHA answer verification.
paths:
  /captcha/v1/cropped/validate:
    post:
      operationId: validateCroppedCaptcha
      summary: Verify a Lemin cropped-captcha answer
      description: Validate the encrypted answer a visitor produced for a Lemin cropped (gamified puzzle) CAPTCHA challenge. Call this from your back end only; the `private_key` must never be sent from the browser. The endpoint always responds with HTTP 200 and a JSON body whose `success` boolean carries the verification outcome; failures include a machine-readable `code` and human-readable `message`.
      tags:
      - Verification
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ValidateRequest'
            examples:
              default:
                summary: Verification request
                value:
                  private_key: f902f944-7009-4764-97a3-c7bab9b5fe85
                  challenge_id: 854374ce-99d7-4721-81f4-8acfc460356d
                  answer: 0xax76x0xax6sx0x0x6sx0x0x6ix0x0x68x0x0x5ux0x0x5kx0xax5kx0xax5ax0xax50x0xax4mx0xax4cx
      responses:
        '200':
          description: Verification result. Returned for both successful and failed verifications; inspect the `success` field.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateResponse'
              examples:
                success:
                  summary: Answer accepted
                  value:
                    success: true
                    message: null
                    code: null
                incorrect_answer:
                  summary: Answer rejected
                  value:
                    success: false
                    message: Incorrect Answer
                    code: incorrect_answer
                invalid_private_key:
                  summary: Bad account key
                  value:
                    success: false
                    message: Invalid private_key
                    code: invalid_private_key
components:
  schemas:
    ValidateRequest:
      type: object
      required:
      - private_key
      - challenge_id
      - answer
      properties:
        private_key:
          type: string
          format: uuid
          description: Your account verification (secret) key from the Lemin Dashboard. Server-side only — never expose to the browser.
        challenge_id:
          type: string
          format: uuid
          description: Identifier for the specific CAPTCHA challenge instance the visitor solved.
        answer:
          type: string
          description: The encrypted visitor response returned by the client-side widget.
    ValidateResponse:
      type: object
      required:
      - success
      properties:
        success:
          type: boolean
          description: Whether the CAPTCHA answer verified successfully.
        message:
          type:
          - string
          - 'null'
          description: Human-readable description of the failure, or null on success.
        code:
          type:
          - string
          - 'null'
          description: Machine-readable failure identifier, or null on success. One of incorrect_answer, invalid_parameters, invalid_challenge_id, invalid_private_key, challenge_is_not_active, invalid_cropped_captcha.
          enum:
          - incorrect_answer
          - invalid_parameters
          - invalid_challenge_id
          - invalid_private_key
          - challenge_is_not_active
          - invalid_cropped_captcha
          - null