Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@

### Added

- GPT Image 2.6 Flare and Sunburst: `output_format` `png` or `gif`, the GIF limits and how a
GIF is billed (one price per GIF) in `billing.md`, with a pointer from `run.md`.
- Token-billed image models (`-token` IDs): how they are charged (reserved estimate,
settled tokens), the GPT `quality` setting, and that they run as async tasks only,
in `billing.md`, with a pointer from `run.md`.
Expand Down
11 changes: 11 additions & 0 deletions references/billing.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,5 +42,16 @@ a call cost. The main Skill is <https://beatapi.io/skill.md>.
- Async only: run them like any image task and poll until `succeeded`. There is
no synchronous `/v1/images/generations` for them.

## GIF images (GPT Image 2.6)

- `gpt-image-2.6-flare` and `gpt-image-2.6-sunburst` take `output_format`
`png` (default) or `gif`, and have no `background`. A PNG is billed per
image by resolution tier (1K, 2K or 4K); a GIF is billed one price per GIF,
whatever its size. Prices: <https://beatapi.io/pricing>.
- A GIF is a short animation made from the prompt alone: send no `images`,
`size`, `resolution` or `aspect_ratio`. The model picks its size (about
300–1024 px) and frame count; `frame_count` and `frame_duration_ms` are not
fields.

Balance too low (402) or a rejected key (401): <https://beatapi.io/skill-refs/errors.md>.
Connecting a host: <https://beatapi.io/skill-refs/setup.md>.
2 changes: 2 additions & 0 deletions references/run.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ Over MCP, pass the same JSON to `capabilities_run`.
the user's choice.
`-token` image models are async only and billed by tokens:
<https://beatapi.io/skill-refs/billing.md>.
GPT Image 2.6 can return a GIF (`output_format` `gif`, prompt only):
<https://beatapi.io/skill-refs/billing.md>.
- **Text models** run the same way: `{"reference":"model:<id>","input":{"input":"<prompt>"}}`
returns `output_text`; `usage` token counts may include upstream system prompts
and are not comparable across models. **Decision model** JEV:
Expand Down
11 changes: 11 additions & 0 deletions skills/beatapi-video/references/billing.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,5 +42,16 @@ a call cost. The main Skill is <https://beatapi.io/skill.md>.
- Async only: run them like any image task and poll until `succeeded`. There is
no synchronous `/v1/images/generations` for them.

## GIF images (GPT Image 2.6)

- `gpt-image-2.6-flare` and `gpt-image-2.6-sunburst` take `output_format`
`png` (default) or `gif`, and have no `background`. A PNG is billed per
image by resolution tier (1K, 2K or 4K); a GIF is billed one price per GIF,
whatever its size. Prices: <https://beatapi.io/pricing>.
- A GIF is a short animation made from the prompt alone: send no `images`,
`size`, `resolution` or `aspect_ratio`. The model picks its size (about
300–1024 px) and frame count; `frame_count` and `frame_duration_ms` are not
fields.

Balance too low (402) or a rejected key (401): <https://beatapi.io/skill-refs/errors.md>.
Connecting a host: <https://beatapi.io/skill-refs/setup.md>.
2 changes: 2 additions & 0 deletions skills/beatapi-video/references/run.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ Over MCP, pass the same JSON to `capabilities_run`.
the user's choice.
`-token` image models are async only and billed by tokens:
<https://beatapi.io/skill-refs/billing.md>.
GPT Image 2.6 can return a GIF (`output_format` `gif`, prompt only):
<https://beatapi.io/skill-refs/billing.md>.
- **Text models** run the same way: `{"reference":"model:<id>","input":{"input":"<prompt>"}}`
returns `output_text`; `usage` token counts may include upstream system prompts
and are not comparable across models. **Decision model** JEV:
Expand Down
3 changes: 3 additions & 0 deletions test/setup-walkthrough.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,9 @@ test('key handling is explicit about format and secrecy', () => {
assert.match(billing, /ends in `-token`/);
assert.match(billing, /no synchronous `\/v1\/images\/generations`/);
assert.match(page('run'), /`-token` image models are async only/);
assert.match(billing, /billed one price per GIF/);
assert.match(billing, /`output_format`\n `png` \(default\) or `gif`/);
assert.match(page('run'), /GPT Image 2\.6 can return a GIF/);
});

test('errors branch on retryable and name the key failures', () => {
Expand Down
Loading