All integrations

Docmosis

DOCS & KNOWLEDGE · FILES & DOCS

Documents rendered from their own templates, plus template structure and account quota.

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

docmosis_get_pingREAD

Check that this processing location is reachable. Takes no arguments and answers 200 with an empty object. THIS DOES NOT CHECK YOUR CREDENTIAL: measured 2026-09-24, it answers 200 to a bogus access key too, so a successful ping says the region is up and nothing about whether the connection works. Use the environment readiness check for that.

api
docmosis_post_convertWRITE

Convert a document from one format to another without a template -- DOCX to PDF and similar. The input file is passed as BASE64 and the converted file comes back as base64 with its content type and size; both directions are bounded at 1 MiB decoded, and over that the content is described and dropped rather than truncated. `outputName`'s extension decides the target format ("result.pdf" -> PDF). This is the only Docmosis operation that both takes and returns a document.

api
docmosis_post_deleteimageWRITE

Delete an image from this processing location. DESTRUCTIVE AND IRREVERSIBLE: there is no recycle bin, and any template that references the image renders without it afterwards. THE REPLY IS NOT EVIDENCE THE IMAGE EXISTED: measured 2026-09-24, deleting the same name twice answers the identical 200 {"succeeded":true,"shortMsg":"Image successfully deleted"} both times. Confirm absence with the image listing, not with this answer.

api
docmosis_post_deletetemplateWRITE

Delete a template from this processing location. DESTRUCTIVE AND IRREVERSIBLE: there is no recycle bin and no undo, and any render that names the template afterwards fails. Answers 200 {"succeeded":true,"shortMsg":"Template successfully deleted"}.

api
docmosis_post_environment_readyREAD

Confirm the connected Docmosis environment is activated and able to render, and confirm the access key works. Takes no arguments. Answers 200 {"succeeded":true,"shortMsg":"environment is ready"}; a wrong key answers 400 {"succeeded":false,"shortMsg":"Invalid accessKey"} -- Docmosis uses 400, never 401 or 403. This is the cheapest way to tell a working connection from a broken one, and it spends no page quota.

api
docmosis_post_environment_summaryREAD

Report the account name, the environment's name and activation state, the plan, and the PAGE QUOTA with the percentage used. Takes no arguments. START HERE before a large render run: Docmosis is metered by rendered page, not by API call, and this is the only tool that says how much of the allowance is left. The numbers are NESTED: read them from `accountEnvironmentSummary.pageQuota` (`quota`, `used`, `pctUsed`, `isHardLimited`), not from the top level, which carries only shortMsg and succeeded. Measured 2026-09-24 on a trial: quota 4000, isHardLimited false.

api
docmosis_post_getimageREAD

Download a stored image. Answers its content type, byte length, filename and BASE64 CONTENT, bounded at 1 MiB decoded; a larger image is described and dropped rather than truncated. Use the image listing to learn the name and the size before downloading.

api
docmosis_post_getrenderqueueREAD

Report the render queue's current capacity for this processing location: the percentage available and the delay in seconds a new render would wait. Takes no arguments and costs nothing. Worth reading before a bulk render run, and worth reading when a render is slow, because the answer distinguishes a busy service from a slow template.

api
docmosis_post_getrendertagsREAD

Report page and document counts for renders recorded against one or more tags -- the `tags` a render was submitted with, which is how Docmosis attributes usage to a project, customer or department. `tags` is REQUIRED: without it Docmosis answers 400 "tags parameter must be specified", which is a bad request rather than a credential problem. Semi-colon delimited for several tags. An empty `renderTags` array means nothing was rendered with that tag, not that the tag is invalid.

api
docmosis_post_getsampledataREAD

Return a ready-made sample `data` object matching the template's structure, with placeholder values in every field. The fastest way to get a correctly-shaped payload for the render tool: take this, replace the values, render. Set `format` to anything other than "json" for the XML form.

api
docmosis_post_gettemplateREAD

Download a stored template file. Answers the file's content type, byte length, filename and BASE64 CONTENT -- the original DOCX or ODT, not its text. Bounded at 1 MiB decoded; a larger template is described and dropped rather than truncated, because a prefix of a DOCX is not a smaller DOCX. To read what FIELDS a template has, use the structure tool instead: it answers JSON and costs nothing to interpret.

api
docmosis_post_gettemplatedetailsREAD

Get one template's metadata: size, last-modified time, md5, description, the plain-text field delimiters it was uploaded with, and `templateHasErrors` -- which is the one worth reading before a render, because a template with errors renders differently in development and production mode. Metadata only; use the template download tool for the file itself.

