{"service_id":"\/v1","name":"Fire AI Pipeline","abstract":"Model-agnostic AI inference pipeline. Mandatory audit trail and token accounting on every call.","version":"1.0.0","covenant_level":0,"acc_ref":null,"planes":{"data":{"description":"Inference and payload exchange.","auth":"Bearer fire_sk_*","endpoints":{"POST \/v1\/chat":{"description":"Submit a chat completion request. Note: for models tagged \"reasoning\"\/\"deep-reasoning\" (see a model's strengths on GET \/v1\/models), Fire silently raises a too-low max_tokens to a per-species floor before calling the provider \u2014 these models spend part of the budget on hidden reasoning before any visible output, and a too-low budget otherwise produces (and bills for) an empty response. Only ever raises, never lowers, your request.","ability":"chat","schema":{"request":{"type":"object","required":["messages"],"properties":{"messages":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string","enum":["user","assistant"]},"content":{"type":"string"}}}},"system_prompt":{"type":"string"},"species_name":{"type":"string","description":"model_species.name \u2014 omit for default"},"temperature":{"type":"number","minimum":0,"maximum":1},"max_tokens":{"type":"integer","minimum":64,"maximum":8192}}},"response":{"type":"object","properties":{"content":{"type":"string"},"model":{"type":"string"},"log_id":{"type":"integer"},"usage":{"type":"object","properties":{"input":{"type":"integer"},"output":{"type":"integer"}}},"meta":{"type":"object","description":"price is always present here \u2014 the customer-facing charged amount. Raw provider cost is never returned by any Fire endpoint.","properties":{"price":{"type":"object","properties":{"usd":{"type":"number"}}},"log_id":{"type":"integer"}}}}}}},"POST \/v1\/chat\/parallel":{"description":"N independent chat requests run concurrently, each with its own model\/system_prompt\/temperature. No synthesis \u2014 see the flows plane below to feed outputs into a further call.","ability":"chat","schema":{"request":{"type":"object","required":["requests"],"properties":{"requests":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"object","description":"same shape as POST \/v1\/chat"}}}},"response":{"type":"object","properties":{"results":{"type":"array","description":"one entry per request, input order, {ok:true,content,model,provider,usage,meta} or {ok:false,error}"}}}}},"POST \/v1\/chat\/stream":{"description":"Server-sent token stream for a single chat request.","ability":"chat"},"POST \/v1\/image":{"description":"Generate images from a text prompt.","ability":"image","schema":{"request":{"type":"object","required":["prompt"],"properties":{"prompt":{"type":"string","maxLength":2000},"species_name":{"type":"string","description":"model_species.name of an image model \u2014 omit for default"},"n":{"type":"integer","minimum":1,"maximum":4,"default":1},"size":{"type":"string","enum":["256x256","512x512","1024x1024","1024x1536","1536x1024"],"default":"1024x1024"}}},"response":{"type":"object","properties":{"images":{"type":"array","items":{"type":"object","properties":{"b64":{"type":"string"},"url":{"type":"string"}}}},"model":{"type":"string"},"provider":{"type":"string"},"meta":{"type":"object","description":"price is always present here \u2014 the customer-facing charged amount. Raw provider cost is never returned by any Fire endpoint.","properties":{"price":{"type":"object","properties":{"usd":{"type":"number"}}},"log_id":{"type":"integer"}}}}}}}}},"workflows":{"description":"Layer 2 \u2014 canned server-side workflows composed from L1 calls. Same auth\/logging\/metering per call. Reference: API.md \u00a7Layer 2.","auth":"Bearer fire_sk_*","endpoints":{"POST \/v1\/workflows\/image":{"ability":"image"},"POST \/v1\/workflows\/article":{"ability":"chat"}}},"service_control":{"description":"Telemetry, diagnostics, rate management. Visible to token holders.","auth":"Bearer fire_sk_*","endpoints":{"GET \/v1\/capabilities":{"description":"This document.","auth":false},"GET \/v1\/status":{"description":"Service health and provider status.","ability":"read"},"GET \/v1\/models":{"description":"All active model deployments. Each entry's capabilities.min_max_tokens (if present) is the floor Fire silently raises max_tokens to for that model \u2014 see \/v1\/chat's note on reasoning models.","ability":"read"},"GET \/v1\/usage":{"description":"Token usage for the authenticated token.","ability":"read"}}},"flows":{"description":"v2 \u2014 data-driven, resumable multi-agent DAG orchestration. A third layer alongside L1 (raw calls, above) and L2 (fixed workflows, below): define an arbitrary sequence of agent calls (parallel fan-out, dependencies, human-in-the-loop pauses) per-request or by saved slug. Every step is billed\/logged like any other Fire call. Execution is always queued \u2014 POST endpoints return 202 immediately, poll GET ...\/runs\/{run} for status. A saved flow definition is public and listed here by default \u2014 mark it private (is_public: false on create\/update) to keep it out of this catalog and un-runnable by any other fire_account. Reference: API.md \u00a7v2 \u2014 Multi-agent flows.","auth":"Bearer fire_sk_* (ability: flow)","endpoints":{"POST \/v2\/flows\/{slug}\/run":{"description":"Preferred. Start a run of a saved flow \u2014 the slug is the endpoint, same shape as L1's POST \/v1\/workflows\/{workflow}. Body: {input, conversation_id?, user_message?}."},"POST \/v2\/flows\/run":{"description":"DEPRECATED for {flow_slug} (use POST \/v2\/flows\/{slug}\/run instead \u2014 this path now returns a Deprecation header). Still the only way to run an unsaved\/ad-hoc {flow:{steps:[...]}} spec."},"GET \/v2\/flows\/runs":{"description":"List the token's own runs, filterable by conversation_id\/status."},"GET \/v2\/flows\/runs\/{run}":{"description":"Poll run + step state. ?verbosity=compact drops per-step output\/context to save bandwidth; run-level output\/error\/cost are never trimmed."},"POST \/v2\/flows\/runs\/{run}\/resume":{"description":"Supply {step_key, human_input} for the step currently gating a human_gate pause."},"GET|POST \/v2\/agent-configs":{"description":"CRUD for reusable, named agent personas (model + temperature + system_prompt) a flow step references by slug."},"GET|PUT|DELETE \/v2\/agent-configs\/{slug}":{"description":"Read\/update\/deactivate one agent config."},"GET|POST \/v2\/flows":{"description":"Catalog of public flows plus your own private ones (CRUD). A flow you create belongs to your token's fire_account; only the owner can edit\/deactivate it."},"GET|PUT|DELETE \/v2\/flows\/{slug}":{"description":"Read (any visible flow)\/update\/deactivate (owner only) one flow definition. Editing spec bumps version; runs already started keep their own snapshot."}},"catalog":[{"slug":"copy-shape","label":"Content Studio: Copy Shape","description":"Hot\/cold\/assimilate\/editor\/final multi-pass rewrite of an existing essay draft against a style guide.","run":"POST \/v2\/flows\/copy-shape\/run"},{"slug":"format-output","label":"Content Studio: Format Output","description":"Final layout\/placement pass \u2014 merges shaped copy, image list, and pre-verified sources into the published format.","run":"POST \/v2\/flows\/format-output\/run"},{"slug":"image-list","label":"Content Studio: Image List","description":"Drafts then expands a list of image-generation-ready prompts for a piece of copy.","run":"POST \/v2\/flows\/image-list\/run"},{"slug":"thesis-check","label":"Content Studio: Thesis Check","description":"Fact-grounds a proposed article thesis\/concept against caller-supplied sources before any copy is written.","run":"POST \/v2\/flows\/thesis-check\/run"},{"slug":"triad","label":"Hot\/Hot\/Cool Triad","description":"Reference example for the v2 flow layer: two hot agents (one agreeable, one contrarian) answer in parallel, a human reviews both before a cool synthesizer produces the final answer. Input: {prompt_package: string}.","run":"POST \/v2\/flows\/triad\/run"}]},"billing":{"description":"Prepaid balances for paying accounts and self-service tier onboarding. Internal (0% markup) tokens are exempt from balance checks.","auth":"Bearer fire_sk_* unless noted","endpoints":{"GET \/v1\/billing\/packs":{"description":"Available credit packs.","auth":false},"GET \/v1\/billing\/balance":{"description":"Current account balance.","ability":"read"},"POST \/v1\/billing\/checkout":{"description":"Create a Stripe Checkout session to top up.","ability":"read"},"POST \/v1\/billing\/tier\/redeem":{"description":"Redeem a JP-issued tier code into a new Fire token \u2014 no auth, the caller has none yet.","auth":false}}},"governance":{"description":"Authority, compliance, emergency stop. RFC 9697 \u00a76.6 governance hooks.","status":"hooks_defined","note":"Governance Control Plane not yet deployed. Endpoints are defined and reserved.","auth":"GCP authority credential (not yet implemented)","endpoints":{"POST \/v1\/admin\/freeze":{"description":"Freeze a token or user account pending investigation.","status":"reserved","schema":{"subject_type":"token|user","subject_id":"string","reason":"string","authority":"string"}},"POST \/v1\/admin\/stop":{"description":"Emergency stop \u2014 level 0 (suspend), 1 (terminate), 2 (halt scope).","status":"reserved","schema":{"level":"0|1|2","scope":"string","reason":"string","issued_by":"string","expires":"ISO8601|null"}}}}},"models":[{"species_name":"claude-sonnet-4-5","display_name":"Claude Sonnet 4.5","family":"anthropic","genus":"claude","strengths":["reasoning","coding","long-context","instruction-following"],"provider":"edenai","is_default":true,"capabilities":{"context_window":200000,"min_max_tokens":1024,"supports_streaming":false}},{"species_name":"codestral-latest","display_name":"Codestral (latest)","family":"mistral","genus":"mistral","strengths":["coding","code-completion"],"provider":"edenai","is_default":false,"capabilities":{"context_window":32000,"supports_streaming":false}},{"species_name":"gemini-2.5-pro","display_name":"Gemini 2.5 Pro","family":"google","genus":"gemini","strengths":["long-context","vision","reasoning"],"provider":"edenai","is_default":false,"capabilities":{"context_window":200000,"min_max_tokens":1024,"supports_streaming":false}},{"species_name":"gpt-5-mini","display_name":"GPT-5 Mini","family":"openai","genus":"gpt","strengths":["reasoning","low-cost"],"provider":"edenai","is_default":false,"capabilities":{"context_window":128000,"min_max_tokens":1024,"supports_streaming":false}},{"species_name":"venice-sd35","display_name":"Venice SD 3.5","family":"stabilityai","genus":"stable-diffusion-3","strengths":["versatile","uncensored-capable"],"provider":"venice","is_default":false,"capabilities":{"modality":"image"}},{"species_name":"sdxl","display_name":"Stable Diffusion XL","family":"stabilityai","genus":"stable-diffusion","strengths":["low-cost","speed","versatile"],"provider":"edenai","is_default":false,"capabilities":{"modality":"image"}},{"species_name":"gpt-image-1","display_name":"GPT Image 1","family":"openai","genus":"dall-e","strengths":["prompt-adherence","text-in-image","editorial"],"provider":"edenai","is_default":false,"capabilities":{"modality":"image"}},{"species_name":"flux-2-pro","display_name":"Flux 2 Pro","family":"blackforestlabs","genus":"flux","strengths":["artistic","quality"],"provider":"venice","is_default":false,"capabilities":{"modality":"image"}},{"species_name":"deepseek-chat","display_name":"DeepSeek Chat","family":"deepseek","genus":"deepseek","strengths":["low-cost","general-purpose"],"provider":"edenai","is_default":false,"capabilities":{"context_window":128000,"supports_streaming":false}},{"species_name":"deepseek-reasoner","display_name":"DeepSeek Reasoner","family":"deepseek","genus":"deepseek","strengths":["reasoning","math","low-cost"],"provider":"edenai","is_default":false,"capabilities":{"context_window":128000,"min_max_tokens":1024,"supports_streaming":false}},{"species_name":"az-gpt-4o","display_name":"GPT-4o (Azure)","family":"microsoft","genus":"gpt-azure","strengths":["vision","azure"],"provider":"edenai","is_default":false,"capabilities":{"context_window":128000,"supports_streaming":false}},{"species_name":"imagen-4","display_name":"Imagen 4","family":"google","genus":"imagen","strengths":["photorealism","quality"],"provider":"edenai","is_default":false,"capabilities":{"modality":"image"}},{"species_name":"gpt-image-1-5","display_name":"GPT Image 1.5","family":"openai","genus":"dall-e","strengths":["prompt-adherence","quality","editorial"],"provider":"edenai","is_default":false,"capabilities":{"modality":"image"}},{"species_name":"claude-haiku-4-5","display_name":"Claude Haiku 4.5","family":"anthropic","genus":"claude","strengths":["speed","low-cost","classification","compliance-checks"],"provider":"edenai","is_default":false,"capabilities":{"context_window":200000,"supports_streaming":false}},{"species_name":"lustify-v7","display_name":"Lustify v7","family":"lustify","genus":"lustify","strengths":["nsfw","quality"],"provider":"venice","is_default":false,"capabilities":{"modality":"image"}},{"species_name":"lustify-sdxl","display_name":"Lustify SDXL","family":"lustify","genus":"lustify","strengths":["nsfw","low-cost"],"provider":"venice","is_default":false,"capabilities":{"modality":"image"}},{"species_name":"wai-Illustrious","display_name":"WAI Illustrious (Anime)","family":"illustrious","genus":"wai","strengths":["anime","illustration","nsfw-capable"],"provider":"venice","is_default":false,"capabilities":{"modality":"image"}},{"species_name":"z-image-turbo","display_name":"Z-Image Turbo","family":"alibaba","genus":"z-image","strengths":["speed","low-cost"],"provider":"venice","is_default":false,"capabilities":{"modality":"image"}},{"species_name":"gpt-4o-mini","display_name":"GPT-4o Mini","family":"openai","genus":"gpt","strengths":["speed","low-cost","vision"],"provider":"edenai","is_default":false,"capabilities":{"context_window":128000,"supports_streaming":false}},{"species_name":"gpt-4.1-2025-04-14","display_name":"GPT-4.1 (2025-04-14)","family":"openai","genus":"gpt","strengths":["coding","long-context","instruction-following"],"provider":"edenai","is_default":false,"capabilities":{"context_window":128000,"supports_streaming":false}},{"species_name":"claude-opus-4-5","display_name":"Claude Opus 4.5","family":"anthropic","genus":"claude","strengths":["deep-reasoning","agentic","coding","long-context"],"provider":"edenai","is_default":false,"capabilities":{"context_window":200000,"min_max_tokens":1024,"supports_streaming":false}},{"species_name":"flux-2-max","display_name":"Flux 2 Max","family":"blackforestlabs","genus":"flux","strengths":["quality","artistic","photorealism"],"provider":"venice","is_default":false,"capabilities":{"modality":"image"}},{"species_name":"seedream-v4","display_name":"Seedream V4.5","family":"bytedance","genus":"seedream","strengths":["aesthetic","stylized"],"provider":"venice","is_default":false,"capabilities":{"modality":"image"}},{"species_name":"venice-uncensored","display_name":"Venice Uncensored 1.2","family":"venice","genus":"venice-uncensored","strengths":["uncensored","creative-writing"],"provider":"venice","is_default":false,"capabilities":{"modality":"text","context_window":32000,"supports_vision":true,"supports_streaming":true}},{"species_name":"gpt-3.5-turbo","display_name":"GPT-3.5 Turbo","family":"openai","genus":"gpt","strengths":["low-cost","legacy"],"provider":"edenai","is_default":false,"capabilities":{"context_window":32000,"supports_streaming":false}},{"species_name":"o4-mini","display_name":"o4 Mini","family":"openai","genus":"o-series","strengths":["reasoning","math"],"provider":"edenai","is_default":false,"capabilities":{"context_window":128000,"min_max_tokens":1024,"supports_streaming":false}},{"species_name":"gemini-2.5-flash","display_name":"Gemini 2.5 Flash","family":"google","genus":"gemini","strengths":["speed","low-cost","long-context"],"provider":"edenai","is_default":false,"capabilities":{"context_window":200000,"supports_streaming":false}},{"species_name":"mistral-large-latest","display_name":"Mistral Large (latest)","family":"mistral","genus":"mistral","strengths":["multilingual","general-purpose"],"provider":"edenai","is_default":false,"capabilities":{"context_window":32000,"supports_streaming":false}},{"species_name":"o3-mini","display_name":"o3 Mini","family":"openai","genus":"o-series","strengths":["reasoning","math","low-cost"],"provider":"edenai","is_default":false,"capabilities":{"context_window":128000,"min_max_tokens":1024,"supports_streaming":false}},{"species_name":"gpt-4o","display_name":"GPT-4o","family":"openai","genus":"gpt","strengths":["vision","general-purpose","tool-use"],"provider":"edenai","is_default":false,"capabilities":{"context_window":128000,"supports_streaming":false}},{"species_name":"qwen-image","display_name":"Qwen Image","family":"alibaba","genus":"qwen-image","strengths":["illustration","stylized"],"provider":"venice","is_default":false,"capabilities":{"modality":"image"}}],"account_setup":{"url":"https:\/\/test1.prosaga.net\/portal","auth":"Google OAuth","note":"Self-service signup, token minting, and Stripe-hosted credit top-up. No programmatic equivalent exists by design \u2014 Stripe requires a browser for card collection."},"cost_model":{"unit":"token","currency":"USD","note":"Per-call token usage logged. Rate depends on model and provider."},"guarantees":{"logging":"mandatory","token_accounting":"mandatory","bypass_possible":false}}