# PRINTOOLS Docs > PRINTOOLS documentation — shop management software for print and garment decoration. - [Introduction](https://docs.printools.io/index.md): Shop management for print and garment decoration. - [Quickstart](https://docs.printools.io/quickstart.md): Begin with a guide on the fastest path to a successful outcome - [Set up your shop](https://docs.printools.io/guides/set-up-your-shop.md): The settings worth configuring before you go live. - [API access](https://docs.printools.io/guides/api-access.md): Mint an API key and make your first call. - [Quoting](https://docs.printools.io/guides/quoting.md): Groups, lines, decorations, and how a quote becomes a job. - [Jobs and production](https://docs.printools.io/guides/jobs-and-production.md): Moving accepted work across the floor. - [Catalogue](https://docs.printools.io/guides/catalogue.md): Garments, variants, and supplier feeds. - [Proofs and approvals](https://docs.printools.io/guides/proofs-and-approvals.md): Getting artwork signed off before it goes to press. - [Purchase orders](https://docs.printools.io/guides/purchase-orders.md): Ordering stock and receiving it against a job. - [Invoicing](https://docs.printools.io/guides/invoicing.md): Billing the customer and getting it into your accounts. - [Introduction](https://docs.printools.io/api/introduction.md): The /v1 REST API a shop can hand to a third party. - [Authentication](https://docs.printools.io/api/authentication.md): Authenticate with a tenant API key or partner credentials. - [Scopes](https://docs.printools.io/api/scopes.md): Grant the least the integration needs. - [Responses and errors](https://docs.printools.io/api/responses.md): Two response shapes, and what each status code means. - [Rate limits](https://docs.printools.io/api/rate-limits.md): Read current limits and handle rate-limited requests. - [Pagination](https://docs.printools.io/api/pagination.md): Read lists with the pagination parameters defined by each endpoint. - [Writing safely](https://docs.printools.io/api/idempotency.md): Retry writes with idempotency keys and respect request limits. - [Account and reference](https://docs.printools.io/api/endpoints/account-and-reference.md): Who you are, and the lookup data every write depends on. - [Get current account](https://docs.printools.io/api/reference/get_v1_me.md): Any valid credential. No API scope is required. - [The lookup bundle every write endpoint depends on](https://docs.printools.io/api/reference/get_v1_reference_types.md): Any valid credential. No API scope is required. - [Built-in status vocabularies, including which purchase-order statuses are derived and therefore not settable](https://docs.printools.io/api/reference/get_v1_reference_statuses.md): Any valid credential. No API scope is required. - [Decoration methods, positions and their vocabularies](https://docs.printools.io/api/reference/get_v1_reference_decorations.md): Any valid credential. No API scope is required. - [The scope catalogue, served from its single source](https://docs.printools.io/api/reference/get_v1_reference_scopes.md): Any valid credential. No API scope is required. - [The webhook event catalogue](https://docs.printools.io/api/reference/get_v1_reference_events.md): Any valid credential. No API scope is required. - [Rate limits, batch ceilings and page size, from the one limits module](https://docs.printools.io/api/reference/get_v1_reference_limits.md): Any valid credential. No API scope is required. - [Quotes](https://docs.printools.io/api/endpoints/quotes.md): Quotes, their groups, lines and decorations. - [List quotes](https://docs.printools.io/api/reference/get_v1_quotes.md): Requires the scope quotes.read. - [Create a quote](https://docs.printools.io/api/reference/post_v1_quotes.md): Requires the scope quotes.write. - [Filter facets for the quote list](https://docs.printools.io/api/reference/get_v1_quotes_facets.md): Requires the scope quotes.read. - [One quote with its groups, lines and decorations](https://docs.printools.io/api/reference/get_v1_quotes_quoteId.md): Requires the scope quotes.read. - [Update a quote](https://docs.printools.io/api/reference/patch_v1_quotes_quoteId.md): Requires the scope quotes.write. - [Email a quote to the customer](https://docs.printools.io/api/reference/post_v1_quotes_quoteId_send.md): Requires the scope quotes.write. - [Convert a quote into a job](https://docs.printools.io/api/reference/post_v1_quotes_quoteId_convert_to_job.md): Requires ALL of the scopes quotes.write, jobs.write. - [Add a group to a quote](https://docs.printools.io/api/reference/post_v1_quotes_quoteId_groups.md): Requires the scope quotes.write. - [Update a quote group](https://docs.printools.io/api/reference/patch_v1_quote_groups_groupId.md): Requires the scope quotes.write. - [Delete a quote group](https://docs.printools.io/api/reference/delete_v1_quote_groups_groupId.md): Requires the scope quotes.write. - [Add a line to a quote group](https://docs.printools.io/api/reference/post_v1_quote_groups_groupId_lines.md): Requires the scope quotes.write. - [Update a quote line](https://docs.printools.io/api/reference/patch_v1_quote_lines_lineId.md): Requires the scope quotes.write. - [Delete a quote line](https://docs.printools.io/api/reference/delete_v1_quote_lines_lineId.md): Requires the scope quotes.write. - [Attach a decoration to a quote group](https://docs.printools.io/api/reference/post_v1_quote_groups_groupId_decorations.md): Requires the scope quotes.write. - [Delete every quote matching a target](https://docs.printools.io/api/reference/post_v1_quotes_bulk_delete.md): Requires the scope quotes.write. - [Duplicate every quote matching a target](https://docs.printools.io/api/reference/post_v1_quotes_bulk_duplicate.md): Requires the scope quotes.write. - [Set the status of every quote matching a target](https://docs.printools.io/api/reference/post_v1_quotes_bulk_status.md): Requires the scope quotes.write. - [Convert every quote matching a target into a job](https://docs.printools.io/api/reference/post_v1_quotes_bulk_convert_to_jobs.md): Requires ALL of the scopes quotes.write, jobs.write. - [A presigned link to the quote PDF. Expires in 900 seconds](https://docs.printools.io/api/reference/get_v1_quotes_quoteId_pdf.md): Requires ALL of the scopes documents.read, quotes.read. - [Every invoice raised against a quote](https://docs.printools.io/api/reference/get_v1_quotes_quoteId_invoices.md): Requires ALL of the scopes invoices.read, quotes.read. - [Generate an invoice from a quote](https://docs.printools.io/api/reference/post_v1_quotes_quoteId_invoice.md): Requires ALL of the scopes invoices.write, quotes.read. - [One quote and everything hanging off it, in one call](https://docs.printools.io/api/reference/get_v1_quotes_quoteId_data.md): Requires ALL of the scopes quotes.read, customers.read, garments.read, decorations.read. - [Delete a quote](https://docs.printools.io/api/reference/delete_v1_quotes_quoteId.md): Requires the scope quotes.write. - [Duplicate a quote](https://docs.printools.io/api/reference/post_v1_quotes_quoteId_duplicate.md): Requires the scope quotes.write. - [Update a quote-group decoration](https://docs.printools.io/api/reference/patch_v1_quote_group_decorations_decorationId.md): Requires the scope quotes.write. - [Remove a decoration from a quote group](https://docs.printools.io/api/reference/delete_v1_quote_group_decorations_decorationId.md): Requires the scope quotes.write. - [Jobs](https://docs.printools.io/api/endpoints/jobs.md): Production jobs, their structure and their activity trail. - [List jobs, newest first](https://docs.printools.io/api/reference/get_v1_jobs.md): Requires the scope jobs.read. - [Create a job](https://docs.printools.io/api/reference/post_v1_jobs.md): Requires the scope jobs.write. - [Filter facets for the job list](https://docs.printools.io/api/reference/get_v1_jobs_facets.md): Requires the scope jobs.read. - [One job with its groups, lines and decorations](https://docs.printools.io/api/reference/get_v1_jobs_jobId.md): Requires the scope jobs.read. - [Update a job](https://docs.printools.io/api/reference/patch_v1_jobs_jobId.md): Requires the scope jobs.write. - [Delete a job](https://docs.printools.io/api/reference/delete_v1_jobs_jobId.md): Requires the scope jobs.write. - [The job activity feed. Names the staff who acted](https://docs.printools.io/api/reference/get_v1_jobs_jobId_activity.md): Requires the scope jobs.read. - [Duplicate a job](https://docs.printools.io/api/reference/post_v1_jobs_jobId_duplicate.md): Requires the scope jobs.write. - [Re-sync a job from the quote it came from](https://docs.printools.io/api/reference/post_v1_jobs_jobId_sync_from_quote.md): Requires ALL of the scopes jobs.write, quotes.read. - [Add a group to a job](https://docs.printools.io/api/reference/post_v1_jobs_jobId_groups.md): Requires the scope jobs.write. - [Update a job group](https://docs.printools.io/api/reference/patch_v1_job_groups_groupId.md): Requires the scope jobs.write. - [Delete a job group](https://docs.printools.io/api/reference/delete_v1_job_groups_groupId.md): Requires the scope jobs.write. - [Add a line to a job group](https://docs.printools.io/api/reference/post_v1_job_groups_groupId_lines.md): Requires the scope jobs.write. - [Update a job line](https://docs.printools.io/api/reference/patch_v1_job_lines_lineId.md): Requires the scope jobs.write. - [Delete a job line](https://docs.printools.io/api/reference/delete_v1_job_lines_lineId.md): Requires the scope jobs.write. - [Attach a decoration to a job group](https://docs.printools.io/api/reference/post_v1_job_groups_groupId_decorations.md): Requires the scope jobs.write. - [Update a job-group decoration](https://docs.printools.io/api/reference/patch_v1_job_group_decorations_decorationId.md): Requires the scope jobs.write. - [Remove a decoration from a job group](https://docs.printools.io/api/reference/delete_v1_job_group_decorations_decorationId.md): Requires the scope jobs.write. - [Patch every job matching a target](https://docs.printools.io/api/reference/post_v1_jobs_bulk_update.md): Requires the scope jobs.write. - [Delete every job matching a target](https://docs.printools.io/api/reference/post_v1_jobs_bulk_delete.md): Requires the scope jobs.write. - [Duplicate every job matching a target](https://docs.printools.io/api/reference/post_v1_jobs_bulk_duplicate.md): Requires the scope jobs.write. - [Every purchase order raised for a job](https://docs.printools.io/api/reference/get_v1_jobs_jobId_purchase_orders.md): Requires ALL of the scopes purchaseorders.read, jobs.read. - [Raise purchase orders for a job, one per vendor](https://docs.printools.io/api/reference/post_v1_jobs_jobId_purchase_orders.md): Requires ALL of the scopes purchaseorders.write, jobs.read. - [Every proof on a job](https://docs.printools.io/api/reference/get_v1_jobs_jobId_proofs.md): Requires ALL of the scopes proofs.read, jobs.read. - [Every production task on a job](https://docs.printools.io/api/reference/get_v1_jobs_jobId_tasks.md): Requires ALL of the scopes tasks.read, jobs.read. - [One job and everything hanging off it, in one call](https://docs.printools.io/api/reference/get_v1_jobs_jobId_data.md): Requires ALL of the scopes jobs.read, customers.read, garments.read, decorations.read. - [Customers](https://docs.printools.io/api/endpoints/customers.md): Customers, their contacts and addresses. - [List customers](https://docs.printools.io/api/reference/get_v1_customers.md): Requires the scope customers.read. - [Create a customer](https://docs.printools.io/api/reference/post_v1_customers.md): Requires the scope customers.write. - [One customer with contacts and addresses](https://docs.printools.io/api/reference/get_v1_customers_customerId.md): Requires the scope customers.read. - [Update a customer](https://docs.printools.io/api/reference/patch_v1_customers_customerId.md): Requires the scope customers.write. - [Archive a customer](https://docs.printools.io/api/reference/post_v1_customers_customerId_archive.md): Requires the scope customers.write. - [Restore an archived customer](https://docs.printools.io/api/reference/post_v1_customers_customerId_unarchive.md): Requires the scope customers.write. - [Add a contact to a customer](https://docs.printools.io/api/reference/post_v1_customers_customerId_contacts.md): Requires the scope customers.write. - [Update a contact](https://docs.printools.io/api/reference/patch_v1_contacts_contactId.md): Requires the scope customers.write. - [Delete a contact](https://docs.printools.io/api/reference/delete_v1_contacts_contactId.md): Requires the scope customers.write. - [Add an address to a customer](https://docs.printools.io/api/reference/post_v1_customers_customerId_addresses.md): Requires the scope customers.write. - [Update an address](https://docs.printools.io/api/reference/patch_v1_addresses_addressId.md): Requires the scope customers.write. - [Delete an address](https://docs.printools.io/api/reference/delete_v1_addresses_addressId.md): Requires the scope customers.write. - [Create many customers in one call](https://docs.printools.io/api/reference/post_v1_customers_bulk_create.md): Requires the scope customers.write. - [Archive or restore every customer matching a target](https://docs.printools.io/api/reference/post_v1_customers_bulk_archive.md): Requires the scope customers.write. - [Set the tier of every customer matching a target](https://docs.printools.io/api/reference/post_v1_customers_bulk_tier.md): Requires the scope customers.write. - [One customer with their quotes and jobs, in one call](https://docs.printools.io/api/reference/get_v1_customers_customerId_data.md): Requires ALL of the scopes customers.read, quotes.read, jobs.read. - [Garments and catalogue](https://docs.printools.io/api/endpoints/garments.md): Styles, variants, assets, and the whole-catalogue route. - [List garments, the shop's own items and the supplier catalogue](https://docs.printools.io/api/reference/get_v1_garments.md): Requires the scope garments.read. - [Create a garment](https://docs.printools.io/api/reference/post_v1_garments.md): Requires the scope garments.write. - [Filter facets for the garment list](https://docs.printools.io/api/reference/get_v1_garments_facets.md): Requires the scope garments.read. - [Garment assets](https://docs.printools.io/api/reference/get_v1_garments_assets.md): Requires the scope garments.read. - [One garment](https://docs.printools.io/api/reference/get_v1_garments_garmentId.md): Requires the scope garments.read. - [Update a garment](https://docs.printools.io/api/reference/patch_v1_garments_garmentId.md): Requires the scope garments.write. - [Delete a garment](https://docs.printools.io/api/reference/delete_v1_garments_garmentId.md): Requires the scope garments.write. - [Every variant of one style code](https://docs.printools.io/api/reference/get_v1_garment_variants_styleCode.md): Requires the scope garments.read. - [Create a garment variant](https://docs.printools.io/api/reference/post_v1_garment_variants.md): Requires the scope garments.write. - [Update a garment variant](https://docs.printools.io/api/reference/patch_v1_garment_variants_id_variantId.md): Requires the scope garments.write. - [Delete a garment variant](https://docs.printools.io/api/reference/delete_v1_garment_variants_id_variantId.md): Requires the scope garments.write. - [Create a garment asset](https://docs.printools.io/api/reference/post_v1_garment_assets.md): Requires the scope garments.write. - [Update a garment asset](https://docs.printools.io/api/reference/patch_v1_garment_assets_assetId.md): Requires the scope garments.write. - [Delete a garment asset](https://docs.printools.io/api/reference/delete_v1_garment_assets_assetId.md): Requires the scope garments.write. - [Create many garments in one call](https://docs.printools.io/api/reference/post_v1_garments_bulk_create.md): Requires the scope garments.write. - [Upsert a catalogue of garments in one set-based call](https://docs.printools.io/api/reference/post_v1_garments_bulk_upsert.md): Requires the scope garments.write. - [Patch every garment matching a target](https://docs.printools.io/api/reference/post_v1_garments_bulk_update.md): Requires the scope garments.write. - [Delete every garment matching a target](https://docs.printools.io/api/reference/post_v1_garments_bulk_delete.md): Requires the scope garments.write. - [Create many garment variants in one call](https://docs.printools.io/api/reference/post_v1_garment_variants_bulk_create.md): Requires the scope garments.write. - [Upsert garment variants in one set-based call](https://docs.printools.io/api/reference/post_v1_garment_variants_bulk_upsert.md): Requires the scope garments.write. - [Set status and stock across an import batch](https://docs.printools.io/api/reference/post_v1_garments_bulk_status_and_stock.md): Requires the scope garments.write. - [The shop's whole catalogue in one call: their own items and the supplier catalogue, variants inline. Cursor-paged; ?source=manual|ascolour](https://docs.printools.io/api/reference/get_v1_catalogue.md): Requires ALL of the scopes garments.read, decorations.read. - [Decorations](https://docs.printools.io/api/endpoints/decorations.md): The print, embroidery and transfer methods you sell. - [List decorations](https://docs.printools.io/api/reference/get_v1_decorations.md): Requires the scope decorations.read. - [Create a decoration](https://docs.printools.io/api/reference/post_v1_decorations.md): Requires the scope decorations.write. - [Filter facets for the decoration list](https://docs.printools.io/api/reference/get_v1_decorations_facets.md): Requires the scope decorations.read. - [One decoration](https://docs.printools.io/api/reference/get_v1_decorations_decorationId.md): Requires the scope decorations.read. - [Update a decoration](https://docs.printools.io/api/reference/patch_v1_decorations_decorationId.md): Requires the scope decorations.write. - [Delete a decoration](https://docs.printools.io/api/reference/delete_v1_decorations_decorationId.md): Requires the scope decorations.write. - [Create many decorations in one call](https://docs.printools.io/api/reference/post_v1_decorations_bulk_create.md): Requires the scope decorations.write. - [Patch every decoration matching a target](https://docs.printools.io/api/reference/post_v1_decorations_bulk_update.md): Requires the scope decorations.write. - [Delete every decoration matching a target](https://docs.printools.io/api/reference/post_v1_decorations_bulk_delete.md): Requires the scope decorations.write. - [Pre-built items](https://docs.printools.io/api/endpoints/prebuilt-items.md): Saved garment-plus-decoration combinations. - [List pre-built items](https://docs.printools.io/api/reference/get_v1_prebuilt_items.md): Requires the scope prebuiltitems.read. - [Create a pre-built item (server-assigned id)](https://docs.printools.io/api/reference/post_v1_prebuilt_items.md): Requires the scope prebuiltitems.write. - [One pre-built item](https://docs.printools.io/api/reference/get_v1_prebuilt_items_itemId.md): Requires the scope prebuiltitems.read. - [Create or replace a pre-built item](https://docs.printools.io/api/reference/put_v1_prebuilt_items_itemId.md): Requires the scope prebuiltitems.write. - [Delete a pre-built item](https://docs.printools.io/api/reference/delete_v1_prebuilt_items_itemId.md): Requires the scope prebuiltitems.write. - [Delete every pre-built item matching a target](https://docs.printools.io/api/reference/post_v1_prebuilt_items_bulk_delete.md): Requires the scope prebuiltitems.write. - [Set the status of every pre-built item matching a target](https://docs.printools.io/api/reference/post_v1_prebuilt_items_bulk_status.md): Requires the scope prebuiltitems.write. - [Purchase orders](https://docs.printools.io/api/endpoints/purchase-orders.md): Raising POs, receiving stock, and derived statuses. - [List purchase orders](https://docs.printools.io/api/reference/get_v1_purchase_orders.md): Requires the scope purchaseorders.read. - [Create a purchase order](https://docs.printools.io/api/reference/post_v1_purchase_orders.md): Requires the scope purchaseorders.write. - [One purchase order with its lines](https://docs.printools.io/api/reference/get_v1_purchase_orders_purchaseOrderId.md): Requires the scope purchaseorders.read. - [Update a purchase order](https://docs.printools.io/api/reference/patch_v1_purchase_orders_purchaseOrderId.md): Requires the scope purchaseorders.write. - [Archive a purchase order](https://docs.printools.io/api/reference/post_v1_purchase_orders_purchaseOrderId_archive.md): Requires the scope purchaseorders.write. - [Restore an archived purchase order](https://docs.printools.io/api/reference/post_v1_purchase_orders_purchaseOrderId_unarchive.md): Requires the scope purchaseorders.write. - [Add a line to a purchase order](https://docs.printools.io/api/reference/post_v1_purchase_orders_purchaseOrderId_lines.md): Requires the scope purchaseorders.write. - [Update a purchase-order line](https://docs.printools.io/api/reference/patch_v1_purchase_order_lines_lineId.md): Requires the scope purchaseorders.write. - [Delete a purchase-order line](https://docs.printools.io/api/reference/delete_v1_purchase_order_lines_lineId.md): Requires the scope purchaseorders.write. - [Record a receipt against a purchase-order line](https://docs.printools.io/api/reference/post_v1_purchase_order_lines_lineId_receive.md): Requires the scope purchaseorders.write. - [Attach a vendor to a purchase order](https://docs.printools.io/api/reference/post_v1_purchase_orders_purchaseOrderId_vendors_vendorId.md): Requires ALL of the scopes purchaseorders.write, vendors.read. - [Detach a vendor from a purchase order](https://docs.printools.io/api/reference/delete_v1_purchase_orders_purchaseOrderId_vendors_vendorId.md): Requires ALL of the scopes purchaseorders.write, vendors.read. - [Receive every purchase-order line matching a target](https://docs.printools.io/api/reference/post_v1_purchase_orders_bulk_receive.md): Requires the scope purchaseorders.write. - [Set the status of every purchase order matching a target. Derived statuses are refused, see GET /v1/reference/statuses](https://docs.printools.io/api/reference/post_v1_purchase_orders_bulk_status.md): Requires the scope purchaseorders.write. - [Archive or restore every purchase order matching a target](https://docs.printools.io/api/reference/post_v1_purchase_orders_bulk_archive.md): Requires the scope purchaseorders.write. - [Vendors](https://docs.printools.io/api/endpoints/vendors.md): Suppliers you raise purchase orders on. - [Every purchase order raised on a vendor](https://docs.printools.io/api/reference/get_v1_vendors_vendorId_purchase_orders.md): Requires ALL of the scopes purchaseorders.read, vendors.read. - [List vendors](https://docs.printools.io/api/reference/get_v1_vendors.md): Requires the scope vendors.read. - [Create a vendor](https://docs.printools.io/api/reference/post_v1_vendors.md): Requires the scope vendors.write. - [One vendor with addresses and contacts](https://docs.printools.io/api/reference/get_v1_vendors_vendorId.md): Requires the scope vendors.read. - [Update a vendor](https://docs.printools.io/api/reference/patch_v1_vendors_vendorId.md): Requires the scope vendors.write. - [Archive a vendor](https://docs.printools.io/api/reference/post_v1_vendors_vendorId_archive.md): Requires the scope vendors.write. - [Restore an archived vendor](https://docs.printools.io/api/reference/post_v1_vendors_vendorId_unarchive.md): Requires the scope vendors.write. - [Add an address to a vendor](https://docs.printools.io/api/reference/post_v1_vendors_vendorId_addresses.md): Requires the scope vendors.write. - [Update a vendor address](https://docs.printools.io/api/reference/patch_v1_vendor_addresses_addressId.md): Requires the scope vendors.write. - [Delete a vendor address](https://docs.printools.io/api/reference/delete_v1_vendor_addresses_addressId.md): Requires the scope vendors.write. - [Add a contact to a vendor](https://docs.printools.io/api/reference/post_v1_vendors_vendorId_contacts.md): Requires the scope vendors.write. - [Update a vendor contact](https://docs.printools.io/api/reference/patch_v1_vendor_contacts_contactId.md): Requires the scope vendors.write. - [Delete a vendor contact](https://docs.printools.io/api/reference/delete_v1_vendor_contacts_contactId.md): Requires the scope vendors.write. - [Activate or deactivate every vendor matching a target](https://docs.printools.io/api/reference/post_v1_vendors_bulk_active.md): Requires the scope vendors.write. - [Proofs and mocks](https://docs.printools.io/api/endpoints/proofs.md): Artwork sent for approval, and the approval itself. - [List mocks, filtered by job, quote or quote group. Not paginated](https://docs.printools.io/api/reference/get_v1_mocks.md): Requires the scope proofs.read. - [Create a mock](https://docs.printools.io/api/reference/post_v1_mocks.md): Requires the scope proofs.write. - [One mock by id](https://docs.printools.io/api/reference/get_v1_mocks_mockId.md): Requires the scope proofs.read. - [Update a mock](https://docs.printools.io/api/reference/patch_v1_mocks_mockId.md): Requires the scope proofs.write. - [Delete a mock](https://docs.printools.io/api/reference/delete_v1_mocks_mockId.md): Requires the scope proofs.write. - [One proof with its full revision history](https://docs.printools.io/api/reference/get_v1_proofs_proofId_history.md): Requires the scope proofs.read. - [Create a proof](https://docs.printools.io/api/reference/post_v1_proofs.md): Requires the scope proofs.write. - [Update a proof](https://docs.printools.io/api/reference/patch_v1_proofs_proofId.md): Requires the scope proofs.write. - [Delete a proof](https://docs.printools.io/api/reference/delete_v1_proofs_proofId.md): Requires the scope proofs.write. - [Email a proof to the customer](https://docs.printools.io/api/reference/post_v1_proofs_proofId_send.md): Requires the scope proofs.write. - [Email several proofs in one message](https://docs.printools.io/api/reference/post_v1_proofs_send.md): Requires the scope proofs.write. - [Open a new revision of a proof](https://docs.printools.io/api/reference/post_v1_proofs_proofId_revise.md): Requires the scope proofs.write. - [Set a proof status directly, including approved](https://docs.printools.io/api/reference/post_v1_proofs_proofId_status.md): Requires the scope proofs.approve. - [Record the client’s decision on a proof](https://docs.printools.io/api/reference/post_v1_proofs_proofId_client_decision.md): Requires the scope proofs.approve. - [Confirm the size split on a proof item](https://docs.printools.io/api/reference/post_v1_proof_item_links_proofItemLinkId_size_split.md): Requires the scope proofs.approve. - [Tasks](https://docs.printools.io/api/endpoints/tasks.md): Production tasks, their comments, checklists and attachments. - [Production tasks assigned to one person](https://docs.printools.io/api/reference/get_v1_tasks_by_assignee.md): Requires the scope tasks.read. - [A task’s comments, checklist and attachments](https://docs.printools.io/api/reference/get_v1_tasks_taskId_extras.md): Requires the scope tasks.read. - [Create a production task](https://docs.printools.io/api/reference/post_v1_tasks.md): Requires the scope tasks.write. - [Update a production task](https://docs.printools.io/api/reference/patch_v1_tasks_taskId.md): Requires the scope tasks.write. - [Delete a production task](https://docs.printools.io/api/reference/delete_v1_tasks_taskId.md): Requires the scope tasks.write. - [Patch every production task matching a target](https://docs.printools.io/api/reference/post_v1_tasks_bulk_update.md): Requires the scope tasks.write. - [Delete every production task matching a target](https://docs.printools.io/api/reference/post_v1_tasks_bulk_delete.md): Requires the scope tasks.write. - [Comment on a production task](https://docs.printools.io/api/reference/post_v1_tasks_taskId_comments.md): Requires the scope tasks.write. - [Edit a task comment](https://docs.printools.io/api/reference/patch_v1_task_comments_commentId.md): Requires the scope tasks.write. - [Delete a task comment](https://docs.printools.io/api/reference/delete_v1_task_comments_commentId.md): Requires the scope tasks.write. - [Add a checklist item to a task](https://docs.printools.io/api/reference/post_v1_tasks_taskId_checklist.md): Requires the scope tasks.write. - [Update a checklist item](https://docs.printools.io/api/reference/patch_v1_task_checklist_items_itemId.md): Requires the scope tasks.write. - [Delete a checklist item](https://docs.printools.io/api/reference/delete_v1_task_checklist_items_itemId.md): Requires the scope tasks.write. - [Attach a file to a task](https://docs.printools.io/api/reference/post_v1_tasks_taskId_attachments.md): Requires the scope tasks.write. - [Remove a task attachment](https://docs.printools.io/api/reference/delete_v1_task_attachments_attachmentId.md): Requires the scope tasks.write. - [Invoices](https://docs.printools.io/api/endpoints/invoices.md): Raising invoices, settling them, and pushing to accounting. - [A presigned link to the invoice PDF. Expires in 900 seconds](https://docs.printools.io/api/reference/get_v1_invoices_invoiceId_pdf.md): Requires ALL of the scopes documents.read, invoices.read. - [One invoice](https://docs.printools.io/api/reference/get_v1_invoices_invoiceId.md): Requires the scope invoices.read. - [Email an invoice to the customer](https://docs.printools.io/api/reference/post_v1_invoices_invoiceId_send.md): Requires the scope invoices.write. - [Record an invoice as paid](https://docs.printools.io/api/reference/post_v1_invoices_invoiceId_mark_paid.md): Requires the scope invoices.settle. - [Undo a paid marking](https://docs.printools.io/api/reference/post_v1_invoices_invoiceId_unmark_paid.md): Requires the scope invoices.settle. - [Void an invoice](https://docs.printools.io/api/reference/post_v1_invoices_invoiceId_void.md): Requires the scope invoices.settle. - [Refund an invoice](https://docs.printools.io/api/reference/post_v1_invoices_invoiceId_refund.md): Requires the scope invoices.settle. - [Dismiss a customer’s payment claim](https://docs.printools.io/api/reference/post_v1_invoices_invoiceId_dismiss_claim.md): Requires the scope invoices.settle. - [Push an invoice into the shop’s Xero connection](https://docs.printools.io/api/reference/post_v1_invoices_invoiceId_push_xero.md): Requires the scope invoices.sync. - [Push an invoice into the shop’s QuickBooks connection](https://docs.printools.io/api/reference/post_v1_invoices_invoiceId_push_quickbooks.md): Requires the scope invoices.sync. - [Documents and media](https://docs.printools.io/api/endpoints/documents-and-media.md): PDF links and upload URLs. Both expire in 900 seconds. - [Mint a presigned PUT for an upload. Expires in 900 seconds](https://docs.printools.io/api/reference/post_v1_media_upload_url.md): Requires the scope media.write. - [Custom fields and statuses](https://docs.printools.io/api/endpoints/custom-fields-and-statuses.md): The definitions behind a shop's own fields and workflow states. - [Create a custom field definition](https://docs.printools.io/api/reference/post_v1_custom_fields.md): Requires the scope customfields.write. - [One custom field definition](https://docs.printools.io/api/reference/get_v1_custom_fields_fieldId.md): Requires the scope customfields.read. - [Update a custom field definition](https://docs.printools.io/api/reference/patch_v1_custom_fields_fieldId.md): Requires the scope customfields.write. - [Delete a custom field definition](https://docs.printools.io/api/reference/delete_v1_custom_fields_fieldId.md): Requires the scope customfields.write. - [List custom status definitions](https://docs.printools.io/api/reference/get_v1_custom_statuses.md): Requires the scope customstatuses.read. - [Create a custom status definition](https://docs.printools.io/api/reference/post_v1_custom_statuses.md): Requires the scope customstatuses.write. - [One custom status definition](https://docs.printools.io/api/reference/get_v1_custom_statuses_statusId.md): Requires the scope customstatuses.read. - [Update a custom status definition](https://docs.printools.io/api/reference/patch_v1_custom_statuses_statusId.md): Requires the scope customstatuses.write. - [Delete a custom status definition. Refuses with 409 when an automation rule targets it](https://docs.printools.io/api/reference/delete_v1_custom_statuses_statusId.md): Requires the scope customstatuses.write. - [List custom field definitions](https://docs.printools.io/api/reference/get_v1_custom_fields.md): Requires the scope customfields.read. - [Webhooks](https://docs.printools.io/api/endpoints/webhooks.md): Subscribe to events, verify them, and replay what you missed. - [List this credential’s webhook subscriptions](https://docs.printools.io/api/reference/get_v1_webhooks.md): Requires the scope webhooks.read. - [Subscribe to an event. Returns the signing secret ONCE. Re-subscribing the same event and URL is idempotent](https://docs.printools.io/api/reference/post_v1_webhooks.md): Requires the scope webhooks.write. - [One webhook subscription](https://docs.printools.io/api/reference/get_v1_webhooks_webhookId.md): Requires the scope webhooks.read. - [Unsubscribe. Idempotent, so deleting an unknown subscription still succeeds](https://docs.printools.io/api/reference/delete_v1_webhooks_webhookId.md): Requires the scope webhooks.write. - [Rotate the signing secret. The old one keeps verifying for 48 hours so you can deploy without dropping payloads](https://docs.printools.io/api/reference/post_v1_webhooks_webhookId_rotate_secret.md): Requires the scope webhooks.write. - [Delivery history for a subscription, with a failure reason you can act on. Never a response body](https://docs.printools.io/api/reference/get_v1_webhooks_webhookId_deliveries.md): Requires the scope webhooks.read. - [Replay a failed delivery. Without this, an hour of downtime means those events are gone for good](https://docs.printools.io/api/reference/post_v1_webhooks_webhookId_deliveries_deliveryId_retry.md): Requires the scope webhooks.write. - [Overview](https://docs.printools.io/integrations/overview.md): What you can connect PRINTOOLS to, and how connecting works. - [Xero](https://docs.printools.io/integrations/apps/xero.md): Sync invoices and payment status straight to your accounts. - [QuickBooks](https://docs.printools.io/integrations/apps/quickbooks.md): Push invoices and track payments in QuickBooks Online. - [Zapier](https://docs.printools.io/integrations/apps/zapier.md): Automate workflows across thousands of apps when jobs change. - [Make](https://docs.printools.io/integrations/apps/make.md): Build visual automations that react to your quotes and jobs. - [Slack](https://docs.printools.io/integrations/apps/slack.md): Post job and quote alerts to a channel your team watches. - [ClickUp](https://docs.printools.io/integrations/apps/clickup.md): Create ClickUp tasks from jobs and mirror their status. - [AS Colour](https://docs.printools.io/integrations/suppliers/as-colour.md): Pull live wholesale pricing and stock into your catalogue. - [Gildan](https://docs.printools.io/integrations/suppliers/gildan.md): Pull live wholesale pricing and stock into your catalogue. - [American Apparel](https://docs.printools.io/integrations/suppliers/american-apparel.md): Import the catalogue with live pricing and stock levels. - [Ramo](https://docs.printools.io/integrations/suppliers/ramo.md): Live wholesale pricing and stock, direct from Ramo. ## OpenAPI Specs - [openapi](https://d1zl72794e73i2.cloudfront.net/releases/2026-09-08.api-blackbox/openapi.json)