Skip to content

Webhook scoring

API reference · POST /v1/webhooks/score

Score a single record via webhook. Designed for Marketo, Zapier, etc.

A single-record variant with a flat response, shaped for Marketo, Zapier, and other tools that map fields one to one. The record is the raw JSON body; the model id is a query parameter.

Request

endpoint
POST https://api.ax1om.ai/v1/webhooks/score

Authorize with your API key. Keys are minted in the app and the format is documented on authentication.

Parameters

NameInTypeRequired
model_idquerystringYes
authorizationheaderstringNo
X-API-Keyheaderstring | nullNo

The record is the raw JSON body: a flat object of your field values. The artifact declares no body schema for this operation, so there is no field list to generate, and none is invented here.

Response

StatusBodyWhen
200V1WebhookResponseRecord scored.
400V1ErrorBad request (code: bad_request).
401V1ErrorMissing or invalid API key (code: invalid_api_key).
402V1ErrorThe org's trial ended and it has no active subscription, so it is in read-only mode (code: expired_read_only). Read access to existing scores, models, and factors is unaffected; API scoring resumes on upgrade. Unlike a 429 quota, this does not clear at the next billing period, so do not retry on a timer.
403V1ErrorLive API is turned off for the score that owns this model (code: api_disabled). Turn Live API on in that score's row under Activate. Retrying will not clear it.
404V1ErrorModel not found (code: model_not_found).
409V1ErrorYour org's deploy policy is set to block, and this model has not passed its validation gate (code: deploy_blocked). The message names the gate and the override path. Retrying will not clear it: either the model clears its gate as its predictions mature, or an admin lifts the refusal.
422V1ErrorMalformed request body (code: bad_request).
429V1ErrorRate limited (code: rate_limited), or monthly scored-record quota exhausted past the backstop, including plans without API scoring (code: quota_exceeded).
500V1ErrorInternal error (code: internal_error).

V1WebhookResponse

Single-record webhook response, flattened for Marketo/Zapier field mapping.

FieldTypeAlways presentDescription
age_sentinelstring | nullNoRecency age-guard note. Always present (null when in-range) for sentinel-trained models only.
conversion_likelihoodnumber (float)Yes
deltaintegerNoscore minus previous_score, when a previous score exists.
percentileintegerYesApproximate percentile for the single record.
previous_scoreintegerNoPresent when a prior score exists for record_id.
record_idstringNoEchoed crm_id when supplied.
scoreintegerYes
testbooleanNoPresent and true only for test keys.
tier"hot" | "warm" | "cold"Yes
top_reason_1string | nullNo
top_reason_2string | nullNo
top_reason_3string | nullNo

Example

The same call in three clients. Pick one and the choice follows you across every panel on the documentation that offers it.

POST /v1/webhooks/score
curl -X POST "https://api.ax1om.ai/v1/webhooks/score?model_id=mdl_abc123" \
-H "X-API-Key: ax1m_sk_your_key" \
-H "Content-Type: application/json" \
-d '{
"Title": "VP Sales",
"Industry": "SaaS",
"LeadSource": "Webinar"
}'
200 OK
{
"score": 87,
"tier": "hot",
"percentile": 87,
"conversion_likelihood": 0.8732,
"top_reason_1": "VP title (2.3x lift)",
"top_reason_2": "SaaS industry",
"top_reason_3": "Webinar source"
}

Errors

Every failure returns the /v1 envelope. Branch onerror.code, never on the HTTP status or the message text. The codes below are the ones the contract declares for this operation; the full table with prose for each is on theindex.

StatusCodes
400bad_request
401invalid_api_key
402expired_read_only
403api_disabled
404model_not_found
409deploy_blocked
422bad_request
429quota_exceeded · rate_limited
500internal_error

Notes

  • ax1om does not deliver outbound webhooks to a url you supply. This is an inbound endpoint: Marketo, Zapier, or your own service posts a record and gets a score back in the response.
  • Errors use the same /v1 envelope as every other call. Branch on error.code, never on the status or the message text.
Need help?Contact supportLatest changes?See the changelog
Something wrong?Check system statusComing soon