Skip to main content
POST /deals Upserts deals from your system into Recotap. Creates the deal if externalDealId is new; updates it if it already exists. Max 100 deals per request. Returns HTTP 200 regardless of per-item outcome.
curl -X POST "https://eapi.recotap.com/api/v1/deals" \
  -H "X-Api-Key: your-api-key-here" \
  -H "Content-Type: application/json" \
  -d '{
    "deals": [
      {
        "externalDealId": "deal-001",
        "name": "Acme Corp - Enterprise Plan",
        "amount": 75000,
        "stageId": "stage-3",
        "stageLabel": "Proposal Sent",
        "pipelineId": "smb-pipeline",
        "pipelineLabel": "SMB Sales",
        "startDate": "2026-01-15T00:00:00Z",
        "closedDate": "2026-06-30T00:00:00Z",
        "ownerName": "Jane Smith",
        "ownerEmail": "jane@yourcompany.com",
        "ownerId": "rep-123",
        "dealCurrencyCode": "USD",
        "associatedAccounts": [
          {
            "externalId": "crm-001",
            "domain": "acme.com",
            "name": "Acme Corp"
          }
        ]
      }
    ]
  }'
Request body
FieldTypeRequiredDescription
dealsarrayYesMin 1, max 100 deal objects
Deal object
FieldTypeRequiredDescription
externalDealIdstringYesYour system’s unique deal ID, used for deduplication e.g. "deal-001"
namestringYesDeal title e.g. "Acme Corp - Enterprise Plan"
amountnumberNoDeal value e.g. 75000
stageIdstringNoStage ID in your system e.g. "stage-3"
stageLabelstringNoStage display name e.g. "Proposal Sent"
pipelineIdstringNoPipeline ID in your system e.g. "smb-pipeline"
pipelineLabelstringNoPipeline display name e.g. "SMB Sales"
startDatestringNoISO 8601 deal start date e.g. "2026-01-15T00:00:00Z"
closedDatestringNoISO 8601 expected or actual close date e.g. "2026-06-30T00:00:00Z"
ownerNamestringNoName of the sales rep who owns this deal in your system e.g. "Jane Smith"
ownerEmailstringNoEmail of the sales rep who owns this deal in your system e.g. "jane@yourcompany.com". Must be a valid email format if provided.
ownerIdstringNoRep’s owner ID in your system e.g. "rep-123"
dealCurrencyCodestringNoe.g. "USD", "EUR", "GBP"
associatedAccountsarrayNoAccounts linked to this deal, used for revenue attribution
associatedAccounts object
FieldTypeRequiredDescription
externalIdstringNoYour system account ID e.g. "crm-001"
domainstringNoAccount domain used for matching in Recotap e.g. "acme.com". If no match is found, the deal is still created with the account unlinked.
namestringNoCompany display name e.g. "Acme Corp"
Response data
{
  "results": [
    { "externalDealId": "deal-001", "status": "upserted" },
    { "externalDealId": "deal-002", "status": "failed", "error": "..." }
  ],
  "summary": { "total": 2, "upserted": 1, "failed": 1 }
}