{"uid":"cap__wZ-EKlvoyqZFFrZiNbXz","slug":"objekt-sh-file-upload-store-file-by-ens-name-and-type-423d8e6a","name":"objekt.sh File Upload — Store File by ENS Name and Type","description":"File storage for AI agents and ENS names. Upload via MCP, REST, or CLI. Free CDN tier. Permanent Arweave and IPFS options.","url":"https://api.objekt.sh/%7Bname%7D/%7Btype%7D?utm_source=zero.xyz","method":"PUT","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","bodyType","body"],"properties":{"body":{"required":["expiry","dataURL","sig","unverifiedAddress"],"properties":{"sig":{"type":"string","pattern":"^0x[0-9a-fA-F]+$","description":"EIP-712 signature over { upload, expiry, name, hash }"},"expiry":{"type":"string","description":"Unix ms timestamp, 1 minute from signing time"},"dataURL":{"type":"string","description":"data:<mime>;base64,<payload> encoded file"},"unverifiedAddress":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Signer address — verified server-side via recoverTypedDataAddress"}}},"type":{"type":"string","const":"http"},"method":{"enum":["POST","PUT","PATCH"],"type":"string"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"pathParams":{"type":"object","required":["name","type"],"properties":{"name":{"type":"string","description":"ENS name, e.g. vitalik.eth"},"type":{"enum":["avatar","header","h"],"type":"string","description":"Media slot — avatar or header (h alias)"}}}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object"}}}}},"responseSchema":{"type":"json","example":{"uri":"ar://abc123…","kind":"image/png","name":"vitalik.eth","bytes":48213,"permalink":"https://ar.objekt.sh/abc123…","contenthash":"0xe3010170…"}},"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.25","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"registry","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.25/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.25","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.25","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_-RYNBbWfVxyevjdxn_q26","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.25","costPer":"request","priority":0,"asset":null,"unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Upload and permanently store a file (image, document, etc.) associated with an ENS name and file type, returning a URI on Arweave, IPFS, or CDN with a content hash.","exampleAgentPrompt":"Upload this PNG image to objekt.sh and store it permanently on Arweave under the ENS name vitalik.eth as type image/png — give me back the Arweave URI and the content hash.","exampleUseCases":[{"title":"AI agent saves generated artwork permanently","prompt":"I just generated a PNG avatar for my ENS name cryptopunk.eth — upload it to objekt.sh as image/png and store it permanently on Arweave so I can use the content hash to update my ENS record."},{"title":"Store agent report as permanent document","prompt":"My agent finished its research report as a PDF. Store it on Arweave under agent42.eth with type application/pdf so I have a permanent, decentralized permalink I can share."},{"title":"Pin profile JSON metadata for ENS domain","prompt":"Upload this JSON metadata file to objekt.sh under mydao.eth as type application/json — I want it pinned permanently on IPFS with the content hash returned so I can set it as my ENS contenthash."}],"resultDescription":"Returns a JSON object containing: the Arweave or IPFS URI (ar://... or ipfs://...), the MIME type (kind), the ENS name the file is associated with, the file size in bytes, a human-readable permalink URL (e.g. https://ar.objekt.sh/...), and the EIP-1577 contenthash hex string suitable for setting on an ENS record.","failureModes":["Invalid or unresolvable ENS name — 400 or 422 error","Unsupported file type provided in {type} path parameter","Payment not received or insufficient USDC — x402 payment required error","File too large for the selected storage tier","Arweave or IPFS backend temporarily unavailable — 503 error","Malformed binary body or missing Content-Type header"],"whenToPreferThis":"Choose this endpoint when you need to permanently store a file on Arweave or IPFS and associate it with an ENS name — especially when the resulting content hash will be used to update an ENS contenthash record. It is the right choice for AI agents that produce files (images, documents, JSON metadata) and need decentralized, permanent, CDN-accessible storage with ENS identity linking. Prefer it over generic S3/cloud storage when permanence, decentralization, and ENS integration matter.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-10-10T12:33:31.863Z","isFirstParty":false,"canonicalSlug":"objekt-sh-file-upload-store-file-by-ens-name-and-type-423d8e6a"}