{"uid":"cap_-8qvJby5HoWeJw9xjkbPv","slug":"tanod-docs-xlsx-build-e8dcc747","name":"Tanod Docs XLSX Build","description":"Documents: DOCX template fill, Office to PDF, any file to Markdown, PDF to Word, OCR, PDF pipeline.","url":"https://docs.tanod.dev/v1/docs/xlsx-build?utm_source=zero.xyz","method":"POST","headers":{},"bodySchema":{"type":"object","properties":{"output":{"enum":["base64","url"],"type":"string","default":"base64","description":"base64 (default): the file comes back inline as base64. url: the file is stored for 24 hours and the reply carries a download link (url, expires_at, bytes, content_type, sha256) instead of the base64, which keeps the file out of your context window."},"sheets":{"type":"array","items":{"type":"object","required":["name","rows"],"properties":{"name":{"type":"string","maxLength":31,"minLength":1},"rows":{"type":"array","items":{"anyOf":[{"type":"array","items":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"null"}]}}]},"maxItems":1048575,"description":"Array rows (values by position) or object rows (values by header). A value is a string, number, boolean or null (an empty cell)."},"columns":{"anyOf":[{"type":"array","items":{"type":"object","required":["header"],"properties":{"type":{"anyOf":[{"enum":["string","number","integer","date","datetime","boolean","currency","percent"],"type":"string"},{"type":"null"}],"default":null,"description":"string, number, integer, date, datetime, boolean, currency or percent. Sets the cell type and number format; a value that does not fit is a 422. Without it the type follows each JSON value."},"width":{"anyOf":[{"type":"number","maximum":255,"exclusiveMinimum":0},{"type":"null"}],"default":null,"description":"Column width in characters; default: fitted to the content."},"format":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"default":null,"description":"Custom Excel number format (for example \"€#,##0.00\") instead of the type's default."},"header":{"type":"string","maxLength":32767,"minLength":1,"description":"Header text (also the key that picks the value when rows are objects)."}},"additionalProperties":false},"maxItems":16384},{"type":"null"}],"default":null,"description":"Typed columns. Omit them and object rows give the headers from their keys (first-seen order); array rows then have no header row."},"autofilter":{"type":"boolean","default":true,"description":"Filter buttons on the header row."},"freeze_header":{"type":"boolean","default":true,"description":"Freeze the header row."}},"additionalProperties":false},"maxItems":20,"minItems":1,"description":"The sheets, in order: 1-20, each with a unique name, optional typed columns and rows (at most 50,000 cells in all)."},"filename":{"anyOf":[{"type":"string","maxLength":100,"minLength":1},{"type":"null"}],"default":null,"description":"Name of the returned file (default workbook.xlsx; .xlsx is added when missing; only letters, digits, space, dot, dash and underscore are kept)."}}},"responseSchema":{"type":"json","example":{"file":{"name":"sales-q3.xlsx","bytes":5100,"data_base64":"UEsDBBQAAAAIAAAA... (trimmed: 6,800 base64 characters in the reply)","content_type":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},"rows":2,"cells":15,"sheets":1,"operation":"xlsx-build","output_bytes":5100,"sheet_summary":[{"name":"Sales","rows":2,"cells":15,"columns":5}],"formula_like_strings":0}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.005","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.005/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.005","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.005","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_BS1-DSAOVQntg0sFR0_rL","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.005","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Builds a structured Excel (.xlsx) spreadsheet from JSON data, supporting typed columns, custom formatting, and multiple sheets, returning the file as base64 or a download URL.","exampleAgentPrompt":"Build me an Excel spreadsheet with two sheets — one called 'Sales' with columns for Product (string), Units (integer), Revenue (currency), and Sale Date (date), and one called 'Summary' with totals — and give me back a download URL instead of the raw file.","exampleUseCases":[{"title":"Generate monthly financial report","prompt":"Create an Excel file called sales-q3.xlsx with a sheet named 'Q3 Revenue' — columns should be Region (string), Sales Rep (string), Amount (currency formatted as $#,##0.00), and Close Date (date) — here's the data as a JSON array. Return a download URL so I can share it."},{"title":"Export database query results to Excel","prompt":"Take these query results and build an xlsx spreadsheet with a sheet named 'Users' — columns are ID (integer), Name (string), Email (string), Signup Date (datetime), and Active (boolean) — I want the file back as base64 so I can attach it directly."},{"title":"Build multi-sheet inventory workbook","prompt":"Make a multi-sheet Excel workbook: one sheet called 'Inventory' with columns SKU (string), Description (string), Quantity (integer), Unit Cost (currency), and another sheet called 'Low Stock' with just SKU and Quantity. Return a download link that lasts 24 hours."}],"resultDescription":"Returns a JSON object containing the generated .xlsx file either as a base64-encoded data string or a temporary download URL (valid 24 hours), along with metadata: file name, byte size, content type, SHA256 hash, total row count, cell count, sheet count, and a per-sheet summary of rows, cells, and columns.","failureModes":["422 if a cell value does not match the declared column type (e.g. text in a number column)","422 if row count exceeds Excel's 1,048,575 row limit per sheet","422 if sheet name exceeds 31 characters or is empty","400 if required fields (name, rows) are missing from a sheet definition","Malformed column format strings may produce unexpected cell formatting","Large datasets with many sheets may increase response latency"],"whenToPreferThis":"Choose this endpoint when you need to programmatically generate a fully structured, typed Excel (.xlsx) file from JSON data — especially when you need typed columns (currency, date, percent), custom number formats, multiple named sheets, or want the file returned as base64 or a hosted URL. Prefer this over generic CSV export when recipients need native Excel formatting, formulas-ready structure, or column-width control.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-13T12:46:12.776Z","isFirstParty":false,"canonicalSlug":"tanod-docs-xlsx-build-e8dcc747"}