Visitor routes: forget, identify, merge
The Visitor Verbs forget, identify, merge as api.sb routes, with inputs, result, refusals and an example.
Reference for Visitor, one group of Visitor routes.
Visitor.forget
Forget masks a person’s captured data across every Event and Recording and suppresses further capture, keeping the records. Verb page.
POST /{namespace}/ visitors/ {visitor}/ forgetPath: visitor. Body, as JSON: the other inputs. Emits Visitor.forgotten.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
visitor | Visitor | required | The Visitor to forget. |
request | text | required | The privacy request it answers. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
visitor | Visitor | required | The Visitor, masked. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation. | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
Example
curl -X POST https: //api.sb/ leaseline.app/ visitors/ visitor_M5gHadysq9/ forget \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"request": "Example request"}'{
"api": "https: //api.sb/ leaseline.app",
"visitor": {
"$id": "https: //api.sb/ leaseline.app/ visitors/ visitor_M5gHadysq9",
"$type": "Visitor",
"firstSeenAt": "2026-10-22T12: 00: 00Z"
},
"action": {
"$id": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG",
"operation": "Visitor.forget",
"status": "done"
},
"links": {
"self": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG"
}
}Visitor.identify
Identify joins a Visitor to the Contact it turns out to be, so earlier Visits count toward that person. Verb page.
POST /{namespace}/ visitors/ {visitor}/ identifyPath: visitor. Body, as JSON: the other inputs. Emits Visitor.identified.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
visitor | Visitor | required | The Visitor. |
contact | Contact | required | The Contact or Customer the Visitor is. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
contact | Contact | required | The Contact, with the Visitor’s Visits attached. |
visitor | Visitor | required | The Visitor, now joined to its Contact. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation. | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
Example
curl -X POST https: //api.sb/ leaseline.app/ visitors/ visitor_M5gHadysq9/ identify \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"contact": "contact_WsrosCQi6J"}'{
"api": "https: //api.sb/ leaseline.app",
"contact": {
"$id": "https: //api.sb/ leaseline.app/ contacts/ contact_WsrosCQi6J",
"$type": "Contact",
"email": "marcus@riversideproperty.com",
"phone": "Example phone"
},
"visitor": {
"$id": "https: //api.sb/ leaseline.app/ visitors/ visitor_M5gHadysq9",
"$type": "Visitor",
"firstSeenAt": "2026-10-22T12: 00: 00Z"
},
"action": {
"$id": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG",
"operation": "Visitor.identify",
"status": "done"
},
"links": {
"self": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG"
}
}Visitor.merge
Merge joins two Visitor ids that belong to one person and keeps both as aliases. Verb page.
POST /{namespace}/ visitors/ {visitor}/ mergePath: visitor. Body, as JSON: the other inputs. Emits Visitor.merged.
Inputs
| Input | Type | Required | Description |
|---|---|---|---|
visitor | Visitor | required | The Visitor to merge. |
into | Visitor | required | The Visitor that remains. |
Returns
| Output | Type | Required | Description |
|---|---|---|---|
visitor | Visitor | required | The remaining Visitor. |
Refuses when
| Check | Error | Fix | Then call |
|---|---|---|---|
| The key is valid, but its scopes do not allow this operation. | forbidden | Use a key whose scopes cover the operation, or ask an owner of the namespace to grant them. | None. |
Example
curl -X POST https: //api.sb/ leaseline.app/ visitors/ visitor_M5gHadysq9/ merge \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/ json" \
-d '{"into": "visitor_M5gHadysq9"}'{
"api": "https: //api.sb/ leaseline.app",
"visitor": {
"$id": "https: //api.sb/ leaseline.app/ visitors/ visitor_M5gHadysq9",
"$type": "Visitor",
"firstSeenAt": "2026-10-22T12: 00: 00Z"
},
"action": {
"$id": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG",
"operation": "Visitor.merge",
"status": "done"
},
"links": {
"self": "https: //api.sb/ leaseline.app/ actions/ act_br07HsG8MG"
}
}