Docs Handoffs
API Reference

Handoffs

Individual steps within a chain. Each handoff has one actor and one confirmation link.

GET /v1/chains/:chain_id/handoffs

List all handoffs for a chain with their current status.

JavaScript
const handoffs = await sp.chains.handoffs('sp_ch_a96fec076ffd44f4');

Handoff object

FieldTypeDescription
handoff_idstringUnique identifier for this handoff step.
eventstringName of the event as defined at chain creation.
actorstringDisplay name of the responsible actor.
statusstringpending | confirmed | expired
confirmation_urlstringOne-time URL. Null once the handoff is confirmed or expired.
confirmed_atstringISO 8601 timestamp. Null until confirmed.
expires_atstringISO 8601 timestamp when the link expires.
locationstringReverse-geocoded address from the actor's GPS at confirmation time.
coordinatesobjectlat and lng captured at confirmation.

POST /v1/chains/:chain_id/handoffs/:handoff_id/resend

Generate a fresh confirmation link for a pending or expired handoff. Useful when an actor loses the original link or it expires before they could confirm.

The previous link is immediately invalidated when you resend. Only the new link will work. The resend event is logged in the audit trail.
JavaScript
const result = await sp.handoffs.resend(
  'sp_ch_a96fec076ffd44f4',
  'sp_hf_001'
);

console.log(result.confirmation_url); // New link

Handoff lifecycle

Every handoff moves through a simple state machine.

Only the current active handoff in the sequence can be confirmed. An actor cannot confirm step 3 before steps 1 and 2 are done.