curl --request GET \
--url https://api.blinq.me/v1/notes \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.blinq.me/v1/notes"
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/notes', 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/notes",
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/notes"
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/notes")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.blinq.me/v1/notes")
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{
"notes": [
{
"id": "note-id",
"title": "Meeting notes",
"created_at": "2026-10-01T00:00:00.000Z",
"updated_at": "2026-10-01T00:00:00.000Z",
"deleted_at": null,
"status": "ready",
"type": "voice_note",
"share_url": "https://note.blinq.me/share-id",
"linked_contacts": [
{
"id": "contact-id",
"full_name": "Jane Doe",
"workspace_id": "workspace-id"
}
]
}
],
"has_more": false,
"next_cursor": null,
"total_count": 1
}List notes
Returns a paginated list of the authenticated user’s note metadata.
Notes are sorted by creation time, newest first, unless order_by specifies update time. Ties are broken by note ID, so pages are deterministic.
For an initial sync, page with order_by=updated_at until has_more is false. For incremental syncs, record a checkpoint before each run, pass it as updated_at_gte (inclusive) with a small overlap, upsert by id, and advance the checkpoint only after every page succeeds.
Deleted notes are omitted. There is no deletion feed; periodically reconcile a complete list of IDs to detect removals. Timestamp filtering alone does not provide lossless synchronization.
Get an individual note to read its content.
Requires the blinq:notes:read scope.
curl --request GET \
--url https://api.blinq.me/v1/notes \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.blinq.me/v1/notes"
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/notes', 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/notes",
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/notes"
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/notes")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.blinq.me/v1/notes")
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{
"notes": [
{
"id": "note-id",
"title": "Meeting notes",
"created_at": "2026-10-01T00:00:00.000Z",
"updated_at": "2026-10-01T00:00:00.000Z",
"deleted_at": null,
"status": "ready",
"type": "voice_note",
"share_url": "https://note.blinq.me/share-id",
"linked_contacts": [
{
"id": "contact-id",
"full_name": "Jane Doe",
"workspace_id": "workspace-id"
}
]
}
],
"has_more": false,
"next_cursor": null,
"total_count": 1
}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.
Query Parameters
Return notes created after this ISO 8601 timestamp with a timezone, such as 2026-10-01T00:00:00Z (exclusive).
^(?:(?:\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)))$Return notes created before this ISO 8601 timestamp with a timezone, such as 2026-11-01T00:00:00Z (exclusive).
^(?:(?:\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)))$Return notes last updated at or after this ISO 8601 timestamp with a timezone, such as 2026-10-01T00:00:00Z (inclusive). Deleted notes are excluded.
^(?:(?:\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)))$The timestamp used to sort notes in descending order. Keep this value unchanged between pages.
created_at, updated_at The next_cursor from the previous response. Omit on the first request. Keep filters and order_by unchanged between pages.
1The maximum number of notes to return per page.
x <= 50Response
One page of note metadata.
One page of note metadata.
Note metadata for this page. Get an individual note to read its content.
Show child attributes
Show child attributes
Whether another page of notes is available.
The cursor for the next page. When has_more is true, pass this value as cursor. Otherwise, this value is null.
The total number of notes matching the filters. Returned on the first page; null on subsequent pages.
-9007199254740991 <= x <= 9007199254740991