Skip to content

Webhooks

Send CRM events to your systems, and receive them from others.

29 endpoints. Every request needs an X-Api-Key header.

List outbound endpoints

GET/api/v1/webhooks/vivre/endpoints/

curl "https://api.vivrecrm.com/api/v1/webhooks/vivre/endpoints/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
[
  {
    "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "label": "",
    "url": "",
    "scope": "org",
    "is_active": true,
    "circuit_state": "closed",
    "created_at": "2026-10-17T09:30:00+05:30",
    "updated_at": "2026-10-17T09:30:00+05:30"
  }
]

Create outbound endpoint

POST/api/v1/webhooks/vivre/endpoints/

Body

urlstring (uri)Required
Must be https:// and resolve only to public internet addresses.
labelstringRequired
Response fields 9
idstring (uuid)
labelstring
urlstring
The full URL for owners and admins. Members and viewers get only the origin, for example "https://hooks.example.com/…", or "…" when the URL has no scheme or host.
scopeenum
vivre for the CRM's endpoints, the only ones an API key reaches.
is_activeboolean
circuit_stateenum
Delivery health, set by the server: closed delivers normally, open holds deliveries after repeated failures, and half_open is trying the endpoint again.
created_atstring (date-time)
updated_atstring (date-time)
secretstring
64 hex characters.
curl -X POST "https://api.vivrecrm.com/api/v1/webhooks/vivre/endpoints/" \
  -H "X-Api-Key: $VIVRE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com", "label": ""}'
Response 201
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "label": "",
  "url": "",
  "scope": "org",
  "is_active": true,
  "circuit_state": "closed",
  "created_at": "2026-10-17T09:30:00+05:30",
  "updated_at": "2026-10-17T09:30:00+05:30",
  "secret": ""
}

Endpoint detail

GET/api/v1/webhooks/vivre/endpoints/{endpoint_id}/

Parameters

endpoint_idpath, stringRequired
Response fields 8
idstring (uuid)
labelstring
urlstring
The full URL for owners and admins. Members and viewers get only the origin, for example "https://hooks.example.com/…", or "…" when the URL has no scheme or host.
scopeenum
vivre for the CRM's endpoints, the only ones an API key reaches.
is_activeboolean
circuit_stateenum
Delivery health, set by the server: closed delivers normally, open holds deliveries after repeated failures, and half_open is trying the endpoint again.
created_atstring (date-time)
updated_atstring (date-time)
curl "https://api.vivrecrm.com/api/v1/webhooks/vivre/endpoints/7c9e6679-7425-40de-944b-e07fc1f90ae7/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "label": "",
  "url": "",
  "scope": "org",
  "is_active": true,
  "circuit_state": "closed",
  "created_at": "2026-10-17T09:30:00+05:30",
  "updated_at": "2026-10-17T09:30:00+05:30"
}

Update endpoint

PATCH/api/v1/webhooks/vivre/endpoints/{endpoint_id}/

Parameters

endpoint_idpath, stringRequired

Body

labelstring
urlstring (uri)
Must be https:// unless it equals the saved URL.
is_activeboolean
true is refused (400) while the endpoint is billing-paused.
Response fields 8
idstring (uuid)
labelstring
urlstring
The full URL for owners and admins. Members and viewers get only the origin, for example "https://hooks.example.com/…", or "…" when the URL has no scheme or host.
scopeenum
vivre for the CRM's endpoints, the only ones an API key reaches.
is_activeboolean
circuit_stateenum
Delivery health, set by the server: closed delivers normally, open holds deliveries after repeated failures, and half_open is trying the endpoint again.
created_atstring (date-time)
updated_atstring (date-time)
curl -X PATCH "https://api.vivrecrm.com/api/v1/webhooks/vivre/endpoints/7c9e6679-7425-40de-944b-e07fc1f90ae7/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "label": "",
  "url": "",
  "scope": "org",
  "is_active": true,
  "circuit_state": "closed",
  "created_at": "2026-10-17T09:30:00+05:30",
  "updated_at": "2026-10-17T09:30:00+05:30"
}

