Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
curl --request POST \
--url https://app.omnivibe.com.br/api/v1/accounts/{account_id}/actions/contact_merge \
--header 'Content-Type: application/json' \
--header 'api_access_token: <api-key>' \
--data '
{
"base_contact_id": 1,
"mergee_contact_id": 2
}
'import requests
url = "https://app.omnivibe.com.br/api/v1/accounts/{account_id}/actions/contact_merge"
payload = {
"base_contact_id": 1,
"mergee_contact_id": 2
}
headers = {
"api_access_token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {api_access_token: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({base_contact_id: 1, mergee_contact_id: 2})
};
fetch('https://app.omnivibe.com.br/api/v1/accounts/{account_id}/actions/contact_merge', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.omnivibe.com.br/api/v1/accounts/{account_id}/actions/contact_merge",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'base_contact_id' => 1,
'mergee_contact_id' => 2
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"api_access_token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.omnivibe.com.br/api/v1/accounts/{account_id}/actions/contact_merge"
payload := strings.NewReader("{\n \"base_contact_id\": 1,\n \"mergee_contact_id\": 2\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("api_access_token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.omnivibe.com.br/api/v1/accounts/{account_id}/actions/contact_merge")
.header("api_access_token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"base_contact_id\": 1,\n \"mergee_contact_id\": 2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.omnivibe.com.br/api/v1/accounts/{account_id}/actions/contact_merge")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api_access_token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"base_contact_id\": 1,\n \"mergee_contact_id\": 2\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"payload": [
{
"additional_attributes": {},
"availability_status": "<string>",
"email": "<string>",
"id": 123,
"name": "<string>",
"phone_number": "<string>",
"blocked": true,
"identifier": "<string>",
"thumbnail": "<string>",
"custom_attributes": {
"attribute_key": "attribute_value",
"signed_up_at": "dd/mm/yyyy"
},
"last_activity_at": 123,
"created_at": 123,
"contact_inboxes": [
{
"source_id": "<string>",
"inbox": {
"id": 123,
"avatar_url": "<string>",
"channel_id": 123,
"name": "<string>",
"channel_type": "<string>",
"provider": "<string>"
}
}
]
}
]
}{
"description": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>",
"code": "<string>"
}
]
}{
"description": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>",
"code": "<string>"
}
]
}{
"description": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>",
"code": "<string>"
}
]
}Merge two contacts into a single contact. The base contact remains and receives all data from the mergee contact. After the merge, the mergee contact is permanently deleted.
This action is irreversible. All conversations, labels, and custom attributes from the mergee contact will be moved to the base contact.
curl --request POST \
--url https://app.omnivibe.com.br/api/v1/accounts/{account_id}/actions/contact_merge \
--header 'Content-Type: application/json' \
--header 'api_access_token: <api-key>' \
--data '
{
"base_contact_id": 1,
"mergee_contact_id": 2
}
'import requests
url = "https://app.omnivibe.com.br/api/v1/accounts/{account_id}/actions/contact_merge"
payload = {
"base_contact_id": 1,
"mergee_contact_id": 2
}
headers = {
"api_access_token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {api_access_token: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({base_contact_id: 1, mergee_contact_id: 2})
};
fetch('https://app.omnivibe.com.br/api/v1/accounts/{account_id}/actions/contact_merge', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.omnivibe.com.br/api/v1/accounts/{account_id}/actions/contact_merge",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'base_contact_id' => 1,
'mergee_contact_id' => 2
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"api_access_token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.omnivibe.com.br/api/v1/accounts/{account_id}/actions/contact_merge"
payload := strings.NewReader("{\n \"base_contact_id\": 1,\n \"mergee_contact_id\": 2\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("api_access_token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.omnivibe.com.br/api/v1/accounts/{account_id}/actions/contact_merge")
.header("api_access_token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"base_contact_id\": 1,\n \"mergee_contact_id\": 2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.omnivibe.com.br/api/v1/accounts/{account_id}/actions/contact_merge")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["api_access_token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"base_contact_id\": 1,\n \"mergee_contact_id\": 2\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"payload": [
{
"additional_attributes": {},
"availability_status": "<string>",
"email": "<string>",
"id": 123,
"name": "<string>",
"phone_number": "<string>",
"blocked": true,
"identifier": "<string>",
"thumbnail": "<string>",
"custom_attributes": {
"attribute_key": "attribute_value",
"signed_up_at": "dd/mm/yyyy"
},
"last_activity_at": 123,
"created_at": 123,
"contact_inboxes": [
{
"source_id": "<string>",
"inbox": {
"id": 123,
"avatar_url": "<string>",
"channel_id": 123,
"name": "<string>",
"channel_type": "<string>",
"provider": "<string>"
}
}
]
}
]
}{
"description": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>",
"code": "<string>"
}
]
}{
"description": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>",
"code": "<string>"
}
]
}{
"description": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>",
"code": "<string>"
}
]
}This token can be obtained by visiting the profile page or via rails console. Provides access to endpoints based on the user permissions levels. This token can be saved by an external system when user is created via API, to perform activities on behalf of the user.
The numeric ID of the account
Was this page helpful?