{"info":{"name":"PaperTotal API","description":"The PaperTotal API. Send a key as `Authorization: Bearer ptk_live_...`. A key reaches one workspace and only the scopes it was given. An OAuth access token (`pta_...`) goes on the same header and reaches the same routes, within the scopes the person granted.\n\nRequests are limited per workspace, across all of its keys and tokens: 600 a minute on Business, 120 on Pro, 60 on Starter and 30 with no plan. Past that the API answers 429 with code RATE_LIMITED and a Retry-After header.\n\nMoney is an integer in minor units with a currency code, dates are YYYY-MM-DD, and every error has the same body with a stable code and a message written for a person.\n\nSending a file. Ask POST /v1/uploads for a ticket, saying what the file is for (`purpose`), its type and its size in bytes. PUT exactly that many bytes to the ticket's `url`, with its `headers` and no others: the file goes straight to storage and never through this API. Then call the route the file is for with JSON naming `uploadId` where it would otherwise take a multipart `file`: POST /v1/documents or any other route that reads a document, such as POST /v1/documents/classify, POST /v1/parse or POST /v1/split, for document, POST /v1/expenses/{id}/receipts for expense_receipt, POST /v1/mileage/{id}/odometer-photos for odometer_photo, POST /v1/approvals/policy for policy_document, the statement imports under /v1/payment-accounts for statement, and POST /v1/attachments for attachment. Nothing counts until that route has checked the stored file: its bytes decide its type, and a file that is not acceptable is refused there and deleted. The ticket stops working at `expiresAt`, and a failed PUT is treated as an expired one: ask for a new ticket and try once more. A multipart `file` on the same routes still works, and is the simple way for a script.\n\nA key can require signed requests. Send X-PaperTotal-Request-Timestamp with the Unix time and X-PaperTotal-Request-Signature with the hex HMAC-SHA256 of \"<timestamp>.<METHOD>.<path and query>.<raw body>\", using the key's client secret. A signature is good for 30 minutes either way, and one that is sent is always checked. It covers a JSON body or none, so send a file as file_data when signing.","version":"1.0.0","schema":"https://schema.getpostman.com/json/collection/v2.1.0/collection.json"},"auth":{"type":"bearer","bearer":[{"key":"token","value":"{{apiKey}}","type":"string"}]},"variable":[{"key":"baseUrl","value":"https://api.papertotal.com","type":"string"},{"key":"apiKey","value":"ptk_live_your_key","type":"string"}],"item":[{"name":"analytics","item":[{"id":"Analytics_byCategory","name":"Spending by category","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/analytics/by-category","host":["{{baseUrl}}"],"path":["v1","analytics","by-category"],"query":[{"key":"status","value":"","disabled":true,"description":""},{"key":"kind","value":"","disabled":true,"description":""},{"key":"paymentType","value":"","disabled":true,"description":""},{"key":"ownerId","value":"","disabled":true,"description":""},{"key":"scope","value":"","disabled":true,"description":""},{"key":"categoryId","value":"","disabled":true,"description":""},{"key":"merchantId","value":"","disabled":true,"description":""},{"key":"projectId","value":"","disabled":true,"description":""},{"key":"clientId","value":"","disabled":true,"description":""},{"key":"tagId","value":"","disabled":true,"description":""},{"key":"department","value":"","disabled":true,"description":""},{"key":"reportId","value":"","disabled":true,"description":""},{"key":"externalId","value":"","disabled":true,"description":""},{"key":"unreported","value":"","disabled":true,"description":""},{"key":"needsReview","value":"","disabled":true,"description":""},{"key":"billable","value":"","disabled":true,"description":""},{"key":"reimbursable","value":"","disabled":true,"description":""},{"key":"moneyFlow","value":"","disabled":true,"description":""},{"key":"dateField","value":"","disabled":true,"description":""},{"key":"from","value":"","disabled":true,"description":""},{"key":"to","value":"","disabled":true,"description":""},{"key":"minMinor","value":"","disabled":true,"description":""},{"key":"maxMinor","value":"","disabled":true,"description":""},{"key":"q","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"interval","value":"","disabled":true,"description":""},{"key":"groupCurrency","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Analytics_byDepartment","name":"Spending by department","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/analytics/by-department","host":["{{baseUrl}}"],"path":["v1","analytics","by-department"],"query":[{"key":"status","value":"","disabled":true,"description":""},{"key":"kind","value":"","disabled":true,"description":""},{"key":"paymentType","value":"","disabled":true,"description":""},{"key":"ownerId","value":"","disabled":true,"description":""},{"key":"scope","value":"","disabled":true,"description":""},{"key":"categoryId","value":"","disabled":true,"description":""},{"key":"merchantId","value":"","disabled":true,"description":""},{"key":"projectId","value":"","disabled":true,"description":""},{"key":"clientId","value":"","disabled":true,"description":""},{"key":"tagId","value":"","disabled":true,"description":""},{"key":"department","value":"","disabled":true,"description":""},{"key":"reportId","value":"","disabled":true,"description":""},{"key":"externalId","value":"","disabled":true,"description":""},{"key":"unreported","value":"","disabled":true,"description":""},{"key":"needsReview","value":"","disabled":true,"description":""},{"key":"billable","value":"","disabled":true,"description":""},{"key":"reimbursable","value":"","disabled":true,"description":""},{"key":"moneyFlow","value":"","disabled":true,"description":""},{"key":"dateField","value":"","disabled":true,"description":""},{"key":"from","value":"","disabled":true,"description":""},{"key":"to","value":"","disabled":true,"description":""},{"key":"minMinor","value":"","disabled":true,"description":""},{"key":"maxMinor","value":"","disabled":true,"description":""},{"key":"q","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"interval","value":"","disabled":true,"description":""},{"key":"groupCurrency","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Analytics_byMember","name":"Spending by member","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/analytics/by-member","host":["{{baseUrl}}"],"path":["v1","analytics","by-member"],"query":[{"key":"status","value":"","disabled":true,"description":""},{"key":"kind","value":"","disabled":true,"description":""},{"key":"paymentType","value":"","disabled":true,"description":""},{"key":"ownerId","value":"","disabled":true,"description":""},{"key":"scope","value":"","disabled":true,"description":""},{"key":"categoryId","value":"","disabled":true,"description":""},{"key":"merchantId","value":"","disabled":true,"description":""},{"key":"projectId","value":"","disabled":true,"description":""},{"key":"clientId","value":"","disabled":true,"description":""},{"key":"tagId","value":"","disabled":true,"description":""},{"key":"department","value":"","disabled":true,"description":""},{"key":"reportId","value":"","disabled":true,"description":""},{"key":"externalId","value":"","disabled":true,"description":""},{"key":"unreported","value":"","disabled":true,"description":""},{"key":"needsReview","value":"","disabled":true,"description":""},{"key":"billable","value":"","disabled":true,"description":""},{"key":"reimbursable","value":"","disabled":true,"description":""},{"key":"moneyFlow","value":"","disabled":true,"description":""},{"key":"dateField","value":"","disabled":true,"description":""},{"key":"from","value":"","disabled":true,"description":""},{"key":"to","value":"","disabled":true,"description":""},{"key":"minMinor","value":"","disabled":true,"description":""},{"key":"maxMinor","value":"","disabled":true,"description":""},{"key":"q","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"interval","value":"","disabled":true,"description":""},{"key":"groupCurrency","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Analytics_byMerchant","name":"Spending by merchant","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/analytics/by-merchant","host":["{{baseUrl}}"],"path":["v1","analytics","by-merchant"],"query":[{"key":"status","value":"","disabled":true,"description":""},{"key":"kind","value":"","disabled":true,"description":""},{"key":"paymentType","value":"","disabled":true,"description":""},{"key":"ownerId","value":"","disabled":true,"description":""},{"key":"scope","value":"","disabled":true,"description":""},{"key":"categoryId","value":"","disabled":true,"description":""},{"key":"merchantId","value":"","disabled":true,"description":""},{"key":"projectId","value":"","disabled":true,"description":""},{"key":"clientId","value":"","disabled":true,"description":""},{"key":"tagId","value":"","disabled":true,"description":""},{"key":"department","value":"","disabled":true,"description":""},{"key":"reportId","value":"","disabled":true,"description":""},{"key":"externalId","value":"","disabled":true,"description":""},{"key":"unreported","value":"","disabled":true,"description":""},{"key":"needsReview","value":"","disabled":true,"description":""},{"key":"billable","value":"","disabled":true,"description":""},{"key":"reimbursable","value":"","disabled":true,"description":""},{"key":"moneyFlow","value":"","disabled":true,"description":""},{"key":"dateField","value":"","disabled":true,"description":""},{"key":"from","value":"","disabled":true,"description":""},{"key":"to","value":"","disabled":true,"description":""},{"key":"minMinor","value":"","disabled":true,"description":""},{"key":"maxMinor","value":"","disabled":true,"description":""},{"key":"q","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"interval","value":"","disabled":true,"description":""},{"key":"groupCurrency","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Analytics_byProject","name":"Spending by project","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/analytics/by-project","host":["{{baseUrl}}"],"path":["v1","analytics","by-project"],"query":[{"key":"status","value":"","disabled":true,"description":""},{"key":"kind","value":"","disabled":true,"description":""},{"key":"paymentType","value":"","disabled":true,"description":""},{"key":"ownerId","value":"","disabled":true,"description":""},{"key":"scope","value":"","disabled":true,"description":""},{"key":"categoryId","value":"","disabled":true,"description":""},{"key":"merchantId","value":"","disabled":true,"description":""},{"key":"projectId","value":"","disabled":true,"description":""},{"key":"clientId","value":"","disabled":true,"description":""},{"key":"tagId","value":"","disabled":true,"description":""},{"key":"department","value":"","disabled":true,"description":""},{"key":"reportId","value":"","disabled":true,"description":""},{"key":"externalId","value":"","disabled":true,"description":""},{"key":"unreported","value":"","disabled":true,"description":""},{"key":"needsReview","value":"","disabled":true,"description":""},{"key":"billable","value":"","disabled":true,"description":""},{"key":"reimbursable","value":"","disabled":true,"description":""},{"key":"moneyFlow","value":"","disabled":true,"description":""},{"key":"dateField","value":"","disabled":true,"description":""},{"key":"from","value":"","disabled":true,"description":""},{"key":"to","value":"","disabled":true,"description":""},{"key":"minMinor","value":"","disabled":true,"description":""},{"key":"maxMinor","value":"","disabled":true,"description":""},{"key":"q","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"interval","value":"","disabled":true,"description":""},{"key":"groupCurrency","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Analytics_byTag","name":"Spending by tag","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/analytics/by-tag","host":["{{baseUrl}}"],"path":["v1","analytics","by-tag"],"query":[{"key":"status","value":"","disabled":true,"description":""},{"key":"kind","value":"","disabled":true,"description":""},{"key":"paymentType","value":"","disabled":true,"description":""},{"key":"ownerId","value":"","disabled":true,"description":""},{"key":"scope","value":"","disabled":true,"description":""},{"key":"categoryId","value":"","disabled":true,"description":""},{"key":"merchantId","value":"","disabled":true,"description":""},{"key":"projectId","value":"","disabled":true,"description":""},{"key":"clientId","value":"","disabled":true,"description":""},{"key":"tagId","value":"","disabled":true,"description":""},{"key":"department","value":"","disabled":true,"description":""},{"key":"reportId","value":"","disabled":true,"description":""},{"key":"externalId","value":"","disabled":true,"description":""},{"key":"unreported","value":"","disabled":true,"description":""},{"key":"needsReview","value":"","disabled":true,"description":""},{"key":"billable","value":"","disabled":true,"description":""},{"key":"reimbursable","value":"","disabled":true,"description":""},{"key":"moneyFlow","value":"","disabled":true,"description":""},{"key":"dateField","value":"","disabled":true,"description":""},{"key":"from","value":"","disabled":true,"description":""},{"key":"to","value":"","disabled":true,"description":""},{"key":"minMinor","value":"","disabled":true,"description":""},{"key":"maxMinor","value":"","disabled":true,"description":""},{"key":"q","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"interval","value":"","disabled":true,"description":""},{"key":"groupCurrency","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Analytics_summary","name":"Spending totals for a period, with the period before it","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/analytics/summary","host":["{{baseUrl}}"],"path":["v1","analytics","summary"],"query":[{"key":"status","value":"","disabled":true,"description":""},{"key":"kind","value":"","disabled":true,"description":""},{"key":"paymentType","value":"","disabled":true,"description":""},{"key":"ownerId","value":"","disabled":true,"description":""},{"key":"scope","value":"","disabled":true,"description":""},{"key":"categoryId","value":"","disabled":true,"description":""},{"key":"merchantId","value":"","disabled":true,"description":""},{"key":"projectId","value":"","disabled":true,"description":""},{"key":"clientId","value":"","disabled":true,"description":""},{"key":"tagId","value":"","disabled":true,"description":""},{"key":"department","value":"","disabled":true,"description":""},{"key":"reportId","value":"","disabled":true,"description":""},{"key":"externalId","value":"","disabled":true,"description":""},{"key":"unreported","value":"","disabled":true,"description":""},{"key":"needsReview","value":"","disabled":true,"description":""},{"key":"billable","value":"","disabled":true,"description":""},{"key":"reimbursable","value":"","disabled":true,"description":""},{"key":"moneyFlow","value":"","disabled":true,"description":""},{"key":"dateField","value":"","disabled":true,"description":""},{"key":"from","value":"","disabled":true,"description":""},{"key":"to","value":"","disabled":true,"description":""},{"key":"minMinor","value":"","disabled":true,"description":""},{"key":"maxMinor","value":"","disabled":true,"description":""},{"key":"q","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"interval","value":"","disabled":true,"description":""},{"key":"groupCurrency","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Analytics_trend","name":"Spending over time","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/analytics/trend","host":["{{baseUrl}}"],"path":["v1","analytics","trend"],"query":[{"key":"status","value":"","disabled":true,"description":""},{"key":"kind","value":"","disabled":true,"description":""},{"key":"paymentType","value":"","disabled":true,"description":""},{"key":"ownerId","value":"","disabled":true,"description":""},{"key":"scope","value":"","disabled":true,"description":""},{"key":"categoryId","value":"","disabled":true,"description":""},{"key":"merchantId","value":"","disabled":true,"description":""},{"key":"projectId","value":"","disabled":true,"description":""},{"key":"clientId","value":"","disabled":true,"description":""},{"key":"tagId","value":"","disabled":true,"description":""},{"key":"department","value":"","disabled":true,"description":""},{"key":"reportId","value":"","disabled":true,"description":""},{"key":"externalId","value":"","disabled":true,"description":""},{"key":"unreported","value":"","disabled":true,"description":""},{"key":"needsReview","value":"","disabled":true,"description":""},{"key":"billable","value":"","disabled":true,"description":""},{"key":"reimbursable","value":"","disabled":true,"description":""},{"key":"moneyFlow","value":"","disabled":true,"description":""},{"key":"dateField","value":"","disabled":true,"description":""},{"key":"from","value":"","disabled":true,"description":""},{"key":"to","value":"","disabled":true,"description":""},{"key":"minMinor","value":"","disabled":true,"description":""},{"key":"maxMinor","value":"","disabled":true,"description":""},{"key":"q","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"interval","value":"","disabled":true,"description":""},{"key":"groupCurrency","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]}]},{"name":"api keys","item":[{"id":"ApiKeys_verify","name":"See what the calling key grants","request":{"method":"GET","description":"Any key may call this about itself, whatever its scopes. It says what the key can reach, in which workspace, and until when. Every other route under /v1/api-keys takes a person, so a key cannot mint a stronger key.\n\nNeeds the any_api_key scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/api-keys/verify","host":["{{baseUrl}}"],"path":["v1","api-keys","verify"],"query":[],"variable":[]}},"response":[]}]},{"name":"attachments","item":[{"id":"Attachments_create","name":"Make a file a comment or a message can carry","request":{"method":"POST","description":"From a finished upload with the purpose attachment. Name its id in attachmentIds on a comment or a message. A file nothing names is deleted after a week.\n\nNeeds the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/attachments","host":["{{baseUrl}}"],"path":["v1","attachments"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"uploadId\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"automation rules","item":[{"id":"Automation_list","name":"List automation rules","request":{"method":"GET","description":"The workspace's rules, top to bottom. The first rule to set a field wins it.\n\nNeeds the rules:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/automation-rules","host":["{{baseUrl}}"],"path":["v1","automation-rules"],"query":[],"variable":[]}},"response":[]},{"id":"Automation_create","name":"Add an automation rule","request":{"method":"POST","description":"Conditions match on the expense, its line items, its tags and flags, the words on its document, or a question for Claude.\n\nNeeds the rules:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/automation-rules","host":["{{baseUrl}}"],"path":["v1","automation-rules"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"conditions\": [\n    {\n      \"field\": \"merchantName\",\n      \"op\": \"equals\"\n    }\n  ],\n  \"actions\": {}\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Automation_update","name":"Change an automation rule","request":{"method":"PATCH","description":"Needs the rules:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/automation-rules/:id","host":["{{baseUrl}}"],"path":["v1","automation-rules",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Automation_remove","name":"Delete an automation rule","request":{"method":"DELETE","description":"Needs the rules:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/automation-rules/:id","host":["{{baseUrl}}"],"path":["v1","automation-rules",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Automation_apply","name":"Run a rule over expenses not yet submitted","request":{"method":"POST","description":"A field a person set keeps their value. Running it twice changes nothing more.\n\nNeeds the rules:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/automation-rules/:id/apply","host":["{{baseUrl}}"],"path":["v1","automation-rules",":id","apply"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Automation_test","name":"Count what a saved rule would match","request":{"method":"POST","description":"Changes nothing.\n\nNeeds the rules:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/automation-rules/:id/test","host":["{{baseUrl}}"],"path":["v1","automation-rules",":id","test"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Automation_exportFile","name":"Export automation rules as a file","request":{"method":"GET","description":"Every workspace rule, in order, with names in place of ids, so another workspace can import it. Needs policies.manage.\n\nNeeds the rules:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/automation-rules/export","host":["{{baseUrl}}"],"path":["v1","automation-rules","export"],"query":[],"variable":[]}},"response":[]},{"id":"Automation_import","name":"Import automation rules from CSV","request":{"method":"POST","description":"Needs the rules:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/automation-rules/import","host":["{{baseUrl}}"],"path":["v1","automation-rules","import"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"csv\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Automation_importFile","name":"Import automation rules from a file","request":{"method":"POST","description":"Takes what the export route gives. Each name is looked up in this workspace, and a rule that names something it does not have comes back in errors, with the reason. A rule already here is skipped.\n\nNeeds the rules:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/automation-rules/import-file","host":["{{baseUrl}}"],"path":["v1","automation-rules","import-file"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"format\": \"papertotal.rules\",\n  \"version\": 1,\n  \"rules\": [\n    {\n      \"name\": \"string\",\n      \"conditions\": [\n        {\n          \"field\": \"merchantName\",\n          \"op\": \"equals\"\n        }\n      ],\n      \"actions\": {}\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Automation_preview","name":"Count what some conditions would match","request":{"method":"POST","description":"Changes nothing. The sample shows expenses, so it needs rules:write and policies.manage.\n\nNeeds the rules:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/automation-rules/preview","host":["{{baseUrl}}"],"path":["v1","automation-rules","preview"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"conditions\": [\n    {\n      \"field\": \"merchantName\",\n      \"op\": \"equals\"\n    }\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Automation_reorder","name":"Put the rules in a new order","request":{"method":"POST","description":"Needs the rules:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/automation-rules/reorder","host":["{{baseUrl}}"],"path":["v1","automation-rules","reorder"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"ids\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"bank statements","item":[{"id":"SpecialDocuments_bankStatements","name":"Read a bank statement","request":{"method":"POST","description":"POST /v1/documents/url with the type fixed: the same body, wait and answer. Bank and tax numbers are masked; POST /v1/documents/{id}/reveal opens them.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/bank-statements","host":["{{baseUrl}}"],"path":["v1","bank-statements"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"SpecialDocuments_bankStatementsAsync","name":"Read a bank statement in the background","request":{"method":"POST","description":"POST /v1/documents/url with the type fixed: the same body, wait and answer. Bank and tax numbers are masked; POST /v1/documents/{id}/reveal opens them.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/bank-statements/async","host":["{{baseUrl}}"],"path":["v1","bank-statements","async"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"bank statements set","item":[{"id":"DocumentSets_listStatementSets","name":"List bank statement sets","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/bank-statements-set","host":["{{baseUrl}}"],"path":["v1","bank-statements-set"],"query":[{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"DocumentSets_createStatementSet","name":"Split a PDF of bank statements and read each one","request":{"method":"POST","description":"Multipart with a field named file, or JSON with uploadId, file_url or file_data. Up to 250 pages and 50 MB. Answers at once. bank_statement_set.created says when every statement is read, and bank_statement_set.failed why not. Account numbers are masked in every view.\n\nNeeds the documents:write scope.","header":[{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/bank-statements-set","host":["{{baseUrl}}"],"path":["v1","bank-statements-set"],"query":[],"variable":[]},"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","src":[],"description":"The file."},{"key":"split_by_blank_page","type":"text","value":"","disabled":true,"description":""},{"key":"every_page","type":"text","value":"","disabled":true,"description":""},{"key":"ranges","type":"text","value":"","disabled":true,"description":""},{"key":"document_types","type":"text","value":"","disabled":true,"description":""},{"key":"blueprint_name","type":"text","value":"","disabled":true,"description":""},{"key":"external_id","type":"text","value":"","disabled":true,"description":""}]}},"response":[]},{"id":"DocumentSets_getStatementSet","name":"Get a bank statement set","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/bank-statements-set/:id","host":["{{baseUrl}}"],"path":["v1","bank-statements-set",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]}]},{"name":"billing","item":[{"id":"Billing_view","name":"Get the plan, seats and this month's usage","request":{"method":"GET","description":"Needs the billing:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/billing","host":["{{baseUrl}}"],"path":["v1","billing"],"query":[],"variable":[]}},"response":[]},{"id":"Billing_cancel","name":"Cancel the subscription","request":{"method":"POST","description":"It ends when the period already paid for does, as cancelling in the billing portal does. Asking twice changes nothing. Needs billing.manage.\n\nNeeds the billing:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/billing/cancel","host":["{{baseUrl}}"],"path":["v1","billing","cancel"],"query":[],"variable":[]}},"response":[]},{"id":"Billing_invoices","name":"List invoices","request":{"method":"GET","description":"Newest first, from Stripe, with Stripe's own links to each invoice's page and PDF. A plan bought in a store has its invoices there.\n\nNeeds the billing:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/billing/invoices","host":["{{baseUrl}}"],"path":["v1","billing","invoices"],"query":[],"variable":[]}},"response":[]}]},{"name":"blueprints","item":[{"id":"Blueprints_list","name":"List blueprints","request":{"method":"GET","description":"This workspace's own, then the built-in catalogue.\n\nNeeds the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/blueprints","host":["{{baseUrl}}"],"path":["v1","blueprints"],"query":[{"key":"documentType","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Blueprints_create","name":"Create a blueprint","request":{"method":"POST","description":"A strict subset of JSON schema: object, array, string, number, integer and boolean, nested up to four levels and up to 150 fields. A keyword outside it, such as $ref, pattern or anyOf, is refused by name. Needs settings.manage.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/blueprints","host":["{{baseUrl}}"],"path":["v1","blueprints"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"title\": \"string\",\n  \"schema\": {\n    \"type\": \"object\",\n    \"properties\": \"string\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Blueprints_get","name":"Get a blueprint","request":{"method":"GET","description":"Asks for an older version with version.\n\nNeeds the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/blueprints/:name","host":["{{baseUrl}}"],"path":["v1","blueprints",":name"],"query":[{"key":"version","value":"","disabled":true,"description":""}],"variable":[{"key":"name","value":"","description":""}]}},"response":[]},{"id":"Blueprints_update","name":"Change a blueprint","request":{"method":"PATCH","description":"A new schema or new field guidance adds a version. Results keep the version that made them.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/blueprints/:name","host":["{{baseUrl}}"],"path":["v1","blueprints",":name"],"query":[],"variable":[{"key":"name","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Blueprints_remove","name":"Delete a blueprint","request":{"method":"DELETE","description":"Results it made stay, and its name can be used again.\n\nNeeds the documents:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/blueprints/:name","host":["{{baseUrl}}"],"path":["v1","blueprints",":name"],"query":[],"variable":[{"key":"name","value":"","description":""}]}},"response":[]},{"id":"Blueprints_draft","name":"Propose a blueprint from a sample","request":{"method":"POST","description":"Multipart, or JSON naming an uploadId from POST /v1/uploads. Reads one sample and proposes fields. Nothing is saved until it is sent to POST /v1/blueprints. Costs one scan.\n\nNeeds the documents:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/blueprints/draft","host":["{{baseUrl}}"],"path":["v1","blueprints","draft"],"query":[],"variable":[]},"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","src":[],"description":"The file."}]}},"response":[]},{"id":"Blueprints_readDraft","name":"Get a proposed blueprint","request":{"method":"GET","description":"The document id from proposing one. Answers READING until it has been read.\n\nNeeds the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/blueprints/draft/:documentId","host":["{{baseUrl}}"],"path":["v1","blueprints","draft",":documentId"],"query":[],"variable":[{"key":"documentId","value":"","description":""}]}},"response":[]}]},{"name":"budgets","item":[{"id":"Budgets_list","name":"List budgets","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/budgets","host":["{{baseUrl}}"],"path":["v1","budgets"],"query":[{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Budgets_get","name":"Get a budget and how it stands","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/budgets/:id","host":["{{baseUrl}}"],"path":["v1","budgets",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]}]},{"name":"business cards","item":[{"id":"SpecialDocuments_businessCards","name":"Read a business card","request":{"method":"POST","description":"POST /v1/documents/url with the type fixed: the same body, wait and answer. Bank and tax numbers are masked; POST /v1/documents/{id}/reveal opens them.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/business-cards","host":["{{baseUrl}}"],"path":["v1","business-cards"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"categories","item":[{"id":"Categories_list","name":"List categories","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/categories","host":["{{baseUrl}}"],"path":["v1","categories"],"query":[{"key":"q","value":"","disabled":true,"description":""},{"key":"enabled","value":"","disabled":true,"description":""},{"key":"type","value":"","disabled":true,"description":""},{"key":"origin","value":"","disabled":true,"description":""},{"key":"headers","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Categories_create","name":"Create a category","request":{"method":"POST","description":"Needs the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/categories","host":["{{baseUrl}}"],"path":["v1","categories"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"name\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Categories_get","name":"Get a category","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/categories/:id","host":["{{baseUrl}}"],"path":["v1","categories",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Categories_update","name":"Change a category","request":{"method":"PATCH","description":"Needs the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/categories/:id","host":["{{baseUrl}}"],"path":["v1","categories",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Categories_remove","name":"Delete a category","request":{"method":"DELETE","description":"Needs the expenses:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/categories/:id","host":["{{baseUrl}}"],"path":["v1","categories",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Categories_import","name":"Import categories from CSV","request":{"method":"POST","description":"Send the CSV as text/plain, or as JSON with a `csv` field. Rows that match an existing category update it. Columns: Name, Enabled, GL code, Payroll code, Comment required, Comment hint, Max expense. With mode=replace the list becomes what the file says: a category it leaves out is deleted, or turned off if something uses it, and a file with a row it cannot read changes nothing.\n\nNeeds the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/categories/import","host":["{{baseUrl}}"],"path":["v1","categories","import"],"query":[{"key":"mode","value":"","disabled":true,"description":""}],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"csv\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"check with document","item":[{"id":"SpecialDocuments_checkWithDocument","name":"Read a check with its remittance","request":{"method":"POST","description":"Two documents, read apart: the check, and what came with it.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/check-with-document","host":["{{baseUrl}}"],"path":["v1","check-with-document"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"check\": {},\n  \"document\": {}\n}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"checks","item":[{"id":"SpecialDocuments_checks","name":"Read a bank check","request":{"method":"POST","description":"POST /v1/documents/url with the type fixed: the same body, wait and answer. Bank and tax numbers are masked; POST /v1/documents/{id}/reveal opens them.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/checks","host":["{{baseUrl}}"],"path":["v1","checks"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"SpecialDocuments_checksAsync","name":"Read a bank check in the background","request":{"method":"POST","description":"POST /v1/documents/url with the type fixed: the same body, wait and answer. Bank and tax numbers are masked; POST /v1/documents/{id}/reveal opens them.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/checks/async","host":["{{baseUrl}}"],"path":["v1","checks","async"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"clients","item":[{"id":"ClientsController2_list","name":"GET /v1/clients","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/clients","host":["{{baseUrl}}"],"path":["v1","clients"],"query":[],"variable":[]}},"response":[]},{"id":"ClientsController2_create","name":"POST /v1/clients","request":{"method":"POST","description":"Needs the expenses:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/clients","host":["{{baseUrl}}"],"path":["v1","clients"],"query":[],"variable":[]}},"response":[]},{"id":"ClientsController2_get","name":"GET /v1/clients/:id","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/clients/:id","host":["{{baseUrl}}"],"path":["v1","clients",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"ClientsController2_update","name":"PATCH /v1/clients/:id","request":{"method":"PATCH","description":"Needs the expenses:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/clients/:id","host":["{{baseUrl}}"],"path":["v1","clients",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"ClientsController2_remove","name":"DELETE /v1/clients/:id","request":{"method":"DELETE","description":"Needs the expenses:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/clients/:id","host":["{{baseUrl}}"],"path":["v1","clients",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]}]},{"name":"contacts","item":[{"id":"Contacts_list","name":"List contacts","request":{"method":"GET","description":"Needs the contacts:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/contacts","host":["{{baseUrl}}"],"path":["v1","contacts"],"query":[{"key":"q","value":"","disabled":true,"description":""},{"key":"documentId","value":"","disabled":true,"description":""},{"key":"name","value":"","disabled":true,"description":""},{"key":"company","value":"","disabled":true,"description":""},{"key":"email","value":"","disabled":true,"description":""},{"key":"phone","value":"","disabled":true,"description":""},{"key":"website","value":"","disabled":true,"description":""},{"key":"city","value":"","disabled":true,"description":""},{"key":"region","value":"","disabled":true,"description":""},{"key":"postalCode","value":"","disabled":true,"description":""},{"key":"country","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Contacts_get","name":"Get a contact","request":{"method":"GET","description":"Needs the contacts:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/contacts/:id","host":["{{baseUrl}}"],"path":["v1","contacts",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Contacts_vCard","name":"Download a contact as a vCard","request":{"method":"GET","description":"Needs the contacts:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/contacts/:id/vcard","host":["{{baseUrl}}"],"path":["v1","contacts",":id","vcard"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Contacts_export","name":"Export contacts as vCard or CSV","request":{"method":"POST","description":"Needs the contacts:read scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/contacts/export","host":["{{baseUrl}}"],"path":["v1","contacts","export"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"format\": \"vcard\"\n}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"custom fields","item":[{"id":"CustomFields_list","name":"List custom fields","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/custom-fields","host":["{{baseUrl}}"],"path":["v1","custom-fields"],"query":[{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"CustomFields_get","name":"Get a custom field","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/custom-fields/:id","host":["{{baseUrl}}"],"path":["v1","custom-fields",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]}]},{"name":"documents","item":[{"id":"Documents_list","name":"List documents","request":{"method":"GET","description":"Ranges take __gt, __gte, __lt and __lte on created, updated, issued, total and tax: created__gte=2026-01-01, total__lt=5000. Issued, total and tax are what the document's expense holds, with whatever a person corrected, and a document with no expense has none. A day covers all of itself. order_by sorts, and a leading minus sorts down: -total. A document with no value comes last either way. A cursor resumes the created order only, so any other order pages with offset or page. is_empty names fields that must be empty. q searches the title, file name, notes, OCR text and extracted fields in any case; with an asterisk it searches the OCR text and extracted fields, case sensitive, and returns at most the newest 5,000 matches.\n\nNeeds the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents","host":["{{baseUrl}}"],"path":["v1","documents"],"query":[{"key":"type","value":"","disabled":true,"description":""},{"key":"status","value":"","disabled":true,"description":""},{"key":"source","value":"","disabled":true,"description":""},{"key":"source_id","value":"","disabled":true,"description":""},{"key":"external_id","value":"","disabled":true,"description":""},{"key":"blueprint_name","value":"","disabled":true,"description":""},{"key":"owner","value":"","disabled":true,"description":""},{"key":"device_id","value":"","disabled":true,"description":""},{"key":"device_user_uuid","value":"","disabled":true,"description":""},{"key":"viewed","value":"","disabled":true,"description":""},{"key":"trashed","value":"","disabled":true,"description":""},{"key":"envelope","value":"","disabled":true,"description":""},{"key":"created__gt","value":"","disabled":true,"description":""},{"key":"created__gte","value":"","disabled":true,"description":""},{"key":"created__lt","value":"","disabled":true,"description":""},{"key":"created__lte","value":"","disabled":true,"description":""},{"key":"updated__gt","value":"","disabled":true,"description":""},{"key":"updated__gte","value":"","disabled":true,"description":""},{"key":"updated__lt","value":"","disabled":true,"description":""},{"key":"updated__lte","value":"","disabled":true,"description":""},{"key":"issued","value":"","disabled":true,"description":""},{"key":"issued__gt","value":"","disabled":true,"description":""},{"key":"issued__gte","value":"","disabled":true,"description":""},{"key":"issued__lt","value":"","disabled":true,"description":""},{"key":"issued__lte","value":"","disabled":true,"description":""},{"key":"total","value":"","disabled":true,"description":""},{"key":"total__gt","value":"","disabled":true,"description":""},{"key":"total__gte","value":"","disabled":true,"description":""},{"key":"total__lt","value":"","disabled":true,"description":""},{"key":"total__lte","value":"","disabled":true,"description":""},{"key":"tax","value":"","disabled":true,"description":""},{"key":"tax__gt","value":"","disabled":true,"description":""},{"key":"tax__gte","value":"","disabled":true,"description":""},{"key":"tax__lt","value":"","disabled":true,"description":""},{"key":"tax__lte","value":"","disabled":true,"description":""},{"key":"currency","value":"","disabled":true,"description":""},{"key":"category","value":"","disabled":true,"description":""},{"key":"vendor","value":"","disabled":true,"description":""},{"key":"notes","value":"","disabled":true,"description":""},{"key":"payment_type","value":"","disabled":true,"description":""},{"key":"last_four_digits","value":"","disabled":true,"description":""},{"key":"first_name","value":"","disabled":true,"description":""},{"key":"last_name","value":"","disabled":true,"description":""},{"key":"work_phone","value":"","disabled":true,"description":""},{"key":"cell_phone","value":"","disabled":true,"description":""},{"key":"company","value":"","disabled":true,"description":""},{"key":"email","value":"","disabled":true,"description":""},{"key":"website","value":"","disabled":true,"description":""},{"key":"country","value":"","disabled":true,"description":""},{"key":"state","value":"","disabled":true,"description":""},{"key":"city","value":"","disabled":true,"description":""},{"key":"zip","value":"","disabled":true,"description":""},{"key":"name","value":"","disabled":true,"description":""},{"key":"is_empty","value":"","disabled":true,"description":""},{"key":"order_by","value":"","disabled":true,"description":""},{"key":"folderId","value":"","disabled":true,"description":""},{"key":"mailInBatchId","value":"","disabled":true,"description":""},{"key":"setId","value":"","disabled":true,"description":""},{"key":"externalId","value":"","disabled":true,"description":""},{"key":"tag","value":"","disabled":true,"description":""},{"key":"archived","value":"","disabled":true,"description":""},{"key":"unviewed","value":"","disabled":true,"description":""},{"key":"q","value":"","disabled":true,"description":""},{"key":"from","value":"","disabled":true,"description":""},{"key":"to","value":"","disabled":true,"description":""},{"key":"fraudColor","value":"","disabled":true,"description":""},{"key":"fraudSignal","value":"","disabled":true,"description":""},{"key":"fraudReview","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""},{"key":"offset","value":"","disabled":true,"description":""},{"key":"page","value":"","disabled":true,"description":""},{"key":"page_size","value":"","disabled":true,"description":""},{"key":"track_total_results","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Documents_create","name":"Upload a file","request":{"method":"POST","description":"Multipart, or JSON naming an uploadId from POST /v1/uploads. The file's type comes from its bytes. Use a JPEG, PNG, WebP, HEIC, TIFF, PDF, DOCX, XLSX, CSV, TXT, HTML, EML or ZIP file. Up to 25 MB, or 50 MB for a PDF sent to be split into a set of documents. Reads best at 300 DPI for a PDF and 1000 pixels on the shorter side of an image. A ZIP unpacks into one document per file, up to 200 files and 200 MB, and each file counts against the plan. A ZIP inside a ZIP is refused. With a key this waits for the reading and answers with it, unless async is set. Name a type, or leave it out and the classifier says what it is.\n\nNeeds the documents:write scope.","header":[{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/documents","host":["{{baseUrl}}"],"path":["v1","documents"],"query":[{"key":"client","value":"","disabled":true,"description":"The app sending the file. Leave it out in a browser."}],"variable":[]},"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","src":[],"description":"The file."},{"key":"tags","type":"text","value":"","disabled":true,"description":""},{"key":"categories","type":"text","value":"","disabled":true,"description":""},{"key":"taxonomy","type":"text","value":"","disabled":true,"description":""},{"key":"allowed_async_enrichments","type":"text","value":"","disabled":true,"description":""},{"key":"bounding_boxes","type":"text","value":"","disabled":true,"description":""},{"key":"confidence_details","type":"text","value":"","disabled":true,"description":""},{"key":"compute","type":"text","value":"","disabled":true,"description":""},{"key":"parse_address","type":"text","value":"","disabled":true,"description":""},{"key":"country","type":"text","value":"","disabled":true,"description":""},{"key":"max_pages_to_process","type":"text","value":"","disabled":true,"description":""},{"key":"boost_mode","type":"text","value":"","disabled":true,"description":""},{"key":"auto_delete","type":"text","value":"","disabled":true,"description":""},{"key":"stitch","type":"text","value":"","disabled":true,"description":""},{"key":"crop_document","type":"text","value":"","disabled":true,"description":""},{"key":"blueprint_name","type":"text","value":"","disabled":true,"description":""},{"key":"blueprint_version","type":"text","value":"","disabled":true,"description":""},{"key":"async","type":"text","value":"","disabled":true,"description":""},{"key":"line_item_expansion","type":"text","value":"","disabled":true,"description":""},{"key":"tiff_dpi","type":"text","value":"","disabled":true,"description":""},{"key":"type","type":"text","value":"","disabled":true,"description":""},{"key":"clientId","type":"text","value":"","disabled":true,"description":""},{"key":"externalId","type":"text","value":"","disabled":true,"description":""},{"key":"folderId","type":"text","value":"","disabled":true,"description":""},{"key":"notes","type":"text","value":"","disabled":true,"description":""},{"key":"capturedAt","type":"text","value":"","disabled":true,"description":""},{"key":"latitude","type":"text","value":"","disabled":true,"description":""},{"key":"longitude","type":"text","value":"","disabled":true,"description":""},{"key":"locationAccuracyM","type":"text","value":"","disabled":true,"description":""},{"key":"deviceId","type":"text","value":"","disabled":true,"description":""},{"key":"merchantName","type":"text","value":"","disabled":true,"description":""},{"key":"date","type":"text","value":"","disabled":true,"description":""},{"key":"totalMinor","type":"text","value":"","disabled":true,"description":""},{"key":"taxMinor","type":"text","value":"","disabled":true,"description":""},{"key":"category","type":"text","value":"","disabled":true,"description":""}]}},"response":[]},{"id":"Documents_get","name":"Get a document and its extraction","request":{"method":"GET","description":"Links are signed again on every read, with no new reading. detailed=true adds the reading with each field wrapped as value, score, ocrScore, rotation, boundingBox, boundingRegion and enriched. with_scores=true adds lineItemsWithScores and taxLinesWithScores. recordStatus says processed, reviewed or archived. bounding_boxes=true adds every line read with its box and four corners, and where each field was read from: boundingBox as [page, x1, y1, x2, y2] and boundingRegion as [x1, y1, x2, y2, x3, y3, x4, y4], both as fractions of the page. confidence_details=true adds how sure the read of each field was. Both can be sent on a submission too.\n\nNeeds the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents/:id","host":["{{baseUrl}}"],"path":["v1","documents",":id"],"query":[{"key":"bounding_boxes","value":"","disabled":true,"description":""},{"key":"confidence_details","value":"","disabled":true,"description":""},{"key":"detailed","value":"","disabled":true,"description":""},{"key":"with_scores","value":"","disabled":true,"description":""}],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Documents_replace","name":"Change a document, for a client written for PUT","request":{"method":"PUT","description":"The same as PATCH: it changes what the body names and nothing else.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/documents/:id","host":["{{baseUrl}}"],"path":["v1","documents",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Documents_update","name":"Change a document","request":{"method":"PATCH","description":"status REVIEWED marks it checked, approved sets your own flag, fraudReview records a decision, and billable, merchantName and the totals change its expense, under the rules of PATCH /v1/expenses/{id}. What can be refused is checked first, so nothing changes when any of it is.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/documents/:id","host":["{{baseUrl}}"],"path":["v1","documents",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Documents_remove","name":"Delete a document","request":{"method":"DELETE","description":"Needs the documents:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents/:id","host":["{{baseUrl}}"],"path":["v1","documents",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Documents_cancel","name":"Stop reading a document","request":{"method":"POST","description":"For filling in the details by hand. The file stays, and it can be read again.\n\nNeeds the documents:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents/:id/cancel","host":["{{baseUrl}}"],"path":["v1","documents",":id","cancel"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Documents_crop","name":"Crop a photo","request":{"method":"POST","description":"A box as fractions of the page as it shows now. The original stays as it came: a new page is drawn from it and read again, and it stays cropped through every later read. Only images can be cropped.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/documents/:id/crop","host":["{{baseUrl}}"],"path":["v1","documents",":id","crop"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{\n  \"x\": 0,\n  \"y\": 0,\n  \"width\": 0,\n  \"height\": 0\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"FraudReview_review","name":"Record a person's decision on a document","request":{"method":"POST","description":"Fraud, not fraud or unknown, with the signals they agree with. A re-read replaces the evidence and leaves this alone. Nobody decides on their own upload except the workspace owner.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/documents/:id/fraud-review","host":["{{baseUrl}}"],"path":["v1","documents",":id","fraud-review"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{\n  \"decision\": \"FRAUD\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"DocumentLineItems_list","name":"List a document's line items","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents/:id/line-items","host":["{{baseUrl}}"],"path":["v1","documents",":id","line-items"],"query":[{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"DocumentLineItems_create","name":"Add a line item","request":{"method":"POST","description":"The lines of the document's expense. When they added up to its total, a change to one moves the total and the converted amount with it. Refused once the expense is on a submitted report.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/documents/:id/line-items","host":["{{baseUrl}}"],"path":["v1","documents",":id","line-items"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{\n  \"description\": \"string\",\n  \"amountMinor\": 0\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"DocumentLineItems_removeAll","name":"Delete every line item","request":{"method":"DELETE","description":"The total stays as the receipt printed it.\n\nNeeds the documents:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents/:id/line-items","host":["{{baseUrl}}"],"path":["v1","documents",":id","line-items"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"DocumentLineItems_get","name":"Get a line item","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents/:id/line-items/:lineId","host":["{{baseUrl}}"],"path":["v1","documents",":id","line-items",":lineId"],"query":[],"variable":[{"key":"id","value":"","description":""},{"key":"lineId","value":"","description":""}]}},"response":[]},{"id":"DocumentLineItems_update","name":"Change a line item","request":{"method":"PATCH","description":"The lines of the document's expense. When they added up to its total, a change to one moves the total and the converted amount with it. Refused once the expense is on a submitted report.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/documents/:id/line-items/:lineId","host":["{{baseUrl}}"],"path":["v1","documents",":id","line-items",":lineId"],"query":[],"variable":[{"key":"id","value":"","description":""},{"key":"lineId","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"DocumentLineItems_remove","name":"Delete a line item","request":{"method":"DELETE","description":"The lines of the document's expense. When they added up to its total, a change to one moves the total and the converted amount with it. Refused once the expense is on a submitted report.\n\nNeeds the documents:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents/:id/line-items/:lineId","host":["{{baseUrl}}"],"path":["v1","documents",":id","line-items",":lineId"],"query":[],"variable":[{"key":"id","value":"","description":""},{"key":"lineId","value":"","description":""}]}},"response":[]},{"id":"DocumentOfx_ofx","name":"Download a bank statement as OFX","request":{"method":"GET","description":"OFX 1.0.2, the file accounting software and personal finance programs import, from the latest reading of a bank statement: the rules' reading, Claude's, or the bank_statement blueprint's. Each account on the statement gets its own transactions, with FITIDs that stay the same each time. Account and routing numbers are masked, so match the file to an account when importing it. A document that is not a statement, or one with nothing read from it, answers 409 saying which.\n\nNeeds the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents/:id/ofx","host":["{{baseUrl}}"],"path":["v1","documents",":id","ofx"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"DocumentsBulk_original","name":"Get a short-lived link to the original file","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents/:id/original","host":["{{baseUrl}}"],"path":["v1","documents",":id","original"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"DocumentsBulk_pdf","name":"Download a document as a PDF","request":{"method":"GET","description":"A file that already is a PDF answers 302 to a short-lived link on storage, so follow the redirect, without your Authorization header. Anything else is built on the spot and comes back here.\n\nNeeds the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents/:id/pdf","host":["{{baseUrl}}"],"path":["v1","documents",":id","pdf"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Documents_reprocess","name":"Read a document again","request":{"method":"POST","description":"Fields a person changed are left alone.\n\nNeeds the documents:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents/:id/reprocess","host":["{{baseUrl}}"],"path":["v1","documents",":id","reprocess"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"DocumentsReveal_reveal","name":"Open the bank and tax numbers read from a document","request":{"method":"POST","description":"Needs the documents.reveal permission and, for a key, the documents:reveal scope. Every call writes an audit row. Also returns a link to the original file and, for a check, its TIFF images. Nothing else hands these out.\n\nNeeds the documents:reveal scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/documents/:id/reveal","host":["{{baseUrl}}"],"path":["v1","documents",":id","reveal"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Documents_rotate","name":"Turn a page","request":{"method":"POST","description":"A quarter turn, counter-clockwise by default. The original stays as it came: a new page is drawn from it and read again, and it stays turned through every later read.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/documents/:id/rotate","host":["{{baseUrl}}"],"path":["v1","documents",":id","rotate"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"DocumentSplit_split","name":"Split a PDF already uploaded","request":{"method":"POST","description":"Every page, or the ranges given. Each part is a document and counts as a scan, and the whole goes to the trash once the parts exist.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/documents/:id/split","host":["{{baseUrl}}"],"path":["v1","documents",":id","split"],"query":[{"key":"client","value":"","disabled":true,"description":"The app sending the file. Leave it out in a browser."}],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{\n  \"mode\": \"every_page\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"DocumentTags_list","name":"List a document's tags","request":{"method":"GET","description":"Any type of document: receipts, checks, bank statements, business cards, contracts, tax forms and the rest.\n\nNeeds the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents/:id/tags","host":["{{baseUrl}}"],"path":["v1","documents",":id","tags"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"DocumentTags_addMany","name":"Add several tags to a document","request":{"method":"POST","description":"Needs the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/documents/:id/tags","host":["{{baseUrl}}"],"path":["v1","documents",":id","tags"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{\n  \"tags\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"DocumentTags_add","name":"Add a tag to a document","request":{"method":"PUT","description":"By name. A name the workspace does not have makes the tag. Adding one it already has changes nothing.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/documents/:id/tags","host":["{{baseUrl}}"],"path":["v1","documents",":id","tags"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{\n  \"name\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"DocumentTags_removeAll","name":"Take every tag off a document","request":{"method":"DELETE","description":"Needs the documents:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents/:id/tags","host":["{{baseUrl}}"],"path":["v1","documents",":id","tags"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"DocumentTags_remove","name":"Take a tag off a document","request":{"method":"DELETE","description":"The tag stays in the workspace.\n\nNeeds the documents:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents/:id/tags/:tagId","host":["{{baseUrl}}"],"path":["v1","documents",":id","tags",":tagId"],"query":[],"variable":[{"key":"id","value":"","description":""},{"key":"tagId","value":"","description":""}]}},"response":[]},{"id":"DocumentTaxLines_list","name":"List a document's tax lines","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents/:id/tax-lines","host":["{{baseUrl}}"],"path":["v1","documents",":id","tax-lines"],"query":[{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"DocumentTaxLines_create","name":"Add a tax line","request":{"method":"POST","description":"The expense's tax is the sum of its tax lines. When its total was what is under the tax and on top of it, the total moves with the tax. Refused once the expense is on a submitted report.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/documents/:id/tax-lines","host":["{{baseUrl}}"],"path":["v1","documents",":id","tax-lines"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{\n  \"amountMinor\": 0\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"DocumentTaxLines_get","name":"Get a tax line","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents/:id/tax-lines/:taxLineId","host":["{{baseUrl}}"],"path":["v1","documents",":id","tax-lines",":taxLineId"],"query":[],"variable":[{"key":"id","value":"","description":""},{"key":"taxLineId","value":"","description":""}]}},"response":[]},{"id":"DocumentTaxLines_update","name":"Change a tax line","request":{"method":"PATCH","description":"The expense's tax is the sum of its tax lines. When its total was what is under the tax and on top of it, the total moves with the tax. Refused once the expense is on a submitted report.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/documents/:id/tax-lines/:taxLineId","host":["{{baseUrl}}"],"path":["v1","documents",":id","tax-lines",":taxLineId"],"query":[],"variable":[{"key":"id","value":"","description":""},{"key":"taxLineId","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"DocumentTaxLines_remove","name":"Delete a tax line","request":{"method":"DELETE","description":"The expense's tax is the sum of its tax lines. When its total was what is under the tax and on top of it, the total moves with the tax. Refused once the expense is on a submitted report.\n\nNeeds the documents:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents/:id/tax-lines/:taxLineId","host":["{{baseUrl}}"],"path":["v1","documents",":id","tax-lines",":taxLineId"],"query":[],"variable":[{"key":"id","value":"","description":""},{"key":"taxLineId","value":"","description":""}]}},"response":[]},{"id":"DocumentsBulk_text","name":"Get the text read from a document","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents/:id/text","host":["{{baseUrl}}"],"path":["v1","documents",":id","text"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"DocumentExtraction_any","name":"Read a document with a blueprint","request":{"method":"POST","description":"Multipart with a field named file, or JSON with uploadId, file_url or file_data. The answer is in blueprint.result. Without a Claude key on the server, blueprint.error says so and the text is still read. 20 pages by default and 50 at most.\n\nNeeds the documents:write scope.","header":[{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/documents/any","host":["{{baseUrl}}"],"path":["v1","documents","any"],"query":[],"variable":[]},"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","src":[],"description":"The file."},{"key":"external_id","type":"text","value":"","disabled":true,"description":""},{"key":"async","type":"text","value":"","disabled":true,"description":""},{"key":"tags","type":"text","value":"","disabled":true,"description":""},{"key":"auto_delete","type":"text","value":"","disabled":true,"description":""},{"key":"blueprint_name","type":"text","value":"string","disabled":false,"description":""},{"key":"blueprint_version","type":"text","value":"","disabled":true,"description":""},{"key":"max_pages_to_process","type":"text","value":"","disabled":true,"description":""}]}},"response":[]},{"id":"DocumentExtraction_anyAsync","name":"Read a document with a blueprint, in the background","request":{"method":"POST","description":"Multipart with a field named file, or JSON with uploadId, file_url or file_data. Answers at once. document.processed says when it is done.\n\nNeeds the documents:write scope.","header":[{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/documents/any/async","host":["{{baseUrl}}"],"path":["v1","documents","any","async"],"query":[],"variable":[]},"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","src":[],"description":"The file."},{"key":"external_id","type":"text","value":"","disabled":true,"description":""},{"key":"async","type":"text","value":"","disabled":true,"description":""},{"key":"tags","type":"text","value":"","disabled":true,"description":""},{"key":"auto_delete","type":"text","value":"","disabled":true,"description":""},{"key":"blueprint_name","type":"text","value":"string","disabled":false,"description":""},{"key":"blueprint_version","type":"text","value":"","disabled":true,"description":""},{"key":"max_pages_to_process","type":"text","value":"","disabled":true,"description":""}]}},"response":[]},{"id":"DocumentExtraction_batch","name":"Submit up to 100 addresses at once","request":{"method":"POST","description":"Answers at once with a set. Each address becomes a document with its own webhook, and an address that fails is listed under refused without stopping the rest.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/documents/batch","host":["{{baseUrl}}"],"path":["v1","documents","batch"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"file_urls\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"DocumentsBulk_run","name":"Act on many documents","request":{"method":"POST","description":"Send ids, or a filter to act on everything that matches. With a filter, call again with nextCursor until it is null.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/documents/bulk","host":["{{baseUrl}}"],"path":["v1","documents","bulk"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"action\": {\n    \"type\": \"move\",\n    \"folderId\": \"string\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"DocumentExtraction_classify","name":"Say what a document is","request":{"method":"POST","description":"Multipart with a field named file, or JSON with uploadId, file_url or file_data. Answers with a value and a score, from the built-in list or from document_types. It works with no Claude key for the common types, and Claude only decides what the rules cannot.\n\nNeeds the documents:write scope.","header":[{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/documents/classify","host":["{{baseUrl}}"],"path":["v1","documents","classify"],"query":[],"variable":[]},"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","src":[],"description":"The file."},{"key":"external_id","type":"text","value":"","disabled":true,"description":""},{"key":"async","type":"text","value":"","disabled":true,"description":""},{"key":"tags","type":"text","value":"","disabled":true,"description":""},{"key":"auto_delete","type":"text","value":"","disabled":true,"description":""},{"key":"document_types","type":"text","value":"","disabled":true,"description":""}]}},"response":[]},{"id":"DocumentsBulk_count","name":"Count the documents a filter matches","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents/count","host":["{{baseUrl}}"],"path":["v1","documents","count"],"query":[{"key":"type","value":"","disabled":true,"description":""},{"key":"status","value":"","disabled":true,"description":""},{"key":"source","value":"","disabled":true,"description":""},{"key":"source_id","value":"","disabled":true,"description":""},{"key":"external_id","value":"","disabled":true,"description":""},{"key":"blueprint_name","value":"","disabled":true,"description":""},{"key":"owner","value":"","disabled":true,"description":""},{"key":"device_id","value":"","disabled":true,"description":""},{"key":"device_user_uuid","value":"","disabled":true,"description":""},{"key":"viewed","value":"","disabled":true,"description":""},{"key":"trashed","value":"","disabled":true,"description":""},{"key":"envelope","value":"","disabled":true,"description":""},{"key":"created__gt","value":"","disabled":true,"description":""},{"key":"created__gte","value":"","disabled":true,"description":""},{"key":"created__lt","value":"","disabled":true,"description":""},{"key":"created__lte","value":"","disabled":true,"description":""},{"key":"updated__gt","value":"","disabled":true,"description":""},{"key":"updated__gte","value":"","disabled":true,"description":""},{"key":"updated__lt","value":"","disabled":true,"description":""},{"key":"updated__lte","value":"","disabled":true,"description":""},{"key":"issued","value":"","disabled":true,"description":""},{"key":"issued__gt","value":"","disabled":true,"description":""},{"key":"issued__gte","value":"","disabled":true,"description":""},{"key":"issued__lt","value":"","disabled":true,"description":""},{"key":"issued__lte","value":"","disabled":true,"description":""},{"key":"total","value":"","disabled":true,"description":""},{"key":"total__gt","value":"","disabled":true,"description":""},{"key":"total__gte","value":"","disabled":true,"description":""},{"key":"total__lt","value":"","disabled":true,"description":""},{"key":"total__lte","value":"","disabled":true,"description":""},{"key":"tax","value":"","disabled":true,"description":""},{"key":"tax__gt","value":"","disabled":true,"description":""},{"key":"tax__gte","value":"","disabled":true,"description":""},{"key":"tax__lt","value":"","disabled":true,"description":""},{"key":"tax__lte","value":"","disabled":true,"description":""},{"key":"currency","value":"","disabled":true,"description":""},{"key":"category","value":"","disabled":true,"description":""},{"key":"vendor","value":"","disabled":true,"description":""},{"key":"notes","value":"","disabled":true,"description":""},{"key":"payment_type","value":"","disabled":true,"description":""},{"key":"last_four_digits","value":"","disabled":true,"description":""},{"key":"first_name","value":"","disabled":true,"description":""},{"key":"last_name","value":"","disabled":true,"description":""},{"key":"work_phone","value":"","disabled":true,"description":""},{"key":"cell_phone","value":"","disabled":true,"description":""},{"key":"company","value":"","disabled":true,"description":""},{"key":"email","value":"","disabled":true,"description":""},{"key":"website","value":"","disabled":true,"description":""},{"key":"country","value":"","disabled":true,"description":""},{"key":"state","value":"","disabled":true,"description":""},{"key":"city","value":"","disabled":true,"description":""},{"key":"zip","value":"","disabled":true,"description":""},{"key":"name","value":"","disabled":true,"description":""},{"key":"is_empty","value":"","disabled":true,"description":""},{"key":"order_by","value":"","disabled":true,"description":""},{"key":"folderId","value":"","disabled":true,"description":""},{"key":"mailInBatchId","value":"","disabled":true,"description":""},{"key":"setId","value":"","disabled":true,"description":""},{"key":"externalId","value":"","disabled":true,"description":""},{"key":"tag","value":"","disabled":true,"description":""},{"key":"archived","value":"","disabled":true,"description":""},{"key":"unviewed","value":"","disabled":true,"description":""},{"key":"q","value":"","disabled":true,"description":""},{"key":"from","value":"","disabled":true,"description":""},{"key":"to","value":"","disabled":true,"description":""},{"key":"fraudColor","value":"","disabled":true,"description":""},{"key":"fraudSignal","value":"","disabled":true,"description":""},{"key":"fraudReview","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"DocumentExtraction_extract","name":"Say what a document is and read it, in one call","request":{"method":"POST","description":"Multipart with a field named file, or JSON with uploadId, file_url or file_data. document_types may name built-in types and blueprints. Answers with extraction, or extraction_error when it could not be read.\n\nNeeds the documents:write scope.","header":[{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/documents/extract","host":["{{baseUrl}}"],"path":["v1","documents","extract"],"query":[],"variable":[]},"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","src":[],"description":"The file."},{"key":"external_id","type":"text","value":"","disabled":true,"description":""},{"key":"async","type":"text","value":"","disabled":true,"description":""},{"key":"tags","type":"text","value":"","disabled":true,"description":""},{"key":"auto_delete","type":"text","value":"","disabled":true,"description":""},{"key":"document_types","type":"text","value":"","disabled":true,"description":""}]}},"response":[]},{"id":"DocumentSplit_splitUpload","name":"Split a PDF on storage into documents","request":{"method":"POST","description":"The PDF named by uploadId, from POST /v1/uploads with purpose document_set, up to 50 MB. mode says where it is cut, and detect is the default. Each part is a document, counts as a scan and is held to 25 MB: a part past that is listed under refused, and the rest are filed.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/documents/split","host":["{{baseUrl}}"],"path":["v1","documents","split"],"query":[{"key":"client","value":"","disabled":true,"description":"The app sending the file. Leave it out in a browser."}],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"uploadId\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"DocumentsBulk_trashed","name":"List deleted documents","request":{"method":"GET","description":"Each can be restored for 30 days.\n\nNeeds the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents/trash","host":["{{baseUrl}}"],"path":["v1","documents","trash"],"query":[{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"DocumentsBulk_emptyOrRestore","name":"Restore deleted documents, or delete them for good","request":{"method":"POST","description":"Needs the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/documents/trash","host":["{{baseUrl}}"],"path":["v1","documents","trash"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"action\": \"restore\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"PublicDocuments_submit","name":"Submit a file by URL or base64","request":{"method":"POST","description":"By default the call waits up to 30 seconds and returns the extraction with 201. With async: true, or if reading takes longer, it answers 202 and the document.processed webhook says when it is done. file_url must be public https; redirects are not followed. file_urls reads several images as one document, in order. bucket and package_path read from your own S3 bucket, with keys saved in document settings. Use a JPEG, PNG, WebP, HEIC, TIFF, PDF, DOCX, XLSX, CSV, TXT, HTML, EML or ZIP file. Up to 25 MB, or 50 MB for a PDF sent to be split into a set of documents. Reads best at 300 DPI for a PDF and 1000 pixels on the shorter side of an image. A ZIP unpacks into one document per file, up to 200 files and 200 MB, and each file counts against the plan. A ZIP inside a ZIP is refused.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/documents/url","host":["{{baseUrl}}"],"path":["v1","documents","url"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"documents set","item":[{"id":"DocumentSets_listDocumentsSets","name":"List sets of documents","request":{"method":"GET","description":"Includes ZIPs and batches of addresses.\n\nNeeds the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents-set","host":["{{baseUrl}}"],"path":["v1","documents-set"],"query":[{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"DocumentSets_createDocumentsSet","name":"Split a PDF and read each document in it","request":{"method":"POST","description":"Multipart with a field named file, or JSON with uploadId, file_url or file_data. Up to 250 pages and 50 MB. Answers at once. Each part fires document.processed and counts as a scan, and document_set.completed says when all are read.\n\nNeeds the documents:write scope.","header":[{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/documents-set","host":["{{baseUrl}}"],"path":["v1","documents-set"],"query":[],"variable":[]},"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","src":[],"description":"The file."},{"key":"split_by_blank_page","type":"text","value":"","disabled":true,"description":""},{"key":"every_page","type":"text","value":"","disabled":true,"description":""},{"key":"ranges","type":"text","value":"","disabled":true,"description":""},{"key":"document_types","type":"text","value":"","disabled":true,"description":""},{"key":"blueprint_name","type":"text","value":"","disabled":true,"description":""},{"key":"external_id","type":"text","value":"","disabled":true,"description":""}]}},"response":[]},{"id":"DocumentSets_getDocumentsSet","name":"Get a set and the documents it made","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/documents-set/:id","host":["{{baseUrl}}"],"path":["v1","documents-set",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]}]},{"name":"expenses","item":[{"id":"Expenses_list","name":"List expenses","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/expenses","host":["{{baseUrl}}"],"path":["v1","expenses"],"query":[{"key":"status","value":"","disabled":true,"description":""},{"key":"kind","value":"","disabled":true,"description":""},{"key":"paymentType","value":"","disabled":true,"description":""},{"key":"ownerId","value":"","disabled":true,"description":""},{"key":"scope","value":"","disabled":true,"description":""},{"key":"categoryId","value":"","disabled":true,"description":""},{"key":"merchantId","value":"","disabled":true,"description":""},{"key":"projectId","value":"","disabled":true,"description":""},{"key":"clientId","value":"","disabled":true,"description":""},{"key":"tagId","value":"","disabled":true,"description":""},{"key":"department","value":"","disabled":true,"description":""},{"key":"reportId","value":"","disabled":true,"description":""},{"key":"externalId","value":"","disabled":true,"description":""},{"key":"unreported","value":"","disabled":true,"description":""},{"key":"needsReview","value":"","disabled":true,"description":""},{"key":"billable","value":"","disabled":true,"description":""},{"key":"reimbursable","value":"","disabled":true,"description":""},{"key":"moneyFlow","value":"","disabled":true,"description":""},{"key":"dateField","value":"","disabled":true,"description":""},{"key":"from","value":"","disabled":true,"description":""},{"key":"to","value":"","disabled":true,"description":""},{"key":"minMinor","value":"","disabled":true,"description":""},{"key":"maxMinor","value":"","disabled":true,"description":""},{"key":"q","value":"","disabled":true,"description":""},{"key":"sort","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Expenses_create","name":"Create an expense","request":{"method":"POST","description":"Needs the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/expenses","host":["{{baseUrl}}"],"path":["v1","expenses"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"date\": \"string\",\n  \"amountMinor\": 0\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Expenses_get","name":"Get an expense","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/expenses/:id","host":["{{baseUrl}}"],"path":["v1","expenses",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Expenses_update","name":"Change an expense","request":{"method":"PATCH","description":"Send If-Match with the updatedAt you last read to make this conditional: if someone changed the expense since, it answers 409 CONFLICT with details.reason STALE_WRITE and changes nothing.\n\nNeeds the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"},{"key":"If-Match","value":"","disabled":true,"description":"The expense's updatedAt, as read."}],"url":{"raw":"{{baseUrl}}/v1/expenses/:id","host":["{{baseUrl}}"],"path":["v1","expenses",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Expenses_remove","name":"Void an expense","request":{"method":"DELETE","description":"A voided expense stays for audit and leaves every total.\n\nNeeds the expenses:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/expenses/:id","host":["{{baseUrl}}"],"path":["v1","expenses",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"ExpenseThread_list","name":"List comments on an expense","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/expenses/:id/comments","host":["{{baseUrl}}"],"path":["v1","expenses",":id","comments"],"query":[{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"ExpenseThread_add","name":"Comment on an expense","request":{"method":"POST","description":"Needs the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/expenses/:id/comments","host":["{{baseUrl}}"],"path":["v1","expenses",":id","comments"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"ExpenseThread_reach","name":"Reach someone a comment on this expense could not","request":{"method":"POST","description":"An expense has no participants of its own, so they join the report it is on, and then they are told. Refused when it is on no report.\n\nNeeds the reports:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/expenses/:id/comments/:commentId/reach","host":["{{baseUrl}}"],"path":["v1","expenses",":id","comments",":commentId","reach"],"query":[],"variable":[{"key":"id","value":"","description":""},{"key":"commentId","value":"","description":""}]},"body":{"mode":"raw","raw":"{\n  \"userIds\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"ExpenseThread_mentionable","name":"List who a comment on this expense can mention","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/expenses/:id/comments/mentionable","host":["{{baseUrl}}"],"path":["v1","expenses",":id","comments","mentionable"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"ExpenseThread_duplicate","name":"Copy an expense, dated today, with no receipt","request":{"method":"POST","description":"Needs the expenses:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/expenses/:id/duplicate","host":["{{baseUrl}}"],"path":["v1","expenses",":id","duplicate"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Expenses_duplicates","name":"List an expense and its possible duplicates","request":{"method":"GET","description":"Every copy in the group, not just a pair. hidden counts any the caller cannot read.\n\nNeeds the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/expenses/:id/duplicates","host":["{{baseUrl}}"],"path":["v1","expenses",":id","duplicates"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"ExpenseThread_dismissFlag","name":"Dismiss a flag on an expense","request":{"method":"POST","description":"For whoever has it for approval, or someone who manages expenses. The flag goes from the expense and stays in the audit log. Not for a hold.\n\nNeeds the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/expenses/:id/flags/:code/dismiss","host":["{{baseUrl}}"],"path":["v1","expenses",":id","flags",":code","dismiss"],"query":[],"variable":[{"key":"id","value":"","description":""},{"key":"code","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"ExpenseThread_hold","name":"Put an expense on hold","request":{"method":"POST","description":"Needs the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/expenses/:id/hold","host":["{{baseUrl}}"],"path":["v1","expenses",":id","hold"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{\n  \"reason\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"ExpenseReceipts_attach","name":"Attach a receipt to an expense","request":{"method":"POST","description":"Multipart, or JSON naming an uploadId from POST /v1/uploads. add files it beside what is there, and a first receipt on a receipt expense is read onto it. replace takes the current ones to the trash and reads the new one. Fields a person changed are left alone.\n\nNeeds the documents:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/expenses/:id/receipts","host":["{{baseUrl}}"],"path":["v1","expenses",":id","receipts"],"query":[{"key":"client","value":"","disabled":true,"description":"The app sending the file. Leave it out in a browser."}],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","src":[],"description":"The file."},{"key":"mode","type":"text","value":"","disabled":true,"description":""},{"key":"clientId","type":"text","value":"","disabled":true,"description":""},{"key":"deviceId","type":"text","value":"","disabled":true,"description":""}]}},"response":[]},{"id":"Expenses_settleDuplicates","name":"Answer a duplicate question","request":{"method":"POST","description":"keep all takes the hold off every one of them. keep selected keeps this one, discards the others and can take values from them, all in one step. The submitter and whoever holds the open approval can do this on an outstanding report.\n\nNeeds the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/expenses/:id/settle-duplicates","host":["{{baseUrl}}"],"path":["v1","expenses",":id","settle-duplicates"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{\n  \"keep\": \"all\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"ExpenseThread_unhold","name":"Take an expense off hold","request":{"method":"POST","description":"Needs the expenses:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/expenses/:id/unhold","host":["{{baseUrl}}"],"path":["v1","expenses",":id","unhold"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Expenses_bulk","name":"Change many expenses","request":{"method":"POST","description":"Needs the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/expenses/bulk","host":["{{baseUrl}}"],"path":["v1","expenses","bulk"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"ids\": [\n    \"string\"\n  ],\n  \"action\": {\n    \"type\": \"set_category\",\n    \"categoryId\": \"string\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Expenses_totals","name":"Total the expenses that match a filter, or the ones selected, in any currency","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/expenses/totals","host":["{{baseUrl}}"],"path":["v1","expenses","totals"],"query":[{"key":"status","value":"","disabled":true,"description":""},{"key":"kind","value":"","disabled":true,"description":""},{"key":"paymentType","value":"","disabled":true,"description":""},{"key":"ownerId","value":"","disabled":true,"description":""},{"key":"scope","value":"","disabled":true,"description":""},{"key":"categoryId","value":"","disabled":true,"description":""},{"key":"merchantId","value":"","disabled":true,"description":""},{"key":"projectId","value":"","disabled":true,"description":""},{"key":"clientId","value":"","disabled":true,"description":""},{"key":"tagId","value":"","disabled":true,"description":""},{"key":"department","value":"","disabled":true,"description":""},{"key":"reportId","value":"","disabled":true,"description":""},{"key":"externalId","value":"","disabled":true,"description":""},{"key":"unreported","value":"","disabled":true,"description":""},{"key":"needsReview","value":"","disabled":true,"description":""},{"key":"billable","value":"","disabled":true,"description":""},{"key":"reimbursable","value":"","disabled":true,"description":""},{"key":"moneyFlow","value":"","disabled":true,"description":""},{"key":"dateField","value":"","disabled":true,"description":""},{"key":"from","value":"","disabled":true,"description":""},{"key":"to","value":"","disabled":true,"description":""},{"key":"minMinor","value":"","disabled":true,"description":""},{"key":"maxMinor","value":"","disabled":true,"description":""},{"key":"q","value":"","disabled":true,"description":""},{"key":"ids","value":"","disabled":true,"description":""},{"key":"currency","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]}]},{"name":"export history","item":[{"id":"ExportHistory_list","name":"List which documents went where","request":{"method":"GET","description":"Files from exports, postings to connected services, and what programs recorded, with the id each has there. Needs expenses.read_all.\n\nNeeds the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/export-history","host":["{{baseUrl}}"],"path":["v1","export-history"],"query":[{"key":"documentId","value":"","disabled":true,"description":""},{"key":"target","value":"","disabled":true,"description":""},{"key":"externalId","value":"","disabled":true,"description":""},{"key":"via","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"ExportHistory_append","name":"Record that documents went somewhere","request":{"method":"POST","description":"For an export a program made itself. A record already held is not written again, so a retry is safe.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/export-history","host":["{{baseUrl}}"],"path":["v1","export-history"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"documentIds\": [\n    \"string\"\n  ],\n  \"target\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"exports","item":[{"id":"Exports_list","name":"List exports","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/exports","host":["{{baseUrl}}"],"path":["v1","exports"],"query":[{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Exports_create","name":"Start an export","request":{"method":"POST","description":"Filters select by expense, or by report with reportState, reportIds, startDate and endDate (one year at most), approvedAfter and exported. policyIds takes workspace ids, and a key can only name its own. `template` is the file's whole layout as text, with ${expense.merchant}, <#list reports as report> and <#if report.exported>, and takes CSV, TXT, JSON or XML: a mistake in it answers 422 with the line. `onFinish` can email the file, mark the reports it covers as exported, which needs reports:write, and upload it by SFTP. SFTP needs the host key fingerprint of the server, refuses a private address, and never returns the credentials.\n\nNeeds the expenses:read scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/exports","host":["{{baseUrl}}"],"path":["v1","exports"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"kind\": \"expenses\",\n  \"format\": \"CSV\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Exports_get","name":"Get an export and, when ready, its link","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/exports/:id","host":["{{baseUrl}}"],"path":["v1","exports",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]}]},{"name":"folders","item":[{"id":"Folders_list","name":"List folders","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/folders","host":["{{baseUrl}}"],"path":["v1","folders"],"query":[{"key":"q","value":"","disabled":true,"description":""},{"key":"parentId","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Folders_create","name":"Create a folder","request":{"method":"POST","description":"Needs the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/folders","host":["{{baseUrl}}"],"path":["v1","folders"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"name\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Folders_get","name":"Get a folder","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/folders/:id","host":["{{baseUrl}}"],"path":["v1","folders",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Folders_update","name":"Change a folder","request":{"method":"PATCH","description":"Needs the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/folders/:id","host":["{{baseUrl}}"],"path":["v1","folders",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Folders_remove","name":"Delete a folder","request":{"method":"DELETE","description":"Needs the documents:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/folders/:id","host":["{{baseUrl}}"],"path":["v1","folders",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]}]},{"name":"forwarding","item":[{"id":"Forwarding_recent","name":"List email sent to the caller's forwarding addresses","request":{"method":"GET","description":"Every message, filed or not, with the sender, subject, received time, whether it carried a file, and any file left out and why.\n\nNeeds the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/forwarding/emails","host":["{{baseUrl}}"],"path":["v1","forwarding","emails"],"query":[{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]}]},{"name":"fraud","item":[{"id":"Fraud_blocklist","name":"List blocked devices","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/fraud/blocklist","host":["{{baseUrl}}"],"path":["v1","fraud","blocklist"],"query":[{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Fraud_block","name":"Block a device","request":{"method":"POST","description":"A blocked device still captures. Its documents read red, with the reason stated, for a reviewer.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/fraud/blocklist","host":["{{baseUrl}}"],"path":["v1","fraud","blocklist"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"deviceId\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Fraud_blockStatus","name":"Check whether a device is blocked","request":{"method":"GET","description":"A device nobody blocked answers blocked: false, not 404.\n\nNeeds the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/fraud/blocklist/:deviceId","host":["{{baseUrl}}"],"path":["v1","fraud","blocklist",":deviceId"],"query":[],"variable":[{"key":"deviceId","value":"","description":""}]}},"response":[]},{"id":"Fraud_unblock","name":"Remove a device from the blocklist","request":{"method":"DELETE","description":"Needs the documents:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/fraud/blocklist/:deviceId","host":["{{baseUrl}}"],"path":["v1","fraud","blocklist",":deviceId"],"query":[],"variable":[{"key":"deviceId","value":"","description":""}]}},"response":[]},{"id":"Fraud_export","name":"Download the evidence on documents that match a filter","request":{"method":"GET","description":"The same filter as listing documents. Needs expenses.read_all.\n\nNeeds the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/fraud/export","host":["{{baseUrl}}"],"path":["v1","fraud","export"],"query":[{"key":"type","value":"","disabled":true,"description":""},{"key":"status","value":"","disabled":true,"description":""},{"key":"source","value":"","disabled":true,"description":""},{"key":"source_id","value":"","disabled":true,"description":""},{"key":"external_id","value":"","disabled":true,"description":""},{"key":"blueprint_name","value":"","disabled":true,"description":""},{"key":"owner","value":"","disabled":true,"description":""},{"key":"device_id","value":"","disabled":true,"description":""},{"key":"device_user_uuid","value":"","disabled":true,"description":""},{"key":"viewed","value":"","disabled":true,"description":""},{"key":"trashed","value":"","disabled":true,"description":""},{"key":"envelope","value":"","disabled":true,"description":""},{"key":"created__gt","value":"","disabled":true,"description":""},{"key":"created__gte","value":"","disabled":true,"description":""},{"key":"created__lt","value":"","disabled":true,"description":""},{"key":"created__lte","value":"","disabled":true,"description":""},{"key":"updated__gt","value":"","disabled":true,"description":""},{"key":"updated__gte","value":"","disabled":true,"description":""},{"key":"updated__lt","value":"","disabled":true,"description":""},{"key":"updated__lte","value":"","disabled":true,"description":""},{"key":"issued","value":"","disabled":true,"description":""},{"key":"issued__gt","value":"","disabled":true,"description":""},{"key":"issued__gte","value":"","disabled":true,"description":""},{"key":"issued__lt","value":"","disabled":true,"description":""},{"key":"issued__lte","value":"","disabled":true,"description":""},{"key":"total","value":"","disabled":true,"description":""},{"key":"total__gt","value":"","disabled":true,"description":""},{"key":"total__gte","value":"","disabled":true,"description":""},{"key":"total__lt","value":"","disabled":true,"description":""},{"key":"total__lte","value":"","disabled":true,"description":""},{"key":"tax","value":"","disabled":true,"description":""},{"key":"tax__gt","value":"","disabled":true,"description":""},{"key":"tax__gte","value":"","disabled":true,"description":""},{"key":"tax__lt","value":"","disabled":true,"description":""},{"key":"tax__lte","value":"","disabled":true,"description":""},{"key":"currency","value":"","disabled":true,"description":""},{"key":"category","value":"","disabled":true,"description":""},{"key":"vendor","value":"","disabled":true,"description":""},{"key":"notes","value":"","disabled":true,"description":""},{"key":"payment_type","value":"","disabled":true,"description":""},{"key":"last_four_digits","value":"","disabled":true,"description":""},{"key":"first_name","value":"","disabled":true,"description":""},{"key":"last_name","value":"","disabled":true,"description":""},{"key":"work_phone","value":"","disabled":true,"description":""},{"key":"cell_phone","value":"","disabled":true,"description":""},{"key":"company","value":"","disabled":true,"description":""},{"key":"email","value":"","disabled":true,"description":""},{"key":"website","value":"","disabled":true,"description":""},{"key":"country","value":"","disabled":true,"description":""},{"key":"state","value":"","disabled":true,"description":""},{"key":"city","value":"","disabled":true,"description":""},{"key":"zip","value":"","disabled":true,"description":""},{"key":"name","value":"","disabled":true,"description":""},{"key":"is_empty","value":"","disabled":true,"description":""},{"key":"order_by","value":"","disabled":true,"description":""},{"key":"folderId","value":"","disabled":true,"description":""},{"key":"mailInBatchId","value":"","disabled":true,"description":""},{"key":"setId","value":"","disabled":true,"description":""},{"key":"externalId","value":"","disabled":true,"description":""},{"key":"tag","value":"","disabled":true,"description":""},{"key":"archived","value":"","disabled":true,"description":""},{"key":"unviewed","value":"","disabled":true,"description":""},{"key":"q","value":"","disabled":true,"description":""},{"key":"from","value":"","disabled":true,"description":""},{"key":"to","value":"","disabled":true,"description":""},{"key":"fraudColor","value":"","disabled":true,"description":""},{"key":"fraudSignal","value":"","disabled":true,"description":""},{"key":"fraudReview","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]}]},{"name":"integrations","item":[{"id":"Integrations_list","name":"List connected services and what can be connected","request":{"method":"GET","description":"Needs the integrations:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/integrations","host":["{{baseUrl}}"],"path":["v1","integrations"],"query":[],"variable":[]}},"response":[]},{"id":"Integrations_health","name":"See how a connection stands","request":{"method":"GET","description":"Needs the integrations:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/integrations/:provider/health","host":["{{baseUrl}}"],"path":["v1","integrations",":provider","health"],"query":[],"variable":[{"key":"provider","value":"","description":"The service, by its slug: quickbooks-online, quickbooks-desktop, xero, freshbooks, wave, zoho-books, sage, microsoft-dynamics, myob, oracle, sap, netsuite, gusto, hr, gmail, google-drive, dropbox, box, onedrive, slack, zapier."}]}},"response":[]},{"id":"Integrations_records","name":"List what was sent to a service","request":{"method":"GET","description":"Each record names the expense and the id it has in the other system.\n\nNeeds the integrations:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/integrations/:provider/records","host":["{{baseUrl}}"],"path":["v1","integrations",":provider","records"],"query":[{"key":"state","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[{"key":"provider","value":"","description":"The service, by its slug: quickbooks-online, quickbooks-desktop, xero, freshbooks, wave, zoho-books, sage, microsoft-dynamics, myob, oracle, sap, netsuite, gusto, hr, gmail, google-drive, dropbox, box, onedrive, slack, zapier."}]}},"response":[]}]},{"name":"invitations","item":[{"id":"Invitations_list","name":"List invitations","request":{"method":"GET","description":"Needs the members:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/invitations","host":["{{baseUrl}}"],"path":["v1","invitations"],"query":[{"key":"status","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Invitations_create","name":"Invite someone to this workspace","request":{"method":"POST","description":"They join when they accept, signed in with this address. An open invitation holds a seat.\n\nNeeds the members:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/invitations","host":["{{baseUrl}}"],"path":["v1","invitations"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"email\": \"someone@example.com\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Invitations_revoke","name":"Withdraw an invitation","request":{"method":"DELETE","description":"Works on a lapsed plan.\n\nNeeds the members:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/invitations/:id","host":["{{baseUrl}}"],"path":["v1","invitations",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Invitations_resend","name":"Send an invitation again","request":{"method":"POST","description":"A new link. The old one stops working.\n\nNeeds the members:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/invitations/:id/resend","host":["{{baseUrl}}"],"path":["v1","invitations",":id","resend"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Invitations_import","name":"Invite many people from CSV","request":{"method":"POST","description":"Send the CSV as text/plain, or as JSON with a `csv` field, with an Email column and an optional Role column.\n\nNeeds the members:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/invitations/import","host":["{{baseUrl}}"],"path":["v1","invitations","import"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"csv\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"mail in","item":[{"id":"Mailin_list","name":"List mail-in batches","request":{"method":"GET","description":"A member sees the batches they asked for.\n\nNeeds the mailin:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/mail-in","host":["{{baseUrl}}"],"path":["v1","mail-in"],"query":[{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Mailin_request","name":"Request envelopes and a mail-in batch","request":{"method":"POST","description":"`envelopes` is how many to send, and the answer says how many can still be requested this week. The estimate holds that many documents of this month's allowance. Both holds commit with the batch, or not at all. Left out, `afterScan` follows the workspace's shredding setting.\n\nNeeds the mailin:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/mail-in","host":["{{baseUrl}}"],"path":["v1","mail-in"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"expectedDocuments\": 1\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Mailin_get","name":"Get a mail-in batch","request":{"method":"GET","description":"Needs the mailin:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/mail-in/:id","host":["{{baseUrl}}"],"path":["v1","mail-in",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Mailin_changeAddress","name":"Change the address on a batch","request":{"method":"PATCH","description":"For the person who asked or a manager, until the batch finishes. A batch's code cannot be changed.\n\nNeeds the mailin:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/mail-in/:id","host":["{{baseUrl}}"],"path":["v1","mail-in",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{\n  \"shippingAddress\": {\n    \"name\": \"string\",\n    \"line1\": \"string\",\n    \"city\": \"string\",\n    \"region\": \"string\",\n    \"postalCode\": \"string\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Mailin_batchBarcode","name":"Get a batch's barcode","request":{"method":"GET","description":"A Code 128 image of the batch reference.\n\nNeeds the mailin:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/mail-in/:id/barcode","host":["{{baseUrl}}"],"path":["v1","mail-in",":id","barcode"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Mailin_cancel","name":"Cancel a batch nobody has started on","request":{"method":"POST","description":"Needs the mailin:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/mail-in/:id/cancel","host":["{{baseUrl}}"],"path":["v1","mail-in",":id","cancel"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Mailin_batchCoverSheet","name":"Get a batch's cover sheet","request":{"method":"GET","description":"Needs the mailin:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/mail-in/:id/cover-sheet","host":["{{baseUrl}}"],"path":["v1","mail-in",":id","cover-sheet"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Mailin_documents","name":"List what came out of a batch","request":{"method":"GET","description":"Needs the mailin:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/mail-in/:id/documents","host":["{{baseUrl}}"],"path":["v1","mail-in",":id","documents"],"query":[{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Mailin_allowance","name":"See this month's paper allowance","request":{"method":"GET","description":"Needs the mailin:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/mail-in/allowance","host":["{{baseUrl}}"],"path":["v1","mail-in","allowance"],"query":[],"variable":[]}},"response":[]},{"id":"Mailin_barcode","name":"Get the workspace's barcode","request":{"method":"GET","description":"A Code 128 image of the workspace reference.\n\nNeeds the mailin:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/mail-in/barcode","host":["{{baseUrl}}"],"path":["v1","mail-in","barcode"],"query":[],"variable":[]}},"response":[]},{"id":"Mailin_coverSheet","name":"Get the workspace's cover sheet","request":{"method":"GET","description":"One page to put on top of a stack of paper, with the barcode on it.\n\nNeeds the mailin:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/mail-in/cover-sheet","host":["{{baseUrl}}"],"path":["v1","mail-in","cover-sheet"],"query":[],"variable":[]}},"response":[]},{"id":"Mailin_settings","name":"See your saved mail-in address","request":{"method":"GET","description":"One person's own, in this workspace. Nobody else reads it.\n\nNeeds the mailin:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/mail-in/settings","host":["{{baseUrl}}"],"path":["v1","mail-in","settings"],"query":[],"variable":[]}},"response":[]},{"id":"Mailin_saveSettings","name":"Save your mail-in address","request":{"method":"PUT","description":"Envelopes and returned paper go here when a request names no address. Null forgets it. Batches already requested keep theirs: change those one at a time.\n\nNeeds the mailin:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/mail-in/settings","host":["{{baseUrl}}"],"path":["v1","mail-in","settings"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"address\": {\n    \"name\": \"string\",\n    \"line1\": \"string\",\n    \"city\": \"string\",\n    \"region\": \"string\",\n    \"postalCode\": \"string\"\n  }\n}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"me","item":[{"id":"Users_chooseAlias","name":"Choose a forwarding address","request":{"method":"POST","description":"Beside the random one, which keeps working. A name someone else holds is refused.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/me/forwarding-address","host":["{{baseUrl}}"],"path":["v1","me","forwarding-address"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"alias\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Users_removeAlias","name":"Give up the chosen forwarding address","request":{"method":"DELETE","description":"The random address keeps working. Only the chosen one stops.\n\nNeeds the documents:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/me/forwarding-address","host":["{{baseUrl}}"],"path":["v1","me","forwarding-address"],"query":[],"variable":[]}},"response":[]},{"id":"Users_rotate","name":"Issue a new forwarding address","request":{"method":"POST","description":"The old address stops working the moment this one is issued.\n\nNeeds the documents:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/me/forwarding-address/rotate","host":["{{baseUrl}}"],"path":["v1","me","forwarding-address","rotate"],"query":[],"variable":[]}},"response":[]}]},{"name":"members","item":[{"id":"Members_list","name":"List the members of this workspace","request":{"method":"GET","description":"Pay-adjacent fields stay empty unless the caller has members.manage.\n\nNeeds the members:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/members","host":["{{baseUrl}}"],"path":["v1","members"],"query":[{"key":"q","value":"","disabled":true,"description":""},{"key":"status","value":"","disabled":true,"description":""},{"key":"role","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Members_get","name":"Get a member","request":{"method":"GET","description":"Needs the members:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/members/:id","host":["{{baseUrl}}"],"path":["v1","members",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Members_update","name":"Change a member","request":{"method":"PATCH","description":"Only an owner can change an owner, or make someone an owner.\n\nNeeds the members:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/members/:id","host":["{{baseUrl}}"],"path":["v1","members",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Members_remove","name":"Remove a member","request":{"method":"DELETE","description":"Their expenses stay. Anyone may remove their own membership. Taking access away works on a lapsed plan.\n\nNeeds the members:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/members/:id","host":["{{baseUrl}}"],"path":["v1","members",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Members_bulk","name":"Change many members at once","request":{"method":"POST","description":"A member the rules refuse stays as they were, and the rest still change.\n\nNeeds the members:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/members/bulk","host":["{{baseUrl}}"],"path":["v1","members","bulk"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"ids\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Members_provisionPeople","name":"Provision and remove people from a list","request":{"method":"POST","description":"From a request body or an https address, with a dry run. Answers with who was added, updated and removed, and who was skipped and why. A change of address needs a domain this workspace verified. SFTP is not offered.\n\nNeeds the members:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/members/provision","host":["{{baseUrl}}"],"path":["v1","members","provision"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Members_seats","name":"See seats in use against the plan","request":{"method":"GET","description":"Needs the members:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/members/seats","host":["{{baseUrl}}"],"path":["v1","members","seats"],"query":[],"variable":[]}},"response":[]}]},{"name":"merchants","item":[{"id":"Merchants_list","name":"List merchants","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/merchants","host":["{{baseUrl}}"],"path":["v1","merchants"],"query":[{"key":"q","value":"","disabled":true,"description":""},{"key":"archived","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Merchants_create","name":"Create a merchant","request":{"method":"POST","description":"Needs the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/merchants","host":["{{baseUrl}}"],"path":["v1","merchants"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"name\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Merchants_get","name":"Get a merchant","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/merchants/:id","host":["{{baseUrl}}"],"path":["v1","merchants",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Merchants_update","name":"Change a merchant","request":{"method":"PATCH","description":"Needs the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/merchants/:id","host":["{{baseUrl}}"],"path":["v1","merchants",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Merchants_removeAlias","name":"Remove a spelling from a merchant","request":{"method":"DELETE","description":"Needs the expenses:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/merchants/:id/aliases/:aliasId","host":["{{baseUrl}}"],"path":["v1","merchants",":id","aliases",":aliasId"],"query":[],"variable":[{"key":"id","value":"","description":""},{"key":"aliasId","value":"","description":""}]}},"response":[]},{"id":"Merchants_merge","name":"Merge another merchant into this one","request":{"method":"POST","description":"Needs the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/merchants/:id/merge","host":["{{baseUrl}}"],"path":["v1","merchants",":id","merge"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{\n  \"intoId\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"mileage","item":[{"id":"Mileage_create","name":"Record a trip","request":{"method":"POST","description":"Needs the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/mileage","host":["{{baseUrl}}"],"path":["v1","mileage"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"date\": \"string\",\n  \"origin\": \"string\",\n  \"destination\": \"string\",\n  \"purpose\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Mileage_update","name":"Replace a trip","request":{"method":"PUT","description":"Needs the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/mileage/:id","host":["{{baseUrl}}"],"path":["v1","mileage",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{\n  \"date\": \"string\",\n  \"origin\": \"string\",\n  \"destination\": \"string\",\n  \"purpose\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Mileage_attachPhoto","name":"Attach an odometer photo to a trip","request":{"method":"POST","description":"Needs the expenses:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/mileage/:id/odometer-photos","host":["{{baseUrl}}"],"path":["v1","mileage",":id","odometer-photos"],"query":[{"key":"client","value":"","disabled":true,"description":"The app sending the file. Leave it out in a browser."}],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","src":[],"description":"The file."},{"key":"reading","type":"text","value":"START","disabled":false,"description":""}]}},"response":[]},{"id":"Mileage_log","name":"Read the mileage log","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/mileage/log","host":["{{baseUrl}}"],"path":["v1","mileage","log"],"query":[{"key":"from","value":"","disabled":true,"description":""},{"key":"to","value":"","disabled":true,"description":""},{"key":"scope","value":"","disabled":true,"description":""},{"key":"ownerId","value":"","disabled":true,"description":""},{"key":"vehicleId","value":"","disabled":true,"description":""},{"key":"purpose","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Mileage_exportLog","name":"Export the mileage log","request":{"method":"GET","description":"The file comes back as JSON, with its content as text.\n\nNeeds the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/mileage/log/export","host":["{{baseUrl}}"],"path":["v1","mileage","log","export"],"query":[{"key":"from","value":"","disabled":true,"description":""},{"key":"to","value":"","disabled":true,"description":""},{"key":"scope","value":"","disabled":true,"description":""},{"key":"ownerId","value":"","disabled":true,"description":""},{"key":"vehicleId","value":"","disabled":true,"description":""},{"key":"purpose","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Mileage_routes","name":"List saved routes","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/mileage/routes","host":["{{baseUrl}}"],"path":["v1","mileage","routes"],"query":[{"key":"q","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]}]},{"name":"mileage rates","item":[{"id":"MileageRates_list","name":"List mileage rates","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/mileage-rates","host":["{{baseUrl}}"],"path":["v1","mileage-rates"],"query":[{"key":"q","value":"","disabled":true,"description":""},{"key":"archived","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"MileageRates_get","name":"Get a mileage rate","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/mileage-rates/:id","host":["{{baseUrl}}"],"path":["v1","mileage-rates",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]}]},{"name":"parse","item":[{"id":"Parse_list","name":"List documents turned into Markdown","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/parse","host":["{{baseUrl}}"],"path":["v1","parse"],"query":[{"key":"details","value":"","disabled":true,"description":""},{"key":"tag","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Parse_create","name":"Turn a document into Markdown","request":{"method":"POST","description":"Multipart with a field named file, or JSON with uploadId, file_url or file_data. Tables and reading order are kept. details adds a box for each line, and meta holds pages, sharpness and OCR scores. Up to 50 pages.\n\nNeeds the documents:write scope.","header":[{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/parse","host":["{{baseUrl}}"],"path":["v1","parse"],"query":[],"variable":[]},"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","src":[],"description":"The file."},{"key":"external_id","type":"text","value":"","disabled":true,"description":""},{"key":"async","type":"text","value":"","disabled":true,"description":""},{"key":"tags","type":"text","value":"","disabled":true,"description":""},{"key":"auto_delete","type":"text","value":"","disabled":true,"description":""},{"key":"details","type":"text","value":"","disabled":true,"description":""}]}},"response":[]},{"id":"Parse_get","name":"Get a document as Markdown","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/parse/:id","host":["{{baseUrl}}"],"path":["v1","parse",":id"],"query":[{"key":"details","value":"","disabled":true,"description":""},{"key":"tag","value":"","disabled":true,"description":""}],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Parse_update","name":"Change the title, notes or tags of one","request":{"method":"PATCH","description":"Needs the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/parse/:id","host":["{{baseUrl}}"],"path":["v1","parse",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Parse_remove","name":"Delete one","request":{"method":"DELETE","description":"Needs the documents:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/parse/:id","host":["{{baseUrl}}"],"path":["v1","parse",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Parse_createAsync","name":"Turn a document into Markdown, in the background","request":{"method":"POST","description":"Answers at once. document.processed says when it is done.\n\nNeeds the documents:write scope.","header":[{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/parse/async","host":["{{baseUrl}}"],"path":["v1","parse","async"],"query":[],"variable":[]},"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","src":[],"description":"The file."},{"key":"external_id","type":"text","value":"","disabled":true,"description":""},{"key":"async","type":"text","value":"","disabled":true,"description":""},{"key":"tags","type":"text","value":"","disabled":true,"description":""},{"key":"auto_delete","type":"text","value":"","disabled":true,"description":""},{"key":"details","type":"text","value":"","disabled":true,"description":""}]}},"response":[]}]},{"name":"parse set","item":[{"id":"DocumentSets_listParseSets","name":"List Markdown sets","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/parse-set","host":["{{baseUrl}}"],"path":["v1","parse-set"],"query":[{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"DocumentSets_createParseSet","name":"Split a PDF and turn each document in it into Markdown","request":{"method":"POST","description":"Multipart with a field named file, or JSON with uploadId, file_url or file_data. Up to 50 MB. Answers at once.\n\nNeeds the documents:write scope.","header":[{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/parse-set","host":["{{baseUrl}}"],"path":["v1","parse-set"],"query":[],"variable":[]},"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","src":[],"description":"The file."},{"key":"split_by_blank_page","type":"text","value":"","disabled":true,"description":""},{"key":"every_page","type":"text","value":"","disabled":true,"description":""},{"key":"ranges","type":"text","value":"","disabled":true,"description":""},{"key":"document_types","type":"text","value":"","disabled":true,"description":""},{"key":"blueprint_name","type":"text","value":"","disabled":true,"description":""},{"key":"external_id","type":"text","value":"","disabled":true,"description":""}]}},"response":[]},{"id":"DocumentSets_getParseSet","name":"Get a Markdown set","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/parse-set/:id","host":["{{baseUrl}}"],"path":["v1","parse-set",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]}]},{"name":"payment accounts","item":[{"id":"PaymentAccounts_list","name":"List cards and bank accounts","request":{"method":"GET","description":"A member sees their own and those of the people reporting to them. Numbers are last four only.\n\nNeeds the cards:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/payment-accounts","host":["{{baseUrl}}"],"path":["v1","payment-accounts"],"query":[{"key":"archived","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"PaymentAccounts_get","name":"Get a card or bank account","request":{"method":"GET","description":"Needs the cards:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/payment-accounts/:id","host":["{{baseUrl}}"],"path":["v1","payment-accounts",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"PaymentAccounts_statements","name":"List a card's statement periods","request":{"method":"GET","description":"Needs the cards:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/payment-accounts/:id/statements","host":["{{baseUrl}}"],"path":["v1","payment-accounts",":id","statements"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"PaymentAccounts_exportList","name":"Export the card table","request":{"method":"GET","description":"The file comes back as JSON, with its content as text.\n\nNeeds the cards:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/payment-accounts/export","host":["{{baseUrl}}"],"path":["v1","payment-accounts","export"],"query":[],"variable":[]}},"response":[]}]},{"name":"per diem","item":[{"id":"PerDiem_create","name":"Record a per diem","request":{"method":"POST","description":"Meals and lodging file as separate expenses, so each deducts at its own percentage.\n\nNeeds the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/per-diem","host":["{{baseUrl}}"],"path":["v1","per-diem"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"startDate\": \"string\",\n  \"endDate\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"per diem rates","item":[{"id":"PerDiemRates_list","name":"List per diem rates","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/per-diem-rates","host":["{{baseUrl}}"],"path":["v1","per-diem-rates"],"query":[{"key":"q","value":"","disabled":true,"description":""},{"key":"archived","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"PerDiemRates_get","name":"Get a per diem rate","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/per-diem-rates/:id","host":["{{baseUrl}}"],"path":["v1","per-diem-rates",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]}]},{"name":"personal rules","item":[{"id":"PersonalRules_list","name":"List a person's rules","request":{"method":"GET","description":"The caller's own, or with ownerId, an employee's. Naming someone else needs policies.manage.\n\nNeeds the rules:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/personal-rules","host":["{{baseUrl}}"],"path":["v1","personal-rules"],"query":[{"key":"ownerId","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"PersonalRules_create","name":"Add a rule for a person","request":{"method":"POST","description":"For the caller, or with ownerId, for an employee. It runs on what that person spends, and can set tags and billable.\n\nNeeds the rules:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/personal-rules","host":["{{baseUrl}}"],"path":["v1","personal-rules"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"merchantContains\": \"string\",\n  \"actions\": {}\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"PersonalRules_update","name":"Change a person's rule","request":{"method":"PATCH","description":"Name the person with ownerId when the rule is not the caller's.\n\nNeeds the rules:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/personal-rules/:id","host":["{{baseUrl}}"],"path":["v1","personal-rules",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"merchantContains\": \"string\",\n  \"actions\": {}\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"PersonalRules_remove","name":"Delete a person's rule","request":{"method":"DELETE","description":"Name the person with ownerId when the rule is not the caller's.\n\nNeeds the rules:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/personal-rules/:id","host":["{{baseUrl}}"],"path":["v1","personal-rules",":id"],"query":[{"key":"ownerId","value":"","disabled":true,"description":""}],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"PersonalRules_reorder","name":"Put the caller's own rules in a new order","request":{"method":"POST","description":"Needs the rules:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/personal-rules/reorder","host":["{{baseUrl}}"],"path":["v1","personal-rules","reorder"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"ids\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"projects","item":[{"id":"Projects_list","name":"List projects","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/projects","host":["{{baseUrl}}"],"path":["v1","projects"],"query":[{"key":"q","value":"","disabled":true,"description":""},{"key":"archived","value":"","disabled":true,"description":""},{"key":"clientId","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Projects_create","name":"Create a project","request":{"method":"POST","description":"Needs the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/projects","host":["{{baseUrl}}"],"path":["v1","projects"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"name\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Projects_get","name":"Get a project","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/projects/:id","host":["{{baseUrl}}"],"path":["v1","projects",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Projects_update","name":"Change a project","request":{"method":"PATCH","description":"Needs the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/projects/:id","host":["{{baseUrl}}"],"path":["v1","projects",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Projects_remove","name":"Delete a project","request":{"method":"DELETE","description":"Needs the expenses:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/projects/:id","host":["{{baseUrl}}"],"path":["v1","projects",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Projects_import","name":"Import projects from CSV","request":{"method":"POST","description":"Send the CSV as text/plain, or as JSON with a `csv` field. Rows that match an existing project update it.\n\nNeeds the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/projects/import","host":["{{baseUrl}}"],"path":["v1","projects","import"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"csv\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"reference","item":[{"id":"Reference_countries","name":"List country codes and the currency each prints","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/reference/countries","host":["{{baseUrl}}"],"path":["v1","reference","countries"],"query":[],"variable":[]}},"response":[]},{"id":"Reference_currencies","name":"List currency codes","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/reference/currencies","host":["{{baseUrl}}"],"path":["v1","reference","currencies"],"query":[],"variable":[]}},"response":[]},{"id":"Reference_locales","name":"List the locales offered in a picker","request":{"method":"GET","description":"A workspace can hold any language tag; these are the usual ones.\n\nNeeds the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/reference/locales","host":["{{baseUrl}}"],"path":["v1","reference","locales"],"query":[],"variable":[]}},"response":[]},{"id":"Reference_systemCategories","name":"List the categories a new workspace starts with","request":{"method":"GET","description":"A workspace's own are at GET /v1/categories.\n\nNeeds the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/reference/system-categories","host":["{{baseUrl}}"],"path":["v1","reference","system-categories"],"query":[],"variable":[]}},"response":[]}]},{"name":"release notifications","item":[{"id":"ReleaseNotes_list","name":"List release notes","request":{"method":"GET","description":"Versioned notes on what changed, newest first. Any key or token may read them, whatever its scopes.\n\nNeeds the any_credential scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/release-notifications","host":["{{baseUrl}}"],"path":["v1","release-notifications"],"query":[{"key":"product","value":"","disabled":true,"description":""},{"key":"environment","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]}]},{"name":"report fields","item":[{"id":"ReportFields_list","name":"List report fields","request":{"method":"GET","description":"Needs the workspace:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/report-fields","host":["{{baseUrl}}"],"path":["v1","report-fields"],"query":[],"variable":[]}},"response":[]},{"id":"ReportFields_create","name":"Add a report field","request":{"method":"POST","description":"TEXT, DATE, LIST for a dropdown, or FORMULA.\n\nNeeds the workspace:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/report-fields","host":["{{baseUrl}}"],"path":["v1","report-fields"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"type\": \"TEXT\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"ReportFields_update","name":"Change a report field","request":{"method":"PATCH","description":"Name and type stay as they were created, since reports already hold values by them.\n\nNeeds the workspace:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/report-fields/:id","host":["{{baseUrl}}"],"path":["v1","report-fields",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"ReportFields_remove","name":"Delete a report field","request":{"method":"DELETE","description":"Needs the workspace:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/report-fields/:id","host":["{{baseUrl}}"],"path":["v1","report-fields",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"ReportFields_turnOff","name":"Turn report fields off","request":{"method":"POST","description":"Lists are kept and turned off, and the rest are deleted.\n\nNeeds the workspace:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/report-fields/turn-off","host":["{{baseUrl}}"],"path":["v1","report-fields","turn-off"],"query":[],"variable":[]}},"response":[]}]},{"name":"reports","item":[{"id":"Reports_list","name":"List reports","request":{"method":"GET","description":"Needs the reports:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/reports","host":["{{baseUrl}}"],"path":["v1","reports"],"query":[{"key":"status","value":"","disabled":true,"description":""},{"key":"scope","value":"","disabled":true,"description":""},{"key":"ownerId","value":"","disabled":true,"description":""},{"key":"q","value":"","disabled":true,"description":""},{"key":"from","value":"","disabled":true,"description":""},{"key":"to","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Reports_create","name":"Create a report","request":{"method":"POST","description":"Needs the reports:write scope.","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/reports","host":["{{baseUrl}}"],"path":["v1","reports"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Reports_get","name":"Get a report","request":{"method":"GET","description":"Needs the reports:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/reports/:id","host":["{{baseUrl}}"],"path":["v1","reports",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Reports_update","name":"Change a report","request":{"method":"PATCH","description":"Needs the reports:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/reports/:id","host":["{{baseUrl}}"],"path":["v1","reports",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Reports_remove","name":"Delete a draft report","request":{"method":"DELETE","description":"Needs the reports:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/reports/:id","host":["{{baseUrl}}"],"path":["v1","reports",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Reports_acceptFindings","name":"Accept what the receipt checks found","request":{"method":"POST","description":"Needs the reports:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/reports/:id/accept-findings","host":["{{baseUrl}}"],"path":["v1","reports",":id","accept-findings"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Reports_approve","name":"Approve a report","request":{"method":"POST","description":"Needs the reports:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/reports/:id/approve","host":["{{baseUrl}}"],"path":["v1","reports",":id","approve"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Reports_close","name":"Close a report","request":{"method":"POST","description":"Needs the reports:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/reports/:id/close","host":["{{baseUrl}}"],"path":["v1","reports",":id","close"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"ReportComments_list","name":"List comments on a report","request":{"method":"GET","description":"Needs the reports:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/reports/:id/comments","host":["{{baseUrl}}"],"path":["v1","reports",":id","comments"],"query":[{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"ReportComments_add","name":"Comment on a report","request":{"method":"POST","description":"Needs the reports:write scope.","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/reports/:id/comments","host":["{{baseUrl}}"],"path":["v1","reports",":id","comments"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"ReportComments_reach","name":"Reach someone a comment on this report could not","request":{"method":"POST","description":"The author adds them to the report, and then they are told.\n\nNeeds the reports:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/reports/:id/comments/:commentId/reach","host":["{{baseUrl}}"],"path":["v1","reports",":id","comments",":commentId","reach"],"query":[],"variable":[{"key":"id","value":"","description":""},{"key":"commentId","value":"","description":""}]},"body":{"mode":"raw","raw":"{\n  \"userIds\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"ReportComments_mentionable","name":"List who a comment on this report can mention","request":{"method":"GET","description":"Needs the reports:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/reports/:id/comments/mentionable","host":["{{baseUrl}}"],"path":["v1","reports",":id","comments","mentionable"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Reports_duplicate","name":"Start a new report from this one","request":{"method":"POST","description":"Needs the reports:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/reports/:id/duplicate","host":["{{baseUrl}}"],"path":["v1","reports",":id","duplicate"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Reports_addExpenses","name":"Add expenses to a report","request":{"method":"POST","description":"Needs the reports:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/reports/:id/expenses","host":["{{baseUrl}}"],"path":["v1","reports",":id","expenses"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{\n  \"ids\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Reports_removeExpense","name":"Take an expense off a report","request":{"method":"DELETE","description":"Needs the reports:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/reports/:id/expenses/:expenseId","host":["{{baseUrl}}"],"path":["v1","reports",":id","expenses",":expenseId"],"query":[],"variable":[{"key":"id","value":"","description":""},{"key":"expenseId","value":"","description":""}]}},"response":[]},{"id":"Reports_rejectExpense","name":"Reject one expense on a report","request":{"method":"POST","description":"Needs the reports:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/reports/:id/expenses/:expenseId/reject","host":["{{baseUrl}}"],"path":["v1","reports",":id","expenses",":expenseId","reject"],"query":[],"variable":[{"key":"id","value":"","description":""},{"key":"expenseId","value":"","description":""}]},"body":{"mode":"raw","raw":"{\n  \"reason\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Reports_markExported","name":"Mark a report as exported","request":{"method":"POST","description":"Needs the reports:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/reports/:id/mark-exported","host":["{{baseUrl}}"],"path":["v1","reports",":id","mark-exported"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Reports_markReimbursed","name":"Mark a report as reimbursed","request":{"method":"POST","description":"Needs the reports:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/reports/:id/mark-reimbursed","host":["{{baseUrl}}"],"path":["v1","reports",":id","mark-reimbursed"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Reports_invite","name":"Add a person to a report","request":{"method":"POST","description":"Needs the reports:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/reports/:id/participants","host":["{{baseUrl}}"],"path":["v1","reports",":id","participants"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{\n  \"userId\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Reports_uninvite","name":"Take a person off a report","request":{"method":"DELETE","description":"Needs the reports:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/reports/:id/participants/:userId","host":["{{baseUrl}}"],"path":["v1","reports",":id","participants",":userId"],"query":[],"variable":[{"key":"id","value":"","description":""},{"key":"userId","value":"","description":""}]}},"response":[]},{"id":"Reports_reassign","name":"Hand a report to another approver","request":{"method":"POST","description":"Needs the reports:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/reports/:id/reassign","host":["{{baseUrl}}"],"path":["v1","reports",":id","reassign"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{\n  \"approverId\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Reports_reject","name":"Send a report back","request":{"method":"POST","description":"Needs the reports:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/reports/:id/reject","host":["{{baseUrl}}"],"path":["v1","reports",":id","reject"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{\n  \"reason\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Reports_reopen","name":"Reopen a report","request":{"method":"POST","description":"Needs the reports:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/reports/:id/reopen","host":["{{baseUrl}}"],"path":["v1","reports",":id","reopen"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Reports_retract","name":"Take a submitted report back","request":{"method":"POST","description":"Needs the reports:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/reports/:id/retract","host":["{{baseUrl}}"],"path":["v1","reports",":id","retract"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Reports_submit","name":"Submit a report","request":{"method":"POST","description":"Needs the reports:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/reports/:id/submit","host":["{{baseUrl}}"],"path":["v1","reports",":id","submit"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Reports_bulkReassign","name":"Hand many reports to another approver","request":{"method":"POST","description":"Needs the reports:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/reports/bulk-reassign","host":["{{baseUrl}}"],"path":["v1","reports","bulk-reassign"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"reportIds\": [\n    \"string\"\n  ],\n  \"approverId\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Reports_bulkSubmit","name":"Submit many reports","request":{"method":"POST","description":"Needs the reports:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/reports/bulk-submit","host":["{{baseUrl}}"],"path":["v1","reports","bulk-submit"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"reportIds\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Reports_bulkMarkReimbursed","name":"Mark many reports as reimbursed","request":{"method":"POST","description":"Answers 200 when all of them went through, and 207 when some did not. A report that is not approved yet, already paid or in a batch is skipped. One the caller cannot find or mark has failed.\n\nNeeds the reports:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/reports/mark-reimbursed","host":["{{baseUrl}}"],"path":["v1","reports","mark-reimbursed"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"reportIds\": [\n    \"string\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"split","item":[{"id":"Split_listSplits","name":"List splits","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/split","host":["{{baseUrl}}"],"path":["v1","split"],"query":[{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Split_split","name":"Find the documents in a PDF","request":{"method":"POST","description":"Multipart with a field named file, or JSON with uploadId, file_url or file_data. Returns page ranges and extracts nothing. Up to 250 pages and 50 MB. split_by_blank_page cuts on blank pages instead of detected boundaries.\n\nNeeds the documents:write scope.","header":[{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/split","host":["{{baseUrl}}"],"path":["v1","split"],"query":[],"variable":[]},"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","src":[],"description":"The file."},{"key":"split_by_blank_page","type":"text","value":"","disabled":true,"description":""},{"key":"every_page","type":"text","value":"","disabled":true,"description":""},{"key":"ranges","type":"text","value":"","disabled":true,"description":""},{"key":"document_types","type":"text","value":"","disabled":true,"description":""},{"key":"blueprint_name","type":"text","value":"","disabled":true,"description":""},{"key":"external_id","type":"text","value":"","disabled":true,"description":""}]}},"response":[]},{"id":"Split_getSplit","name":"Get a split","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/split/:id","host":["{{baseUrl}}"],"path":["v1","split",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Split_splitAsync","name":"Find the documents in a PDF, in the background","request":{"method":"POST","description":"Answers at once with the id. split.completed and split.created deliver the ranges, and split.failed says why not.\n\nNeeds the documents:write scope.","header":[{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/split/async","host":["{{baseUrl}}"],"path":["v1","split","async"],"query":[],"variable":[]},"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","src":[],"description":"The file."},{"key":"split_by_blank_page","type":"text","value":"","disabled":true,"description":""},{"key":"every_page","type":"text","value":"","disabled":true,"description":""},{"key":"ranges","type":"text","value":"","disabled":true,"description":""},{"key":"document_types","type":"text","value":"","disabled":true,"description":""},{"key":"blueprint_name","type":"text","value":"","disabled":true,"description":""},{"key":"external_id","type":"text","value":"","disabled":true,"description":""}]}},"response":[]}]},{"name":"split and classify","item":[{"id":"Split_splitAndClassify","name":"Find the documents in a PDF and say what each one is","request":{"method":"POST","description":"Multipart with a field named file, or JSON with uploadId, file_url or file_data. Each range has a type and a score, optionally from your own document_types.\n\nNeeds the documents:write scope.","header":[{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/split-and-classify","host":["{{baseUrl}}"],"path":["v1","split-and-classify"],"query":[],"variable":[]},"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","src":[],"description":"The file."},{"key":"split_by_blank_page","type":"text","value":"","disabled":true,"description":""},{"key":"every_page","type":"text","value":"","disabled":true,"description":""},{"key":"ranges","type":"text","value":"","disabled":true,"description":""},{"key":"document_types","type":"text","value":"","disabled":true,"description":""},{"key":"blueprint_name","type":"text","value":"","disabled":true,"description":""},{"key":"external_id","type":"text","value":"","disabled":true,"description":""}]}},"response":[]},{"id":"Split_splitAndClassifyAsync","name":"Find and classify the documents in a PDF, in the background","request":{"method":"POST","description":"Answers at once. split.completed and split_and_classify.created deliver the same result, and split.failed and split_and_classify.failed say why not.\n\nNeeds the documents:write scope.","header":[{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/split-and-classify/async","host":["{{baseUrl}}"],"path":["v1","split-and-classify","async"],"query":[],"variable":[]},"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","src":[],"description":"The file."},{"key":"split_by_blank_page","type":"text","value":"","disabled":true,"description":""},{"key":"every_page","type":"text","value":"","disabled":true,"description":""},{"key":"ranges","type":"text","value":"","disabled":true,"description":""},{"key":"document_types","type":"text","value":"","disabled":true,"description":""},{"key":"blueprint_name","type":"text","value":"","disabled":true,"description":""},{"key":"external_id","type":"text","value":"","disabled":true,"description":""}]}},"response":[]}]},{"name":"tags","item":[{"id":"Tags_list","name":"List tags","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/tags","host":["{{baseUrl}}"],"path":["v1","tags"],"query":[{"key":"q","value":"","disabled":true,"description":""},{"key":"archived","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Tags_create","name":"Create a tag","request":{"method":"POST","description":"Needs the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/tags","host":["{{baseUrl}}"],"path":["v1","tags"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"name\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Tags_get","name":"Get a tag","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/tags/:id","host":["{{baseUrl}}"],"path":["v1","tags",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Tags_update","name":"Change a tag","request":{"method":"PATCH","description":"Needs the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/tags/:id","host":["{{baseUrl}}"],"path":["v1","tags",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Tags_remove","name":"Delete a tag","request":{"method":"DELETE","description":"Needs the expenses:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/tags/:id","host":["{{baseUrl}}"],"path":["v1","tags",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Tags_import","name":"Import tags from CSV","request":{"method":"POST","description":"Send the CSV as text/plain, or as JSON with a `csv` field, with commas or tabs. Rows that match an existing tag update it. With mode=replace, what the file leaves out is deleted, or archived if something uses it. Columns: Name, Group, GL code, Color, Enabled, Depends on. A tag that depends on another goes on an expense only with that one.\n\nNeeds the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/tags/import","host":["{{baseUrl}}"],"path":["v1","tags","import"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"csv\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"tax","item":[{"id":"Tax_summary","name":"Totals by tax line for a year","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/tax/summary","host":["{{baseUrl}}"],"path":["v1","tax","summary"],"query":[{"key":"year","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]}]},{"name":"time","item":[{"id":"Time_create","name":"Record time","request":{"method":"POST","description":"Needs the expenses:write scope.","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/time","host":["{{baseUrl}}"],"path":["v1","time"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"date\": \"string\",\n  \"hours\": 0,\n  \"rateMinor\": 0,\n  \"description\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"tls certificates","item":[{"id":"ClientCertificates_list","name":"List the client certificates this workspace trusts","request":{"method":"GET","description":"Needs the workspace:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/tls-certificates","host":["{{baseUrl}}"],"path":["v1","tls-certificates"],"query":[{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"ClientCertificates_create","name":"Add a client certificate","request":{"method":"POST","description":"PEM, and never a private key. Only its SHA-256 fingerprint decides anything, and adding the same one twice is one row. Mutual TLS ends at the edge, and has to be set up for this server before a workspace can require it.\n\nNeeds the workspace:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/tls-certificates","host":["{{baseUrl}}"],"path":["v1","tls-certificates"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"name\": \"string\",\n  \"certificate\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"ClientCertificates_revoke","name":"Stop trusting a client certificate","request":{"method":"DELETE","description":"The last one cannot go while the workspace requires one.\n\nNeeds the workspace:write scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/tls-certificates/:id","host":["{{baseUrl}}"],"path":["v1","tls-certificates",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]}]},{"name":"transactions","item":[{"id":"Transactions_list","name":"List card transactions","request":{"method":"GET","description":"Needs the cards:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/transactions","host":["{{baseUrl}}"],"path":["v1","transactions"],"query":[{"key":"state","value":"","disabled":true,"description":""},{"key":"paymentAccountId","value":"","disabled":true,"description":""},{"key":"paymentAccountIds","value":"","disabled":true,"description":""},{"key":"from","value":"","disabled":true,"description":""},{"key":"to","value":"","disabled":true,"description":""},{"key":"q","value":"","disabled":true,"description":""},{"key":"minMinor","value":"","disabled":true,"description":""},{"key":"maxMinor","value":"","disabled":true,"description":""},{"key":"missingReceipt","value":"","disabled":true,"description":""},{"key":"unreported","value":"","disabled":true,"description":""},{"key":"currency","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Transactions_get","name":"Get a card transaction","request":{"method":"GET","description":"Needs the cards:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/transactions/:id","host":["{{baseUrl}}"],"path":["v1","transactions",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Transactions_exportList","name":"Export card data","request":{"method":"GET","description":"By date range and card, with `unreported=true` for lines on no report. Leave it out for all of them. The file comes back as JSON, with its content as text.\n\nNeeds the cards:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/transactions/export","host":["{{baseUrl}}"],"path":["v1","transactions","export"],"query":[{"key":"state","value":"","disabled":true,"description":""},{"key":"paymentAccountId","value":"","disabled":true,"description":""},{"key":"paymentAccountIds","value":"","disabled":true,"description":""},{"key":"from","value":"","disabled":true,"description":""},{"key":"to","value":"","disabled":true,"description":""},{"key":"q","value":"","disabled":true,"description":""},{"key":"minMinor","value":"","disabled":true,"description":""},{"key":"maxMinor","value":"","disabled":true,"description":""},{"key":"missingReceipt","value":"","disabled":true,"description":""},{"key":"unreported","value":"","disabled":true,"description":""},{"key":"currency","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Transactions_reconciliation","name":"Reconcile card data for a date range","request":{"method":"GET","description":"Imported, approved and what is stuck, by where it is stuck.\n\nNeeds the cards:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/transactions/reconciliation?from=&to=","host":["{{baseUrl}}"],"path":["v1","transactions","reconciliation"],"query":[{"key":"from","value":"","disabled":false,"description":""},{"key":"to","value":"","disabled":false,"description":""},{"key":"paymentAccountId","value":"","disabled":true,"description":""},{"key":"feed","value":"","disabled":true,"description":""},{"key":"currency","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Transactions_summary","name":"Total the card transactions that match a filter","request":{"method":"GET","description":"Needs the cards:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/transactions/summary","host":["{{baseUrl}}"],"path":["v1","transactions","summary"],"query":[{"key":"state","value":"","disabled":true,"description":""},{"key":"paymentAccountId","value":"","disabled":true,"description":""},{"key":"paymentAccountIds","value":"","disabled":true,"description":""},{"key":"from","value":"","disabled":true,"description":""},{"key":"to","value":"","disabled":true,"description":""},{"key":"q","value":"","disabled":true,"description":""},{"key":"minMinor","value":"","disabled":true,"description":""},{"key":"maxMinor","value":"","disabled":true,"description":""},{"key":"missingReceipt","value":"","disabled":true,"description":""},{"key":"unreported","value":"","disabled":true,"description":""},{"key":"currency","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]}]},{"name":"travel","item":[{"id":"Travel_list","name":"List travel trips","request":{"method":"GET","description":"Trips filed from itineraries, newest first. Your own, or everyone's with `scope=all` when your role reads everyone's expenses. Trips driven are in the mileage log.\n\nNeeds the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/travel/trips","host":["{{baseUrl}}"],"path":["v1","travel","trips"],"query":[{"key":"scope","value":"","disabled":true,"description":""},{"key":"from","value":"","disabled":true,"description":""},{"key":"to","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Travel_get","name":"Get a travel trip","request":{"method":"GET","description":"One trip, with its segments and the documents filed against it.\n\nNeeds the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/travel/trips/:id","host":["{{baseUrl}}"],"path":["v1","travel","trips",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]}]},{"name":"uploads","item":[{"id":"Uploads_create","name":"Sign an upload straight to storage","request":{"method":"POST","description":"The way to send a file: its bytes do not pass through this API. Say what it is for and how big it is, PUT the file to the URL in the answer, then name the uploadId on that feature's route in place of a multipart file. The file's own bytes decide what it is. Video goes to an attachment, up to 500 MiB, and is never read.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/uploads","host":["{{baseUrl}}"],"path":["v1","uploads"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"filename\": \"string\",\n  \"contentType\": \"string\",\n  \"sizeBytes\": 0,\n  \"purpose\": \"document\"\n}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"vehicles","item":[{"id":"Vehicles_list","name":"List vehicles","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/vehicles","host":["{{baseUrl}}"],"path":["v1","vehicles"],"query":[{"key":"q","value":"","disabled":true,"description":""},{"key":"archived","value":"","disabled":true,"description":""},{"key":"userId","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Vehicles_get","name":"Get a vehicle","request":{"method":"GET","description":"Needs the expenses:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/vehicles/:id","host":["{{baseUrl}}"],"path":["v1","vehicles",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]}]},{"name":"w 8ben e","item":[{"id":"SpecialDocuments_w8BenE","name":"Read a Form W-8BEN-E","request":{"method":"POST","description":"POST /v1/documents/url with the type fixed: the same body, wait and answer. Bank and tax numbers are masked; POST /v1/documents/{id}/reveal opens them.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/w-8ben-e","host":["{{baseUrl}}"],"path":["v1","w-8ben-e"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"w2s","item":[{"id":"SpecialDocuments_w2s","name":"Read a Form W-2","request":{"method":"POST","description":"POST /v1/documents/url with the type fixed: the same body, wait and answer. Bank and tax numbers are masked; POST /v1/documents/{id}/reveal opens them.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/w2s","host":["{{baseUrl}}"],"path":["v1","w2s"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"w2s set","item":[{"id":"DocumentSets_listW2Sets","name":"List W-2 sets","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/w2s-set","host":["{{baseUrl}}"],"path":["v1","w2s-set"],"query":[{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"DocumentSets_createW2Set","name":"Split a PDF of W-2s and read each one","request":{"method":"POST","description":"Multipart with a field named file, or JSON with uploadId, file_url or file_data. Up to 100 pages and 50 MB. Answers at once. w2_set.created says when every form is read, and w2_set.failed why not. Social security and employer numbers are masked in every view.\n\nNeeds the documents:write scope.","header":[{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/w2s-set","host":["{{baseUrl}}"],"path":["v1","w2s-set"],"query":[],"variable":[]},"body":{"mode":"formdata","formdata":[{"key":"file","type":"file","src":[],"description":"The file."},{"key":"split_by_blank_page","type":"text","value":"","disabled":true,"description":""},{"key":"every_page","type":"text","value":"","disabled":true,"description":""},{"key":"ranges","type":"text","value":"","disabled":true,"description":""},{"key":"document_types","type":"text","value":"","disabled":true,"description":""},{"key":"blueprint_name","type":"text","value":"","disabled":true,"description":""},{"key":"external_id","type":"text","value":"","disabled":true,"description":""}]}},"response":[]},{"id":"DocumentSets_getW2Set","name":"Get a W-2 set","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/w2s-set/:id","host":["{{baseUrl}}"],"path":["v1","w2s-set",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]}]},{"name":"w9s","item":[{"id":"SpecialDocuments_w9s","name":"Read a Form W-9","request":{"method":"POST","description":"POST /v1/documents/url with the type fixed: the same body, wait and answer. Bank and tax numbers are masked; POST /v1/documents/{id}/reveal opens them.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/w9s","host":["{{baseUrl}}"],"path":["v1","w9s"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]}]},{"name":"webhooks","item":[{"id":"Webhooks_list","name":"List webhook endpoints","request":{"method":"GET","description":"Pending and confirmed alike. Endpoints that belong to one API key are left out unless you ask: send apiKeyId for one key, or include=keys for all of them.\n\nNeeds the webhooks:manage scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/webhooks","host":["{{baseUrl}}"],"path":["v1","webhooks"],"query":[{"key":"apiKeyId","value":"","disabled":true,"description":""},{"key":"include","value":"","disabled":true,"description":""},{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"Webhooks_create","name":"Add a webhook endpoint","request":{"method":"POST","description":"Step one of the handshake. The URL must be public https, and not on papertotal.com. The endpoint starts PENDING, and PaperTotal sends it one signed subscription event holding a one-time token in data.token. Confirm it with POST /v1/webhooks/confirm within a day. Until then it receives nothing else, and after that it is deleted. An address on hooks.zapier.com is confirmed at once, because a catch hook cannot run a handshake. Send apiKeyId to make this one key's own endpoint: documents that key submits report here and not to the workspace's endpoints, it takes document events only, and a key has one. Changing the URL later goes through the handshake again. The signing secret is in this response and the rotate response, and nowhere else.\n\nNeeds the webhooks:manage scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/webhooks","host":["{{baseUrl}}"],"path":["v1","webhooks"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"url\": \"string\",\n  \"events\": [\n    \"document.created\"\n  ]\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Webhooks_get","name":"Get a webhook endpoint","request":{"method":"GET","description":"Needs the webhooks:manage scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/webhooks/:id","host":["{{baseUrl}}"],"path":["v1","webhooks",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Webhooks_update","name":"Change a webhook endpoint","request":{"method":"PATCH","description":"Needs the webhooks:manage scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/webhooks/:id","host":["{{baseUrl}}"],"path":["v1","webhooks",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Webhooks_remove","name":"Delete a webhook endpoint","request":{"method":"DELETE","description":"Needs the webhooks:manage scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/webhooks/:id","host":["{{baseUrl}}"],"path":["v1","webhooks",":id"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Webhooks_deliveries","name":"List an endpoint's deliveries","request":{"method":"GET","description":"Needs the webhooks:manage scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/webhooks/:id/deliveries","host":["{{baseUrl}}"],"path":["v1","webhooks",":id","deliveries"],"query":[{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Webhooks_rotate","name":"Issue a new signing secret","request":{"method":"POST","description":"Needs the webhooks:manage scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/webhooks/:id/rotate-secret","host":["{{baseUrl}}"],"path":["v1","webhooks",":id","rotate-secret"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Webhooks_test","name":"Send a test event","request":{"method":"POST","description":"Needs the webhooks:manage scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/webhooks/:id/test","host":["{{baseUrl}}"],"path":["v1","webhooks",":id","test"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"Webhooks_confirm","name":"Confirm a webhook endpoint","request":{"method":"POST","description":"Step three of the handshake. Send the token from the subscription event that went to the address. It works once, and expires after a day.\n\nNeeds the webhooks:manage scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/webhooks/confirm","host":["{{baseUrl}}"],"path":["v1","webhooks","confirm"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"token\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Webhooks_retry","name":"Send a delivery again","request":{"method":"POST","description":"Needs the webhooks:manage scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/webhooks/deliveries/:id/retry","host":["{{baseUrl}}"],"path":["v1","webhooks","deliveries",":id","retry"],"query":[],"variable":[{"key":"id","value":"","description":""}]}},"response":[]}]},{"name":"workflows","item":[{"id":"DocumentWorkflows_listRuns","name":"List a workflow's runs","request":{"method":"GET","description":"Needs the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/workflows/:id/runs","host":["{{baseUrl}}"],"path":["v1","workflows",":id","runs"],"query":[{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[{"key":"id","value":"","description":""}]}},"response":[]},{"id":"DocumentWorkflows_start","name":"Start a run","request":{"method":"POST","description":"Sends a file named by uploadId from POST /v1/uploads, or documents already in this workspace, to the workflow's API import. nodeId starts it at another input instead: a Document aggregator gathers what has come in, and Business insights runs its query. An upload, or an Idempotency-Key, makes a repeat answer with the first run.\n\nNeeds the documents:write scope.","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/workflows/:id/runs","host":["{{baseUrl}}"],"path":["v1","workflows",":id","runs"],"query":[],"variable":[{"key":"id","value":"","description":""}]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"DocumentWorkflows_getRun","name":"Get a run and each of its steps","request":{"method":"GET","description":"Each step says what happened. A file comes with a signed link that lasts 15 minutes, and an approval says who was asked and who answered.\n\nNeeds the documents:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/workflows/:id/runs/:runId","host":["{{baseUrl}}"],"path":["v1","workflows",":id","runs",":runId"],"query":[],"variable":[{"key":"id","value":"","description":""},{"key":"runId","value":"","description":""}]}},"response":[]}]},{"name":"workspace","item":[{"id":"Workspaces_current","name":"Get this workspace, its plan and its usage","request":{"method":"GET","description":"Needs the workspace:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/workspace","host":["{{baseUrl}}"],"path":["v1","workspace"],"query":[],"variable":[]}},"response":[]},{"id":"WorkspaceSettings_update","name":"Change this workspace","request":{"method":"PATCH","description":"Needs the workspace:write scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/workspace","host":["{{baseUrl}}"],"path":["v1","workspace"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"WorkspaceClosure_close","name":"Close this workspace","request":{"method":"DELETE","description":"Needs the workspace:delete scope, which no preset holds, on a key an owner made. Send the name of the workspace to confirm. Its data is purged after the grace period.\n\nNeeds the workspace:delete scope.","header":[{"key":"Content-Type","value":"application/json"}],"url":{"raw":"{{baseUrl}}/v1/workspace","host":["{{baseUrl}}"],"path":["v1","workspace"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"confirmName\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"id":"Workspaces_counts","name":"Count what is waiting on the caller","request":{"method":"GET","description":"Needs the workspace:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/workspace/counts","host":["{{baseUrl}}"],"path":["v1","workspace","counts"],"query":[],"variable":[]}},"response":[]}]},{"name":"workspaces","item":[{"id":"WorkspacesCreate_list","name":"List the workspaces this credential reaches","request":{"method":"GET","description":"A key or an app is bound to one workspace, so it lists that one. A person lists all of theirs.\n\nNeeds the workspace:read scope.","header":[],"url":{"raw":"{{baseUrl}}/v1/workspaces","host":["{{baseUrl}}"],"path":["v1","workspaces"],"query":[{"key":"limit","value":"","disabled":true,"description":""},{"key":"cursor","value":"","disabled":true,"description":""}],"variable":[]}},"response":[]},{"id":"WorkspacesCreate_create","name":"Create a workspace","request":{"method":"POST","description":"The caller's person owns it. It starts with what their one trial has left, or with no plan: reading and exporting work, and capture waits on a plan. A plan cannot be bought by an API call, so naming one returns the billing link where a person pays for it. A key stays bound to its own workspace, so the new one needs a key of its own.\n\nNeeds the workspace:write scope.","header":[{"key":"Content-Type","value":"application/json"},{"key":"Idempotency-Key","value":"","disabled":true,"description":"Replaying a key returns the first record instead of creating, and charging for, a second. While the first request is still running, a retry answers 409 IDEMPOTENCY_IN_PROGRESS with a Retry-After, and is not charged. The same key on a different request answers 409 IDEMPOTENCY_CONFLICT."}],"url":{"raw":"{{baseUrl}}/v1/workspaces","host":["{{baseUrl}}"],"path":["v1","workspaces"],"query":[],"variable":[]},"body":{"mode":"raw","raw":"{\n  \"name\": \"string\"\n}","options":{"raw":{"language":"json"}}}},"response":[]}]}]}