Delete endpoint

DELETE/api/v1/webhooks/vivre/endpoints/{endpoint_id}/

Parameters

endpoint_idpath, stringRequired
curl -X DELETE "https://api.vivrecrm.com/api/v1/webhooks/vivre/endpoints/7c9e6679-7425-40de-944b-e07fc1f90ae7/" \
  -H "X-Api-Key: $VIVRE_API_KEY"

Event catalog

GET/api/v1/webhooks/vivre/events/

Response fields 1
eventsarray of string
The event type names an endpoint may subscribe to, for example lead.created.v1.
curl "https://api.vivrecrm.com/api/v1/webhooks/vivre/events/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
{
  "events": [
    ""
  ]
}

List inbound tokens

GET/api/v1/webhooks/vivre/inbound/tokens/

curl "https://api.vivrecrm.com/api/v1/webhooks/vivre/inbound/tokens/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
[
  {
    "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "label": "",
    "is_active": true,
    "status": "active",
    "state": "active",
    "billing_paused": true,
    "allowed_ip_ranges": [
      ""
    ],
    "scope": "org",
    "source_label": "",
    "field_mapping": {},
    "mapping_confirmed": true,
    "_ignored": [
      ""
    ],
    "created_at": "2026-10-17T09:30:00+05:30",
    "signing_enabled": true,
    "token": "",
    "secret": ""
  }
]

Create inbound token

POST/api/v1/webhooks/vivre/inbound/tokens/

Body

labelstring
source_labelenum
The record type the token makes: lead or contact. Any other non-empty value is a 400. One of lead, contact.
statusenum
When sent, sets is_active too (inactive -> false). Wins over is_active. One of active, paused, inactive.
is_activeboolean
Used only when status is not sent; sets status to active or inactive.
allowed_ip_rangesarray of string
CIDR ranges; an invalid one is a 400.
secretstring
Caller-chosen signing secret. When absent, one is generated unless require_signature is false.
require_signatureboolean
false (also "false", "False", 0, "0") creates the token with no secret, so payloads are not signature-checked. Ignored when secret is sent.
Response fields 16
idstring (uuid)
The token's token_id.
labelstring
is_activeboolean
statusenum
active, paused or inactive.
stateenum
What the token does now, from is_active and status: active processes payloads, paused holds them, and off refuses them.
billing_pausedboolean
allowed_ip_rangesarray of string
CIDR ranges; empty accepts every address.
scopeenum
source_labelstring
The record type it makes (lead or contact), or empty when not set.
field_mappingobject
Keyed by CRM field key (standard key, or a custom field key such as cf_lead_<id>).
mapping_confirmedboolean
_ignoredarray of string
Payload keys an admin chose to discard (the stored ignored_fields).
created_atstring (date-time)
signing_enabledboolean
Whether the token has a signing secret, i.e. requires a signature.
tokenstring
The secret part of the inbound URL /webhooks/vivre/{org_id}/{token}/. Left out for members and viewers on reads, and always for API keys.
secretstring
The signing secret. Present only on create and rotate-secret, and only when the token has one.
curl -X POST "https://api.vivrecrm.com/api/v1/webhooks/vivre/inbound/tokens/" \
  -H "X-Api-Key: $VIVRE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status": "active"}'
Response 201
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "label": "",
  "is_active": true,
  "status": "active",
  "state": "active",
  "billing_paused": true,
  "allowed_ip_ranges": [
    ""
  ],
  "scope": "org",
  "source_label": "",
  "field_mapping": {},
  "mapping_confirmed": true,
  "_ignored": [
    ""
  ],
  "created_at": "2026-10-17T09:30:00+05:30",
  "signing_enabled": true,
  "token": "",
  "secret": ""
}

Set the field mapping (formula + value_map); a required field needs a payload field, formula or non-blank default

PATCH/api/v1/webhooks/vivre/inbound/tokens/{token_id}/mapping/

Parameters

token_idpath, stringRequired

Body

