craterview-ai · Schema

ModelInfo

ImageProcessingAIPhotoRestorationUpscalingAPIMultimedia

Properties

Name Type Description
id string The model's id: the value to send as `model` when submitting a job. Not for showing to a person; that is `title`.
revision string Which revision of this model is in service. It changes when the same input gives a different result, so record it if you need to explain an old result later. The model's id stays the same.
title string What to call this model when talking to a person.
description string What this model is for and when to choose it over another, for a program or an agent choosing a model. Show `help` to a person.
help string What this model does, in one short line for a person choosing it in an app. For when to choose it over another model, read `description`.
accepts array Media types this model takes. Anything else is refused at submit.
produces object The media type a result is usually returned as. Advisory: a model that preserves the format you sent returns what you sent. Null on a model that returns no file at all — its answer is in the job's `re
coming_soon boolean This model is announced but not yet in service: submitting to it is refused with 409 until it launches. Everything else here is final.
video_coming_soon boolean Video for this model is announced but not yet on, so `accepts` names no video type yet. False on a model that will not take video at all.
tenure string fixed is a lasting part of the service. comet is a utility or fun experiment.
test_model boolean A model for testing an integration rather than for use: it is free unless a job asks to be charged, through a parameter it declares, and it returns a result of the right size without improving the pic
max_input_bytes integer The largest file this model accepts, in bytes. Declared when you ask for somewhere to upload, and enforced by storage on the way in.
max_frame_megapixels object Largest single frame this key may send, in megapixels. A still is one frame, so it applies to images too. Null when nothing bounds it, which no model publishes today.
max_frames object Most frames this key may send in one job. A still is one frame. Divide by reference_fps for the equivalent in seconds. Null when nothing bounds it.
max_output_megapixels object Largest single frame this key may receive back, in megapixels. For a model that enlarges, the result is the image or region you send at the size you ask for — so this and `max_input_megapixels`, and n
max_input_megapixels object Largest part of an image this key may have worked on in one job, in megapixels: the region you name with `roi`, or the whole image. A job over it is refused, whatever size of result it asks for: name
max_input_megapixels_by_binning object Largest part of an image this key may have worked on in one job at each `binning` value, in megapixels, keyed by the value: 2x2, 3x3 and so on. Each is `max_output_megapixels` divided by the square of
min_input_side integer Smallest side, in pixels, of the part of an image a job works on: the region you name with `roi`, or the whole image. A job with a shorter side fails as `input_too_small` and costs nothing: send a lar
credits_per_image integer Credits charged for one still image. Charged when the job succeeds; a job that does not succeed costs nothing.
credits_per_video_second object Credits charged per second of video, or null for a model that takes stills only. Charged when the job succeeds, from the clip's length.
reference_fps number The frame rate `max_frames` is expressed in, so a limit in frames can be read as a limit in seconds.
params_schema object JSON Schema for this model's `params`: everything a job may be given, with defaults and permitted values. Validate against it rather than discovering a refusal.
params_order array Every name in `params_schema`'s `properties`, in the order a form presents them. JSON does not order an object's keys, so read the order from here.
params_help object A short line for a person choosing each setting in a form, keyed by parameter name: every parameter in `params_schema` that one control can set. Show it under the control. For what a value may be and
result_schema object JSON Schema for the fields a finished job of this model states under `result`, beside any files it links. Empty for a model whose whole answer is its file.
community boolean Whether your key's work goes to the community queue, which runs on shared, free capacity and can wait longer at busy times. False while the account is paying, by holding credit or by a subscription wi
image_only_params array Parameters that apply to stills only. A video job that sets one is refused, so a client offering video hides them.
View JSON Schema on GitHub

JSON Schema

