Parsio
DATA · DATA & ANALYTICS
Mailboxes, imported documents, extracted data, and templates in that account.
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.
parsio_clone_templatesWRITECopy one or more parsing templates into a target mailbox -- the way to reuse a trained template across mailboxes without retraining it. Takes the template ids and the destination `mailbox_id`.
parsio_create_documentWRITEImport text or HTML into a mailbox and return as soon as the document is queued, without waiting for parsing. Answers 201 carrying the new document's id as a bare JSON string. Collect the result later with Get a document, or let a webhook deliver it. Prefer this over the synchronous variant when you already use webhooks or want the fastest possible reply.
parsio_create_document_syncWRITEImport text or HTML into a mailbox and wait for the parsed result in the same response. This is the endpoint to prefer when you already have the content as text or HTML and you want the extracted fields back immediately: the reply carries `json` with the parsed fields, alongside `doc_id` and `status`. It blocks while Parsio parses. If parsing outruns Parsio's own timeout the reply is still 201 but carries `parsing_in_progress: true` with a null `json` -- that is not a failure, and the result is fetched afterwards with Get a document.
parsio_create_mailboxWRITECreate a new parsing mailbox. Only `name` is required; Parsio assigns the inbound email prefix and the remaining defaults itself and returns the whole created mailbox, including the `_id` to pass to every other operation. Answers 201.
parsio_create_webhookWRITERegister a webhook on a mailbox so Parsio POSTs parsed documents to your endpoint as they finish. Answers 201 with the created webhook, including the `_id` you need to update or delete it and the `secret` Parsio signs its deliveries with.
parsio_delete_mailboxWRITEPermanently delete a mailbox and everything it owns -- its documents, templates and webhooks go with it. Answers 200 with an empty body. There is no trash and no undo: confirm the id against List mailboxes before calling this.
parsio_delete_templatesWRITEPermanently delete one or more parsing templates by id. The ids travel in the request BODY, not the path or the query -- this is a DELETE with a JSON body. Answers 200 with `true`. There is no undo, and a deleted template must be retrained.
parsio_delete_webhooksWRITEPermanently delete one or more webhooks by id. The ids travel in the request BODY -- this is a DELETE with a JSON body. Answers 200. Deliveries stop immediately and the signing secret is gone with the webhook.
parsio_disable_templatesWRITEDisable one or more parsing templates by id, so the parser stops matching documents against them without deleting them. Answers 201.
parsio_enable_templatesWRITEEnable one or more parsing templates by id, so the mailbox's parser starts matching incoming documents against them again. Answers 201.
parsio_get_documentREADFetch one document as JSON -- the same payload shape Parsio's webhooks deliver, including the parsed fields. This is how you collect the result of an asynchronous import, and how you finish a synchronous one that answered `parsing_in_progress: true`. An unknown id answers 200 with an EMPTY body rather than 404, so treat an empty reply as 'no such document', not as a document with no fields.
parsio_get_mailboxREADRead one mailbox's settings and configuration -- its parser `preset`, `ml_model`, email prefix, retention, alerting and current `stats`. Use it to discover which parser a mailbox runs before importing into it, because the text/HTML import endpoints only work on template-based and GPT-powered parsers.
parsio_get_templateREADRead one parsing template. An unknown id answers 200 with an empty body rather than 404, so treat an empty reply as 'no such template'.
parsio_get_webhookREADRead one webhook -- its url, event, enabled flag, `table_id` and signing `secret`. An unknown id answers 200 with an empty body rather than 404.
parsio_list_collected_emailsREADList the email addresses Parsio collected for a mailbox. Only populated when the mailbox has `collect_emails` switched on; answers an empty array otherwise.
parsio_list_documentsREADList a mailbox's documents, newest first, in a paged envelope (`docs`, `totalDocs`, `page`, `totalPages`, `hasNextPage`). Filter by status, by name, and by date. This is the operation that reconciles an import whose reply was lost: search for the document by name rather than importing it again.
parsio_list_mailbox_table_fieldsREADList the table fields defined on a mailbox. A table field is what a `table.parsed` webhook fires on, and its id is the `table_id` that webhook needs. Answers a JSON array, empty when the mailbox defines no table fields.
parsio_list_mailboxesREADList every Parsio mailbox the API key's account can reach. A mailbox is the parsing workspace: it owns a parser type, its templates, its documents and its webhooks, and its `_id` is the `mailbox_id` every other operation here takes. Answers a JSON ARRAY, not a paged envelope.
parsio_list_parsed_dataREADList the EXTRACTED FIELDS for a mailbox's documents, rather than the documents themselves -- one object of parsed values per document, in a paged envelope whose `docIds` array lines up with `docs`. This is the operation to read when you want the data Parsio pulled out; List documents gives you the documents' metadata instead.
parsio_list_templatesREADList the parsing templates defined on a mailbox, in a paged envelope. Templates belong to the template-based parser; a GPT-powered or AI-powered mailbox legitimately has none and answers an empty page.
parsio_list_webhooksREADList every webhook registered on a mailbox. Answers a JSON array. Note the `/mb/` segment -- it is what separates this from Get a webhook, which takes a webhook id at the same depth.
parsio_reparse_documentWRITEQueue a document for reprocessing -- the way to re-extract after changing a template or switching the mailbox's parser. Answers 201 with a bare number, which is a queue handle and not a document id. Reprocessing is asynchronous: poll Get a document for the new result.
parsio_skip_documentsWRITEMark documents as skipped so Parsio stops trying to parse them. Takes a list of document ids and answers 201 with `true`. Use it to clear a backlog of documents that will never parse -- a wrong-format import, or a batch that belongs to another mailbox's template.
parsio_update_mailboxWRITEUpdate a mailbox's settings. This is a POST, not a PATCH or PUT -- Parsio has no other update verb for a mailbox, and `PUT /mailboxes` does not exist. Both `name` and `email_prefix` must be sent on every call, even when only one of the other fields is changing, so read the mailbox first and send its current values back.
parsio_update_webhookWRITEUpdate an existing webhook. The webhook's id travels in the BODY as `_id`, not in the path -- the path carries no id at all, which is what distinguishes this from Create a webhook. Send the full set of fields: `_id`, `url`, `event` and `table_id` are all required on every call.
parsio_upload_documentWRITEUpload one file and return as soon as it is queued, without waiting for parsing. Answers 201 carrying the new document's id as a bare JSON string. This is the variant that accepts ZIP archives, and its ceiling is 50 MB rather than 20 MB -- though this tool's own 4 MiB inline bound applies first. Collect the result with Get a document or through a webhook.
parsio_upload_document_syncWRITEUpload one file -- PDF, scanned PDF, image, DOCX, CSV, XML and the other formats the mailbox's parser supports -- and wait for the parsed result in the same response. The reply carries `json` with the extracted fields alongside `doc_id`, `status` and `content_type`. Works with every Parsio parser type, as long as the mailbox's type supports the format. ZIP is NOT accepted here; use the asynchronous upload for that. Parsio's own ceiling is 20 MB, one file per request. As with the other synchronous endpoint, a reply carrying `parsing_in_progress: true` means parsing outran the timeout and the result is fetched afterwards with Get a document.
Often connected alongside
Put Parsio behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.