field_mappingobject
Keyed by CRM field key (standard key, or a custom field key such as cf_lead_<id>).
source_labelenum
When sent, name-keyed custom field keys are upgraded to id keys, and the mapping must cover every mandatory field with a source, formula or non-blank default. When absent the mandatory check is skipped. One of lead, contact.
_ignoredarray of string
Payload keys to discard. Replaces the stored list; absent clears it.
Response fields 3
mapping_confirmedenum
warningsarray of string
Present when a field has both formula and source.
upgraded_keysobject
Present when custom field keys were rewritten: {old key: new key}. What was stored is not what was sent.

Can also return 400.

curl -X PATCH "https://api.vivrecrm.com/api/v1/webhooks/vivre/inbound/tokens/7c9e6679-7425-40de-944b-e07fc1f90ae7/mapping/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
{
  "mapping_confirmed": true,
  "warnings": [
    ""
  ],
  "upgraded_keys": {}
}

An endpoint's deliveries, paginated and filterable

GET/api/v1/webhooks/vivre/endpoints/{endpoint_id}/deliveries/

Parameters

endpoint_idpath, stringRequired
Response fields 11
idstring (uuid)
event_typestring
statusenum
pending (queued, or held while the endpoint is failing), processing (being sent), success, failed (will be tried again), dead (no more tries) or cancelled.
attempt_countinteger
created_atstring (date-time)
resolved_atstring (date-time)
next_attempt_atstring (date-time)
last_attempted_atstring (date-time)
response_logarray of object
payloadobject
Owners and admins only. The body that was sent, as it was at sending: the event envelope {id, type, occurred_at, organisation_id, data, previous?}. Free-form.
request_headersobject
Owners and admins only. The headers each try sends, except X-Vivre-Signature, which is not kept: Content-Type, X-Vivre-Event, X-Vivre-Version and X-Vivre-Delivery.
curl "https://api.vivrecrm.com/api/v1/webhooks/vivre/endpoints/7c9e6679-7425-40de-944b-e07fc1f90ae7/deliveries/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "event_type": "",
      "status": "pending",
      "attempt_count": 1,
      "created_at": "2026-10-17T09:30:00+05:30",
      "resolved_at": "2026-10-17T09:30:00+05:30",
      "next_attempt_at": "2026-10-17T09:30:00+05:30",
      "last_attempted_at": "2026-10-17T09:30:00+05:30",
      "response_log": [],
      "payload": {},
      "request_headers": {}
    }
  ]
}

Send a failed delivery again

POST/api/v1/webhooks/vivre/endpoints/{endpoint_id}/deliveries/{delivery_id}/retry/

Parameters

endpoint_idpath, stringRequired
delivery_idpath, stringRequired
Response fields 11
idstring (uuid)
event_typestring
statusenum
pending (queued, or held while the endpoint is failing), processing (being sent), success, failed (will be tried again), dead (no more tries) or cancelled.
attempt_countinteger
created_atstring (date-time)
resolved_atstring (date-time)
next_attempt_atstring (date-time)
last_attempted_atstring (date-time)
response_logarray of object
payloadobject
Owners and admins only. The body that was sent, as it was at sending: the event envelope {id, type, occurred_at, organisation_id, data, previous?}. Free-form.
request_headersobject
Owners and admins only. The headers each try sends, except X-Vivre-Signature, which is not kept: Content-Type, X-Vivre-Event, X-Vivre-Version and X-Vivre-Delivery.
curl -X POST "https://api.vivrecrm.com/api/v1/webhooks/vivre/endpoints/7c9e6679-7425-40de-944b-e07fc1f90ae7/deliveries/7c9e6679-7425-40de-944b-e07fc1f90ae7/retry/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "event_type": "",
  "status": "pending",
  "attempt_count": 1,
  "created_at": "2026-10-17T09:30:00+05:30",
  "resolved_at": "2026-10-17T09:30:00+05:30",
  "next_attempt_at": "2026-10-17T09:30:00+05:30",
  "last_attempted_at": "2026-10-17T09:30:00+05:30",
  "response_log": [
    {
      "attempt": 1,
      "status_code": 1,
      "response_body": "",
      "attempted_at": "2026-10-17T09:30:00+05:30",
      "duration_ms": 1
    }
  ],
  "payload": {},
  "request_headers": {}
}

