{
  "schemaVersion": "1.0",
  "item": {
    "slug": "documents-ai",
    "name": "Veryfi Documents AI",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/dbirulia/documents-ai",
    "canonicalUrl": "https://clawhub.ai/dbirulia/documents-ai",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/documents-ai",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=documents-ai",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "package.json",
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/documents-ai"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/documents-ai",
    "agentPageUrl": "https://openagent3.xyz/skills/documents-ai/agent",
    "manifestUrl": "https://openagent3.xyz/skills/documents-ai/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/documents-ai/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Documents AI by Veryfi",
        "body": "Real-time OCR and data extraction API — extract structured data from receipts, invoices, bank statements, W-9s, purchase orders, and more, with document classification, fraud detection, and raw OCR text output.\n\nGet your API key: https://app.veryfi.com/api/settings/keys/\nLearn more: https://veryfi.com"
      },
      {
        "title": "Quick Start",
        "body": "For Receipts and Invoices:\n\ncurl -X POST \"https://api.veryfi.com/api/v8/partner/documents/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@invoice.pdf\"\n\nResponse:\n\n{\n  \"id\": 62047612,\n  \"created_date\": \"2026-02-19\",\n  \"currency_code\": \"USD\",\n  \"date\": \"2026-02-18 14:22:00\",\n  \"document_type\": \"receipt\",\n  \"category\": \"Meals & Entertainment\",\n  \"is_duplicate\": false,\n  \"vendor\": {\n    \"name\": \"Starbucks\",\n    \"address\": \"123 Main St, San Francisco, CA 94105\"\n  },\n  \"line_items\": [\n    {\n      \"id\": 1,\n      \"order\": 0,\n      \"description\": \"Caffe Latte Grande\",\n      \"quantity\": 1,\n      \"price\": 5.95,\n      \"total\": 5.95,\n      \"type\": \"food\"\n    }\n  ],\n  \"subtotal\": 5.95,\n  \"tax\": 0.52,\n  \"total\": 6.47,\n  \"payment\": {\n    \"type\": \"visa\",\n    \"card_number\": \"1234\"\n  },\n  \"ocr_text\": \"STARBUCKS\\n123 Main St...\",\n  \"img_url\": \"https://scdn.veryfi.com/documents/...\",\n  \"pdf_url\": \"https://scdn.veryfi.com/documents/...\"\n}\n\nFor Bank Statements:\n\ncurl -X POST \"https://api.veryfi.com/api/v8/partner/bank-statements/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@bank-statement.pdf\"\n\nResponse:\n\n{\n  \"id\": 4820193,\n  \"created_date\": \"2026-02-19T12:45:00.000000Z\",\n  \"bank_name\": \"Chase\",\n  \"bank_address\": \"270 Park Avenue, New York, NY 10017\",\n  \"account_holder_name\": \"Jane Doe\",\n  \"account_holder_address\": \"456 Oak Ave, San Francisco, CA 94110\",\n  \"account_number\": \"****7890\",\n  \"account_type\": \"Checking\",\n  \"routing_number\": \"021000021\",\n  \"currency_code\": \"USD\",\n  \"statement_date\": \"2026-01-31\",\n  \"period_start_date\": \"2026-01-01\",\n  \"period_end_date\": \"2026-01-31\",\n  \"beginning_balance\": 12500.00,\n  \"ending_balance\": 11835.47,\n  \"accounts\": [\n    {\n      \"number\": \"****7890\",\n      \"beginning_balance\": 12500.00,\n      \"ending_balance\": 11835.47,\n      \"summaries\": [\n        { \"name\": \"Total Deposits\", \"total\": 3200.00 },\n        { \"name\": \"Total Withdrawals\", \"total\": 3864.53 }\n      ],\n      \"transactions\": [\n        {\n          \"order\": 0,\n          \"date\": \"2026-01-05\",\n          \"description\": \"Direct Deposit - ACME Corp Payroll\",\n          \"credit_amount\": 3200.00,\n          \"debit_amount\": null,\n          \"balance\": 15700.00,\n          \"category\": \"Income\"\n        },\n        {\n          \"order\": 1,\n          \"date\": \"2026-01-12\",\n          \"description\": \"Rent Payment - 456 Oak Ave\",\n          \"credit_amount\": null,\n          \"debit_amount\": 2800.00,\n          \"balance\": 12900.00,\n          \"category\": \"Housing\"\n        },\n        {\n          \"order\": 2,\n          \"date\": \"2026-01-20\",\n          \"description\": \"PG&E Utility Bill\",\n          \"credit_amount\": null,\n          \"debit_amount\": 1064.53,\n          \"balance\": 11835.47,\n          \"category\": \"Utilities\"\n        }\n      ]\n    }\n  ],\n  \"pdf_url\": \"https://scdn.veryfi.com/bank-statements/...\",\n  \"img_url\": \"https://scdn.veryfi.com/bank-statements/...\"\n}"
      },
      {
        "title": "1. Get Your API Key",
        "body": "# Visit API Auth Credentials page\nhttps://app.veryfi.com/api/settings/keys/\n\nSave your API keys:\n\nexport VERYFI_CLIENT_ID=\"your_client_id_here\"\nexport VERYFI_USERNAME=\"your_username_here\"\nexport VERYFI_API_KEY=\"your_api_key_here\""
      },
      {
        "title": "2. OpenClaw Configuration (Optional)",
        "body": "Recommended: Use environment variables (most secure):\n\n{\n  skills: {\n    entries: {\n      \"veryfi-documents-ai\": {\n        enabled: true,\n        // Keys loaded from environment variables:\n        // VERYFI_CLIENT_ID, VERYFI_USERNAME, VERYFI_API_KEY\n      },\n    },\n  },\n}\n\nAlternative: Store in config file (use with caution):\n\n{\n  skills: {\n    entries: {\n      \"veryfi-documents-ai\": {\n        enabled: true,\n        env: {\n          VERYFI_CLIENT_ID: \"your_client_id_here\",\n          VERYFI_USERNAME: \"your_username_here\",\n          VERYFI_API_KEY: \"your_api_key_here\",\n        },\n      },\n    },\n  },\n}\n\nSecurity Note: If storing API keys in ~/.openclaw/openclaw.json:\n\nSet file permissions: chmod 600 ~/.openclaw/openclaw.json\nNever commit this file to version control\nPrefer environment variables or your agent's secret store when possible\nRotate keys regularly and limit API key permissions if supported"
      },
      {
        "title": "Extract data from a Receipt or Invoice (file upload)",
        "body": "curl -X POST \"https://api.veryfi.com/api/v8/partner/documents/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@invoice.pdf\""
      },
      {
        "title": "Extract data from a Receipt or Invoice (base64)",
        "body": "When your agent already has the document as base64-encoded content (e.g., received via API, email attachment, or tool output), use file_data instead of uploading a file:\n\n# Encode the file first\nBASE64_DATA=$(base64 -i invoice.pdf)\n\ncurl -X POST \"https://api.veryfi.com/api/v8/partner/documents/\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -d \"{\n    \\\"file_name\\\": \\\"invoice.pdf\\\",\n    \\\"file_data\\\": \\\"$BASE64_DATA\\\"\n  }\""
      },
      {
        "title": "Extract data from a URL",
        "body": "curl -X POST \"https://api.veryfi.com/api/v8/partner/documents/\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -d '{\n    \"file_url\": \"https://example.com/invoice.pdf\"\n  }'"
      },
      {
        "title": "Extract data from a Passport",
        "body": "curl -X POST \"https://api.veryfi.com/api/v8/partner/any-documents/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@passport.jpg\" \\\n  -F \"blueprint_name=passport\""
      },
      {
        "title": "Extract data from Checks",
        "body": "curl -X POST \"https://api.veryfi.com/api/v8/partner/checks/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@check.jpg\""
      },
      {
        "title": "Extract data from W-9s",
        "body": "curl -X POST \"https://api.veryfi.com/api/v8/partner/w9s/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@w9.pdf\""
      },
      {
        "title": "Extract data from W-2s and W-8s",
        "body": "W-2 and W-8 forms do not have dedicated endpoints. Use the any-documents endpoint with the appropriate blueprint:\n\n# W-2\ncurl -X POST \"https://api.veryfi.com/api/v8/partner/any-documents/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@w2.pdf\" \\\n  -F \"blueprint_name=w2\"\n\n# W-8\ncurl -X POST \"https://api.veryfi.com/api/v8/partner/any-documents/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@w8.pdf\" \\\n  -F \"blueprint_name=w8\"\n\nNote: W-2 and W-8 appear as classification types (via /classify/) but their extraction is handled through the Any Document endpoint. Do not POST to /api/v8/partner/w2s/ or /api/v8/partner/w8s/ — those endpoints do not exist."
      },
      {
        "title": "Get Raw OCR Text from a Document",
        "body": "All extraction endpoints return an ocr_text field in the response containing the raw text content of the document as a plain string. This is useful when you want to process the text yourself or pass it to an LLM.\n\n# Extract and pull ocr_text with jq\ncurl -X POST \"https://api.veryfi.com/api/v8/partner/documents/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@document.pdf\" \\\n  | jq '.ocr_text'\n\nNote: ocr_text is plain text, not markdown. If you need markdown-formatted output, pass ocr_text to an LLM for reformatting after extraction."
      },
      {
        "title": "Classify a Document",
        "body": "Identify the document type without full data extraction. Useful for routing documents to the correct processing endpoint, pre-filtering uploads, or bulk sorting.\n\ncurl -X POST \"https://api.veryfi.com/api/v8/partner/classify/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@document.pdf\"\n\nNote: By default, the API classifies against 15 built-in types. You can also pass a document_types array with custom classes (see example below).\n\nResponse:\n\n{\n  \"id\": 81023456,\n  \"document_type\": {\n    \"score\": 0.97,\n    \"value\": \"invoice\"\n  }\n}\n\nDefault document types: receipt, invoice, purchase_order, bank_statement, check, w2, w8, w9, statement, contract, credit_note, remittance_advice, business_card, packing_slip, other.\n\nTo classify against custom types, pass a document_types array:\n\ncurl -X POST \"https://api.veryfi.com/api/v8/partner/classify/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@document.pdf\" \\\n  -F 'document_types=[\"lease_agreement\", \"utility_bill\", \"pay_stub\"]'"
      },
      {
        "title": "Bounding Boxes for Receipts, Invoices, Checks and Bank Statements APIs",
        "body": "Get element coordinates for layout analysis:\n\n-F \"bounding_boxes=true\" \n-F \"confidence_details=true\""
      },
      {
        "title": "Use Veryfi Documents AI For:",
        "body": "Invoice and receipt data extraction\nProcessing Bank Statements\nExtracting data from Checks\nDocument classification and routing\nExtracting data from any other document\nGetting raw OCR text from a document"
      },
      {
        "title": "Don't Use For:",
        "body": "Video or audio transcription\nWeb search or real-time data lookup\nImage generation or editing\nNon-document binary files (spreadsheets, code, executables)\nDocuments you haven't confirmed are cleared for third-party processing (see Security section)"
      },
      {
        "title": "Best Practices",
        "body": "Document TypeEndpointNotesReceipts & Invoices/api/v8/partner/documents/use for receipts/invoices/purchase ordersBank Statements/api/v8/partner/bank-statements/use for Bank statementsChecks/api/v8/partner/checks/use for bank checks (cheques in Canada)W-9s/api/v8/partner/w9s/W9 formsW-2s / W-8s/api/v8/partner/any-documents/Use blueprint_name=w2 or blueprint_name=w8Any Document/api/v8/partner/any-documents/Use to extract data from any document; list of blueprints provided belowClassify/api/v8/partner/classify/Identify document type without full extraction\n\nList of available blueprints:\n\nblueprint_nameDocument TypepassportPassport US or Internationalincorporation_documentCertificate of Company Incorporationus_driver_licenseUS Driver's Licenseuk_drivers_licenseUK Driver's Licenceus_health_insurance_cardUS Health Insurance Cardprescription_medication_labelPrescription Medication Labelmedication_instructionsMedication Instructionsvision_prescriptionVision Prescriptionauto_insurance_cardAuto Insurance Cardrestaurant_menuRestaurant Menudrinks_menuDrinks Menuproduct_nutrition_factsProduct Nutrition Facts Labelgoods_received_noteGoods Received Notevendor_statementVendor Statementflight_itineraryFlight Itinerarybill_of_ladingBill of Ladingair_waybillAir Waybillfreight_invoiceFreight Invoiceshipping_labelShipping Labelvehicle_registrationVehicle Registrationwork_orderWork Ordersettlement_letterSettlement Letterconstruction_estimateConstruction EstimatediplomaDiploma or Degree Certificateprice_sheetPrice Sheetmortgage_application_formMortgage Application Formlab_test_request_formLab Test Request Formconstruction_snapshotConstruction Snapshotmedical_prescription_listMedical Prescription Listv5cUK Vehicle Registration Certificate (V5C)bank_account_verification_letterBank Account Verification Letterannual_mortgage_statementAnnual Mortgage Statementinvestment_account_statementInvestment Account Statementcertificate_of_good_standingCertificate of Good Standingw2IRS W-2 Wage and Tax Statementw8IRS W-8 Certificate of Foreign Status\n\nMissing document type?\nIf document type (blueprint) you need to extract data from is missing, create one here:\nhttps://app.veryfi.com/inboxes/anydocs?tab=blueprints\n\nBounding Boxes & Confidence:\n\nAdd -F \"bounding_boxes=true\" for element coordinates\nAdd -F \"confidence_details=true\" for per-field confidence scores\n\nSupported Inputs:\n\nfile — multipart file upload\nfile_url — publicly accessible URL\nfile_data — base64-encoded content (send as JSON body with file_name + file_data fields)"
      },
      {
        "title": "Receipt / Invoice (/api/v8/partner/documents/)",
        "body": "{\n  \"id\": 62047612,\n  \"created_date\": \"2026-02-19T00:00:00.000000Z\",\n  \"updated_date\": \"2026-02-19T00:00:05.000000Z\",\n  \"currency_code\": \"USD\",\n  \"date\": \"2026-02-18 14:22:00\",\n  \"due_date\": \"2026-03-18\",\n  \"document_type\": \"receipt\",\n  \"category\": \"Meals & Entertainment\",\n  \"is_duplicate\": false,\n  \"is_document\": true,\n  \"invoice_number\": \"INV-2026-001\",\n  \"account_number\": \"ACCT-12345\",\n  \"order_date\": \"2026-02-18\",\n  \"delivery_date\": null,\n  \"vendor\": {\n    \"name\": \"Starbucks\",\n    \"address\": \"123 Main St, San Francisco, CA 94105\",\n    \"phone_number\": \"+1 415-555-0100\",\n    \"email\": null,\n    \"vat_number\": null,\n    \"reg_number\": null\n  },\n  \"bill_to\": {\n    \"name\": \"Jane Doe\",\n    \"address\": \"456 Oak Ave, San Francisco, CA 94110\"\n  },\n  \"ship_to\": {\n    \"name\": null,\n    \"address\": null\n  },\n  \"line_items\": [\n    {\n      \"id\": 1,\n      \"order\": 0,\n      \"description\": \"Caffe Latte Grande\",\n      \"quantity\": 1,\n      \"price\": 5.95,\n      \"total\": 5.95,\n      \"tax\": 0.52,\n      \"tax_rate\": 8.75,\n      \"discount\": null,\n      \"type\": \"food\",\n      \"sku\": null,\n      \"upc\": null,\n      \"category\": \"Meals & Entertainment\",\n      \"section\": null,\n      \"date\": null,\n      \"start_date\": null,\n      \"end_date\": null\n    }\n  ],\n  \"tax_lines\": [\n    {\n      \"order\": 0,\n      \"name\": \"Sales Tax\",\n      \"rate\": 8.75,\n      \"total\": 0.52,\n      \"base\": 5.95\n    }\n  ],\n  \"subtotal\": 5.95,\n  \"tax\": 0.52,\n  \"tip\": 0.00,\n  \"discount\": 0.00,\n  \"total\": 6.47,\n  \"payment\": {\n    \"type\": \"visa\",\n    \"card_number\": \"1234\"\n  },\n  \"reference_number\": null,\n  \"notes\": null,\n  \"img_url\": \"https://scdn.veryfi.com/documents/...\",\n  \"pdf_url\": \"https://scdn.veryfi.com/documents/...\",\n  \"ocr_text\": \"STARBUCKS\\n123 Main St...\",\n  \"meta\": {\n    \"total_pages\": 1,\n    \"processed_pages\": 1,\n    \"fraud\": {\n      \"score\": 0.01,\n      \"color\": \"green\",\n      \"decision\": \"Not Fraud\",\n      \"types\": []\n    }\n  }\n}"
      },
      {
        "title": "Check (/api/v8/partner/checks/)",
        "body": "{\n  \"id\": 9301847,\n  \"created_date\": \"2026-02-19T00:00:00.000000Z\",\n  \"updated_date\": \"2026-02-19T00:00:03.000000Z\",\n  \"amount\": 1500.00,\n  \"amount_text\": \"One Thousand Five Hundred and 00/100\",\n  \"check_number\": \"4021\",\n  \"date\": \"2026-02-15\",\n  \"currency_code\": \"USD\",\n  \"check_type\": \"personal_check\",\n  \"payer_name\": \"John Smith\",\n  \"payer_address\": \"789 Elm St, Austin, TX 78701\",\n  \"receiver_name\": \"Acme Plumbing LLC\",\n  \"receiver_address\": null,\n  \"bank_name\": \"Wells Fargo\",\n  \"bank_address\": \"420 Montgomery St, San Francisco, CA 94104\",\n  \"memo\": \"Invoice #2026-038\",\n  \"is_signed\": true,\n  \"micr\": {\n    \"routing_number\": \"121000248\",\n    \"account_number\": \"****5678\",\n    \"serial_number\": \"4021\",\n    \"raw\": \"⑆121000248⑆ ****5678⑈ 4021\",\n    \"branch\": null,\n    \"institution\": null\n  },\n  \"fractional_routing_number\": \"12-1/1200\",\n  \"routing_from_fractional\": \"121000248\",\n  \"endorsement\": {\n    \"is_endorsed\": true,\n    \"is_signed\": true,\n    \"mobile_or_remote_deposit\": {\n      \"checkbox\": false,\n      \"instructions\": false\n    }\n  },\n  \"handwritten_fields\": [\"amount\", \"amount_text\", \"date\", \"receiver_name\", \"memo\"],\n  \"fraud\": {\n    \"score\": 0.02,\n    \"color\": \"green\",\n    \"types\": [],\n    \"pages\": [\n      {\n        \"is_lcd\": { \"score\": 0.98, \"value\": false },\n        \"ai_generated\": { \"score\": 0.99, \"value\": false },\n        \"four_corners_detected\": true\n      }\n    ]\n  },\n  \"img_thumbnail_url\": \"https://scdn.veryfi.com/checks/...\",\n  \"pdf_url\": \"https://scdn.veryfi.com/checks/...\"\n}"
      },
      {
        "title": "Bank Statement (/api/v8/partner/bank-statements/)",
        "body": "{\n  \"id\": 4820193,\n  \"created_date\": \"2026-02-19T12:45:00.000000Z\",\n  \"updated_date\": \"2026-02-19T12:45:10.000000Z\",\n  \"bank_name\": \"Chase\",\n  \"bank_address\": \"270 Park Avenue, New York, NY 10017\",\n  \"account_holder_name\": \"Jane Doe\",\n  \"account_holder_address\": \"456 Oak Ave, San Francisco, CA 94110\",\n  \"account_number\": \"****7890\",\n  \"account_type\": \"Checking\",\n  \"routing_number\": \"021000021\",\n  \"currency_code\": \"USD\",\n  \"statement_date\": \"2026-01-31\",\n  \"period_start_date\": \"2026-01-01\",\n  \"period_end_date\": \"2026-01-31\",\n  \"beginning_balance\": 12500.00,\n  \"ending_balance\": 11835.47,\n  \"minimum_due\": null,\n  \"due_date\": null,\n  \"accounts\": [\n    {\n      \"number\": \"****7890\",\n      \"beginning_balance\": 12500.00,\n      \"ending_balance\": 11835.47,\n      \"summaries\": [\n        { \"name\": \"Total Deposits\", \"total\": 3200.00 },\n        { \"name\": \"Total Withdrawals\", \"total\": 3864.53 }\n      ],\n      \"transactions\": [\n        {\n          \"order\": 0,\n          \"date\": \"2026-01-05\",\n          \"posted_date\": \"2026-01-05\",\n          \"description\": \"Direct Deposit - ACME Corp Payroll\",\n          \"credit_amount\": 3200.00,\n          \"debit_amount\": null,\n          \"balance\": 15700.00,\n          \"category\": \"Income\",\n          \"vendor\": \"ACME Corp\"\n        },\n        {\n          \"order\": 1,\n          \"date\": \"2026-01-12\",\n          \"posted_date\": \"2026-01-12\",\n          \"description\": \"Rent Payment - 456 Oak Ave\",\n          \"credit_amount\": null,\n          \"debit_amount\": 2800.00,\n          \"balance\": 12900.00,\n          \"category\": \"Housing\",\n          \"vendor\": null\n        }\n      ]\n    }\n  ],\n  \"fraud\": {\n    \"score\": 0.01,\n    \"color\": \"green\",\n    \"types\": []\n  },\n  \"pdf_url\": \"https://scdn.veryfi.com/bank-statements/...\",\n  \"img_thumbnail_url\": \"https://scdn.veryfi.com/bank-statements/...\"\n}"
      },
      {
        "title": "Data Handling",
        "body": "Important: Documents uploaded to Veryfi are transmitted to https://api.veryfi.com and processed on AWS servers.\n\nBefore uploading sensitive documents:\n\nReview Veryfi's privacy policy and data retention policies: https://www.veryfi.com/terms/\nConfirm data deletion/retention timelines\nTest with non-sensitive sample documents first\nIf you have questions reach out to support@veryfi.com\n\nBest practices:\n\nDo not upload highly sensitive PII (SSNs, medical records, financial account numbers) until you've confirmed the service's security and compliance posture\nUse API keys with limited permissions/scopes if available\nMonitor API usage logs for unauthorized access\nNever log or commit API keys to repositories or examples"
      },
      {
        "title": "File Size Limits",
        "body": "Max file size: 20 MB per document\nNumber of pages: default is <=15 pages for receipts/invoices, <=50 pages for bank statements. Contact support to increase limits."
      },
      {
        "title": "Operational Safeguards",
        "body": "Always use environment variables or secure secret stores for API keys\nNever include real API keys in code examples or documentation\nUse placeholder values like \"your_api_key_here\" in examples\nSet appropriate file permissions on configuration files (600 for JSON configs)\nEnable API key rotation and monitor usage through the dashboard"
      },
      {
        "title": "Rate Limits",
        "body": "Veryfi enforces per-account rate limits. Exact limits depend on your plan tier.\n\nGeneral guidance:\n\nFree/Starter plans: lower concurrency limits; avoid parallel bursts\nBusiness/Enterprise plans: higher throughput; contact support for specifics\nIf you hit a rate limit, the API returns HTTP 429 Too Many Requests\nImplement exponential backoff: wait 1s → 2s → 4s → 8s before retrying\nFor high-volume workloads, contact support@veryfi.com or visit https://veryfi.com to discuss an enterprise plan"
      },
      {
        "title": "Troubleshooting",
        "body": "400 Bad Request:\n\nProvide exactly one input: file, file_url, or file_data (for base64)\nWhen using file_data, send as a JSON body (not multipart) with file_name and file_data fields\nVerify Username, API Key and Client ID are valid\nCheck the message field in the JSON response for the specific error detail\n\n401 Unauthorized:\n\nYour Client-Id, VERYFI_USERNAME, or VERYFI_API_KEY is incorrect or expired\nVerify credentials at https://app.veryfi.com/api/settings/keys/\nCheck that the Authorization header format is exactly apikey USERNAME:API_KEY (no extra spaces)\nRotate your key if you suspect it was compromised\n\n413 Payload Too Large:\n\nFile exceeds the 20 MB limit\nCompress the file or reduce image resolution before uploading\nSplit multi-page PDFs if the page count exceeds the plan limit (15 pages for invoices, 50 for bank statements)\n\n429 Too Many Requests:\n\nYou've exceeded your plan's rate limit\nImplement exponential backoff and retry\nFor sustained high volume, contact support@veryfi.com to upgrade your plan\n\n500 / 5xx Server Error:\n\nTransient server-side issue — retry after a short delay\nIf the error persists, check the Veryfi status page or contact support@veryfi.com\n\nMissing Confidence Scores:\n\nAdd confidence_details=true to the request to include score and ocr_score fields in the response\nAdd bounding_boxes=true to also get bounding_box and bounding_region coordinates\n\nW-2 / W-8 endpoint 404:\n\nThere are no /w2s/ or /w8s/ endpoints — use /any-documents/ with blueprint_name=w2 or blueprint_name=w8"
      },
      {
        "title": "Tips",
        "body": "Store VERYFI_CLIENT_ID, VERYFI_USERNAME, and VERYFI_API_KEY in environment variables rather than hardcoding them\nUse confidence_details=true and bounding_boxes=true when you need per-field accuracy scores or element coordinates\nFor large volumes, classify documents first with /classify/ and route to the appropriate extraction endpoint\nKeep file sizes under 20 MB and stay within page limits (15 for invoices, 50 for bank statements)\nTest with sample documents before processing sensitive data in production\nIf a blueprint you need is missing, create a custom one at https://app.veryfi.com/inboxes/anydocs?tab=blueprints\nocr_text in the response gives you raw extracted text — pass it to an LLM if you need markdown or further processing\nFor base64 input, always include file_name so Veryfi can infer the file type correctly"
      },
      {
        "title": "References",
        "body": "API Docs: https://docs.veryfi.com/\nVeryfi: https://veryfi.com\nVeryfi SDKs: https://github.com/veryfi\nGet API Key: https://app.veryfi.com/api/settings/keys/\nPrivacy Policy: https://www.veryfi.com/terms/\nSupport: support@veryfi.com"
      }
    ],
    "body": "Documents AI by Veryfi\n\nReal-time OCR and data extraction API — extract structured data from receipts, invoices, bank statements, W-9s, purchase orders, and more, with document classification, fraud detection, and raw OCR text output.\n\nGet your API key: https://app.veryfi.com/api/settings/keys/ Learn more: https://veryfi.com\n\nQuick Start\n\nFor Receipts and Invoices:\n\ncurl -X POST \"https://api.veryfi.com/api/v8/partner/documents/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@invoice.pdf\"\n\n\nResponse:\n\n{\n  \"id\": 62047612,\n  \"created_date\": \"2026-02-19\",\n  \"currency_code\": \"USD\",\n  \"date\": \"2026-02-18 14:22:00\",\n  \"document_type\": \"receipt\",\n  \"category\": \"Meals & Entertainment\",\n  \"is_duplicate\": false,\n  \"vendor\": {\n    \"name\": \"Starbucks\",\n    \"address\": \"123 Main St, San Francisco, CA 94105\"\n  },\n  \"line_items\": [\n    {\n      \"id\": 1,\n      \"order\": 0,\n      \"description\": \"Caffe Latte Grande\",\n      \"quantity\": 1,\n      \"price\": 5.95,\n      \"total\": 5.95,\n      \"type\": \"food\"\n    }\n  ],\n  \"subtotal\": 5.95,\n  \"tax\": 0.52,\n  \"total\": 6.47,\n  \"payment\": {\n    \"type\": \"visa\",\n    \"card_number\": \"1234\"\n  },\n  \"ocr_text\": \"STARBUCKS\\n123 Main St...\",\n  \"img_url\": \"https://scdn.veryfi.com/documents/...\",\n  \"pdf_url\": \"https://scdn.veryfi.com/documents/...\"\n}\n\n\nFor Bank Statements:\n\ncurl -X POST \"https://api.veryfi.com/api/v8/partner/bank-statements/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@bank-statement.pdf\"\n\n\nResponse:\n\n{\n  \"id\": 4820193,\n  \"created_date\": \"2026-02-19T12:45:00.000000Z\",\n  \"bank_name\": \"Chase\",\n  \"bank_address\": \"270 Park Avenue, New York, NY 10017\",\n  \"account_holder_name\": \"Jane Doe\",\n  \"account_holder_address\": \"456 Oak Ave, San Francisco, CA 94110\",\n  \"account_number\": \"****7890\",\n  \"account_type\": \"Checking\",\n  \"routing_number\": \"021000021\",\n  \"currency_code\": \"USD\",\n  \"statement_date\": \"2026-01-31\",\n  \"period_start_date\": \"2026-01-01\",\n  \"period_end_date\": \"2026-01-31\",\n  \"beginning_balance\": 12500.00,\n  \"ending_balance\": 11835.47,\n  \"accounts\": [\n    {\n      \"number\": \"****7890\",\n      \"beginning_balance\": 12500.00,\n      \"ending_balance\": 11835.47,\n      \"summaries\": [\n        { \"name\": \"Total Deposits\", \"total\": 3200.00 },\n        { \"name\": \"Total Withdrawals\", \"total\": 3864.53 }\n      ],\n      \"transactions\": [\n        {\n          \"order\": 0,\n          \"date\": \"2026-01-05\",\n          \"description\": \"Direct Deposit - ACME Corp Payroll\",\n          \"credit_amount\": 3200.00,\n          \"debit_amount\": null,\n          \"balance\": 15700.00,\n          \"category\": \"Income\"\n        },\n        {\n          \"order\": 1,\n          \"date\": \"2026-01-12\",\n          \"description\": \"Rent Payment - 456 Oak Ave\",\n          \"credit_amount\": null,\n          \"debit_amount\": 2800.00,\n          \"balance\": 12900.00,\n          \"category\": \"Housing\"\n        },\n        {\n          \"order\": 2,\n          \"date\": \"2026-01-20\",\n          \"description\": \"PG&E Utility Bill\",\n          \"credit_amount\": null,\n          \"debit_amount\": 1064.53,\n          \"balance\": 11835.47,\n          \"category\": \"Utilities\"\n        }\n      ]\n    }\n  ],\n  \"pdf_url\": \"https://scdn.veryfi.com/bank-statements/...\",\n  \"img_url\": \"https://scdn.veryfi.com/bank-statements/...\"\n}\n\nSetup\n1. Get Your API Key\n# Visit API Auth Credentials page\nhttps://app.veryfi.com/api/settings/keys/\n\n\nSave your API keys:\n\nexport VERYFI_CLIENT_ID=\"your_client_id_here\"\nexport VERYFI_USERNAME=\"your_username_here\"\nexport VERYFI_API_KEY=\"your_api_key_here\"\n\n2. OpenClaw Configuration (Optional)\n\nRecommended: Use environment variables (most secure):\n\n{\n  skills: {\n    entries: {\n      \"veryfi-documents-ai\": {\n        enabled: true,\n        // Keys loaded from environment variables:\n        // VERYFI_CLIENT_ID, VERYFI_USERNAME, VERYFI_API_KEY\n      },\n    },\n  },\n}\n\n\nAlternative: Store in config file (use with caution):\n\n{\n  skills: {\n    entries: {\n      \"veryfi-documents-ai\": {\n        enabled: true,\n        env: {\n          VERYFI_CLIENT_ID: \"your_client_id_here\",\n          VERYFI_USERNAME: \"your_username_here\",\n          VERYFI_API_KEY: \"your_api_key_here\",\n        },\n      },\n    },\n  },\n}\n\n\nSecurity Note: If storing API keys in ~/.openclaw/openclaw.json:\n\nSet file permissions: chmod 600 ~/.openclaw/openclaw.json\nNever commit this file to version control\nPrefer environment variables or your agent's secret store when possible\nRotate keys regularly and limit API key permissions if supported\nCommon Tasks\nExtract data from a Receipt or Invoice (file upload)\ncurl -X POST \"https://api.veryfi.com/api/v8/partner/documents/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@invoice.pdf\"\n\nExtract data from a Receipt or Invoice (base64)\n\nWhen your agent already has the document as base64-encoded content (e.g., received via API, email attachment, or tool output), use file_data instead of uploading a file:\n\n# Encode the file first\nBASE64_DATA=$(base64 -i invoice.pdf)\n\ncurl -X POST \"https://api.veryfi.com/api/v8/partner/documents/\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -d \"{\n    \\\"file_name\\\": \\\"invoice.pdf\\\",\n    \\\"file_data\\\": \\\"$BASE64_DATA\\\"\n  }\"\n\nExtract data from a URL\ncurl -X POST \"https://api.veryfi.com/api/v8/partner/documents/\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -d '{\n    \"file_url\": \"https://example.com/invoice.pdf\"\n  }'\n\nExtract data from a Passport\ncurl -X POST \"https://api.veryfi.com/api/v8/partner/any-documents/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@passport.jpg\" \\\n  -F \"blueprint_name=passport\"\n\nExtract data from Checks\ncurl -X POST \"https://api.veryfi.com/api/v8/partner/checks/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@check.jpg\"\n\nExtract data from W-9s\ncurl -X POST \"https://api.veryfi.com/api/v8/partner/w9s/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@w9.pdf\"\n\nExtract data from W-2s and W-8s\n\nW-2 and W-8 forms do not have dedicated endpoints. Use the any-documents endpoint with the appropriate blueprint:\n\n# W-2\ncurl -X POST \"https://api.veryfi.com/api/v8/partner/any-documents/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@w2.pdf\" \\\n  -F \"blueprint_name=w2\"\n\n# W-8\ncurl -X POST \"https://api.veryfi.com/api/v8/partner/any-documents/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@w8.pdf\" \\\n  -F \"blueprint_name=w8\"\n\n\nNote: W-2 and W-8 appear as classification types (via /classify/) but their extraction is handled through the Any Document endpoint. Do not POST to /api/v8/partner/w2s/ or /api/v8/partner/w8s/ — those endpoints do not exist.\n\nGet Raw OCR Text from a Document\n\nAll extraction endpoints return an ocr_text field in the response containing the raw text content of the document as a plain string. This is useful when you want to process the text yourself or pass it to an LLM.\n\n# Extract and pull ocr_text with jq\ncurl -X POST \"https://api.veryfi.com/api/v8/partner/documents/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@document.pdf\" \\\n  | jq '.ocr_text'\n\n\nNote: ocr_text is plain text, not markdown. If you need markdown-formatted output, pass ocr_text to an LLM for reformatting after extraction.\n\nClassify a Document\n\nIdentify the document type without full data extraction. Useful for routing documents to the correct processing endpoint, pre-filtering uploads, or bulk sorting.\n\ncurl -X POST \"https://api.veryfi.com/api/v8/partner/classify/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@document.pdf\"\n\n\nNote: By default, the API classifies against 15 built-in types. You can also pass a document_types array with custom classes (see example below).\n\nResponse:\n\n{\n  \"id\": 81023456,\n  \"document_type\": {\n    \"score\": 0.97,\n    \"value\": \"invoice\"\n  }\n}\n\n\nDefault document types: receipt, invoice, purchase_order, bank_statement, check, w2, w8, w9, statement, contract, credit_note, remittance_advice, business_card, packing_slip, other.\n\nTo classify against custom types, pass a document_types array:\n\ncurl -X POST \"https://api.veryfi.com/api/v8/partner/classify/\" \\\n  -H \"Content-Type: multipart/form-data\" \\\n  -H \"Client-Id: $VERYFI_CLIENT_ID\" \\\n  -H \"Authorization: apikey $VERYFI_USERNAME:$VERYFI_API_KEY\" \\\n  -F \"file=@document.pdf\" \\\n  -F 'document_types=[\"lease_agreement\", \"utility_bill\", \"pay_stub\"]'\n\nAdvanced Features\nBounding Boxes for Receipts, Invoices, Checks and Bank Statements APIs\n\nGet element coordinates for layout analysis:\n\n-F \"bounding_boxes=true\" \n-F \"confidence_details=true\"\n\nWhen to Use\nUse Veryfi Documents AI For:\nInvoice and receipt data extraction\nProcessing Bank Statements\nExtracting data from Checks\nDocument classification and routing\nExtracting data from any other document\nGetting raw OCR text from a document\nDon't Use For:\nVideo or audio transcription\nWeb search or real-time data lookup\nImage generation or editing\nNon-document binary files (spreadsheets, code, executables)\nDocuments you haven't confirmed are cleared for third-party processing (see Security section)\nBest Practices\nDocument Type\tEndpoint\tNotes\nReceipts & Invoices\t/api/v8/partner/documents/\tuse for receipts/invoices/purchase orders\nBank Statements\t/api/v8/partner/bank-statements/\tuse for Bank statements\nChecks\t/api/v8/partner/checks/\tuse for bank checks (cheques in Canada)\nW-9s\t/api/v8/partner/w9s/\tW9 forms\nW-2s / W-8s\t/api/v8/partner/any-documents/\tUse blueprint_name=w2 or blueprint_name=w8\nAny Document\t/api/v8/partner/any-documents/\tUse to extract data from any document; list of blueprints provided below\nClassify\t/api/v8/partner/classify/\tIdentify document type without full extraction\n\nList of available blueprints:\n\nblueprint_name\tDocument Type\npassport\tPassport US or International\nincorporation_document\tCertificate of Company Incorporation\nus_driver_license\tUS Driver's License\nuk_drivers_license\tUK Driver's Licence\nus_health_insurance_card\tUS Health Insurance Card\nprescription_medication_label\tPrescription Medication Label\nmedication_instructions\tMedication Instructions\nvision_prescription\tVision Prescription\nauto_insurance_card\tAuto Insurance Card\nrestaurant_menu\tRestaurant Menu\ndrinks_menu\tDrinks Menu\nproduct_nutrition_facts\tProduct Nutrition Facts Label\ngoods_received_note\tGoods Received Note\nvendor_statement\tVendor Statement\nflight_itinerary\tFlight Itinerary\nbill_of_lading\tBill of Lading\nair_waybill\tAir Waybill\nfreight_invoice\tFreight Invoice\nshipping_label\tShipping Label\nvehicle_registration\tVehicle Registration\nwork_order\tWork Order\nsettlement_letter\tSettlement Letter\nconstruction_estimate\tConstruction Estimate\ndiploma\tDiploma or Degree Certificate\nprice_sheet\tPrice Sheet\nmortgage_application_form\tMortgage Application Form\nlab_test_request_form\tLab Test Request Form\nconstruction_snapshot\tConstruction Snapshot\nmedical_prescription_list\tMedical Prescription List\nv5c\tUK Vehicle Registration Certificate (V5C)\nbank_account_verification_letter\tBank Account Verification Letter\nannual_mortgage_statement\tAnnual Mortgage Statement\ninvestment_account_statement\tInvestment Account Statement\ncertificate_of_good_standing\tCertificate of Good Standing\nw2\tIRS W-2 Wage and Tax Statement\nw8\tIRS W-8 Certificate of Foreign Status\n\nMissing document type? If document type (blueprint) you need to extract data from is missing, create one here: https://app.veryfi.com/inboxes/anydocs?tab=blueprints\n\nBounding Boxes & Confidence:\n\nAdd -F \"bounding_boxes=true\" for element coordinates\nAdd -F \"confidence_details=true\" for per-field confidence scores\n\nSupported Inputs:\n\nfile — multipart file upload\nfile_url — publicly accessible URL\nfile_data — base64-encoded content (send as JSON body with file_name + file_data fields)\nResponse Schemas\nReceipt / Invoice (/api/v8/partner/documents/)\n{\n  \"id\": 62047612,\n  \"created_date\": \"2026-02-19T00:00:00.000000Z\",\n  \"updated_date\": \"2026-02-19T00:00:05.000000Z\",\n  \"currency_code\": \"USD\",\n  \"date\": \"2026-02-18 14:22:00\",\n  \"due_date\": \"2026-03-18\",\n  \"document_type\": \"receipt\",\n  \"category\": \"Meals & Entertainment\",\n  \"is_duplicate\": false,\n  \"is_document\": true,\n  \"invoice_number\": \"INV-2026-001\",\n  \"account_number\": \"ACCT-12345\",\n  \"order_date\": \"2026-02-18\",\n  \"delivery_date\": null,\n  \"vendor\": {\n    \"name\": \"Starbucks\",\n    \"address\": \"123 Main St, San Francisco, CA 94105\",\n    \"phone_number\": \"+1 415-555-0100\",\n    \"email\": null,\n    \"vat_number\": null,\n    \"reg_number\": null\n  },\n  \"bill_to\": {\n    \"name\": \"Jane Doe\",\n    \"address\": \"456 Oak Ave, San Francisco, CA 94110\"\n  },\n  \"ship_to\": {\n    \"name\": null,\n    \"address\": null\n  },\n  \"line_items\": [\n    {\n      \"id\": 1,\n      \"order\": 0,\n      \"description\": \"Caffe Latte Grande\",\n      \"quantity\": 1,\n      \"price\": 5.95,\n      \"total\": 5.95,\n      \"tax\": 0.52,\n      \"tax_rate\": 8.75,\n      \"discount\": null,\n      \"type\": \"food\",\n      \"sku\": null,\n      \"upc\": null,\n      \"category\": \"Meals & Entertainment\",\n      \"section\": null,\n      \"date\": null,\n      \"start_date\": null,\n      \"end_date\": null\n    }\n  ],\n  \"tax_lines\": [\n    {\n      \"order\": 0,\n      \"name\": \"Sales Tax\",\n      \"rate\": 8.75,\n      \"total\": 0.52,\n      \"base\": 5.95\n    }\n  ],\n  \"subtotal\": 5.95,\n  \"tax\": 0.52,\n  \"tip\": 0.00,\n  \"discount\": 0.00,\n  \"total\": 6.47,\n  \"payment\": {\n    \"type\": \"visa\",\n    \"card_number\": \"1234\"\n  },\n  \"reference_number\": null,\n  \"notes\": null,\n  \"img_url\": \"https://scdn.veryfi.com/documents/...\",\n  \"pdf_url\": \"https://scdn.veryfi.com/documents/...\",\n  \"ocr_text\": \"STARBUCKS\\n123 Main St...\",\n  \"meta\": {\n    \"total_pages\": 1,\n    \"processed_pages\": 1,\n    \"fraud\": {\n      \"score\": 0.01,\n      \"color\": \"green\",\n      \"decision\": \"Not Fraud\",\n      \"types\": []\n    }\n  }\n}\n\nCheck (/api/v8/partner/checks/)\n{\n  \"id\": 9301847,\n  \"created_date\": \"2026-02-19T00:00:00.000000Z\",\n  \"updated_date\": \"2026-02-19T00:00:03.000000Z\",\n  \"amount\": 1500.00,\n  \"amount_text\": \"One Thousand Five Hundred and 00/100\",\n  \"check_number\": \"4021\",\n  \"date\": \"2026-02-15\",\n  \"currency_code\": \"USD\",\n  \"check_type\": \"personal_check\",\n  \"payer_name\": \"John Smith\",\n  \"payer_address\": \"789 Elm St, Austin, TX 78701\",\n  \"receiver_name\": \"Acme Plumbing LLC\",\n  \"receiver_address\": null,\n  \"bank_name\": \"Wells Fargo\",\n  \"bank_address\": \"420 Montgomery St, San Francisco, CA 94104\",\n  \"memo\": \"Invoice #2026-038\",\n  \"is_signed\": true,\n  \"micr\": {\n    \"routing_number\": \"121000248\",\n    \"account_number\": \"****5678\",\n    \"serial_number\": \"4021\",\n    \"raw\": \"⑆121000248⑆ ****5678⑈ 4021\",\n    \"branch\": null,\n    \"institution\": null\n  },\n  \"fractional_routing_number\": \"12-1/1200\",\n  \"routing_from_fractional\": \"121000248\",\n  \"endorsement\": {\n    \"is_endorsed\": true,\n    \"is_signed\": true,\n    \"mobile_or_remote_deposit\": {\n      \"checkbox\": false,\n      \"instructions\": false\n    }\n  },\n  \"handwritten_fields\": [\"amount\", \"amount_text\", \"date\", \"receiver_name\", \"memo\"],\n  \"fraud\": {\n    \"score\": 0.02,\n    \"color\": \"green\",\n    \"types\": [],\n    \"pages\": [\n      {\n        \"is_lcd\": { \"score\": 0.98, \"value\": false },\n        \"ai_generated\": { \"score\": 0.99, \"value\": false },\n        \"four_corners_detected\": true\n      }\n    ]\n  },\n  \"img_thumbnail_url\": \"https://scdn.veryfi.com/checks/...\",\n  \"pdf_url\": \"https://scdn.veryfi.com/checks/...\"\n}\n\nBank Statement (/api/v8/partner/bank-statements/)\n{\n  \"id\": 4820193,\n  \"created_date\": \"2026-02-19T12:45:00.000000Z\",\n  \"updated_date\": \"2026-02-19T12:45:10.000000Z\",\n  \"bank_name\": \"Chase\",\n  \"bank_address\": \"270 Park Avenue, New York, NY 10017\",\n  \"account_holder_name\": \"Jane Doe\",\n  \"account_holder_address\": \"456 Oak Ave, San Francisco, CA 94110\",\n  \"account_number\": \"****7890\",\n  \"account_type\": \"Checking\",\n  \"routing_number\": \"021000021\",\n  \"currency_code\": \"USD\",\n  \"statement_date\": \"2026-01-31\",\n  \"period_start_date\": \"2026-01-01\",\n  \"period_end_date\": \"2026-01-31\",\n  \"beginning_balance\": 12500.00,\n  \"ending_balance\": 11835.47,\n  \"minimum_due\": null,\n  \"due_date\": null,\n  \"accounts\": [\n    {\n      \"number\": \"****7890\",\n      \"beginning_balance\": 12500.00,\n      \"ending_balance\": 11835.47,\n      \"summaries\": [\n        { \"name\": \"Total Deposits\", \"total\": 3200.00 },\n        { \"name\": \"Total Withdrawals\", \"total\": 3864.53 }\n      ],\n      \"transactions\": [\n        {\n          \"order\": 0,\n          \"date\": \"2026-01-05\",\n          \"posted_date\": \"2026-01-05\",\n          \"description\": \"Direct Deposit - ACME Corp Payroll\",\n          \"credit_amount\": 3200.00,\n          \"debit_amount\": null,\n          \"balance\": 15700.00,\n          \"category\": \"Income\",\n          \"vendor\": \"ACME Corp\"\n        },\n        {\n          \"order\": 1,\n          \"date\": \"2026-01-12\",\n          \"posted_date\": \"2026-01-12\",\n          \"description\": \"Rent Payment - 456 Oak Ave\",\n          \"credit_amount\": null,\n          \"debit_amount\": 2800.00,\n          \"balance\": 12900.00,\n          \"category\": \"Housing\",\n          \"vendor\": null\n        }\n      ]\n    }\n  ],\n  \"fraud\": {\n    \"score\": 0.01,\n    \"color\": \"green\",\n    \"types\": []\n  },\n  \"pdf_url\": \"https://scdn.veryfi.com/bank-statements/...\",\n  \"img_thumbnail_url\": \"https://scdn.veryfi.com/bank-statements/...\"\n}\n\nSecurity & Privacy\nData Handling\n\nImportant: Documents uploaded to Veryfi are transmitted to https://api.veryfi.com and processed on AWS servers.\n\nBefore uploading sensitive documents:\n\nReview Veryfi's privacy policy and data retention policies: https://www.veryfi.com/terms/\nConfirm data deletion/retention timelines\nTest with non-sensitive sample documents first\nIf you have questions reach out to support@veryfi.com\n\nBest practices:\n\nDo not upload highly sensitive PII (SSNs, medical records, financial account numbers) until you've confirmed the service's security and compliance posture\nUse API keys with limited permissions/scopes if available\nMonitor API usage logs for unauthorized access\nNever log or commit API keys to repositories or examples\nFile Size Limits\nMax file size: 20 MB per document\nNumber of pages: default is <=15 pages for receipts/invoices, <=50 pages for bank statements. Contact support to increase limits.\nOperational Safeguards\nAlways use environment variables or secure secret stores for API keys\nNever include real API keys in code examples or documentation\nUse placeholder values like \"your_api_key_here\" in examples\nSet appropriate file permissions on configuration files (600 for JSON configs)\nEnable API key rotation and monitor usage through the dashboard\nRate Limits\n\nVeryfi enforces per-account rate limits. Exact limits depend on your plan tier.\n\nGeneral guidance:\n\nFree/Starter plans: lower concurrency limits; avoid parallel bursts\nBusiness/Enterprise plans: higher throughput; contact support for specifics\nIf you hit a rate limit, the API returns HTTP 429 Too Many Requests\nImplement exponential backoff: wait 1s → 2s → 4s → 8s before retrying\nFor high-volume workloads, contact support@veryfi.com or visit https://veryfi.com to discuss an enterprise plan\nTroubleshooting\n\n400 Bad Request:\n\nProvide exactly one input: file, file_url, or file_data (for base64)\nWhen using file_data, send as a JSON body (not multipart) with file_name and file_data fields\nVerify Username, API Key and Client ID are valid\nCheck the message field in the JSON response for the specific error detail\n\n401 Unauthorized:\n\nYour Client-Id, VERYFI_USERNAME, or VERYFI_API_KEY is incorrect or expired\nVerify credentials at https://app.veryfi.com/api/settings/keys/\nCheck that the Authorization header format is exactly apikey USERNAME:API_KEY (no extra spaces)\nRotate your key if you suspect it was compromised\n\n413 Payload Too Large:\n\nFile exceeds the 20 MB limit\nCompress the file or reduce image resolution before uploading\nSplit multi-page PDFs if the page count exceeds the plan limit (15 pages for invoices, 50 for bank statements)\n\n429 Too Many Requests:\n\nYou've exceeded your plan's rate limit\nImplement exponential backoff and retry\nFor sustained high volume, contact support@veryfi.com to upgrade your plan\n\n500 / 5xx Server Error:\n\nTransient server-side issue — retry after a short delay\nIf the error persists, check the Veryfi status page or contact support@veryfi.com\n\nMissing Confidence Scores:\n\nAdd confidence_details=true to the request to include score and ocr_score fields in the response\nAdd bounding_boxes=true to also get bounding_box and bounding_region coordinates\n\nW-2 / W-8 endpoint 404:\n\nThere are no /w2s/ or /w8s/ endpoints — use /any-documents/ with blueprint_name=w2 or blueprint_name=w8\nTips\nStore VERYFI_CLIENT_ID, VERYFI_USERNAME, and VERYFI_API_KEY in environment variables rather than hardcoding them\nUse confidence_details=true and bounding_boxes=true when you need per-field accuracy scores or element coordinates\nFor large volumes, classify documents first with /classify/ and route to the appropriate extraction endpoint\nKeep file sizes under 20 MB and stay within page limits (15 for invoices, 50 for bank statements)\nTest with sample documents before processing sensitive data in production\nIf a blueprint you need is missing, create a custom one at https://app.veryfi.com/inboxes/anydocs?tab=blueprints\nocr_text in the response gives you raw extracted text — pass it to an LLM if you need markdown or further processing\nFor base64 input, always include file_name so Veryfi can infer the file type correctly\nReferences\nAPI Docs: https://docs.veryfi.com/\nVeryfi: https://veryfi.com\nVeryfi SDKs: https://github.com/veryfi\nGet API Key: https://app.veryfi.com/api/settings/keys/\nPrivacy Policy: https://www.veryfi.com/terms/\nSupport: support@veryfi.com"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/dbirulia/documents-ai",
    "publisherUrl": "https://clawhub.ai/dbirulia/documents-ai",
    "owner": "dbirulia",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/documents-ai",
    "downloadUrl": "https://openagent3.xyz/downloads/documents-ai",
    "agentUrl": "https://openagent3.xyz/skills/documents-ai/agent",
    "manifestUrl": "https://openagent3.xyz/skills/documents-ai/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/documents-ai/agent.md"
  }
}