Add one lead.
Save one researched company. Read GET /settings first for the research brief and the section keys, then fill name, website, scores, tags and sections with what you found. This never spends SoftSolz AI credits. Duplicates are detected by external_id, then domain, then any contact email; on_duplicate decides what happens (default error, which answers 409 duplicate_lead with existing_id so you can PATCH it instead). Answers 402 free_plan_limit_reached when the free plan cap is hit.
https://app.softsolz.uk/api/v1/services/my-leads/leadsRecent Requests
Log in to see full request historyHeaders
AuthorizationstringrequiredBearer token: `Bearer sk_live_...` (or `sk_test_...` for sandbox). A login token will not work here.
Idempotency-KeystringOptional idempotency key for safe retries.
Body Params
namestringCompany name. Required unless website is given.
websitestringWebsite URL or bare domain.
external_idstringYour own stable id; matched first for dedupe.
industrystringPrimary industry.
citystringCity.
statestringState or region.
countrystringCountry.
employee_bandstringHeadcount band such as 11-50.
revenue_bandstringRevenue band such as 1M-10M.
fit_scoreintegerFit against the brief, 0-100.
lead_scoreintegerReadiness to buy, 0-100.
confidencenumberData confidence, 0-1.
verification_tierstringverified, probable or unverified.
lead_statusstringInitial status; defaults to new.
tagsarray of stringsLabels for segmentation; lower-cased and de-duplicated.
owner_user_idintegerMember id to own the lead.
sectionsobjectStructured research grouped by section. Every key is optional. Use the same keys on create and update; on update, sections merge key by key with what is already stored.
on_duplicatestringWhat to do when a lead with the same external_id, domain or contact email already exists: error (409 duplicate_lead with existing_id), merge (fill blanks, merge sections, union tags), skip, or create a second record.
Response
Response Body
idintegerLead id.run_idinteger | nullResearch run that produced this lead, or null when it was added directly.namestringCompany name.websitestring | nullWebsite URL.domainstring | nullBare domain, lower case.external_idstring | nullYour own stable id for this company.sourcestringHow the lead got here.viastring | nullChannel of the last write: research, api, connected_app, or null for the dashboard.via_labelstring | nullName of the app or key that last wrote the lead.fit_scoreinteger | nullFit against the brief, 0-100.lead_scoreinteger | nullReadiness to buy, 0-100.confidencenumber | nullData confidence, 0-1.verification_tierstring | nullverified, probable or unverified.verified_contact_countintegerHow many contact channels were verified on the official site.lead_statusstringWhere the lead is in your process.industrystring | nullPrimary industry.citystring | nullCity.statestring | nullState or region.countrystring | nullCountry.employee_bandstring | nullHeadcount band.revenue_bandstring | nullRevenue band.source_urlstring | nullPrimary source URL.owner_user_idinteger | nullMember who owns the lead, or null when unassigned.owner_namestring | nullOwner display name.owner_emailstring | nullOwner email.tagsarray of stringsLower-case labels for segmentation.last_contacted_atstring | nullSet whenever the status becomes called, contacted or follow_up.company_idstring | nullCRM company created by convert, if any.contact_idstring | nullCRM contact created by convert, if any.deal_idinteger | nullDeal created by convert, if any.resultobjectStructured research grouped by section. Every key is optional. Use the same keys on create and update; on update, sections merge key by key with what is already stored.created_atstringCreation timestamp.updated_atstringLast update. Round-trip as expected_updated_at on PATCH to refuse stale writes (409 STALE_VERSION).Request
import { SoftSolz } from '@softsolz/sdk';
const client = new SoftSolz({ apiKey: process.env.SOFTSOLZ_API_KEY });
const result = await client.myLeads.createLead({});console.log(result);Credentials
Sent as a Bearer token. Stored only in your browser.
Response · 201
{ "data": { "id": 0, "run_id": 0, "name": "string", "website": "string", "domain": "string", "external_id": "string", "source": "string", "via": "string", "via_label": "string", "fit_score": 0, "lead_score": 0, "confidence": "string", "verification_tier": "string", "verified_contact_count": 0, "lead_status": "string", "industry": "string", "city": "string", "state": "string", "country": "string", "employee_band": "string", "revenue_band": "string", "source_url": "string", "owner_user_id": 0, "owner_name": "string", "owner_email": "string", "tags": [], "last_contacted_at": "string", "company_id": "string", "contact_id": "string", "deal_id": 0, "result": {}, "created_at": "string", "updated_at": "string" }}