{"name":"ai-sidecars","description":"Multi-tenant gateway of stateless sidecar services, billed per call in units.","auth":{"scheme":"Bearer","header":"Authorization: Bearer <API_KEY>","get_a_key":{"method":"POST","url":"https://app.ai-sidecars.com/signup","note":"Programmatic self-signup: returns a trial API key once. No human needed."}},"plans":[{"id":"plan_trial","name":"trial","price_eur":0,"quota_units":1000,"routes":["doc2md","xrechnung","describe","extract"]},{"id":"plan_starter","name":"starter","price_eur":29,"quota_units":10000,"routes":["doc2md","xrechnung","describe","extract","crawl","pdf","render"]},{"id":"plan_pro","name":"pro","price_eur":199,"quota_units":100000,"routes":["doc2md","xrechnung","describe","extract","crawl","transcribe","pdf","webtask","render"]}],"quota_headers":{"402":"quota exhausted (X-Quota-Reset tells you when it resets)","429":"rate limited (Retry-After seconds)","401":"missing/unknown key","403":"key lacks the scope for this route / customer suspended"},"services":[{"route":"doc2md","title":"Document to Markdown","base_url":"https://doc2md.ai-sidecars.com","units_per_call":3,"min_plan":"trial","summary":"Convert an uploaded document (pdf, docx, pptx, xlsx, html, ...) to Markdown.","endpoints":[{"method":"POST","path":"/doc2md","body":"multipart/form-data with a single `file` field"}],"skill_url":"https://app.ai-sidecars.com/skills/doc2md"},{"route":"describe","title":"Describe an image (Vision)","base_url":"https://describe.ai-sidecars.com","units_per_call":5,"min_plan":"trial","summary":"Upload an image and get a textual description back. Pass an optional `prompt` to steer it into visual Q&A (OCR a scan, read a screenshot, explain a chart, caption a photo).","endpoints":[{"method":"POST","path":"/describe","body":"multipart/form-data: `file` (image) + optional `prompt` (free text)"}],"skill_url":"https://app.ai-sidecars.com/skills/describe"},{"route":"extract","title":"Extract structured data from an image (Vision)","base_url":"https://extract.ai-sidecars.com","units_per_call":6,"min_plan":"trial","summary":"Upload an image plus a target `schema` (the fields you want) and get back a JSON object. Reads receipts, invoices, business cards, forms — pixels to structured data.","endpoints":[{"method":"POST","path":"/extract","body":"multipart/form-data: `file` (image) + `schema` (JSON or field list) + optional `instructions`"}],"skill_url":"https://app.ai-sidecars.com/skills/extract"},{"route":"xrechnung","title":"XRechnung / EN 16931 invoice","base_url":"https://xrechnung.ai-sidecars.com","units_per_call":2,"min_plan":"trial","summary":"Build a validated EN 16931 / XRechnung 3.0 UBL XML from a JSON invoice.","endpoints":[{"method":"POST","path":"/xrechnung","body":"Invoice JSON (see schema below)"},{"method":"POST","path":"/xrechnung/validate","body":"same Invoice JSON; returns validation only"}],"skill_url":"https://app.ai-sidecars.com/skills/xrechnung"},{"route":"crawl","title":"Search + crawl + rerank","base_url":"https://crawl.ai-sidecars.com","units_per_call":5,"min_plan":"starter","summary":"One call: web search (SearXNG) → fetch a candidate pool → extract text → split into passages → rerank semantically with a cross-encoder → return the top pages, each with its most relevant passage.","endpoints":[{"method":"POST","path":"/crawl","body":{"query":"search string (min 2)","top_k":"1..10, default 3"}}],"skill_url":"https://app.ai-sidecars.com/skills/crawl"},{"route":"transcribe","title":"Audio/video transcription with timestamps (async)","base_url":"https://transcribe.ai-sidecars.com","units_per_call":10,"min_plan":"pro","summary":"Transcribe audio/video to timestamped text. Every segment carries start/end in seconds, so you can jump to the spot in the media. An optional LLM proofreading pass fixes misheard words, names and punctuation — it may only rewrite a segment's text, never its timing. Asynchronous: submit → 202 + job id → poll for the result.","endpoints":[{"method":"POST","path":"/transcribe","body":"multipart: `file` + optional `language` (ISO code, default auto), `proofread` (bool, default true), `words` (bool, default false), `glossary` (names/terms, comma-separated) → 202 {job_id}"},{"method":"POST","path":"/transcribe/url","body":{"url":"https://...","language":"auto","proofread":true,"words":false,"glossary":""}},{"method":"GET","path":"/transcribe/{job_id}","note":"poll status: queued|processing|done|failed"},{"method":"GET","path":"/transcribe/{job_id}/result","note":"the transcript once status=done; `?format=json|srt|vtt|text` (default json)"}],"skill_url":"https://app.ai-sidecars.com/skills/transcribe"},{"route":"pdf","title":"PDF factory (Gotenberg)","base_url":"https://pdf.ai-sidecars.com","units_per_call":8,"min_plan":"starter","summary":"Render HTML/URL/Markdown to PDF/A, or build a ZUGFeRD invoice PDF with embedded XML.","endpoints":[{"method":"POST","path":"/pdf/html","body":{"html":"<h1>..</h1>","pdfa":"PDF/A-3b"}},{"method":"POST","path":"/pdf/url","body":{"url":"https://...","pdfa":"PDF/A-3b"}},{"method":"POST","path":"/pdf/markdown","body":{"markdown":"# ..","pdfa":"PDF/A-3b"}},{"method":"POST","path":"/pdf/zugferd","body":"Invoice JSON (as /xrechnung) → PDF/A-3 with embedded XRechnung XML"}],"skill_url":"https://app.ai-sidecars.com/skills/pdf"},{"route":"webtask","title":"Web task agent (async)","base_url":"https://webtask.ai-sidecars.com","units_per_call":25,"min_plan":"pro","summary":"Give a web task in natural language — a real browser solves it (navigate, click, type, read) and returns the result. Asks back when a decision is yours. Asynchronous: submit → 202 + job id → poll.","endpoints":[{"method":"POST","path":"/webtask","body":{"aufgabe":"goal incl. success criterion (min 10 chars)","domain":"hostname the session is confined to, e.g. 'example.com'","max_schritte":"1..40, default 25","sprache":"language of questions and result, default 'de'","vision":"true to let the driver take screenshots (canvas, image-only buttons); default false"}},{"method":"GET","path":"/webtask/{job_id}","note":"poll status: queued|processing|needs_input|done|error — free, never charged"},{"method":"POST","path":"/webtask/{job_id}/answer","body":{"antwort":"your reply to the question in `frage`"}},{"method":"GET","path":"/webtask/{job_id}/result","note":"the result once status=done — free, never charged"}],"skill_url":"https://app.ai-sidecars.com/skills/webtask"},{"route":"render","title":"Remotion video renderer (async)","base_url":"https://render.ai-sidecars.com","units_per_call":25,"min_plan":"starter","summary":"Submit a Remotion project as a file map and get a rendered mp4 (or gif) back. Asynchronous: submit → 202 + job id → poll.","endpoints":[{"method":"POST","path":"/render","body":{"files":"{\"src/index.ts\": \"...\", \"package.json\": \"...\"} — the whole project as path→content, max 400 files / 25 MB","composition":"id of the composition to render (required)","entry":"entry file, default 'src/index.ts'","inputProps":"props object passed into the composition, default {}","codec":"'h264' (mp4, default) or 'gif'"}},{"method":"GET","path":"/status/{job_id}","note":"poll state: queued|installing|rendering|done|failed — free, never charged"},{"method":"GET","path":"/result/{job_id}","note":"the video bytes once state=done (409 while it is not) — free, never charged"}],"skill_url":"https://app.ai-sidecars.com/skills/render"}],"skills_index":"https://app.ai-sidecars.com/skills","llms_txt":"https://app.ai-sidecars.com/llms.txt"}