api
docmosis_post_gettemplatestructureREAD

Return the template's field and repeating-section structure as JSON -- each field's name and the data path it reads. THIS IS HOW AN AGENT LEARNS WHAT DATA A RENDER NEEDS without opening the document: the answer names every placeholder and every repeat, so the `data` object for the render tool can be built to match. Pair it with the sample-data tool, which returns the same shape already filled in.

api
docmosis_post_listimagesREAD

List the images stored in THIS connection's processing location, with each one's name, size, last-modified time and description. Images are what a template's placeholder images resolve to at render time; this is how a caller learns the exact `imageName` to reference. Folders appear as their own zero-byte entries.

api
docmosis_post_listtemplatesREAD

List the templates stored in THIS connection's processing location, with each one's name, size and last-modified time. START HERE before rendering: this is how a caller learns the exact `templateName` the render tool needs, including its folder prefix ("samples/WelcomeTemplate.docx"). Folders appear as their own zero-byte entries. Remember each location keeps its own separate templates -- a template uploaded to the US region is not visible from a connection set to EU.

api
docmosis_post_renderWRITE

Render a document from a stored template and JSON data -- the flagship operation. The document comes back BASE64 under `resultFile` in the JSON reply: Docmosis streams raw bytes by default, which cannot travel through a tool result, so Agentic Fabriq sends `streamResultInResponse: true` for you and passing it as false is refused with the remedy. Over 1 MiB decoded the document is described and dropped rather than truncated -- use `storeTo` (`mailto:someone@example.com` or an `s3:` destination) to have Docmosis deliver a large one directly, in which case nothing streams. `templateName` must name a template in THIS connection's processing location, and `outputName`'s extension decides the format ("invoice.pdf" -> PDF) unless `outputFormat` overrides it. THIS OPERATION REFUSES UNKNOWN PARAMETERS: `strictParams` defaults true, so a misspelled field is a 400 naming it, not a silent no-op; set `strictParams: false` to have unknown fields treated as extra template data instead. SPENDS PAGE QUOTA, one per rendered page.

api
docmosis_post_uploadimageWRITE

Upload an image for templates to use, passed as BASE64 and bounded at 1 MiB decoded. DESTRUCTIVE: an upload to an `imageName` that already exists REPLACES it silently, with no previous version kept and no undo -- and because templates reference images by name, replacing one changes every document that renders afterwards. List the images first if you are not certain the name is free.

api
docmosis_post_uploadtemplateWRITE

Upload one template file, passed as BASE64 and bounded at 1 MiB decoded. DESTRUCTIVE: an upload to a `templateName` that already exists REPLACES it silently -- measured 2026-09-24, two different files uploaded to the same name both answered the identical "stored." while the md5 and size changed, with no previous version kept and no undo. List the templates first if you are not certain the name is free. `devMode: "true"` lets a template with errors upload anyway so the errors can be found; `keepPrevOnFail: "true"` keeps the existing template when the new one has errors.

api
docmosis_post_uploadtemplatebatchWRITE

Upload MANY templates at once as a single ZIP, passed as base64 and bounded at 1 MiB decoded. Folders inside the ZIP become folders in the account. Starts an asynchronous job and answers immediately with its status. THE JOB ID IS NESTED: read it from `jobStatus.userJobId`, NOT from the top level, which carries only the prose shortMsg that spells it out -- a caller who reads a top-level `userJobId` gets nothing and the status tool then refuses the empty id. Poll the batch status tool with it. DESTRUCTIVE: like the single upload, a template whose name already exists is REPLACED silently, and a batch can do that to many at once. Supply your own `userJobId` if you want to poll or cancel it; Docmosis generates one otherwise.

api
docmosis_post_uploadtemplatebatchcancelWRITE

Cancel a batch template upload that is still running, by `userJobId`. Templates the batch has ALREADY written stay -- this abandons the remaining work rather than rolling anything back, which is why it is not marked destructive. Against a job that has already finished it answers 200 "Batch upload was already FINISHED" and changes nothing.

api
docmosis_post_uploadtemplatebatchstatusREAD

Report a batch template upload's progress by `userJobId`: its status, percentage complete, a human-readable message ("1/1 templates uploaded.") and, once finished, a jobResult counting the templates uploaded with and without errors. `isEnded` is the field to poll on. Take the id from the bulk upload's nested `jobStatus.userJobId` -- measured 2026-09-24, an empty or unknown id is a 400 from Docmosis rather than an empty status. Costs nothing.

api

Put Docmosis behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.