isGenAI Prompts API

Read supported saved image prompts or request optional reconstruction when available

Operations 1

POST /v1/prompt Read saved image prompts or conditionally reconstruct a prompt #

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/isgenai:isgenai-prompts-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

isgenai-prompts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: isGenAI public checker Prompts API
  version: 1.2.0
  description: 'Importable contract for the public evidence checker, saved-prompt extraction/optional reconstruction, C2PA Content Credentials inspection, the public remote MCP endpoint and the health endpoint. Other endpoints documented on /api are outside this contract. Evidence checks and image quality measurements do not establish human authorship. Saved records can be edited; reconstructed prompts describe a similar result and are not recovered originals. A valid C2PA signature and a trusted signer are reported separately. Response schemas: isgenai.check.v1, isgenai.prompt.v1 and isgenai.c2pa-inspection.v1; the MCP endpoint speaks JSON-RPC 2.0.'
  termsOfService: https://isgenai.com/terms
  contact:
    name: isGenAI
    url: https://isgenai.com/contact
servers:
- url: https://isgenai.com
  description: Public production API
security: []
tags:
- name: Prompts
  description: Read supported saved image prompts or request optional reconstruction when available
paths:
  /v1/prompt:
    post:
      operationId: extractOrReconstructPrompt
      tags:
      - Prompts
      summary: Read saved image prompts or conditionally reconstruct a prompt
      description: Public endpoint; no account or API key required. Set mode=saved_only explicitly for metadata extraction with no model call or reconstruction fallback. The default auto mode can send an image, text or code to a configured model if a saved image prompt is unavailable. Model availability and shared service limits vary; no paid feature, fixed quota or reconstruction availability is promised here. Uploads are sent to isGenAI; this is not browser-local processing. This endpoint returns a prompt directly and does not create a public case or receipt. The /v1/check privacy and public_receipt fields do not apply. Responses may contain private saved text/settings; do not publish them or put them in shared logs. The route may set an HttpOnly session cookie for service-limit handling.
      security: []
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/MultipartPromptInput'
            encoding:
              file:
                contentType: image/png, image/jpeg, image/webp, image/avif
            examples:
              savedOnlyImage:
                summary: Bind file to image bytes; @picture.png is curl syntax, not the HTTP value
                value:
                  file: (binary image bytes)
                  mode: saved_only
          application/json:
            schema:
              $ref: '#/components/schemas/JsonPromptInput'
            examples:
              savedOnlyUrl:
                value:
                  url: https://isgenai.com/examples/saved-details/with-saved-details.png
                  mode: saved_only
              optionalTextReconstruction:
                summary: May return 503 when reconstruction is unavailable
                value:
                  text: A short synthetic example supplied by the caller.
                  mode: auto
      responses:
        '200':
          description: Saved image prompt, or conditional auto reconstruction. Inspect status; reconstructed is not a recovered original.
          headers:
            Cache-Control:
              schema:
                type: string
                enum:
                - no-store
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PromptResponse'
              examples:
                savedShape:
                  summary: Illustrative saved-record response; not a measured extraction
                  value:
                    schema: isgenai.prompt.v1
                    status: saved
                    prompt: A demonstration prompt stored in a controlled image record.
                    note: Found in the file. Saved details can be edited.
                reconstructedShape:
                  summary: Illustrative response shape only; reconstruction availability is not promised
                  value:
                    schema: isgenai.prompt.v1
                    status: reconstructed
                    prompt: Create a similar geometric illustration.
                    note: A prompt for a similar result, not the original.
        '400':
          description: Missing/invalid input or mode; invalid JSON/multipart; unsupported image or URL; saved_only with text/code (image_required); empty or overlong text/code (invalid_text). Unexpected request-processing failures return invalid_request. Unsupported images use HTTP 400, not 415.
          headers:
            Cache-Control:
              schema:
                type: string
                enum:
                - no-store
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PromptError'
        '403':
          description: Cross-site request or disallowed Origin; error.code is invalid_origin. Server/CLI clients do not need an API key.
          headers:
            Cache-Control:
              schema:
                type: string
                enum:
                - no-store
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PromptError'
        '409':
          description: The downloaded image does not match nonempty expected_sha256; error.code is content_changed.
          headers:
            Cache-Control:
              schema:
                type: string
                enum:
                - no-store
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PromptError'
        '413':
          description: JSON body exceeds 131,072 bytes, multipart body exceeds 21,037,056 bytes (too_large), or image bytes exceed 20,971,520 (invalid_size). Use byte limits rather than the legacy human-readable MB wording.
          headers:
            Cache-Control:
              schema:
                type: string
                enum:
                - no-store
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PromptError'
        '422':
          description: saved_only completed without a supported saved prompt. This is absence of a supported record, not proof that the image was not AI-generated. No model fallback occurs.
          headers:
            Cache-Control:
              schema:
                type: string
                enum:
                - no-store
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NoSavedPromptError'
              example:
                error:
                  code: no_saved_prompt
                  message: No supported saved prompt was found in this file.
        '429':
          description: Shared concurrency is full (busy), or optional reconstruction service limits are reached (limit_reached). These are not promised account quotas. Retry-After is supplied by the shared upload limiter, but is not guaranteed on every 429. Stop a batch; do not immediately retry in a loop.
          headers:
            Cache-Control:
              schema:
                type: string
                enum:
                - no-store
            Retry-After:
              description: Optional delay in seconds. Present for the shared upload-capacity response; other 429 branches may omit it.
              schema:
                type: integer
                minimum: 1
                example: 5
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/PromptError'
                - $ref: '#/components/schemas/BusyError'
        '502':
          description: Optional reconstruction provider failed or returned an unusable result; error.code is provider_unavailable. Saved-only extraction does not call that provider.
          headers:
            Cache-Control:
              schema:
                type: string
                enum:
                - no-store
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PromptError'
        '503':
          description: Optional reconstruction is unavailable; error.code is not_configured. This can occur in auto mode after an image has no supported saved prompt or for text/code. Use saved_only for image extraction without a model fallback.
          headers:
            Cache-Control:
              schema:
                type: string
                enum:
                - no-store
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PromptError'
components:
  schemas:
    NoSavedPromptError:
      type: object
      required:
      - error
      description: Normal saved-only absence result. The endpoint returns an HTTP 422 error envelope, not a successful not_found status. The batch CLI translates this into its own not_found row.
      properties:
        error:
          type: object
          required:
          - code
          - message
          properties:
            code:
              type: string
              const: no_saved_prompt
            message:
              type: string
      additionalProperties: false
    ReconstructedPromptResponse:
      type: object
      required:
      - schema
      - status
      - prompt
      - note
      description: Conditional auto-mode result from a configured model. Describes a similar result, not the original prompt, creator, model, hidden settings or seed. Never returned for saved_only.
      properties:
        schema:
          type: string
          const: isgenai.prompt.v1
        prompt:
          type: string
          minLength: 1
          maxLength: 16000
          description: Nonblank prompt text, at most 16,000 UTF-16 code units; not an AI-origin verdict.
        note:
          type: string
        status:
          type: string
          const: reconstructed
      additionalProperties: false
    MultipartPromptInput:
      type: object
      required:
      - file
      description: Upload one nonempty still image. Only file and mode are read from multipart requests; JSON-only URL/text/code inputs are not multipart alternatives. Full multipart body cap is 21,037,056 bytes including boundaries and fields.
      x-maxBodyBytes: 21037056
      properties:
        file:
          type: string
          format: binary
          minLength: 1
          x-maxSizeBytes: 20971520
          description: Still PNG, JPEG, WebP or AVIF bytes; nonempty, at most 20,971,520 bytes (20 MiB), at most 40,000,000 decoded pixels, one page/frame. Invalid, unsupported or multipage images return HTTP 400 unsupported_image. File bytes are uploaded to isGenAI, not processed only in the browser.
        mode:
          type: string
          enum:
          - auto
          - saved_only
          default: auto
          description: saved_only reads supported saved image records without a model call; no record returns HTTP 422. auto first reads image records, then may reconstruct a prompt when configured and within service limits. Reconstruction availability is not guaranteed.
    JsonPromptInput:
      type: object
      description: 'Send one image URL, text or code field. When several fields are strings, URL takes precedence, then code, then text. kind=code also marks a text-field input as code. JSON body cap: 131,072 bytes (128 KiB). saved_only requires an image URL; text/code require auto. An explicit null mode is treated as omitted/auto.'
      x-maxBodyBytes: 131072
      anyOf:
      - required:
        - url
      - required:
        - text
      - required:
        - code
      properties:
        url:
          type: string
          minLength: 1
          description: Direct public HTTP(S) image URL. The fetched resource must have a successful image response and satisfy the same 20 MiB/still-image limits. Private network targets and unsafe requests are rejected; authentication, paywalls and CAPTCHAs are not bypassed.
        text:
          type: string
          minLength: 1
          maxLength: 16000
          description: Nonblank input, at most 16,000 UTF-16 code units including surrounding whitespace. Some Unicode characters use two units. Text/code support auto reconstruction only; saved_only returns HTTP 400 image_required.
        code:
          type: string
          minLength: 1
          maxLength: 16000
          description: Nonblank input, at most 16,000 UTF-16 code units including surrounding whitespace. Some Unicode characters use two units. Text/code support auto reconstruction only; saved_only returns HTTP 400 image_required.
        kind:
          type: string
          enum:
          - text
          - code
          default: text
          description: Optional text/code hint. A string code field always selects code.
        expected_sha256:
          type: string
          description: Optional exact SHA-256 fingerprint for the downloaded URL image bytes. A nonempty value that does not match produces HTTP 409 content_changed. Applies only to JSON URL input; not read from multipart fields.
        mode:
          type:
          - string
          - 'null'
          enum:
          - auto
          - saved_only
          - null
          default: auto
          description: saved_only reads supported saved image records without a model call; no record returns HTTP 422. auto first reads image records, then may reconstruct a prompt when configured and within service limits. Reconstruction availability is not guaranteed.
    PromptError:
      type: object
      required:
      - error
      description: Prompt-route errors have no top-level schema field. Branch on HTTP status and error.code; error.message is human-readable context.
      properties:
        error:
          type: object
          required:
          - code
          - message
          properties:
            code:
              type: string
            message:
              type: string
      additionalProperties: false
    BusyError:
      type: object
      description: Shared concurrency limiter response, without a schema field. Current responses include code=busy; code remains optional for compatibility with historical message-only responses.
      properties:
        error:
          type: object
          properties:
            message:
              type: string
            code:
              type: string
              enum:
              - busy
          required:
          - message
      required:
      - error
    PromptResponse:
      oneOf:
      - $ref: '#/components/schemas/SavedPromptResponse'
      - $ref: '#/components/schemas/ReconstructedPromptResponse'
      discriminator:
        propertyName: status
        mapping:
          saved: '#/components/schemas/SavedPromptResponse'
          reconstructed: '#/components/schemas/ReconstructedPromptResponse'
    SavedPromptResponse:
      type: object
      required:
      - schema
      - status
      - prompt
      - note
      description: Supported saved image records were found. No model reconstruction was called. Saved prompts, model labels and settings can be edited and do not authenticate origin. Keep returned content out of shared logs.
      properties:
        schema:
          type: string
          const: isgenai.prompt.v1
        prompt:
          type: string
          minLength: 1
          maxLength: 16000
          description: Nonblank prompt text, at most 16,000 UTF-16 code units; not an AI-origin verdict.
        note:
          type: string
        status:
          type: string
          const: saved
        negative_prompt:
          type: string
        recorded_model:
          type: string
          description: A model label found in the image record, not a verified model attribution.
        settings:
          $ref: '#/components/schemas/SavedPromptSettings'
      additionalProperties: false
    SavedPromptSettings:
      type: object
      additionalProperties: false
      description: Only settings explicitly recovered from supported saved records. Absent values are omitted, not inferred. Seed is a string to preserve integer precision.
      properties:
        seed:
          type: string
          pattern: ^-?\d{1,20}$
        steps:
          type: integer
          minimum: 1
        sampler:
          type: string
          maxLength: 200
        scheduler:
          type: string
          maxLength: 200
        cfg_scale:
          type: number
        width:
          type: integer
          minimum: 1
        height:
          type: integer
          minimum: 1
        denoise:
          type: number
          minimum: 0
          maximum: 1
externalDocs:
  description: API instructions and interpretation
  url: https://isgenai.com/api
x-mcp:
  endpoint: https://isgenai.com/mcp
  transport: streamable-http
  stateless: true
  authentication: none
  tools:
  - check_text
  - check_url
  - check_image
  - extract_saved_prompt
  - read_content_credentials
  serverCard: https://isgenai.com/.well-known/mcp/server-card.json
  documentation: https://isgenai.com/developers/mcp