Paperless Parts Contacts API

Paperless Parts includes Customer Relationship Management (CRM) functionality to make it easy to send quotes to new and existing customers, while keeping data consistent with third-party CRM and ERP systems. Typical use cases for these endpoints are to bulk import customers from an existing customer database and to synchronize new customers or changes from another system. An account represents a single company or account to which you would send quotes. An account has zero or more Contacts, each of which represents a person at that company and is identified uniquely by their email address. An account also has facilities and billing addresses. Facilities represent destinations to which orders can be shipped and BillingAddresses represent the bill to address for and order.

Business capability
Customer Data Management BC-420.10

Operations 26

GET /contacts/public List contacts #
POST /contacts/public Create new contact #
GET /contacts/public/{contactId} Get details about a Contact #
PATCH /contacts/public/{contactId} Update a Contact #
DELETE /contacts/public/{contactId} Delete contact #
GET /accounts/public List accounts #
POST /accounts/public Create new Account #
GET /accounts/public/{accountId} Get details about an Account #
PATCH /accounts/public/{accountId} Update an Account #
DELETE /accounts/public/{accountId} Delete account #
GET /accounts/public/{accountId}/billing_addresses List account billing addresses #
POST /accounts/public/{accountId}/billing_addresses Create a new billing address for an account #
GET /accounts/public/{accountId}/facilities List account facilites #
POST /accounts/public/{accountId}/facilities Create a new facility for an account #
GET /billing_addresses/public/{billingAddressId} Get Billing Address #
PATCH /billing_addresses/public/{billingAddressId} Update a Billing Address #
GET /facilities/public/{facilityId} Get A Facility #
PATCH /facilities/public/{facilityId} Update a Facility #
GET /customers/public/payment_terms Returns a list of payment terms #
POST /customers/public/payment_terms Create payment terms #
GET /customers/public/payment_terms/{paymentTermsId} Get details about a payment terms #
PATCH /customers/public/payment_terms/{paymentTermsId} Update an Payment terms #
DELETE /customers/public/payment_terms/{paymentTermsId} Delete payment terms #
GET /users/public Returns a list of users for the user group #
GET /users/public/{userUuid} Get details about user #
PATCH /users/public/{userUuid} Update a user #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/paperless-parts-contacts-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

paperless-parts-contacts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Paperless Parts API v2 Contacts API
  description: The Paperless Parts API provides access to your data, enabling developers to easily integrate Paperless Parts with third-party systems, such as Customer Relationship Management (CRM) and Enterprise Resource Planning (ERP) tools.
  version: '2.0'
  termsOfService: https://www.paperlessparts.com/web-service-agreement/
  contact:
    name: Paperless Parts
    url: https://www.paperlessparts.com
    email: support@paperlessparts.com
servers:
- url: '{url}/{version}'
  variables:
    url:
      default: https://api.paperlessparts.com
    version:
      default: v2
security:
- app_id: []
tags:
- name: Contacts
  description: Paperless Parts includes Customer Relationship Management (CRM) functionality to make it easy to send quotes to new and existing customers, while keeping data consistent with third-party CRM and ERP systems.