Issue a new signing secret

POST/api/v1/webhooks/vivre/endpoints/{endpoint_id}/rotate-secret/

Parameters

endpoint_idpath, stringRequired
Response fields 1
secretstring
The new signing secret, 64 hex characters. The previous one stops working at once.
curl -X POST "https://api.vivrecrm.com/api/v1/webhooks/vivre/endpoints/7c9e6679-7425-40de-944b-e07fc1f90ae7/rotate-secret/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
{
  "secret": ""
}

An endpoint's event subscriptions

GET/api/v1/webhooks/vivre/endpoints/{endpoint_id}/subscriptions/

Parameters

endpoint_idpath, stringRequired
curl "https://api.vivrecrm.com/api/v1/webhooks/vivre/endpoints/7c9e6679-7425-40de-944b-e07fc1f90ae7/subscriptions/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
[
  {
    "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "event_type": "",
    "created_at": "2026-10-17T09:30:00+05:30"
  }
]

Subscribe an endpoint to events

POST/api/v1/webhooks/vivre/endpoints/{endpoint_id}/subscriptions/

Parameters

endpoint_idpath, stringRequired

Body

event_typestringRequired
Must be one of the events in GET /api/v1/webhooks/vivre/events/, for example lead.created.v1.
Response fields 2
idstring (uuid)
event_typestring
curl -X POST "https://api.vivrecrm.com/api/v1/webhooks/vivre/endpoints/7c9e6679-7425-40de-944b-e07fc1f90ae7/subscriptions/" \
  -H "X-Api-Key: $VIVRE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"event_type": ""}'
Response 201
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "event_type": ""
}

Unsubscribe an endpoint from events

DELETE/api/v1/webhooks/vivre/endpoints/{endpoint_id}/subscriptions/

Parameters

endpoint_idpath, stringRequired

Body

event_typestringRequired
Must be one of the events in GET /api/v1/webhooks/vivre/events/, for example lead.created.v1.
curl -X DELETE "https://api.vivrecrm.com/api/v1/webhooks/vivre/endpoints/7c9e6679-7425-40de-944b-e07fc1f90ae7/subscriptions/" \
  -H "X-Api-Key: $VIVRE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"event_type": ""}'

Send a signed test event

POST/api/v1/webhooks/vivre/endpoints/{endpoint_id}/test/

Parameters

endpoint_idpath, stringRequired
Response fields 2
status_codeinteger
The receiver's HTTP status. Any status, 2xx or not, is a 200 here.
bodystring
First 500 characters of the receiver's reply.
curl -X POST "https://api.vivrecrm.com/api/v1/webhooks/vivre/endpoints/7c9e6679-7425-40de-944b-e07fc1f90ae7/test/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
{
  "status_code": 1,
  "body": "Called, wants a demo on Friday."
}

An entity's fields, standard and custom, for mapping in Zapier, Pabbly or n8n

GET/api/v1/webhooks/vivre/fields/{entity}/

Parameters

entitypath, stringRequired
Response fields 2
entityenum
fieldsarray of object
Standard fields, then active custom fields. A lead lists both Lead and Contact custom fields.
curl "https://api.vivrecrm.com/api/v1/webhooks/vivre/fields/7c9e6679-7425-40de-944b-e07fc1f90ae7/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
{
  "entity": "lead",
  "fields": [
    {
      "key": "",
      "label": "",
      "type": "",
      "entity_type": "",
      "group": "",
      "required": true,
      "options": [],
      "note": "",
      "mapper_hidden": true,
      "is_member": true,
      "is_custom": true,
      "legacy_key": ""
    }
  ]
}

Retrieve an inbound token

GET/api/v1/webhooks/vivre/inbound/tokens/{token_id}/

Parameters

