curl --request GET \
--url https://api.blinq.me/v1/workspaces/{workspace_id}/contacts/{contact_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.blinq.me/v1/workspaces/{workspace_id}/contacts/{contact_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.blinq.me/v1/workspaces/{workspace_id}/contacts/{contact_id}', 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://api.blinq.me/v1/workspaces/{workspace_id}/contacts/{contact_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.blinq.me/v1/workspaces/{workspace_id}/contacts/{contact_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.blinq.me/v1/workspaces/{workspace_id}/contacts/{contact_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.blinq.me/v1/workspaces/{workspace_id}/contacts/{contact_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "contact-id",
"workspace_id": "workspace-id",
"type": "business",
"first_name": "Jane",
"middle_name": null,
"last_name": "Doe",
"full_name": "Jane Doe",
"preferred_name": null,
"pronouns": null,
"job_title": "Designer",
"company_name": "Example",
"department": null,
"headline": null,
"avatar_url": "https://example.com/avatar.png",
"company_logo_url": null,
"emails": [
{
"value": "jane@example.com",
"label": "Work"
}
],
"phone_numbers": [
{
"value": "5550100",
"label": null,
"country_code": "+1",
"extension": null
}
],
"urls": [
{
"value": "https://example.com",
"label": "Website"
}
],
"addresses": [
{
"value": "123 Example St, Melbourne",
"label": "Office"
}
],
"tags": [
{
"value": "Customer"
}
],
"contact_notes": [
{
"id": "contact-note-id",
"text": "Follow up next week.",
"created_at": "2026-10-01T00:00:00.000Z"
}
],
"linked_notes": [
{
"id": "note-id",
"title": "Meeting notes",
"created_at": "2026-10-01T00:00:00.000Z",
"type": "voice_note"
}
],
"capture_context": {
"recorded_at": "2026-10-01T00:00:00.000Z",
"location": "Melbourne",
"cardholder_name": "Sam Smith"
},
"created_at": "2026-10-01T00:00:00.000Z",
"updated_at": "2026-10-01T00:00:00.000Z"
}Get contact
Gets a contact from the specified workspace, including contact details, tags, saved contact notes, linked note metadata, and capture context. Personal contacts must belong to the key owner. Business owners, admins, and members can retrieve a visible business contact when its ID is known; business members cannot discover these IDs through the list endpoint.
Missing contacts and inaccessible workspaces return 404.
Requires the blinq:contacts:read scope.
curl --request GET \
--url https://api.blinq.me/v1/workspaces/{workspace_id}/contacts/{contact_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.blinq.me/v1/workspaces/{workspace_id}/contacts/{contact_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.blinq.me/v1/workspaces/{workspace_id}/contacts/{contact_id}', 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://api.blinq.me/v1/workspaces/{workspace_id}/contacts/{contact_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.blinq.me/v1/workspaces/{workspace_id}/contacts/{contact_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.blinq.me/v1/workspaces/{workspace_id}/contacts/{contact_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.blinq.me/v1/workspaces/{workspace_id}/contacts/{contact_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "contact-id",
"workspace_id": "workspace-id",
"type": "business",
"first_name": "Jane",
"middle_name": null,
"last_name": "Doe",
"full_name": "Jane Doe",
"preferred_name": null,
"pronouns": null,
"job_title": "Designer",
"company_name": "Example",
"department": null,
"headline": null,
"avatar_url": "https://example.com/avatar.png",
"company_logo_url": null,
"emails": [
{
"value": "jane@example.com",
"label": "Work"
}
],
"phone_numbers": [
{
"value": "5550100",
"label": null,
"country_code": "+1",
"extension": null
}
],
"urls": [
{
"value": "https://example.com",
"label": "Website"
}
],
"addresses": [
{
"value": "123 Example St, Melbourne",
"label": "Office"
}
],
"tags": [
{
"value": "Customer"
}
],
"contact_notes": [
{
"id": "contact-note-id",
"text": "Follow up next week.",
"created_at": "2026-10-01T00:00:00.000Z"
}
],
"linked_notes": [
{
"id": "note-id",
"title": "Meeting notes",
"created_at": "2026-10-01T00:00:00.000Z",
"type": "voice_note"
}
],
"capture_context": {
"recorded_at": "2026-10-01T00:00:00.000Z",
"location": "Melbourne",
"cardholder_name": "Sam Smith"
},
"created_at": "2026-10-01T00:00:00.000Z",
"updated_at": "2026-10-01T00:00:00.000Z"
}Authorizations
Send a Blinq API key as Authorization: Bearer <api-key>; enter only the key in the documentation playground.
Create and revoke keys in the Blinq web app under Settings > API keys.
The key needs the scopes required by the operation, and public API access requires a Pro or Business plan.
Path Parameters
The ID of the workspace containing the contact. Use the workspace_id returned when listing contacts.
1The contact ID.
1Response
The requested contact.
The requested contact.
The contact ID.
The ID of the workspace used to retrieve the contact.
Whether the contact belongs to a personal workspace (personal) or a team workspace (business).
personal, business The contact's first name, or null when no first name is saved.
The contact's middle name.
The contact's last name, or null when no last name is saved.
The contact's full name, or null when no name is saved.
The name the contact prefers to use.
The contact's pronouns.
The contact's job title.
The name of the contact's company.
The contact's department within their company.
The contact's profile headline.
The URL of the contact's profile image, or null when there is none.
The URL of the contact's company logo, or null when there is none.
The contact's email addresses and their labels.
Show child attributes
Show child attributes
The contact's phone numbers and their labels, country codes, and extensions.
Show child attributes
Show child attributes
The contact's website and social profile URLs and their labels.
Show child attributes
Show child attributes
The contact's postal addresses as text values with labels.
Show child attributes
Show child attributes
Tags assigned to the contact.
Show child attributes
Show child attributes
Text notes saved on the contact.
Show child attributes
Show child attributes
Metadata for notes linked to the contact, including each note's ID, title, creation time, and type.
Show child attributes
Show child attributes
Saved capture metadata, not evidence of a meeting. For business contacts, location and cardholder refer to the selected earliest recipient. null means no capture metadata is available.
Show child attributes
Show child attributes
When the contact was created, as an ISO 8601 timestamp.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$When the contact was last updated, as an ISO 8601 timestamp.
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$