Apply cell and named-range edits to an
Apply cell and named-range edits to an .xlsx, recalculate it with a real spreadsheet engine, and return the modified workbook alongside a dependency-impact, error, stale-cache, unsupported-function, and invariant audit
50000 (raw units)
price
3
calls / 30d
1
unique payers
2026-09-11
updated
Provider
sheets.api.williamrobinson.dev · discovered, not yet claimed by its owner
Payment (x402 accepts[])
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0x26026370fe8b2bb17af9092a17691c76519366da",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "50000",
"maxTimeoutSeconds": 300
}
]Output schema
{
"bazaar": {
"info": {
"input": {
"body": {
"edits": [
{
"target": {
"cell": "B2",
"sheet": "Model"
},
"value": 0.08
},
{
"formula": "=B3-B4",
"target": {
"cell": "B5",
"sheet": "Model"
}
}
],
"invariants": [
{
"id": "revenue-meets-target",
"kind": "equals",
"left": {
"cell": "B3",
"sheet": "Model"
},
"right": {
"cell": "B4",
"sheet": "Model"
},
"tolerance": 0.01
}
],
"watch": [
{
"cell": "B5",
"sheet": "Model"
}
],
"workbook": "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"
},
"bodyType": "json",
"method": "POST",
"type": "http"
},
"output": {
"example": {
"artifacts": [
{
"href": "https://sheets.api.williamrobinson.dev/v1/sheets/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/modified.xlsx",
"mediaType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"name": "modified.xlsx",
"sha256": "3aa67f14cafe1cb644e374eacb86537e08949d8a3dd23f620d58c0536521d00a",
"sizeBytes": 5380
},
{
"href": "https://sheets.api.williamrobinson.dev/v1/sheets/artifacts/0123456789abcdef0123456789abcdef0123456789abcdef/report.json",
"mediaType": "application/json",
"name": "report.json",
"sha256": "567adee51e080c135f54670735b19c8624276d9b08465db1d76a2dd2e12b024a",
"sizeBytes": 1969
}
],
"edits": [
{
"after": {
"cell": "B2",
"sheet": "Model",
"value": 0.08
},
"before": {
"cell": "B2",
"sheet": "Model",
"value": 0.05
},
"resolved": {
"cell": "B2",
"sheet": "Model"
},
"target": {
"cell": "B2",
"sheet": "Model"
}
},
{
"after": {
"cell": "B5",
"formula": "=B3-B4",
"sheet": "Model",
"value": 0
},
"before": {
"cell": "B5",
"sheet": "Model",
"value": null
},
"resolved": {
"cell": "B5",
"sheet": "Model"
},
"target": {
"cell": "B5",
"sheet": "Model"
}
}
],
"errors": {
"afterCount": 0,
"beforeCount": 0,
"introduced": [],
"resolved": []
},
"expiresAt": "2026-01-04T03:04:05.000Z",
"impact": {
"changed": [
{
"after": {
"value": 1080
},
"before": {
"value": 1050
},
"cell": "B3",
"formula": "=B1*(1+B2)",
"sheet": "Model"
}
],
"changedCount": 1
},
"invariants": [
{
"detail": "|1080.0 - 1080.0| = 0.0 <= 0.01",
"id": "revenue-meets-target",
"observed": {
"left": 1080,
"right": 1080
},
"status": "passed"
}
],
"limitations": [
"Dates are reported as their underlying serial number; no calendar conversion is performed.",
"Boolean results are only reported as true booleans for cells LibreOffice Calc marks with its native boolean format (TRUE()/FALSE()); other formulas that evaluate to a logical result (for example comparison formulas) are reported as 0/1 numbers.",
"VBA macros are never executed and are dropped from the output workbook.",
"External links are never refreshed; the worker container has no network access.",
"Functions LibreOffice Calc does not implement (for example LAMBDA) surface as #NAME? errors and are listed under unsupportedFunctions."
],
"staleCache": {
"checked": true,
"mismatchCount": 0,
"mismatches": []
},
"status": "passed",
"tools": {
"calc": "LibreOffice 26.8.0"
},
"truncated": false,
"unsupportedFunctions": [],
"warnings": [],
"watch": [
{
"cell": "B5",
"formula": "=B3-B4",
"sheet": "Model",
"value": 0
}
],
"workbook": {
"externalLinks": [],
"formulaCells": 1,
"hasMacros": false,
"namedRanges": [],
"sheets": [
"Model"
]
}
},
"type": "json"
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"$defs": {
"ref": {
"additionalProperties": false,
"properties": {
"cell": {
"description": "A1-style cell reference. This pattern is a superset of the real Calc grid; the API additionally enforces columns A-XFD (1-16384) and rows 1-1048576, which a regex alone cannot express.",
"pattern": "^[A-Z]{1,3}[1-9][0-9]{0,6}$",
"type": "string"
},
"sheet": {
"maxLength": 31,
"minLength": 1,
"pattern": "^[^\\[\\]:*?/\\\\]{1,31}$",
"type": "string"
}
},
"required": [
"sheet",
"cell"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"edits": {
"default": [],
"items": {
"additionalProperties": false,
"oneOf": [
{
"properties": {
"value": true
},
"required": [
"value"
]
},
{
"properties": {
"formula": true
},
"required": [
"formula"
]
}
],
"properties": {
"formula": {
"description": "Excel A1 syntax, e.g. \"=SUM(Model!B2:B9)\".",
"maxLength": 8192,
"pattern": "^=",
"type": "string"
},
"target": {
"oneOf": [
{
"additionalProperties": false,
"properties": {
"cell": {
"description": "A1-style cell reference. This pattern is a superset of the real Calc grid; the API additionally enforces columns A-XFD (1-16384) and rows 1-1048576, which a regex alone cannot express.",
"pattern": "^[A-Z]{1,3}[1-9][0-9]{0,6}$",
"type": "string"
},
"sheet": {
"maxLength": 31,
"minLength": 1,
"pattern": "^[^\\[\\]:*?/\\\\]{1,31}$",
"type": "string"
}
},
"required": [
"sheet",
"cell"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"name": {
"pattern": "^[A-Za-z_\\\\][A-Za-z0-9_.]{0,254}$",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
}
]
},
"value": {
"anyOf": [
{
"type": "number"
},
{
"maxLength": 32768,
"type": "string"
},
{
"type": "boolean"
},
{
"type": "null"
}
]
}
},
"required": [
"target"
],
"type": "object"
},
"maxItems": 200,
"type": "array"
},
"invariants": {
"default": [],
"items": {
"oneOf": [
{
"additionalProperties": false,
"properties": {
"id": {
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"type": "string"
},
"kind": {
"const": "equals"
},
"left": {
"$ref": "#/properties/input/properties/body/$defs/ref"
},
"right": {
"$ref": "#/properties/input/properties/body/$defs/ref"
},
"tolerance": {
"minimum": 0,
"type": "number"
}
},
"required": [
"id",
"kind",
"left",
"right",
"tolerance"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"cell": {
"$ref": "#/properties/input/properties/body/$defs/ref"
},
"id": {
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"type": "string"
},
"kind": {
"const": "range"
},
"max": {
"type": "number"
},
"min": {
"type": "number"
}
},
"required": [
"id",
"kind",
"cell"
],
"type": "object"
}
]
},
"maxItems": 50,
"type": "array"
},
"watch": {
"default": [],
"items": {
"$ref": "#/properties/input/properties/body/$defs/ref"
},
"maxItems": 200,
"type": "array"
},
"workbook": {
"description": "Base64 .xlsx (OOXML zip), decoded size at most 2097152 bytes. Macros are never executed; external links are never refreshed.",
"maxLength": 2796204,
"minLength": 4,
"pattern": "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$",
"type": "string"
}
},
"required": [
"workbook"
],
"type": "object"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"$defs": {
"change": {
"additionalProperties": false,
"properties": {
"after": {
"additionalProperties": false,
"properties": {
"error": {
"$ref": "#/properties/output/properties/example/$defs/error"
},
"value": {
"$ref": "#/properties/output/properties/example/$defs/scalar"
}
},
"required": [
"value"
],
"type": "object"
},
"before": {
"additionalProperties": false,
"properties": {
"error": {
"$ref": "#/properties/output/properties/example/$defs/error"
},
"value": {
"$ref": "#/properties/output/properties/example/$defs/scalar"
}
},
"required": [
"value"
],
"type": "object"
},
"cell": {
"type": "string"
},
"formula": {
"type": "string"
},
"sheet": {
"type": "string"
}
},
"required": [
"sheet",
"cell",
"before",
"after"
],
"type": "object"
},
"error": {
"anyOf": [
{
"enum": [
"#DIV/0!",
"#NAME?",
"#REF!",
"#VALUE!",
"#N/A",
"#NUM!",
"#NULL!"
],
"type": "string"
},
{
"pattern": "^Err:[0-9]+$",
"type": "string"
}
]
},
"ref": {
"additionalProperties": false,
"properties": {
"cell": {
"description": "A1-style cell reference. This pattern is a superset of the real Calc grid; the API additionally enforces columns A-XFD (1-16384) and rows 1-1048576, which a regex alone cannot express.",
"pattern": "^[A-Z]{1,3}[1-9][0-9]{0,6}$",
"type": "string"
},
"sheet": {
"maxLength": 31,
"minLength": 1,
"pattern": "^[^\\[\\]:*?/\\\\]{1,31}$",
"type": "string"
}
},
"required": [
"sheet",
"cell"
],
"type": "object"
},
"scalar": {
"anyOf": [
{
"type": "number"
},
{
"maxLength": 32768,
"type": "string"
},
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"snapshot": {
"additionalProperties": false,
"properties": {
"cell": {
"type": "string"
},
"error": {
"$ref": "#/properties/output/properties/example/$defs/error"
},
"formula": {
"type": "string"
},
"sheet": {
"type": "string"
},
"value": {
"$ref": "#/properties/output/properties/example/$defs/scalar"
}
},
"required": [
"sheet",
"cell",
"value"
],
"type": "object"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"artifacts": {
"items": {
"additionalProperties": false,
"properties": {
"href": {
"format": "uri",
"type": "string"
},
"mediaType": {
"maxLength": 128,
"minLength": 1,
"type": "string"
},
"name": {
"enum": [
"modified.xlsx",
"report.json"
],
"type": "string"
},
"sha256": {
"pattern": "^[a-f0-9]{64}$",
"type": "string"
},
"sizeBytes": {
"minimum": 0,
"type": "integer"
}
},
"required": [
"name",
"mediaType",
"sizeBytes",
"sha256",
"href"
],
"type": "object"
},
"maxItems": 2,
"type": "array"
},
"edits": {
"items": {
"additionalProperties": false,
"properties": {
"after": {
"$ref": "#/properties/output/properties/example/$defs/snapshot"
},
"before": {
"$ref": "#/properties/output/properties/example/$defs/snapshot"
},
"resolved": {
"$ref": "#/properties/output/properties/example/$defs/ref"
},
"target": {
"oneOf": [
{
"additionalProperties": false,
"properties": {
"cell": {
"description": "A1-style cell reference. This pattern is a superset of the real Calc grid; the API additionally enforces columns A-XFD (1-16384) and rows 1-1048576, which a regex alone cannot express.",
"pattern": "^[A-Z]{1,3}[1-9][0-9]{0,6}$",
"type": "string"
},
"sheet": {
"maxLength": 31,
"minLength": 1,
"pattern": "^[^\\[\\]:*?/\\\\]{1,31}$",
"type": "string"
}
},
"required": [
"sheet",
"cell"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"name": {
"pattern": "^[A-Za-z_\\\\][A-Za-z0-9_.]{0,254}$",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
}
]
}
},
"required": [
"target",
"resolved",
"before",
"after"
],
"type": "object"
},
"maxItems": 200,
"type": "array"
},
"errors": {
"additionalProperties": false,
"properties": {
"afterCount": {
"minimum": 0,
"type": "integer"
},
"beforeCount": {
"minimum": 0,
"type": "integer"
},
"introduced": {
"items": {
"$ref": "#/properties/output/properties/example/$defs/snapshot"
},
"maxItems": 100,
"type": "array"
},
"resolved": {
"items": {
"$ref": "#/properties/output/properties/example/$defs/snapshot"
},
"maxItems": 100,
"type": "array"
}
},
"required": [
"beforeCount",
"afterCount",
"introduced",
"resolved"
],
"type": "object"
},
"expiresAt": {
"format": "date-time",
"type": "string"
},
"impact": {
"additionalProperties": false,
"properties": {
"changed": {
"items": {
"$ref": "#/properties/output/properties/example/$defs/change"
},
"maxItems": 100,
"type": "array"
},
"changedCount": {
"minimum": 0,
"type": "integer"
}
},
"required": [
"changedCount",
"changed"
],
"type": "object"
},
"invariants": {
"items": {
"additionalProperties": false,
"properties": {
"detail": {
"maxLength": 4096,
"type": "string"
},
"id": {
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"type": "string"
},
"observed": {
"additionalProperties": {
"$ref": "#/properties/output/properties/example/$defs/scalar"
},
"type": "object"
},
"status": {
"enum": [
"passed",
"failed",
"not_checked"
],
"type": "string"
}
},
"required": [
"id",
"status",
"detail"
],
"type": "object"
},
"maxItems": 50,
"type": "array"
},
"limitations": {
"items": {
"maxLength": 4096,
"type": "string"
},
"maxItems": 16,
"type": "array"
},
"staleCache": {
"additionalProperties": false,
"properties": {
"checked": {
"type": "boolean"
},
"mismatchCount": {
"minimum": 0,
"type": "integer"
},
"mismatches": {
"items": {
"$ref": "#/properties/output/properties/example/$defs/change"
},
"maxItems": 100,
"type": "array"
}
},
"required": [
"checked",
"mismatchCount",
"mismatches"
],
"type": "object"
},
"status": {
"enum": [
"passed",
"failed"
],
"type": "string"
},
"tools": {
"additionalProperties": false,
"properties": {
"calc": {
"type": "string"
}
},
"required": [
"calc"
],
"type": "object"
},
"truncated": {
"type": "boolean"
},
"unsupportedFunctions": {
"items": {
"additionalProperties": false,
"properties": {
"cells": {
"items": {
"$ref": "#/properties/output/properties/example/$defs/ref"
},
"type": "array"
},
"name": {
"type": "string"
}
},
"required": [
"name",
"cells"
],
"type": "object"
},
"maxItems": 100,
"type": "array"
},
"warnings": {
"items": {
"maxLength": 4096,
"type": "string"
},
"maxItems": 32,
"type": "array"
},
"watch": {
"items": {
"$ref": "#/properties/output/properties/example/$defs/snapshot"
},
"maxItems": 200,
"type": "array"
},
"workbook": {
"additionalProperties": false,
"properties": {
"externalLinks": {
"items": {
"type": "string"
},
"type": "array"
},
"formulaCells": {
"minimum": 0,
"type": "integer"
},
"hasMacros": {
"type": "boolean"
},
"namedRanges": {
"items": {
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"refersTo": {
"type": "string"
}
},
"required": [
"name",
"refersTo"
],
"type": "object"
},
"type": "array"
},
"sheets": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"sheets",
"formulaCells",
"namedRanges",
"hasMacros",
"externalLinks"
],
"type": "object"
}
},
"required": [
"status",
"tools",
"workbook",
"staleCache",
"edits",
"impact",
"errors",
"unsupportedFunctions",
"invariants",
"watch",
"warnings",
"limitations",
"truncated",
"expiresAt",
"artifacts"
],
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}
},
"builder-code": {
"info": {
"s": [
"cdp_sdk_server"
]
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"a": {
"description": "App builder code",
"pattern": "^[a-z0-9_]{1,32}$",
"type": "string"
},
"s": {
"description": "Service builder codes",
"items": {
"pattern": "^[a-z0-9_]{1,32}$",
"type": "string"
},
"maxItems": 11,
"type": "array"
},
"w": {
"description": "Wallet builder code",
"pattern": "^[a-z0-9_]{1,32}$",
"type": "string"
}
},
"type": "object"
}
},
"eip2612GasSponsoring": {},
"erc20ApprovalGasSponsoring": {},
"payment-identifier": {
"info": {
"required": true
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"id": {
"maxLength": 128,
"minLength": 16,
"pattern": "^[a-zA-Z0-9_-]+$",
"type": "string"
},
"required": {
"type": "boolean"
}
},
"required": [
"required"
],
"type": "object"
}
}
}Use it
curl
curl "https://sheets.api.williamrobinson.dev/v1/sheets/modify" # -> 402 Payment Required, accepts[] lists how to pay # retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid
JavaScript
const res = await fetch("https://sheets.api.williamrobinson.dev/v1/sheets/modify");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}Python
import httpx
res = httpx.get("https://sheets.api.williamrobinson.dev/v1/sheets/modify")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerMachine-readable
Everything on this page is also available as clean JSON at /resources/8218.json, and this resource appears in /discovery/resources and /discovery/search.