token_idpath, stringRequired
Response fields 16
idstring (uuid)
The token's token_id.
labelstring
is_activeboolean
statusenum
active, paused or inactive.
stateenum
What the token does now, from is_active and status: active processes payloads, paused holds them, and off refuses them.
billing_pausedboolean
allowed_ip_rangesarray of string
CIDR ranges; empty accepts every address.
scopeenum
source_labelstring
The record type it makes (lead or contact), or empty when not set.
field_mappingobject
Keyed by CRM field key (standard key, or a custom field key such as cf_lead_<id>).
mapping_confirmedboolean
_ignoredarray of string
Payload keys an admin chose to discard (the stored ignored_fields).
created_atstring (date-time)
signing_enabledboolean
Whether the token has a signing secret, i.e. requires a signature.
tokenstring
The secret part of the inbound URL /webhooks/vivre/{org_id}/{token}/. Left out for members and viewers on reads, and always for API keys.
secretstring
The signing secret. Present only on create and rotate-secret, and only when the token has one.
curl "https://api.vivrecrm.com/api/v1/webhooks/vivre/inbound/tokens/7c9e6679-7425-40de-944b-e07fc1f90ae7/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "label": "",
  "is_active": true,
  "status": "active",
  "state": "active",
  "billing_paused": true,
  "allowed_ip_ranges": [
    ""
  ],
  "scope": "org",
  "source_label": "",
  "field_mapping": {},
  "mapping_confirmed": true,
  "_ignored": [
    ""
  ],
  "created_at": "2026-10-17T09:30:00+05:30",
  "signing_enabled": true,
  "token": "",
  "secret": ""
}

Update an inbound token (state, mapping, label)

PATCH/api/v1/webhooks/vivre/inbound/tokens/{token_id}/

Parameters

token_idpath, stringRequired

Body

labelstring
statusenum
Sets is_active too. Wins over is_active. One of active, paused, inactive.
is_activeboolean
Sets status to active or inactive when status is not sent.
allowed_ip_rangesarray of string
CIDR ranges; an invalid one is a 400.
source_labelenum
One of lead, contact.
Response fields 16
idstring (uuid)
The token's token_id.
labelstring
is_activeboolean
statusenum
active, paused or inactive.
stateenum
What the token does now, from is_active and status: active processes payloads, paused holds them, and off refuses them.
billing_pausedboolean
allowed_ip_rangesarray of string
CIDR ranges; empty accepts every address.
scopeenum
source_labelstring
The record type it makes (lead or contact), or empty when not set.
field_mappingobject
Keyed by CRM field key (standard key, or a custom field key such as cf_lead_<id>).
mapping_confirmedboolean
_ignoredarray of string
Payload keys an admin chose to discard (the stored ignored_fields).
created_atstring (date-time)
signing_enabledboolean
Whether the token has a signing secret, i.e. requires a signature.
tokenstring
The secret part of the inbound URL /webhooks/vivre/{org_id}/{token}/. Left out for members and viewers on reads, and always for API keys.
secretstring
The signing secret. Present only on create and rotate-secret, and only when the token has one.
curl -X PATCH "https://api.vivrecrm.com/api/v1/webhooks/vivre/inbound/tokens/7c9e6679-7425-40de-944b-e07fc1f90ae7/" \
  -H "X-Api-Key: $VIVRE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status": "active"}'
Response 200
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "label": "",
  "is_active": true,
  "status": "active",
  "state": "active",
  "billing_paused": true,
  "allowed_ip_ranges": [
    ""
  ],
  "scope": "org",
  "source_label": "",
  "field_mapping": {},
  "mapping_confirmed": true,
  "_ignored": [
    ""
  ],
  "created_at": "2026-10-17T09:30:00+05:30",
  "signing_enabled": true,
  "token": "",
  "secret": ""
}

Delete an inbound token

DELETE/api/v1/webhooks/vivre/inbound/tokens/{token_id}/

Deletes the token. Not available to API keys (403): do this in the app.

Parameters

