Skip to content
Livstick Developers

Prerequisites

An access token provided by the Livstick team, and a point in your checkout flow where you can call the API server-side. If you don’t have a token yet, request developer access.

Create the container at checkout

As soon as the order is placed, create a container with your own order reference as crid. Leaving mode unset keeps it at the default: single, one message. Capture editKey from the response now — it is returned only at creation, and there is no endpoint to retrieve it afterwards.

POST /containers
curl -X POST https://client-api.v5.livstick.com/api/v3/containers \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "crid": "ORDER-123",
    "recipient": { "email": "recipient@example.com" },
    "language": "en_us"
  }'

Mount the Recorder on your confirmation page

Pass the urid and editKey from the container you just created — both belong to this one request and must not be reused across orders. The customer records their video right there, before leaving the page.

HTML order confirmation page
<livstick-widget-v2
  uid="{urid from step 1}"
  domain="example.com"
></livstick-widget-v2>
<script>
  const widget = document.querySelector("livstick-widget-v2");
  widget.editKey = "{editKey from step 1}";
</script>

Record the shipment when it ships

When your fulfillment system hands the parcel to a carrier, patch the container with the shipment details you have. This does not trigger anything by itself — it just keeps the container’s record in step with reality.

PATCH /containers/{crid}
curl -X PATCH https://client-api.v5.livstick.com/api/v3/containers/ORDER-123 \
  -H "Authorization: Bearer {ACCESS_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{ "shipmentCarrier": "chronopost", "shipmentCode": "XX123456789FR" }'

Notify the recipient when the parcel arrives

When your carrier’s tracking confirms delivery, call notify. Livstick resolves the recipient’s contact from what the container already holds and sends the email carrying the link to the message.

POST /containers/{crid}/notify
curl -X POST https://client-api.v5.livstick.com/api/v3/containers/ORDER-123/notify \
  -H "Authorization: Bearer {ACCESS_TOKEN}"

Where this trips people up

notify is not idempotent — calling it twice sends the email twice, so trigger it from a single, deduplicated point in your delivery pipeline, not from every webhook retry. If the recipient has no contact on the container, notify has nothing to send to: set recipient.email at creation, or patch it in before you call notify. And without recipient.channel, Livstick picks email as soon as recipient.email is present, even if a phone number is also set — if you need SMS instead, set channel explicitly.