poof-bg · Schema

Job

A video background removal job, as returned with 202 by POST /remove and by GET /jobs/{id}.

CompanyAPIBackgroundRemovalImageProcessingVideoProcessing

Properties

Name Type Description
id string Job ID, prefixed with job_
status string Job state. queued and processing are transient; completed and failed are terminal.
progress number Fraction of the video processed so far, 0 to 1
created_at string When the job was accepted
started_at stringnull When processing began; null while queued
completed_at stringnull When the job reached completed or failed; null until then
duration_seconds number Source video duration in seconds
fps number Source frame rate
width integer Source video width in pixels
height integer Source video height in pixels
frames integer Number of frames in the source video
credits integer Credits charged for this job (5 per second of source video, rounded up; 10 per second above 30 fps). Animated GIF input is billed at 5 credits per second whatever its frame rate. Refunded automaticall
format string Requested output format
channels string Requested output channels
status_url string URL of the job; GET it to poll for progress
result_url stringnull Direct download URL of the result on the Poof CDN (https://cdn.poof.bg/...). Needs no API key; anyone with the link can download the file until expires_at. Served with Content-Disposition: attachment;
expires_at stringnull When the result is deleted, 24 hours after completion; null until the job is completed. After this time result_url stops working and the job returns 404 job_not_found.
error objectnull Set when status is failed, null otherwise
stats objectnull Processing statistics, set once the job is completed and null otherwise. output_width, output_height and processing_seconds are guaranteed (the output is capped at 4096 px on the longest side (4K), or
View JSON Schema on GitHub

JSON Schema

poof-bg-job-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/poof-bg/json-schema/poof-bg-job-schema.json",
  "title": "Job",
  "description": "A video background removal job, as returned with 202 by POST /remove and by GET /jobs/{id}.",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/poof-bg-openapi.json#/components/schemas/Job",
  "type": "object",
  "required": [
    "id",
    "status",
    "progress",
    "created_at",
    "started_at",
    "completed_at",
    "duration_seconds",
    "fps",
    "width",
    "height",
    "frames",
    "credits",
    "format",
    "channels",
    "status_url",
    "result_url",
    "expires_at",
    "error",
    "stats"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Job ID, prefixed with job_"
    },
    "status": {
      "type": "string",
      "enum": [
        "queued",
        "processing",
        "completed",
        "failed"
      ],
      "description": "Job state. queued and processing are transient; completed and failed are terminal."
    },
    "progress": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "description": "Fraction of the video processed so far, 0 to 1"
    },
    "created_at": {
      "type": "string",
      "format": "date-time",
      "description": "When the job was accepted"
    },
    "started_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time",
      "description": "When processing began; null while queued"
    },
    "completed_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time",
      "description": "When the job reached completed or failed; null until then"
    },
    "duration_seconds": {
      "type": "number",
      "description": "Source video duration in seconds"
    },
    "fps": {
      "type": "number",
      "description": "Source frame rate"
    },
    "width": {
      "type": "integer",
      "description": "Source video width in pixels"
    },
    "height": {
      "type": "integer",
      "description": "Source video height in pixels"
    },
    "frames": {
      "type": "integer",
      "description": "Number of frames in the source video"
    },
    "credits": {
      "type": "integer",
      "description": "Credits charged for this job (5 per second of source video, rounded up; 10 per second above 30 fps). Animated GIF input is billed at 5 credits per second whatever its frame rate. Refunded automatically if the job fails."
    },
    "format": {
      "type": "string",
      "enum": [
        "webm",
        "mov",
        "mp4",
        "gif"
      ],
      "description": "Requested output format"
    },
    "channels": {
      "type": "string",
      "enum": [
        "rgba",
        "rgb",
        "alpha"
      ],
      "description": "Requested output channels"
    },
    "status_url": {
      "type": "string",
      "format": "uri",
      "description": "URL of the job; GET it to poll for progress"
    },
    "result_url": {
      "type": [
        "string",
        "null"
      ],
      "format": "uri",
      "description": "Direct download URL of the result on the Poof CDN (https://cdn.poof.bg/...). Needs no API key; anyone with the link can download the file until expires_at. Served with Content-Disposition: attachment; filename=result.<ext>. Null until the job is completed."
    },
    "expires_at": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time",
      "description": "When the result is deleted, 24 hours after completion; null until the job is completed. After this time result_url stops working and the job returns 404 job_not_found."
    },
    "error": {
      "type": [
        "object",
        "null"
      ],
      "description": "Set when status is failed, null otherwise",
      "required": [
        "code",
        "message"
      ],
      "properties": {
        "code": {
          "type": "string",
          "description": "Machine-readable error code"
        },
        "message": {
          "type": "string",
          "description": "Human-readable description of the failure"
        }
      }
    },
    "stats": {
      "type": [
        "object",
        "null"
      ],
      "additionalProperties": true,
      "description": "Processing statistics, set once the job is completed and null otherwise. output_width, output_height and processing_seconds are guaranteed (the output is capped at 4096 px on the longest side (4K), or smaller with size; width and height above are the source dimensions). Other keys are informational and may change.",
      "properties": {
        "output_width": {
          "type": "integer",
          "description": "Output width in pixels"
        },
        "output_height": {
          "type": "integer",
          "description": "Output height in pixels"
        },
        "processing_seconds": {
          "type": "number",
          "description": "Wall-clock processing time, from started_at to completed_at"
        }
      }
    }
  }
}

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/poof-bg-job"
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.