{"openapi":"3.1.0","info":{"title":"Table API","version":"1.0.0","description":"Turn data into a ready-to-paste table. Give it JSON — either an array of objects (columns are taken from the keys) or an array of arrays (the first row is the header) — or raw CSV, and get back a clean GitHub-flavoured Markdown table or a monospace ASCII (box-drawn) table with auto-sized columns. Markdown output supports left/center/right column alignment and escapes pipes; the CSV parser is RFC-4180 aware (quoted fields, embedded commas and newlines). Perfect for README and documentation generation, CLI and log output, changelogs, chat bots and pull-request comments. Pure local computation — no key, no third-party service, instant; send large datasets via POST. Live, nothing stored. 3 endpoints. Distinct from CSV parsing/analysis and from Markdown rendering.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/table-api","description":"oanor gateway"}],"tags":[{"name":"Table"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/ascii":{"get":{"operationId":"get_v1_ascii","tags":["Table"],"summary":"Render an ASCII table","description":"","parameters":[{"name":"json","in":"query","required":true,"description":"Array of objects or arrays (or use csv)","schema":{"type":"string"},"example":"[{\"name\":\"Alice\",\"age\":30},{\"name\":\"Bob\",\"age\":25}]"},{"name":"csv","in":"query","required":false,"description":"CSV text (alternative to json)","schema":{"type":"string"}}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"rows":2,"ascii":"+-------+-----+\n| name  | age |\n+-------+-----+\n| Alice | 30  |\n| Bob   | 25  |\n+-------+-----+","columns":2},"meta":{"timestamp":"2026-06-03T01:09:49.628Z","request_id":"aedf3f81-8253-4535-8605-4990d3baea9c"},"status":"ok","message":"Render an ASCII table","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/markdown":{"get":{"operationId":"get_v1_markdown","tags":["Table"],"summary":"Render a Markdown table","description":"","parameters":[{"name":"json","in":"query","required":true,"description":"Array of objects or arrays (or use csv)","schema":{"type":"string"},"example":"[{\"name\":\"Alice\",\"age\":30},{\"name\":\"Bob\",\"age\":25}]"},{"name":"csv","in":"query","required":false,"description":"CSV text (alternative to json)","schema":{"type":"string"}},{"name":"align","in":"query","required":false,"description":"left|center|right","schema":{"type":"string"},"example":"left"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"rows":2,"columns":2,"markdown":"| name | age |\n| :--- | :--- |\n| Alice | 30 |\n| Bob | 25 |"},"meta":{"timestamp":"2026-06-03T01:09:49.729Z","request_id":"cdefa0fc-9ba9-4451-b881-f154aaf8e325"},"status":"ok","message":"Render a Markdown table","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"name":"Table API","notes":"For an array of objects, columns are the union of keys in first-seen order. For an array of arrays, the first row is the header unless you pass `headers`. Send large input via POST.","version":"v1","endpoints":[{"path":"/v1/markdown","params":{"csv":"CSV text","json":"array of objects/arrays, OR","align":"left|center|right (markdown)"},"returns":"a GitHub-flavoured Markdown table"},{"path":"/v1/ascii","params":{"csv":"CSV text","json":"array of objects/arrays, OR"},"returns":"a +---+ box-drawn ASCII table"},{"path":"/v1/meta","params":[],"returns":"this document"}],"description":"Render tabular data as a Markdown table or a monospace ASCII table. Accepts JSON (an array of objects or an array of arrays) or CSV. Pure local, no key."},"meta":{"timestamp":"2026-06-03T01:09:49.822Z","request_id":"92b482d5-a9ae-449f-a80d-612e259de7ec"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":740,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":100,"monthly_call_quota":5900,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":1880,"monthly_call_quota":124000,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":5480,"monthly_call_quota":640000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/table-api"}