token_idpath, stringRequired
curl -X DELETE "https://api.vivrecrm.com/api/v1/webhooks/vivre/inbound/tokens/7c9e6679-7425-40de-944b-e07fc1f90ae7/" \
  -H "X-Api-Key: $VIVRE_API_KEY"

A token's received payloads

GET/api/v1/webhooks/vivre/inbound/tokens/{token_id}/logs/

Parameters

token_idpath, stringRequired
Response fields 13
idstring (uuid)
statusenum
success (record made, all fields mapped), partial (record made, some optional fields missed), failed (can be tried again), held (waiting for the token's mapping), skipped (nothing to make), rejected (a required field was missing), processing (a try is running or due) or superseded (the same payload was already processed).
entity_typestring
lead, contact, or empty.
entity_idstring
The record it created, when it did.
mapping_resultobject
{CRM field: value} that was mapped. Free-form; values read "[hidden]" for members and viewers under "Assigned only".
mapping_missesarray of string
Field keys with no value, or sentences naming a value that was not saved.
received_atstring (date-time)
processed_atstring (date-time)
attempt_countinteger
superseded_bystring (uuid)
repeat_ofstring (uuid)
The payload this one repeated: same token, same mapped values, within 24 hours.
miss_labelsobject
{field key: display name} for keys named in mapping_misses.
reasonstring
The last try's error. Always null for members and viewers.
curl "https://api.vivrecrm.com/api/v1/webhooks/vivre/inbound/tokens/7c9e6679-7425-40de-944b-e07fc1f90ae7/logs/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "status": "success",
      "entity_type": "",
      "entity_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "mapping_result": {},
      "mapping_misses": [],
      "received_at": "2026-10-17T09:30:00+05:30",
      "processed_at": "2026-10-17T09:30:00+05:30",
      "attempt_count": 1,
      "superseded_by": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "repeat_of": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "miss_labels": {},
      "reason": ""
    }
  ]
}

One received payload, its tries and the record made

GET/api/v1/webhooks/vivre/inbound/tokens/{token_id}/logs/{log_id}/

Parameters

token_idpath, stringRequired
log_idpath, stringRequired
Response fields 13
idstring (uuid)
statusenum
success (record made, all fields mapped), partial (record made, some optional fields missed), failed (can be tried again), held (waiting for the token's mapping), skipped (nothing to make), rejected (a required field was missing), processing (a try is running or due) or superseded (the same payload was already processed).
entity_typestring
entity_idstring
raw_payloadobject
The payload as received. Free-form; values read "[hidden]" for members and viewers under "Assigned only".
mapping_resultobject
Free-form; hidden as raw_payload is.
mapping_missesarray of string
received_atstring (date-time)
processed_atstring (date-time)
superseded_bystring (uuid)
repeat_ofstring (uuid)
The payload this one repeated: same token, same mapped values, within 24 hours.
attemptsarray of object
miss_labelsobject
curl "https://api.vivrecrm.com/api/v1/webhooks/vivre/inbound/tokens/7c9e6679-7425-40de-944b-e07fc1f90ae7/logs/7c9e6679-7425-40de-944b-e07fc1f90ae7/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "status": "success",
  "entity_type": "",
  "entity_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "raw_payload": {},
  "mapping_result": {},
  "mapping_misses": [
    ""
  ],
  "received_at": "2026-10-17T09:30:00+05:30",
  "processed_at": "2026-10-17T09:30:00+05:30",
  "superseded_by": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "repeat_of": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "attempts": [
    {
      "number": 1,
      "trigger": "received",
      "status": "success",
      "started_at": "2026-10-17T09:30:00+05:30",
      "finished_at": "2026-10-17T09:30:00+05:30",
      "error": "",
      "mapping_misses": [],
      "entity_type": "",
      "entity_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
      "requested_by_name": "",
      "replay_batch": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
    }
  ],
  "miss_labels": {}
}

Process one held or failed payload again

POST/api/v1/webhooks/vivre/inbound/tokens/{token_id}/logs/{log_id}/replay/

Parameters

