# ASCII Glyph Video Renderer

> ASCII Glyph Video Renderer is a paid API for AI agents from eg-pie-zero-ascii-glyph-video.hf.space, paid per call via MPP, $0.30/call, status unknown (last checked 2026-09-15).

Converts a source MP4 into a Speakeasy-style ASCII glyph animation where each frame cell is rendered as a single monospace character with luminance-driven opacity, returning a signed download URL for the output MP4.

## Facts

- Endpoint: POST https://eg-pie-zero-ascii-glyph-video.hf.space/v1/ascii-glyph-video
- Price: $0.30/call
- Payment: MPP
- Status: unknown
- Last checked: 2026-09-15
- Activations on Zero: 0
- Provider: eg-pie-zero-ascii-glyph-video.hf.space
- Website: https://eg-pie-zero-ascii-glyph-video.hf.space
- Canonical page: https://www.zero.xyz/c/eg-pie-zero-ascii-glyph-video-hf-space-ascii-glyph-video-renderer-0249fc17
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_dhNDd4A3W4Q45zLt9g4JC

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability eg-pie-zero-ascii-glyph-video-hf-space-ascii-glyph-video-renderer-0249fc17 -d '<json body>'
```

Example prompt: Take the mp4 at https://example.com/brand-hero.mp4 and render it as an ASCII glyph animation using the '0' character, with a dark background (#0c0c0e), glyph color #d8d8d8, cell size 7, and trim it to the first 30 seconds — then give me the download link.

## When to prefer this

Choose this endpoint when you need to stylize a short-form video (up to 60 seconds) as a monospace ASCII glyph animation — especially for brand videos, hero loops, presentation stingers, or deck backdrops with a Zero/Speakeasy aesthetic. It is the right choice when the output must remain a properly encoded MP4 (not a GIF or image sequence) and when luminance-driven character opacity is the desired visual style. Prefer this over image-based ASCII converters when motion fidelity from the source footage must be preserved frame-by-frame.

## Known failure modes

- Source URL is not publicly accessible or returns non-200 — server cannot fetch the MP4
- Source file exceeds 100 MB — rejected before rendering begins
- Source duration exceeds 60 seconds server-side cap — trimmed or rejected
- Invalid hex color format for fg/bg — parameter validation error
- Cell size or maxWidth outside allowed range — 400 validation error
- Download URL expired after 24 hours — token no longer valid for retrieval
- Source URL points to a non-MP4 format — decoding failure

## How this service works

Fetches the source mp4 from `url`, decodes each frame, and re-emits an mp4 where every visible cell is a single monospace glyph with alpha proportional to source luminance. Returns a signed 24h download URL for the composited mp4.

## Output

Returns a JSON object containing a signed 24-hour download URL for the composited ASCII glyph MP4, a unique glyphId, output video dimensions (width, height), frame count, fps, duration in seconds, file size in bytes, render time in milliseconds, and a tokenExpiresAt timestamp indicating when the download link expires.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "url"
 ],
 "properties": {
  "bg": {
   "type": "string",
   "default": "#0c0c0e",
   "description": "Background colour as `#hex` or `r,g,b`, or the literal `transparent` (output stays yuv420p but glyph opacity is premultiplied against black)."
  },
  "fg": {
   "type": "string",
   "default": "#d8d8d8",
   "description": "Glyph colour as `#hex` or `r,g,b`."
  },
  "fps": {
   "type": [
    "integer",
    "null"
   ],
   "maximum": 60,
   "minimum": 1,
   "description": "Override output frame rate. Omit or null to keep the source fps."
  },
  "url": {
   "type": "string",
   "format": "uri",
   "description": "Publicly fetchable http(s) URL to the source mp4. Max 100 MB."
  },
  "cell": {
   "type": "integer",
   "default": 7,
   "maximum": 40,
   "minimum": 3,
   "description": "Pixels per glyph cell. Smaller = denser detail, more expensive to render."
  },
  "glyph": {
   "type": "string",
   "default": "0",
   "maxLength": 1,
   "minLength": 1,
   "description": "The single character painted in each cell. Default `0` matches the Zero brand."
  },
  "maxWidth": {
   "type": "integer",
   "default": 1280,
   "maximum": 1920,
   "minimum": 240,
   "description": "Downscale the source to this width if larger (aspect preserved). Snaps to a whole-cell multiple."
  },
  "threshold": {
   "type": "number",
   "default": 0.13,
   "maximum": 1,
   "minimum": 0,
   "description": "Skip any cell whose luminance is below this. Lower = more dense output."
  },
  "maxDurationSec": {
   "type": "number",
   "default": 30,
   "maximum": 60,
   "minimum": 0.5,
   "description": "Trim the source to this duration (from the beginning). Hard-capped at 60 s server-side."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "glyphId",
  "downloadUrl",
  "durationSec",
  "bytes",
  "frames",
  "width",
  "height",
  "fps",
  "tokenExpiresAt"
 ],
 "properties": {
  "fps": {
   "type": "number"
  },
  "bytes": {
   "type": "integer"
  },
  "width": {
   "type": "integer"
  },
  "frames": {
   "type": "integer"
  },
  "height": {
   "type": "integer"
  },
  "glyphId": {
   "type": "string"
  },
  "renderMs": {
   "type": "integer"
  },
  "downloadUrl": {
   "type": "string",
   "format": "uri"
  },
  "durationSec": {
   "type": "number"
  },
  "tokenExpiresAt": {
   "type": "string",
   "format": "date-time"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/eg-pie-zero-ascii-glyph-video-hf-space-ascii-glyph-video-renderer-0249fc17/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from eg-pie-zero-ascii-glyph-video.hf.space](https://www.zero.xyz/host/eg-pie-zero-ascii-glyph-video.hf.space/llms.txt)
