• Virtual Marketer CRM logo
    Virtual Marketer CRMDocumentation
  • Introduction
Getting Started
  • Quickstart
  • Core Concepts
Connect your AI
  • Custom connector
  • CLI & editors
  • Rate limits
Integrations
  • MCP
  • Webhooks
  • Website leads
  • OpenAPI 3.1.0
  • N8N
  • WhatsApp API
App guide
  • Dashboard
  • Inbox
  • Records
  • Profile
  • Company
  • Lead sending
  • API Keys
  • Filter Syntax
Licensing & security
  • Architecture & Security
  • Go back
  1. Introduction
  2. OpenAPI 3.1.0
OverviewAccept a relation requestPOSTAdd a send-as address to a connected accountPOSTAdd an organization's unbilled time to a draft documentPOSTArchive or restore a projectPOSTAttach a file to a projectPOSTAttach a file to an organizationPOSTBrowse a Sales Navigator listPOSTCalendar ChangedWEBHOOKCalendar Event ChangedWEBHOOKCancel a relation requestPOSTChat DeletedWEBHOOKChat UpdatedWEBHOOKConnect a mailbox over IMAP and SMTPPOSTContact CreatedWEBHOOKContact DeletedWEBHOOKContact UpdatedWEBHOOKConvert an offer to an order or invoicePOSTCreate a contactPOSTCreate a dealPOSTCreate a servicePOSTCreate a taskPOSTCreate a webhook subscriptionPOSTCreate an organizationPOSTCreate many contactsPOSTCreate many dealsPOSTCreate many organizationsPOSTCreate many servicesPOSTCreate many tasksPOSTCreate or update a billing documentPUTCreate or update a projectPUTCreate or update a recurring invoice seriesPOSTCreate or update a signaturePOSTCreate or update a teamPOSTCreate or update a time entryPUTDeal CreatedWEBHOOKDeal DeletedWEBHOOKDeal UpdatedWEBHOOKDelete a contactDELETEDelete a dealDELETEDelete a draft billing documentDELETEDelete a projectDELETEDelete a project attachmentDELETEDelete a project commentDELETEDelete a recurring invoice seriesDELETEDelete a serviceDELETEDelete a taskDELETEDelete a teamDELETEDelete a time entryDELETEDelete a webhook subscriptionDELETEDelete an attachmentDELETEDelete an organizationDELETEDelete many contactsDELETEDelete many dealsDELETEDelete many organizationsDELETEDelete many servicesDELETEDelete many tasksDELETEDelete one of the caller's own signaturesDELETEDiscard a message draftDELETEEdit a project commentPATCHEmail DeletedWEBHOOKEmail ReceivedWEBHOOKExport bookings as a DATEV BuchungsstapelGETGet a calendar by IDGETGet a calendar event by IDGETGet a contact by IDGETGet a deal by IDGETGet a messaging thread by IDGETGet a service by IDGETGet a single billing documentGETGet a single projectGETGet a single teamGETGet a single time entryGETGet a social profilePOSTGet a task by IDGETGet a webhook subscriptionGETGet activitiesPOSTGet an organization by IDGETGet calendar eventsPOSTGet calendarsPOSTGet contactsPOSTGet contacts configurationGETGet dealsPOSTGet deals configurationGETGet messaging threadsPOSTGet organizationsPOSTGet organizations configurationGETGet own user profileGETGet servicesPOSTGet services configurationGETGet tasksPOSTGet tasks configurationGETGet the caller's running timerGETGet the e-invoice XML of an invoiceGETGet the monthly revenue forecastGETGet the organization's billing profileGETGet usersPOSTInfer a likely email address from the pattern a domain already usesPOSTList a project's attachmentsGETList a project's commentsGETList an organization's attachmentsGETList offers, orders, invoices and credit notesGETList or fetch social postsPOSTList own connected accountsGETList post comments or reactionsPOSTList projectsGETList received relation requestsPOSTList recurring invoice seriesGETList Sales Navigator listsPOSTList Sales Navigator search parametersPOSTList signatures available to the callerGETList teamsGETList the send-as addresses of a connected accountGETList the WhatsApp groups a paired number is inGETList time entriesGETMessage DeletedWEBHOOKMessage ReactionWEBHOOKMessage ReceivedWEBHOOKMessage UpdatedWEBHOOKMove a billing document to another statePOSTOrganization CreatedWEBHOOKOrganization DeletedWEBHOOKOrganization UpdatedWEBHOOKPost a comment on a projectPOSTPreview the invoice lines an organization's unbilled time would produceGETRead the pairing state of a WhatsApp sessionGETRecord a payment against an invoicePOSTRelation CreatedWEBHOOKRemove a send-as addressDELETERender a billing document as PDFGETReplace the set of users allowed to send as an aliasPUTRun a Sales Navigator search from a URLPOSTSave a lead or account to a Sales Navigator listPOSTSave a message draftPOSTSearch Sales Navigator companies (accounts)POSTSearch Sales Navigator people (leads)POSTSend a billing document by emailPOSTSend a chat messagePOSTSend a relation requestPOSTSend a WhatsApp message, optionally with attachmentsPOSTSend an emailPOSTService CreatedWEBHOOKService DeletedWEBHOOKService UpdatedWEBHOOKStart a chatPOSTStart a running timerPOSTStart a WhatsApp session on the organization's WAHA instancePOSTStop a running timerPOSTStream a project attachmentGETStream an attachmentGETTake an organization's time back off a draft documentPOSTTask CreatedWEBHOOKTask DeletedWEBHOOKTask UpdatedWEBHOOKUnpair the WhatsApp number from a sessionDELETEUpdate a contactPUTUpdate a dealPUTUpdate a servicePUTUpdate a taskPUTUpdate a teamPUTUpdate an organizationPUTUpdate many contactsPUTUpdate many dealsPUTUpdate many organizationsPUTUpdate many servicesPUTUpdate many tasksPUTUpdate the organization's billing profilePUT

Infer a likely email address from the pattern a domain already uses

Reads the email addresses of contacts already known at the same domain, works out the naming pattern they follow (first.last, f.last, and so on) and applies it to the given name. Nothing is written: this returns a proposal for a human to confirm. confidence is strong only when at least two known addresses agree on the pattern — a single matching address is a coincidence as often as it is a rule. For German names the folding matters (Müller becomes mueller at some companies and muller at others); confidence drops to weak when the name needs folding and no known colleague ever proved which one the domain uses. alreadyOnAnotherContact marks a proposal that would duplicate an address already in the workspace.

apiKeyAuth
x-api-key<token>

In: header

application/json

POST
/v1/contacts/infer-email

Authorization

Request Body

TypeScript Definitions

Use the request body type in TypeScript.

domain?string
Match^[a-z0-9.-]+$
Length3 <= length <= 253
contactId?string
Match^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Formatuuid
firstName?string
Lengthlength <= 200
lastName?string
Lengthlength <= 200

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://loading/api/v1/contacts/infer-email" \  -H "Content-Type: application/json" \  -d '{}'

API key authentication. Create an API key in your user profile and include it in the x-api-key header.

{
  "address": "string",
  "domain": "string",
  "alreadyOnAnotherContact": true,
  "pattern": {
    "id": "first.last",
    "folding": "german"
  },
  "confidence": "strong",
  "supporting": -9007199254740991,
  "considered": -9007199254740991
}
"string"
"string"
"string"
"string"