token_idpath, stringRequired
log_idpath, stringRequired
Response fields 2
replayedinteger
How many payloads were claimed and queued.
batch_idstring (uuid)
Poll GET .../replay/{batch_id}/ for progress.
curl -X POST "https://api.vivrecrm.com/api/v1/webhooks/vivre/inbound/tokens/7c9e6679-7425-40de-944b-e07fc1f90ae7/logs/7c9e6679-7425-40de-944b-e07fc1f90ae7/replay/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
{
  "replayed": 1,
  "batch_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}

Process held or failed payloads again, as a batch

POST/api/v1/webhooks/vivre/inbound/tokens/{token_id}/replay/

Parameters

token_idpath, stringRequired
Response fields 2
replayedinteger
How many payloads were claimed and queued.
batch_idstring (uuid)
Poll GET .../replay/{batch_id}/ for progress.
curl -X POST "https://api.vivrecrm.com/api/v1/webhooks/vivre/inbound/tokens/7c9e6679-7425-40de-944b-e07fc1f90ae7/replay/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
{
  "replayed": 1,
  "batch_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}

A replay batch's progress

GET/api/v1/webhooks/vivre/inbound/tokens/{token_id}/replay/{batch_id}/

Parameters

token_idpath, stringRequired
batch_idpath, stringRequired
Response fields 13
batch_idstring (uuid)
totalinteger
processinginteger
successinteger
partialinteger
failedinteger
heldinteger
skippedinteger
rejectedinteger
finishedboolean
outcomestring
Once finished, a summary such as "2 succeeded, 1 failed" or "nothing processed"; null before.
finished_atstring (date-time)
created_atstring (date-time)
curl "https://api.vivrecrm.com/api/v1/webhooks/vivre/inbound/tokens/7c9e6679-7425-40de-944b-e07fc1f90ae7/replay/7c9e6679-7425-40de-944b-e07fc1f90ae7/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
{
  "batch_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "total": 1,
  "processing": 1,
  "success": 1,
  "partial": 1,
  "failed": 1,
  "held": 1,
  "skipped": 1,
  "rejected": 1,
  "finished": true,
  "outcome": "",
  "finished_at": "2026-10-17T09:30:00+05:30",
  "created_at": "2026-10-17T09:30:00+05:30"
}

Issue a new signing secret for a token

POST/api/v1/webhooks/vivre/inbound/tokens/{token_id}/rotate-secret/

Parameters

token_idpath, stringRequired
Response fields 16
idstring (uuid)
The token's token_id.
labelstring
is_activeboolean
statusenum
active, paused or inactive.
stateenum
What the token does now, from is_active and status: active processes payloads, paused holds them, and off refuses them.
billing_pausedboolean
allowed_ip_rangesarray of string
CIDR ranges; empty accepts every address.
scopeenum
source_labelstring
The record type it makes (lead or contact), or empty when not set.
field_mappingobject
Keyed by CRM field key (standard key, or a custom field key such as cf_lead_<id>).
mapping_confirmedboolean
_ignoredarray of string
Payload keys an admin chose to discard (the stored ignored_fields).
created_atstring (date-time)
signing_enabledboolean
Whether the token has a signing secret, i.e. requires a signature.
tokenstring
The secret part of the inbound URL /webhooks/vivre/{org_id}/{token}/. Left out for members and viewers on reads, and always for API keys.
secretstring
The signing secret. Present only on create and rotate-secret, and only when the token has one.
curl -X POST "https://api.vivrecrm.com/api/v1/webhooks/vivre/inbound/tokens/7c9e6679-7425-40de-944b-e07fc1f90ae7/rotate-secret/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "label": "",
  "is_active": true,
  "status": "active",
  "state": "active",
  "billing_paused": true,
  "allowed_ip_ranges": [
    ""
  ],
  "scope": "org",
  "source_label": "",
  "field_mapping": {},
  "mapping_confirmed": true,
  "_ignored": [
    ""
  ],
  "created_at": "2026-10-17T09:30:00+05:30",
  "signing_enabled": true,
  "token": "",
  "secret": ""
}

The latest payload, for mapping

GET/api/v1/webhooks/vivre/inbound/tokens/{token_id}/sample/

Parameters

token_idpath, stringRequired
Response fields 9
token_idstring (uuid)
raw_payloadobject
The latest payload as received. Free-form.
detected_fieldsobject
The latest payload flattened, {"address__city": "Mumbai"}. Passed through as stored.
all_fieldsobject
Every flattened key the last 50 payloads carried, with the newest value as the example.
suggested_mappingobject
{payload key: CRM field} for payload keys whose name is a known alias of a CRM field.
source_headersobject
Request headers of the latest payload, with Authorization and Cookie removed. For members, viewers and API keys, headers naming a signature, secret, token, auth, cookie or key are removed as well.
captured_atstring (date-time)
replaced_countinteger
new_unknown_fieldsarray of string
Payload keys that are neither mapped nor ignored.
curl "https://api.vivrecrm.com/api/v1/webhooks/vivre/inbound/tokens/7c9e6679-7425-40de-944b-e07fc1f90ae7/sample/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
{
  "token_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "raw_payload": {},
  "detected_fields": {},
  "all_fields": {},
  "suggested_mapping": {},
  "source_headers": {},
  "captured_at": "2026-10-17T09:30:00+05:30",
  "replaced_count": 1,
  "new_unknown_fields": [
    ""
  ]
}

Stop requiring a signature on a token

DELETE/api/v1/webhooks/vivre/inbound/tokens/{token_id}/secret/

Parameters

token_idpath, stringRequired
Response fields 16
idstring (uuid)
The token's token_id.
labelstring
is_activeboolean
statusenum
active, paused or inactive.
stateenum
What the token does now, from is_active and status: active processes payloads, paused holds them, and off refuses them.
billing_pausedboolean
allowed_ip_rangesarray of string
CIDR ranges; empty accepts every address.
scopeenum
source_labelstring
The record type it makes (lead or contact), or empty when not set.
field_mappingobject
Keyed by CRM field key (standard key, or a custom field key such as cf_lead_<id>).
mapping_confirmedboolean
_ignoredarray of string
Payload keys an admin chose to discard (the stored ignored_fields).
created_atstring (date-time)
signing_enabledboolean
Whether the token has a signing secret, i.e. requires a signature.
tokenstring
The secret part of the inbound URL /webhooks/vivre/{org_id}/{token}/. Left out for members and viewers on reads, and always for API keys.
secretstring
The signing secret. Present only on create and rotate-secret, and only when the token has one.
curl -X DELETE "https://api.vivrecrm.com/api/v1/webhooks/vivre/inbound/tokens/7c9e6679-7425-40de-944b-e07fc1f90ae7/secret/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
{
  "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
  "label": "",
  "is_active": true,
  "status": "active",
  "state": "active",
  "billing_paused": true,
  "allowed_ip_ranges": [
    ""
  ],
  "scope": "org",
  "source_label": "",
  "field_mapping": {},
  "mapping_confirmed": true,
  "_ignored": [
    ""
  ],
  "created_at": "2026-10-17T09:30:00+05:30",
  "signing_enabled": true,
  "token": "",
  "secret": ""
}

A token's received, processed and failed counts

GET/api/v1/webhooks/vivre/inbound/tokens/{token_id}/stats/

Parameters

token_idpath, stringRequired
Response fields 10
successinteger
partialinteger
failedinteger
heldinteger
skippedinteger
rejectedinteger
processinginteger
supersededinteger
totalinteger
repeatsinteger
How many payloads were repeats (created and flagged), counted within the statuses above.
curl "https://api.vivrecrm.com/api/v1/webhooks/vivre/inbound/tokens/7c9e6679-7425-40de-944b-e07fc1f90ae7/stats/" \
  -H "X-Api-Key: $VIVRE_API_KEY"
Response 200
{
  "success": 1,
  "partial": 1,
  "failed": 1,
  "held": 1,
  "skipped": 1,
  "rejected": 1,
  "processing": 1,
  "superseded": 1,
  "total": 1,
  "repeats": 1
}