craterview-ai-model-info-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/craterview-ai/json-schema/craterview-ai-model-info-schema.json",
  "title": "ModelInfo",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/craterview-ai-openapi.json#/components/schemas/ModelInfo",
  "properties": {
    "id": {
      "type": "string",
      "title": "Id",
      "description": "The model's id: the value to send as `model` when submitting a job. Not for showing to a person; that is `title`."
    },
    "revision": {
      "type": "string",
      "title": "Revision",
      "description": "Which revision of this model is in service. It changes when the same input gives a different result, so record it if you need to explain an old result later. The model's id stays the same."
    },
    "title": {
      "type": "string",
      "title": "Title",
      "description": "What to call this model when talking to a person."
    },
    "description": {
      "type": "string",
      "title": "Description",
      "description": "What this model is for and when to choose it over another, for a program or an agent choosing a model. Show `help` to a person."
    },
    "help": {
      "type": "string",
      "title": "Help",
      "description": "What this model does, in one short line for a person choosing it in an app. For when to choose it over another model, read `description`."
    },
    "accepts": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Accepts",
      "description": "Media types this model takes. Anything else is refused at submit."
    },
    "produces": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Produces",
      "description": "The media type a result is usually returned as. Advisory: a model that preserves the format you sent returns what you sent. Null on a model that returns no file at all — its answer is in the job's `result`, and there is nothing to download."
    },
    "coming_soon": {
      "type": "boolean",
      "title": "Coming Soon",
      "description": "This model is announced but not yet in service: submitting to it is refused with 409 until it launches. Everything else here is final.",
      "default": false
    },
    "video_coming_soon": {
      "type": "boolean",
      "title": "Video Coming Soon",
      "description": "Video for this model is announced but not yet on, so `accepts` names no video type yet. False on a model that will not take video at all.",
      "default": false
    },
    "tenure": {
      "type": "string",
      "enum": [
        "fixed",
        "comet"
      ],
      "title": "Tenure",
      "description": "fixed is a lasting part of the service. comet is a utility or fun experiment.",
      "default": "fixed"
    },
    "test_model": {
      "type": "boolean",
      "title": "Test Model",
      "description": "A model for testing an integration rather than for use: it is free unless a job asks to be charged, through a parameter it declares, and it returns a result of the right size without improving the picture. CraterView.ai's apps do not offer it.",
      "default": false
    },
    "max_input_bytes": {
      "type": "integer",
      "title": "Max Input Bytes",
      "description": "The largest file this model accepts, in bytes. Declared when you ask for somewhere to upload, and enforced by storage on the way in."
    },
    "max_frame_megapixels": {
      "anyOf": [
        {
          "type": "number",
          "exclusiveMinimum": 0.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Max Frame Megapixels",
      "description": "Largest single frame this key may send, in megapixels. A still is one frame, so it applies to images too. Null when nothing bounds it, which no model publishes today."
    },
    "max_frames": {
      "anyOf": [
        {
          "type": "number",
          "exclusiveMinimum": 0.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Max Frames",
      "description": "Most frames this key may send in one job. A still is one frame. Divide by reference_fps for the equivalent in seconds. Null when nothing bounds it."
    },
    "max_output_megapixels": {
      "anyOf": [
        {
          "type": "number",
          "exclusiveMinimum": 0.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Max Output Megapixels",
      "description": "Largest single frame this key may receive back, in megapixels. For a model that enlarges, the result is the image or region you send at the size you ask for — so this and `max_input_megapixels`, and not the frame ceiling, decide whether a job is accepted: send a smaller region, or ask for less enlargement. For a model that returns the picture at its own size, the result is the image or region you send. Null when nothing bounds it."
    },
    "max_input_megapixels": {
      "anyOf": [
        {
          "type": "number",
          "exclusiveMinimum": 0.0
        },
        {
          "type": "null"
        }
      ],
      "title": "Max Input Megapixels",
      "description": "Largest part of an image this key may have worked on in one job, in megapixels: the region you name with `roi`, or the whole image. A job over it is refused, whatever size of result it asks for: name a smaller region, or send a smaller image. For a model that enlarges, it is `max_output_megapixels` divided by the square of the largest scale you may ask for, whatever scale you ask for; with `binning`, see `max_input_megapixels_by_binning`. Null when nothing bounds it."
    },
    "max_input_megapixels_by_binning": {
      "anyOf": [
        {
          "additionalProperties": {
            "type": "number",
            "exclusiveMinimum": 0.0
          },
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Max Input Megapixels By Binning",
      "description": "Largest part of an image this key may have worked on in one job at each `binning` value, in megapixels, keyed by the value: 2x2, 3x3 and so on. Each is `max_output_megapixels` divided by the square of the largest scale that binning allows. `max_input_megapixels` applies with binning off. Null for a model that takes no `binning`, or when nothing bounds it."
    },
    "min_input_side": {
      "type": "integer",
      "minimum": 1.0,
      "title": "Min Input Side",
      "description": "Smallest side, in pixels, of the part of an image a job works on: the region you name with `roi`, or the whole image. A job with a shorter side fails as `input_too_small` and costs nothing: send a larger image, or name a larger region."
    },
    "credits_per_image": {
      "type": "integer",
      "title": "Credits Per Image",
      "description": "Credits charged for one still image. Charged when the job succeeds; a job that does not succeed costs nothing."
    },
    "credits_per_video_second": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Credits Per Video Second",
      "description": "Credits charged per second of video, or null for a model that takes stills only. Charged when the job succeeds, from the clip's length."
    },
    "reference_fps": {
      "type": "number",
      "title": "Reference Fps",
      "description": "The frame rate `max_frames` is expressed in, so a limit in frames can be read as a limit in seconds."
    },
    "params_schema": {
      "additionalProperties": true,
      "type": "object",
      "title": "Params Schema",
      "description": "JSON Schema for this model's `params`: everything a job may be given, with defaults and permitted values. Validate against it rather than discovering a refusal."
    },
    "params_order": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Params Order",
      "description": "Every name in `params_schema`'s `properties`, in the order a form presents them. JSON does not order an object's keys, so read the order from here."
    },
    "params_help": {
      "additionalProperties": {
        "type": "string"
      },
      "type": "object",
      "title": "Params Help",
      "description": "A short line for a person choosing each setting in a form, keyed by parameter name: every parameter in `params_schema` that one control can set. Show it under the control. For what a value may be and what may be sent together, read `params_schema`."
    },
    "result_schema": {
      "additionalProperties": true,
      "type": "object",
      "title": "Result Schema",
      "description": "JSON Schema for the fields a finished job of this model states under `result`, beside any files it links. Empty for a model whose whole answer is its file."
    },
    "community": {
      "type": "boolean",
      "title": "Community",
      "description": "Whether your key's work goes to the community queue, which runs on shared, free capacity and can wait longer at busy times. False while the account is paying, by holding credit or by a subscription with work left this period, which puts its work on paid compute that scales with demand. The limits above are the ones that apply on that queue."
    },
    "image_only_params": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Image Only Params",
      "description": "Parameters that apply to stills only. A video job that sets one is refused, so a client offering video hides them."
    }
  },
  "type": "object",
  "required": [
    "id",
    "revision",
    "title",
    "description",
    "help",
    "accepts",
    "produces",
    "max_input_bytes",
    "max_frame_megapixels",
    "max_frames",
    "max_output_megapixels",
    "max_input_megapixels",
    "max_input_megapixels_by_binning",
    "min_input_side",
    "credits_per_image",
    "credits_per_video_second",
    "reference_fps",
    "params_schema",
    "params_order",
    "params_help",
    "result_schema",
    "community",
    "image_only_params"
  ]
}

Work with this as data

Every JSON Schema 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 schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • 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 JSON Schema
curl "https://apis.io/api/v1/json-schemas/craterview-ai-model-info"
All schemas
curl "https://apis.io/api/v1/json-schemas?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.