paths:
  /contacts/public:
    get:
      summary: List contacts
      description: Returns a list of contacts. The contacts are returned 20 results at a time and can be iterated over by using the page parameter.
      operationId: ListContacts
      parameters:
      - in: query
        name: search
        schema:
          type: string
        required: false
        description: 'Value used to search against the following fields: email, first name, last name, notes, phone, and account_id. Comparisons are not case sensitive and will match when the field value includes the search value as a substring.'
      - in: query
        name: page
        schema:
          type: string
        required: false
        description: The page of results to return.
      - in: query
        name: account_id
        schema:
          type: integer
        required: false
        description: The id of the account who's contacts to return. Must be an exact match.
        example: 17
      - in: query
        name: metadata
        schema:
          type: string
        required: false
        description: 'Metadata is a dictionary-like object that allows developers to add arbitrary key/value pairs to an object in Paperless Parts. A classic use case for metadata is storing the ID of the object in an external system. To filter on metadata, supply a query parameter named with the syntax: metadata[metadata_key]. For example, if you wanted to filter on a metadata key/value pair of crm_id/ABC123, you would supply a query parameter called metadata[crm_id] and a value of ABC123.'
        example: ABC123
      tags:
      - Contacts
      responses:
        200:
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    description: The total number of records matching the supplied query parameters
                  next:
                    type:
                    - string
                    - 'null'
                    description: The URL of the next page of results. Null if this is the last page
                  previous:
                    type:
                    - string
                    - 'null'
                    description: The URL of the previous page of results. Null if this is the first page
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        account_id:
                          type:
                          - integer
                          - 'null'
                          example: 17
                          description: the ID of the associated Account
                        created:
                          type: string
                          example: '2020-08-25T18:00:53+00:00'
                        email:
                          type: string
                          example: careers@paperlessparts.com
                          description: email address (must be non-null, unique across all Contacts, and a valid email format)
                        first_name:
                          type: string
                          example: Gordon
                          description: Contact first name (must be non-null)
                        id:
                          type: integer
                          example: 137
                        last_name:
                          type: string
                          example: Moore
                          description: Contact last name (must be non-null)
                        phone:
                          type:
                          - string
                          - 'null'
                          example: '6176354500'
                          description: Contact phone number
                        phone_ext:
                          type:
                          - string
                          - 'null'
                          example: null
                          description: Contact phone number extension
        404:
          description: Not found response
          content:
            text/plain:
              schema:
                title: Contacts not found
                type: string
                example: 'Error: Not Found'
    post:
      summary: Create new contact
      description: Creates a new contact.
      operationId: CreateContact
      tags:
      - Contacts
      responses:
        201:
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contact'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                account_id:
                  type:
                  - integer
                  - 'null'
                  description: the ID of the associated Account
                  example: 137
                address:
                  type:
                  - object
                  - 'null'
                  description: the contact's address
                  properties:
                    address1:
                      type: string
                      description: The street address
                      example: 137 Portland St.
                    address2:
                      type:
                      - string
                      - 'null'
                      description: Unit
                      example: Unit 1
                    city:
                      type: string
                      description: The city of the address
                      example: Boston
                    country:
                      type: string
                      description: The three character country abbreviation
                      example: USA
                    postal_code:
                      type: string
                      description: The postal code for the address
                      example: '02114'
                    state:
                      type: string
                      description: The two character state abbreviation
                      example: MA
                email:
                  type: string
                  description: email address (must be non-null, unique across all Contacts, and a valid email format)
                  example: careers@paperlessparts.com
                first_name:
                  type: string
                  description: Contact first name (must be non-null)
                  example: Gordon
                last_name:
                  type: string
                  description: Contact last name (must be non-null)
                  example: Moore
                notes:
                  type:
                  - string
                  - 'null'
                  description: Contact notes
                phone:
                  type:
                  - string
                  - 'null'
                  example: '6176354500'
                  description: Customer phone number
                phone_ext:
                  type:
                  - string
                  - 'null'
                  example: null
                  description: Customer phone number extension
                salesperson:
                  type:
                  - object
                  - 'null'
                  description: the contacts salesperson
                  properties:
                    email:
                      type: string
                      description: The salespersons email address. Must correspond to an active team member in your Paperless Parts account.
                      example: careers@paperlessparts.com
  /contacts/public/{contactId}:
    get:
      summary: Get details about a Contact
      description: Get all Contact attributes
      operationId: ContactDetails
      parameters:
      - $ref: '#/components/parameters/contactId'
      tags:
      - Contacts
      responses:
        200:
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contact'
    patch:
      summary: Update a Contact
      description: Partially update Contact attributes (not including associated entities)
      operationId: UpdateCustomer
      parameters:
      - $ref: '#/components/parameters/contactId'
      tags:
      - Contacts
      responses:
        200:
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contact'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                account_id:
                  type:
                  - integer
                  - 'null'
                  description: the ID of the associated Account
                  example: 137
                address:
                  type:
                  - object
                  - 'null'
                  description: The contact's address. If an address exists on a customer then individual fields can be patched, otherwise all fields are required
                  properties:
                    address1:
                      type: string
                      description: The street address
                      example: 137 Portland St.
                    address2:
                      type:
                      - string
                      - 'null'
                      description: Unit
                      example: Unit 1
                    city:
                      type: string
                      description: The city of the address
                      example: Boston
                    country:
                      type: string
                      description: The three character country abbreviation
                      example: USA
                    postal_code:
                      type: string
                      description: The postal code for the address
                      example: '02114'
                    state:
                      type: string
                      description: The two character state abbreviation
                      example: MA
                email:
                  type: string
                  description: email address (must be non-null, unique across all Contacts, and a valid email format)
                  example: careers@paperlessparts.com
                first_name:
                  type: string
                  description: Contact first name (must be non-null)
                  example: Gordon
                last_name:
                  type: string
                  description: Contact last name (must be non-null)
                  example: Moore
                notes:
                  type:
                  - string
                  - 'null'
                  description: Contact notes
                phone:
                  type:
                  - string
                  - 'null'
                  example: '6176354500'
                  description: Customer phone number
                phone_ext:
                  type:
                  - string
                  - 'null'
                  example: null
                  description: Customer phone number extension
                salesperson:
                  type:
                  - object
                  - 'null'
                  description: the contacts salesperson
                  properties:
                    email:
                      type: string
                      description: The salespersons email address. Must correspond to an active team member in your Paperless Parts account.
                      example: careers@paperlessparts.com
            example:
              phone: '6176354500'
    delete:
      summary: Delete contact
      description: Delete a contact
      operationId: DeleteContact
      parameters:
      - $ref: '#/components/parameters/contactId'
      tags:
      - Contacts
      responses:
        204:
          description: Successful Response
        404:
          description: Not found response
          content:
            text/plain:
              schema:
                title: Contact not found
                type: string
                example: 'Error: Not Found'
  /accounts/public:
    get:
      summary: List accounts
      description: Returns a list of accounts. The accounts are returned 20 results at a time and can be iterated over by using the page parameter.
      operationId: ListAccounts
      parameters:
      - in: query
        name: search
        schema:
          type: string
        required: false
        description: 'Value used to search against the following fields: account name, erp code, notes, and id. Comparisons are not case sensitive and will match when the field value includes the search value as a substring.'
      - in: query
        name: page
        schema:
          type: string
        required: false
        description: The page of results to return.
      - in: query
        name: erp_code
        schema:
          type: string
        required: false
        description: The erp code of the accounts to return. Must be an exact match.
        example: PPI
      - in: query
        name: null_erp_code
        schema:
          type: boolean
        required: false
        description: Filters for accounts whose erp code is either null or an empty string.
        example: true
      - in: query
        name: metadata
        schema:
          type: string
        required: false
        description: 'Metadata is a dictionary-like object that allows developers to add arbitrary key/value pairs to an object in Paperless Parts. A classic use case for metadata is storing the ID of the object in an external system. To filter on metadata, supply a query parameter named with the syntax: metadata[metadata_key]. For example, if you wanted to filter on a metadata key/value pair of crm_id/ABC123, you would supply a query parameter called metadata[crm_id] and a value of ABC123.'
        example: ABC123
      tags:
      - Contacts
      responses:
        200:
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    description: The total number of records matching the supplied query parameters
                  next:
                    type:
                    - string
                    - 'null'
                    description: The URL of the next page of results. Null if this is the last page
                  previous:
                    type:
                    - string
                    - 'null'
                    description: The URL of the previous page of results. Null if this is the first page
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          example: Paperless Parts, Inc.
                          description: The name of the account
                        erp_code:
                          type: string
                          example: PPI
                          description: The ERP code of the account
                        id:
                          type: integer
                          example: 17
                          description: the ID of the account
                        phone:
                          type: string
                          example: '6176354500'
                          description: Account phone number
                        phone_ext:
                          type: string
                          example: null
                          description: Account phone number extension
                        type:
                          type: string
                          example: customer
                          description: Account type, either customer or vendor
        404:
          description: Not found response
          content:
            text/plain:
              schema:
                title: Accounts not found
                type: string
                example: 'Error: Not Found'
    post:
      summary: Create new Account
      description: Creates a new account.
      operationId: CreateAccoumt
      tags:
      - Contacts
      responses:
        201:
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: (Required) Account Name (must be non-null and non-blank)
                  example: Paperless Parts, Inc.
                credit_cards_enabled:
                  type: boolean
                  example: true
                  description: When `true` any contact associated with this account will be allowed to check out with a credit card.
                credit_line:
                  type:
                  - number
                  - 'null'
                  description: An account's credit line
                  example: 10000.0
                erp_code:
                  type:
                  - string
                  - 'null'
                  description: Erp code for the account
                  example: PPI
                notes:
                  type:
                  - string
                  - 'null'
                  description: Account notes
                payment_terms:
                  type:
                  - string
                  - 'null'
                  description: Payment terms; required if `payment_terms_period` are included
                  example: Net 30
                payment_terms_period:
                  type:
                  - string
                  - 'null'
                  description: Payment terms period in days; required if `payment_terms` are included, but can be `null`
                  example: 30
                phone:
                  type:
                  - string
                  - 'null'
                  example: '6176354500'
                  description: Account phone number
                phone_ext:
                  type:
                  - string
                  - 'null'
                  example: null
                  description: Account phone number extension
                purchase_orders_enabled:
                  type: boolean
                  example: true
                  description: When `true` any contact associated with this account will be allowed to check out with a purchase order.
                salesperson:
                  type:
                  - object
                  - 'null'
                  description: the accounts salesperson
                  properties:
                    email:
                      type: string
                      description: The salespersons email address. Must correspond to an active team member in your Paperless Parts account.
                      example: careers@paperlessparts.com
                sold_to_address:
                  type:
                  - object
                  - 'null'
                  description: The address for the account's headquarters.
                  properties:
                    address1:
                      type: string
                      description: The street address
                      example: 137 Portland St.
                    address2:
                      type:
                      - string
                      - 'null'
                      description: Unit
                      example: Unit 1
                    city:
                      type: string
                      description: The city of the address
                      example: Boston
                    country:
                      type: string
                      description: The three character country abbreviation
                      example: USA
                    postal_code:
                      type: string
                      description: The postal code for the address
                      example: '02114'
                    state:
                      type: string
                      description: The two character state abbreviation
                      example: MA
                    erp_code:
                      type: string
                      maxLength: 50
                      description: The unique identifier for this address record in the ERP
                      example: B1234
                tax_exempt:
                  type: boolean
                  example: true
                  description: When `true`, sales tax will not be added to a quote
                tax_rate:
                  type:
                  - number
                  - 'null'
                  example: 6.25
                  description: Sales tax rate for this Account
                type:
                  type: string
                  example: customer
                  description: Type of this Account, either customer or vendor
                url:
                  type:
                  - string
                  - 'null'
                  example: https://paperlessparts.com
            example:
              credit_cards_enabled: true
              credit_line: 100000
              erp_code: PPI
              purchase_orders_enabled: true
              name: Paperless Parts, Inc.
              notes: This is a test account
              tax_exempt: true
              tax_rate: 6.25
              phone: '6175555555'
              url: www.paperlessparts.com
              type: customer
  /accounts/public/{accountId}:
    get:
      summary: Get details about an Account
      description: Get all Account attributes, including a list of billing addresses.
      operationId: AccountDetails
      parameters:
      - $ref: '#/components/parameters/accountId'
      tags:
      - Contacts
      responses:
        200:
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
        404:
          description: Not found response
          content:
            text/plain:
              schema:
                title: Account not found
                type: string
                example: 'Error: Not Found'
    patch:
      summary: Update an Account
      description: Partially update Account attributes (not including associated entities)
      operationId: UpdateCompany
      parameters:
      - $ref: '#/components/parameters/accountId'
      tags:
      - Contacts
      responses:
        200:
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: (Required) Account Name (must be non-null and non-blank)
                  example: Paperless Parts, Inc.
                credit_cards_enabled:
                  type: boolean
                  example: true
                  description: When `true` any contact associated with this account will be allowed to check out with a credit card.
                credit_line:
                  type:
                  - number
                  - 'null'
                  description: An account's credit line
                  example: 10000.0
                erp_code:
                  type:
                  - string
                  - 'null'
                  description: Erp code for the account
                  example: PPI
                notes:
                  type:
                  - string
                  - 'null'
                  description: Account notes
                payment_terms:
                  type:
                  - string
                  - 'null'
                  description: Payment terms; required if `payment_terms_period` are included
                  example: Net 30
                payment_terms_period:
                  type:
                  - string
                  - 'null'
                  description: Payment terms period in days; required if `payment_terms` are included, but can be `null`
                  example: 30
                phone:
                  type:
                  - string
                  - 'null'
                  example: '6176354500'
                  description: Account phone number
                phone_ext:
                  type:
                  - string
                  - 'null'
                  example: null
                  description: Account phone number extension
                purchase_orders_enabled:
                  type: boolean
                  example: true
                  description: When `true` any contact associated with this account will be allowed to check out with a purchase order.
                salesperson:
                  type:
                  - object
                  - 'null'
                  description: the accounts salesperson
                  properties:
                    email:
                      type: string
                      description: The salespersons email address. Must correspond to an active team member in your Paperless Parts account.
                      example: careers@paperlessparts.com
                sold_to_address:
                  type:
                  - object
                  - 'null'
                  description: The address for the account's headquarters. If a sold_to_address is present on the account then individual fields can be patched otherwise all fields are required.
                  properties:
                    address1:
                      type: string
                      description: The street address
                      example: 137 Portland St.
                    address2:
                      type:
                      - string
                      - 'null'
                      description: Unit
                      example: Unit 1
                    city:
                      type: string
                      description: The city of the address
                      example: Boston
                    country:
                      type: string
                      description: The three character country abbreviation
                      example: USA
                    postal_code:
                      type: string
                      description: The postal code for the address
                      example: '02114'
                    state:
                      type: string
                      description: The two character state abbreviation
                      example: MA
                    erp_code:
                      type: string
                      maxLength: 50
                      description: The unique identifier for this address record in the ERP
                      example: B1234
                tax_exempt:
                  type: boolean
                  example: true
                  description: When `true`, sales tax will not be added to a quote
                tax_rate:
                  type:
                  - number
                  - 'null'
                  example: 6.25
                  description: Sales tax rate for this Account
                type:
                  type: string
                  example: customer
                  description: Type of this Account, either customer or vendor
                url:
                  type:
                  - string
                  - 'null'
                  example: https://paperlessparts.comA
            example:
              erp_code: PPI
              name: Paperless Parts, Inc.
              url: www.paperlessparts.com
    delete:
      summary: Delete account
      description: Delete an account
      operationId: DeleteAccount
      parameters:
      - $ref: '#/components/parameters/accountId'
      tags:
      - Contacts
      responses:
        204:
          description: Successful Response
        404:
          description: Not found response
          content:
            text/plain:
              schema:
                title: Account not found
                type: string
                example: 'Error: Not Found'
  /accounts/public/{accountId}/billing_addresses:
    get:
      summary: List account billing addresses
      description: List all billing addresses associated with an account
      operationId: ListBillingAddresses
      parameters:
      - $ref: '#/components/parameters/accountId'
      tags:
      - Contacts
      responses:
        200:
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Address'
        404:
          description: Not found response
          content:
            text/plain:
              schema:
                title: Account not found
                type: string
                example: 'Error: Not Found'
    post:
      summary: Create a new billing address for an account
      operationId: CreateBillingAddress
      parameters:
      - $ref: '#/components/parameters/accountId'
      tags:
      - Contacts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Address'
      responses:
        201:
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddressInfo'
  /accounts/public/{accountId}/facilities:
    get:
      summary: List account facilites
      description: List all facilities associated with an account
      operationId: ListFacilities
      parameters:
      - $ref: '#/components/parameters/accountId'
      tags:
      - Contacts
      responses:
        200:
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Facility'
        404:
          description: Not found response
          content:
            text/plain:
              schema:
                title: Account not found
                type: string
                example: 'Error: Not Found'
    post:
      summary: Create a new facility for an account
      operationId: CreateFacility
      parameters:
      - $ref: '#/components/parameters/accountId'
      tags:
      - Contacts
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type:
                  - string
                  - 'null'
                  descrip

# --- truncated at 32 KB (56 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/paperless-parts/refs/heads/main/openapi/paperless-parts-contacts-api-openapi.yml