SDK: veryfi/veryfi-php (PHP >= 7.4)
Source of truth: https://docs.veryfi.com/ (sitemap retrieved 2026-08-21)
Scope: Public HTTP API operations documented under /api/ excluding Getting Started guides, Lens, Fraud conceptual pages, and the v7 overview. Interactive API and authentication conceptual pages are not counted as operations.
This report does not change SDK source. It compares each documented operation to the public veryfi\Client methods.
- Language: PHP (
composer.json, namespaceveryfi\). - Public surface: a single
Clientclass composed from resource traits undersrc/veryfi/. - HTTP: custom cURL client in
src/veryfi/client/Request.php(no extra HTTP library). - Base URL:
https://api.veryfi.com/api/+v8+/partner(GetUrl.php). - Auth:
Client-IDheader,Authorization: apikey {username}:{api_key}, plus HMACX-Veryfi-Request-Timestamp/X-Veryfi-Request-Signature(GetHeaders.php,GenerateSignature.php). Matches standard key authentication. - Responses: raw JSON strings (
stringreturn types). The only public request models areLineItem,LineItemUpdate, andSharedLineItem. - Extra parameters: most methods accept
$kwargsand merge them into the payload. - Upload modes: many resources expose three helpers for one POST route — filesystem (
file/CURLFile), base64 (file_data), and URL (file_url/file_urls).
Request::request()always setsCURLOPT_POSTFIELDS(JSON-encoded unless$has_filesis true). GET/DELETE query parameters documented on list/get endpoints are not placed on the query string.- Headers always include
Content-Type: application/json, including when$has_filesis true (multipartCURLFile). That can prevent a correct multipart boundary content type. process_w2()andprocess_w9()attachCURLFilebut callrequest()without$has_files = true, so the file is JSON-encoded instead of uploaded as multipart.
- 151 operation pages were taken from
https://docs.veryfi.com/sitemap.xml(paths under/api/minus getting-started / v7 / overview). - Each page was opened and parsed for HTTP method, route, content types, path/query/body parameter names.
- Matching is HTTP method + normalized route (
:document_id≡{document_id}≡$document_id; trailing slashes ignored;/api/v8/partnerprefix stripped). - Upload-mode helpers that share one method+route count as one API operation.
- Dedicated
POST .../asyncroutes are separate operations from the sync process route. - Settings API keys live under
/api/v1/partner/settings/api-keys, not v8. The SDK hard-defaults to v8.
| Class | Meaning in this audit |
|---|---|
| IMPLEMENTED | Public method(s), correct method+route, documented parameters can be sent in the documented location/encoding (including $kwargs for optional POST/PUT JSON body fields). |
| PARTIAL | Method exists and route/verb match, but parameters, encoding, query-string handling, upload mode, or request models are incomplete or incorrect. |
| MISSING | No public method uses that method+route. |
| UNCERTAIN | Coverage could not be proven from docs and repository. Not used in the final report because every operation was verified and tested. |
$kwargs supports optional JSON body fields and GET query parameters. The
shared request layer serializes GET options onto the URL using RFC 3986.
| Product | API Operation | SDK Method | HTTP Method | Route | Docs URL | Endpoint Coverage | Parameter Coverage | Tests | Recommended Action |
|---|---|---|---|---|---|---|---|---|---|
| AnyDocs | Get ∀Docs | get_any_documents() |
GET | /api/v8/partner/any-documents |
Get ∀Docs | IMPLEMENTED | IMPLEMENTED | Yes | None |
| AnyDocs | Process a ∀Doc | process_any_document(), process_any_document_base64(), process_any_document_url() |
POST | /api/v8/partner/any-documents |
Process a ∀Doc | IMPLEMENTED | IMPLEMENTED | Yes | None |
| AnyDocs | Delete a ∀Doc | delete_any_document() |
DELETE | /api/v8/partner/any-documents/:document_id |
Delete a ∀Doc | IMPLEMENTED | IMPLEMENTED | Yes | None |
| AnyDocs | Get a ∀Doc | get_any_document() |
GET | /api/v8/partner/any-documents/:document_id |
Get a ∀Doc | IMPLEMENTED | IMPLEMENTED | Yes | None |
| AnyDocs | Update a ∀Doc | update_any_document() |
PUT | /api/v8/partner/any-documents/:document_id |
Update a ∀Doc | IMPLEMENTED | IMPLEMENTED | Yes | None |
| AnyDocs | Unlink all tags from a ∀Doc | delete_any_document_tags() |
DELETE | /api/v8/partner/any-documents/:document_id/tags |
Unlink all tags from a ∀Doc | IMPLEMENTED | IMPLEMENTED | Yes | None |
| AnyDocs | Get ∀Doc tags | get_any_document_tags() |
GET | /api/v8/partner/any-documents/:document_id/tags |
Get ∀Doc tags | IMPLEMENTED | IMPLEMENTED | Yes | None |
| AnyDocs | Add tags to a ∀Doc | add_any_document_tags() |
POST | /api/v8/partner/any-documents/:document_id/tags |
Add tags to a ∀Doc | IMPLEMENTED | IMPLEMENTED | Yes | None |
| AnyDocs | Add a tag to a ∀Doc | add_any_document_tag() |
PUT | /api/v8/partner/any-documents/:document_id/tags |
Add a tag to a ∀Doc | IMPLEMENTED | IMPLEMENTED | Yes | None |
| AnyDocs | Unlink a tag from a ∀Doc | delete_any_document_tag() |
DELETE | /api/v8/partner/any-documents/:document_id/tags/:tag_id |
Unlink a tag from a ∀Doc | IMPLEMENTED | IMPLEMENTED | Yes | None |
| AnyDocs | Process a ∀Doc asynchronously | process_any_document_async() |
POST | /api/v8/partner/any-documents/async |
Process a ∀Doc asynchronously | IMPLEMENTED | IMPLEMENTED | Yes | None |
| AnyDocs | Get Blueprints | get_blueprints() |
GET | /api/v8/partner/blueprints |
Get Blueprints | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Bank Statements | Get Bank Statements | get_bank_statements() |
GET | /api/v8/partner/bank-statements |
Get Bank Statements | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Bank Statements | Process a Bank Statement | process_bank_statement(), process_bank_statement_base64(), process_bank_statement_url() |
POST | /api/v8/partner/bank-statements |
Process a Bank Statement | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Bank Statements | Get Bank Statement sets | get_bank_statement_sets() |
GET | /api/v8/partner/bank-statements-set |
Get Bank Statement sets | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Bank Statements | Split and process multiple Bank Statements | process_bank_statement_set() |
POST | /api/v8/partner/bank-statements-set |
Split and process multiple Bank Statements | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Bank Statements | Get a Bank Statement set | get_bank_statement_set() |
GET | /api/v8/partner/bank-statements-set/:document_id |
Get a Bank Statement set | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Bank Statements | Delete a Bank Statement | delete_bank_statement() |
DELETE | /api/v8/partner/bank-statements/:document_id |
Delete a Bank Statement | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Bank Statements | Get a Bank Statement | get_bank_statement() |
GET | /api/v8/partner/bank-statements/:document_id |
Get a Bank Statement | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Bank Statements | Update a Bank Statement | update_bank_statement() |
PUT | /api/v8/partner/bank-statements/:document_id |
Update a Bank Statement | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Bank Statements | Unlink all tags from a Bank Statement | delete_bank_statement_tags() |
DELETE | /api/v8/partner/bank-statements/:document_id/tags |
Unlink all tags from a Bank Statement | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Bank Statements | Get Bank Statement tags | get_bank_statement_tags() |
GET | /api/v8/partner/bank-statements/:document_id/tags |
Get Bank Statement tags | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Bank Statements | Add tags to a Bank Statement | add_bank_statement_tags() |
POST | /api/v8/partner/bank-statements/:document_id/tags |
Add tags to a Bank Statement | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Bank Statements | Add a tag to a Bank Statement | add_bank_statement_tag() |
PUT | /api/v8/partner/bank-statements/:document_id/tags |
Add a tag to a Bank Statement | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Bank Statements | Unlink a tag from a Bank Statement | delete_bank_statement_tag() |
DELETE | /api/v8/partner/bank-statements/:document_id/tags/:tag_id |
Unlink a tag from a Bank Statement | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Bank Statements | Process a Bank Statement asynchronously | process_bank_statement_async() |
POST | /api/v8/partner/bank-statements/async |
Process a Bank Statement asynchronously | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Business Cards | Get Business Cards | get_business_cards() |
GET | /api/v8/partner/business-cards |
Get Business Cards | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Business Cards | Process a Business Card | process_business_card(), process_business_card_base64(), process_business_card_from_url() |
POST | /api/v8/partner/business-cards |
Process a Business Card | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Business Cards | Delete a Business Card | delete_business_card() |
DELETE | /api/v8/partner/business-cards/:document_id |
Delete a Business Card | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Business Cards | Get a Business Card | get_business_card() |
GET | /api/v8/partner/business-cards/:document_id |
Get a Business Card | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Business Cards | Update a Business Card | update_business_card() |
PUT | /api/v8/partner/business-cards/:document_id |
Update a Business Card | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Business Cards | Unlink all tags from a Business Card | delete_business_card_tags() |
DELETE | /api/v8/partner/business-cards/:document_id/tags |
Unlink all tags from a Business Card | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Business Cards | Get Business Card tags | get_business_card_tags() |
GET | /api/v8/partner/business-cards/:document_id/tags |
Get Business Card tags | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Business Cards | Add tags to a Business Card | add_business_card_tags() |
POST | /api/v8/partner/business-cards/:document_id/tags |
Add tags to a Business Card | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Business Cards | Add a tag to a Business Card | add_business_card_tag() |
PUT | /api/v8/partner/business-cards/:document_id/tags |
Add a tag to a Business Card | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Business Cards | Unlink a tag from a Business Card | delete_business_card_tag() |
DELETE | /api/v8/partner/business-cards/:document_id/tags/:tag_id |
Unlink a tag from a Business Card | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Checks | Process a Check With Remittance | process_check_with_remittance() |
POST | /api/v8/partner/check-with-document |
Process a Check With Remittance | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Checks | Get Checks | get_checks() |
GET | /api/v8/partner/checks |
Get Checks | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Checks | Process a Check | process_check(), process_check_base64(), process_check_from_url() |
POST | /api/v8/partner/checks |
Process a Check | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Checks | Delete a Check | delete_check() |
DELETE | /api/v8/partner/checks/:document_id |
Delete a Check | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Checks | Get a Check | get_check() |
GET | /api/v8/partner/checks/:document_id |
Get a Check | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Checks | Update a Check | update_check() |
PUT | /api/v8/partner/checks/:document_id |
Update a Check | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Checks | Unlink all tags from a Check | delete_check_tags() |
DELETE | /api/v8/partner/checks/:document_id/tags |
Unlink all tags from a Check | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Checks | Get Check tags | get_check_tags() |
GET | /api/v8/partner/checks/:document_id/tags |
Get Check tags | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Checks | Add tags to a Check | add_check_tags() |
POST | /api/v8/partner/checks/:document_id/tags |
Add tags to a Check | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Checks | Add a tag to a Check | add_check_tag() |
PUT | /api/v8/partner/checks/:document_id/tags |
Add a tag to a Check | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Checks | Unlink a tag from a Check | delete_check_tag() |
DELETE | /api/v8/partner/checks/:document_id/tags/:tag_id |
Unlink a tag from a Check | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Checks | Process a Check asynchronously | process_check_async() |
POST | /api/v8/partner/checks/async |
Process a Check asynchronously | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Classification | Classify a document | classify_document_from_base64(), classify_document_from_url() |
POST | /api/v8/partner/classify |
Classify a document | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Classification | Classify and possibly extract data from a document | extract_document() |
POST | /api/v8/partner/extract |
Classify and possibly extract data from a document | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Contracts | Get Contracts | get_contracts() |
GET | /api/v8/partner/contracts |
Get Contracts | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Contracts | Process a Contract | process_contract() |
POST | /api/v8/partner/contracts |
Process a Contract | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Contracts | Delete a Contract | delete_contract() |
DELETE | /api/v8/partner/contracts/:document_id |
Delete a Contract | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Contracts | Get a Contract | get_contract() |
GET | /api/v8/partner/contracts/:document_id |
Get a Contract | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Contracts | Update a Contract | update_contract() |
PUT | /api/v8/partner/contracts/:document_id |
Update a Contract | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Contracts | Unlink all tags from a Contract | delete_contract_tags() |
DELETE | /api/v8/partner/contracts/:document_id/tags |
Unlink all tags from a Contract | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Contracts | Get Contract tags | get_contract_tags() |
GET | /api/v8/partner/contracts/:document_id/tags |
Get Contract tags | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Contracts | Add tags to a Contract | add_contract_tags() |
POST | /api/v8/partner/contracts/:document_id/tags |
Add tags to a Contract | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Contracts | Add a tag to a Contract | add_contract_tag() |
PUT | /api/v8/partner/contracts/:document_id/tags |
Add a tag to a Contract | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Contracts | Unlink a tag from a Contract | delete_contract_tag() |
DELETE | /api/v8/partner/contracts/:document_id/tags/:tag_id |
Unlink a tag from a Contract | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Fraud Detection | Get devices from blocklist | get_blocklisted_devices() |
GET | /api/v8/partner/fraud/blocklist |
Get devices from blocklist | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Fraud Detection | Add devices to blocklist | add_blocklisted_devices() |
POST | /api/v8/partner/fraud/blocklist |
Add devices to blocklist | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Fraud Detection | Remove a device from blocklist | remove_blocklisted_device() |
DELETE | /api/v8/partner/fraud/blocklist/:device_id |
Remove a device from blocklist | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Parse Documents | Get Markdown Documents | get_markdown_documents() |
GET | /api/v8/partner/parse |
Get Markdown Documents | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Parse Documents | Convert a Document to Markdown | process_markdown_document() |
POST | /api/v8/partner/parse |
Convert a Document to Markdown | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Parse Documents | Get Markdown Document Sets | get_markdown_document_sets() |
GET | /api/v8/partner/parse-set |
Get Markdown Document Sets | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Parse Documents | Process a Markdown Document Set | process_markdown_document_set() |
POST | /api/v8/partner/parse-set |
Process a Markdown Document Set | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Parse Documents | Get a Markdown Document Set | get_markdown_document_set() |
GET | /api/v8/partner/parse-set/:document_id |
Get a Markdown Document Set | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Parse Documents | Delete a Markdown Document | delete_markdown_document() |
DELETE | /api/v8/partner/parse/:document_id |
Delete a Markdown Document | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Parse Documents | Get a Markdown Document | get_markdown_document() |
GET | /api/v8/partner/parse/:document_id |
Get a Markdown Document | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Parse Documents | Update a Markdown Document | update_markdown_document() |
PUT | /api/v8/partner/parse/:document_id |
Update a Markdown Document | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Parse Documents | Process a Markdown Document asynchronously | process_markdown_document_async() |
POST | /api/v8/partner/parse/async |
Process a Markdown Document asynchronously | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Search Documents | get_documents() |
GET | /api/v8/partner/documents |
Search Documents | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Process a Document | process_document(), process_document_base64(), process_document_url() |
POST | /api/v8/partner/documents |
Process a Document | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Get Submitted PDF | get_split_documents() |
GET | /api/v8/partner/documents-set |
Get Submitted PDF | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Split and process a PDF | split_document_from_base64(), split_document_from_url() |
POST | /api/v8/partner/documents-set |
Split and process a PDF | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Get Documents from PDF | get_split_document() |
GET | /api/v8/partner/documents-set/:document_id |
Get Documents from PDF | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Delete a Document | delete_document() |
DELETE | /api/v8/partner/documents/:document_id |
Delete a Document | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Get a Document | get_document() |
GET | /api/v8/partner/documents/:document_id |
Get a Document | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Update a Document | update_document() |
PUT | /api/v8/partner/documents/:document_id |
Update a Document | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Delete all document Line Items | delete_line_items() |
DELETE | /api/v8/partner/documents/:document_id/line-items |
Delete all document Line Items | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Get document Line Items | get_line_items() |
GET | /api/v8/partner/documents/:document_id/line-items |
Get document Line Items | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Create a Line Item | add_line_item() |
POST | /api/v8/partner/documents/:document_id/line-items |
Create a Line Item | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Delete a Line Item | delete_line_item() |
DELETE | /api/v8/partner/documents/:document_id/line-items/:line_item_id |
Delete a Line Item | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Get a Line Item | get_line_item() |
GET | /api/v8/partner/documents/:document_id/line-items/:line_item_id |
Get a Line Item | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Update a Line Item | update_line_item() |
PUT | /api/v8/partner/documents/:document_id/line-items/:line_item_id |
Update a Line Item | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Unlink all Tags from a Document | delete_tags() |
DELETE | /api/v8/partner/documents/:document_id/tags |
Unlink all Tags from a Document | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Get Document Tags | get_document_tags() |
GET | /api/v8/partner/documents/:document_id/tags |
Get Document Tags | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Add Tags to a Document | add_tags() |
POST | /api/v8/partner/documents/:document_id/tags |
Add Tags to a Document | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Add a Tag to a Document | add_tag() |
PUT | /api/v8/partner/documents/:document_id/tags |
Add a Tag to a Document | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Unlink a Tag from a Document | delete_tag() |
DELETE | /api/v8/partner/documents/:document_id/tags/:tag_id |
Unlink a Tag from a Document | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Returns a list of document Tax Lines | get_tax_lines() |
GET | /api/v8/partner/documents/:document_id/tax-lines |
Returns a list of document Tax Lines | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Create a Tax Line | add_tax_line() |
POST | /api/v8/partner/documents/:document_id/tax-lines |
Create a Tax Line | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Delete a Tax Line | delete_tax_line() |
DELETE | /api/v8/partner/documents/:document_id/tax-lines/:tax_line_id |
Delete a Tax Line | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Returns document Tax Line | get_tax_line() |
GET | /api/v8/partner/documents/:document_id/tax-lines/:tax_line_id |
Returns document Tax Line | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Update a Tax Line | update_tax_line() |
PUT | /api/v8/partner/documents/:document_id/tax-lines/:tax_line_id |
Update a Tax Line | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Receipts & Invoices | Bulk Process Multiple Documents | process_documents_bulk() |
POST | /api/v8/partner/documents/bulk |
Bulk Process Multiple Documents | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Settings | Retrieve api-keys list | get_api_keys() |
GET | /api/v1/partner/settings/api-keys |
Retrieve api-keys list | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Settings | Create api-key | create_api_key() |
POST | /api/v1/partner/settings/api-keys |
Create api-key | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Settings | Revoke api-key | revoke_api_key() |
DELETE | /api/v1/partner/settings/api-keys/:id |
Revoke api-key | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Settings | Retrieve api-key | get_api_key() |
GET | /api/v1/partner/settings/api-keys/:id |
Retrieve api-key | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Settings | Update api-key | update_api_key() |
PUT | /api/v1/partner/settings/api-keys/:id |
Update api-key | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Settings | Rotate api-key | rotate_api_key() |
POST | /api/v1/partner/settings/api-keys/:id/rotate |
Rotate api-key | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Settings | Available permissions | get_api_key_permissions() |
GET | /api/v1/partner/settings/api-keys/available-permissions |
Available permissions | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Settings | Verify the calling key | verify_api_key() |
GET | /api/v1/partner/settings/api-keys/verify |
Verify the calling key | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Settings | Get release notifications | get_release_notifications() |
GET | /api/v1/release-notifications |
Get release notifications | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Settings | Retrieve client-keys list | get_client_keys() |
GET | /api/v8/partner/client-keys |
Retrieve client-keys list | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Settings | Create client-keys | create_client_keys() |
POST | /api/v8/partner/client-keys |
Create client-keys | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Settings | Remove a client-key | delete_client_key() |
DELETE | /api/v8/partner/client-keys/:id |
Remove a client-key | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Settings | Reset client-keys | reset_client_keys() |
POST | /api/v8/partner/client-keys/reset |
Reset client-keys | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Settings | Get OpenAPI schema | get_openapi_schema() |
GET | /api/v8/partner/documents/schema |
Get OpenAPI schema | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Settings | Get ocr-counts | get_ocr_counts() |
GET | /api/v8/partner/ocr-counts |
Get ocr-counts | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Settings | Get Tls Certificates | get_tls_certificates() |
GET | /api/v8/partner/settings/tls-certificate |
Get Tls Certificates | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Settings | Process a Tls Certificate | create_tls_certificate() |
POST | /api/v8/partner/settings/tls-certificate |
Process a Tls Certificate | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Settings | Delete a Tls Certificate | delete_tls_certificate() |
DELETE | /api/v8/partner/settings/tls-certificate/:certificate_id |
Delete a Tls Certificate | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Settings | Get webhooks | get_webhooks() |
GET | /api/v8/partner/settings/webhooks |
Get webhooks | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Settings | Add a webhook | add_webhook() |
POST | /api/v8/partner/settings/webhooks |
Add a webhook | IMPLEMENTED | IMPLEMENTED | Yes | None |
| Settings | Confirm a webhook | confirm_webhook() |
POST | /api/v8/partner/settings/webhooks/confirm |
Confirm a webhook | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-2s | Get W-2s | get_w2s() |
GET | /api/v8/partner/w2s |
Get W-2s | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-2s | Process a W-2 | process_w2(), process_w2_base64(), process_w2_from_url() |
POST | /api/v8/partner/w2s |
Process a W-2 | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-2s | Get W-2 sets | get_w2_sets() |
GET | /api/v8/partner/w2s-set |
Get W-2 sets | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-2s | Split and process a PDF with multiple W-2s | process_w2_set() |
POST | /api/v8/partner/w2s-set |
Split and process a PDF with multiple W-2s | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-2s | Get a W-2 set | get_w2_set() |
GET | /api/v8/partner/w2s-set/:document_id |
Get a W-2 set | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-2s | Delete a W-2 | delete_w2() |
DELETE | /api/v8/partner/w2s/:document_id |
Delete a W-2 | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-2s | Get a W-2 | get_w2() |
GET | /api/v8/partner/w2s/:document_id |
Get a W-2 | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-2s | Update a W-2 | update_w2() |
PUT | /api/v8/partner/w2s/:document_id |
Update a W-2 | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-2s | Unlink all tags from a W-2 | delete_w2_tags() |
DELETE | /api/v8/partner/w2s/:document_id/tags |
Unlink all tags from a W-2 | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-2s | Get W-2 tags | get_w2_tags() |
GET | /api/v8/partner/w2s/:document_id/tags |
Get W-2 tags | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-2s | Add tags to a W-2 | add_w2_tags() |
POST | /api/v8/partner/w2s/:document_id/tags |
Add tags to a W-2 | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-2s | Add a tag to a W-2 | add_w2_tag() |
PUT | /api/v8/partner/w2s/:document_id/tags |
Add a tag to a W-2 | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-2s | Unlink a tag from a W-2 | delete_w2_tag() |
DELETE | /api/v8/partner/w2s/:document_id/tags/:tag_id |
Unlink a tag from a W-2 | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-8BEN-E | Get W-8BEN-Es | get_w8benes() |
GET | /api/v8/partner/w-8ben-e |
Get W-8BEN-Es | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-8BEN-E | Process a W-8BEN-E | process_w8bene(), process_w8bene_base64(), process_w8bene_from_url() |
POST | /api/v8/partner/w-8ben-e |
Process a W-8BEN-E | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-8BEN-E | Delete a W-8BEN-E | delete_w8bene() |
DELETE | /api/v8/partner/w-8ben-e/:document_id |
Delete a W-8BEN-E | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-8BEN-E | Get a W-8BEN-E | get_w8bene() |
GET | /api/v8/partner/w-8ben-e/:document_id |
Get a W-8BEN-E | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-8BEN-E | Update a W-8BEN-E | update_w8bene() |
PUT | /api/v8/partner/w-8ben-e/:document_id |
Update a W-8BEN-E | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-8BEN-E | Unlink all tags from a W-8BEN-E | delete_w8bene_tags() |
DELETE | /api/v8/partner/w-8ben-e/:document_id/tags |
Unlink all tags from a W-8BEN-E | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-8BEN-E | Get W-8BEN-E tags | get_w8bene_tags() |
GET | /api/v8/partner/w-8ben-e/:document_id/tags |
Get W-8BEN-E tags | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-8BEN-E | Add tags to a W-8BEN-E | add_w8bene_tags() |
POST | /api/v8/partner/w-8ben-e/:document_id/tags |
Add tags to a W-8BEN-E | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-8BEN-E | Add a tag to a W-8BEN-E | add_w8bene_tag() |
PUT | /api/v8/partner/w-8ben-e/:document_id/tags |
Add a tag to a W-8BEN-E | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-8BEN-E | Unlink a tag from a W-8BEN-E | delete_w8bene_tag() |
DELETE | /api/v8/partner/w-8ben-e/:document_id/tags/:tag_id |
Unlink a tag from a W-8BEN-E | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-9s | Get W-9s | get_w9s() |
GET | /api/v8/partner/w9s |
Get W-9s | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-9s | Process a W-9 | process_w9(), process_w9_base64(), process_w9_from_url() |
POST | /api/v8/partner/w9s |
Process a W-9 | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-9s | Delete a W-9 | delete_w9() |
DELETE | /api/v8/partner/w9s/:document_id |
Delete a W-9 | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-9s | Get a W-9 | get_w9() |
GET | /api/v8/partner/w9s/:document_id |
Get a W-9 | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-9s | Update a W-9 | update_w9() |
PUT | /api/v8/partner/w9s/:document_id |
Update a W-9 | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-9s | Unlink all tags from a W-9 | delete_w9_tags() |
DELETE | /api/v8/partner/w9s/:document_id/tags |
Unlink all tags from a W-9 | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-9s | Get W-9 tags | get_w9_tags() |
GET | /api/v8/partner/w9s/:document_id/tags |
Get W-9 tags | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-9s | Add tags to a W-9 | add_w9_tags() |
POST | /api/v8/partner/w9s/:document_id/tags |
Add tags to a W-9 | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-9s | Add a tag to a W-9 | add_w9_tag() |
PUT | /api/v8/partner/w9s/:document_id/tags |
Add a tag to a W-9 | IMPLEMENTED | IMPLEMENTED | Yes | None |
| W-9s | Unlink a tag from a W-9 | delete_w9_tag() |
DELETE | /api/v8/partner/w9s/:document_id/tags/:tag_id |
Unlink a tag from a W-9 | IMPLEMENTED | IMPLEMENTED | Yes | None |
No operations remain PARTIAL. Every currently documented operation has a public SDK method, verified method/route/parameter forwarding, and automated tests.
| SDK Method | HTTP Method | Route | Source File | Issue | Recommended Action |
|---|---|---|---|---|---|
get_tags() |
GET | /api/v8/partner/tags |
src/veryfi/documents/tags/GetTags.php |
No current official docs page for GET /tags/. | Confirm whether this workspace-level tags list is still supported; document or remove. |
replace_tags() |
PUT | /api/v8/partner/documents/:document_id |
src/veryfi/documents/tags/ReplaceTags.php |
Convenience wrapper around Update a Document (sends {tags: ...}). Not a distinct documented operation. |
Keep as helper; document that it maps to PUT /documents/:document_id. Avoid documenting it as a unique endpoint. |
verify_signature() |
— | — (local HMAC) |
src/veryfi/client/VeryfiSignature.php |
Local webhook signature verification, not an HTTP API operation. | Keep. Link to webhook docs in PHPDoc. |
process_document_base64() / process_document_url() |
POST | /api/v8/partner/documents |
documents/ProcessDocument*.php | Additional upload-mode helpers for the same Process a Document operation. | Keep. This is an SDK design pattern, not extra API coverage. |
process_*_base64() / process_*_url() / process_*_from_url() |
POST | resource process routes |
various | Upload-mode helpers sharing one documented POST route per resource. | Keep. Do not count as separate API operations. |
Additional public helpers that are not extra API operations (same method+route as the process endpoint): process_document_base64, process_document_url, process_any_document_base64, process_any_document_url, process_bank_statement_base64, process_bank_statement_url, process_business_card_base64, process_business_card_from_url, process_check_base64, process_check_from_url, process_w2_base64, process_w2_from_url, process_w8bene_base64, process_w8bene_from_url, process_w9_base64, process_w9_from_url, classify_document_from_base64, classify_document_from_url, split_document_from_base64, split_document_from_url.
- GET parameters are serialized with RFC 3986 encoding on the query string; GET/HEAD requests no longer send JSON bodies.
- Multipart requests allow cURL to set the boundary and auto-detect top-level
CURLFilevalues. process_w2()andprocess_w9()now use multipart encoding.- Existing AnyDocs method signatures remain backward compatible while sending the documented
blueprint_namefield. - Line-item request models support the current documented
expanded_description,brand,category, andtagsfields.
- Updates, tags, dedicated async routes, splitter sets, bulk documents, tax lines, and check-with-remittance are public on
Client. - Contracts, Parse/Markdown, classify-and-extract, fraud blocklist, webhooks, client keys, API keys, TLS certificates, blueprints, OCR counts, OpenAPI schema, and release notifications are public on
Client. - API-key and release-notification methods route to documented v1 paths without changing the client's configured v8 default for other operations.
- The original 69 regression tests remain in place.
ClientApiParityTestprovides one method/route/request-contract test for each of the 103 formerly missing operations.- Parameter-level regressions cover query-string encoding, AnyDocs
blueprint_name, W-2/W-9/classify/split multipart behavior, and line-item fields.
- Every new public method links to its official operation page.
- README includes pagination, async, Contracts, Markdown, resource tags/updates, and settings examples.
| Metric | Count |
|---|---|
| Total documented API operations | 151 |
| Fully implemented (IMPLEMENTED) | 151 |
| Partially implemented (PARTIAL) | 0 |
| Missing (MISSING) | 0 |
| Uncertain (UNCERTAIN) | 0 |
| SDK-only / undocumented operations | 3 |
| Coverage | Formula | Value |
|---|---|---|
| Endpoint coverage | (IMPLEMENTED + PARTIAL) / Total | 100.0% (151/151) |
| Full API coverage | IMPLEMENTED / Total | 100.0% (151/151) |
By product:
| Product | Total | Implemented | Partial | Missing |
|---|---|---|---|---|
| AnyDocs | 12 | 12 | 0 | 0 |
| Bank Statements | 14 | 14 | 0 | 0 |
| Business Cards | 10 | 10 | 0 | 0 |
| Checks | 12 | 12 | 0 | 0 |
| Classification | 2 | 2 | 0 | 0 |
| Contracts | 10 | 10 | 0 | 0 |
| Fraud Detection | 3 | 3 | 0 | 0 |
| Parse Documents | 9 | 9 | 0 | 0 |
| Receipts & Invoices | 25 | 25 | 0 | 0 |
| Settings | 21 | 21 | 0 | 0 |
| W-2s | 13 | 13 | 0 | 0 |
| W-8BEN-E | 10 | 10 | 0 | 0 |
| W-9s | 10 | 10 | 0 | 0 |
All P0–P4 API parity items identified in the original audit are implemented and tested:
- P0: query serialization, multipart headers, W-2/W-9 uploads, AnyDocs blueprint field.
- P1: line-item fields and local multipart classify/split helpers.
- P2: supported-resource updates, tags, async routes, bulk, tax lines, remittance checks, and set APIs.
- P3: Contracts, Parse, Extract, Fraud, Settings, schema, counts, and release resources.
- P4: operation contract tests, parameter regressions, PHPDoc links, and README examples.
No implementation priority remains for current documented operations. Future work should rerun this audit when the official API changes.
| Topic | Docs | SDK |
|---|---|---|
| Auth | Client ID + API key/request signature; v1 API-key management | Existing standard-key HMAC authentication is reused. v1 management routes are selected per operation. |
| Pagination | Query parameters such as page and page_size |
All GET option arrays are RFC 3986 query strings. Responses remain raw JSON strings, consistent with the SDK. |
| Async | Receipts body flag plus dedicated AnyDocs/bank/check/parse async routes | Receipts supports async through process options; dedicated async methods are public for all documented routes. |
| File upload | JSON URL/base64/S3 modes and multipart file |
Existing upload helpers remain; classify/split local-file helpers added; all CURLFile payloads use multipart. |
| Webhooks | Add/list/confirm settings endpoints | add_webhook(), get_webhooks(), confirm_webhook(), and existing verify_signature() are available. |
Operation pages were enumerated from the official sitemap. Product landing pages that timed out were not required because each operation has its own URL and OpenAPI method/path heading.
Parser artifacts used while producing this report (not part of the SDK): parameter names for GET query strings and POST/PUT top-level body fields. Nested DetailedField children (value, bounding_box, …) were excluded from “top-level body” lists except where they are the documented query/path names.