curl --request GET \
--url https://api.synci.io/api/v1/finance/securities/search \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.synci.io/api/v1/finance/securities/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.synci.io/api/v1/finance/securities/search"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.synci.io/api/v1/finance/securities/search",
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.synci.io/api/v1/finance/securities/search"
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))
}{
"data": [
{
"id": "<string>",
"provider": "MARKETSTACK",
"provider_symbol": "<string>",
"name": "<string>",
"type": "EQUITY",
"currency": "<string>",
"exchange_mic": "<string>",
"exchange_name": "<string>",
"country_code": "<string>",
"priced": true,
"price_status": "UNVERIFIED",
"last_price_at": "<string>"
}
],
"meta": {
"total": 0,
"has_more": true,
"limit": 123,
"facets": {
"countries": [
"<unknown>"
],
"exchanges": [
"<unknown>"
],
"no_venue": 0
}
}
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>",
"errors": {}
}Search securities
Listed equities, ETFs and funds the price source can value, from Synci’s mirrored catalogue, matched on name,
symbol or ISIN. priced is true only for a security Synci already holds a close for; an unverified result is
verified when a position in it is added, and refused if the provider returns no price. country_code and
exchange_mic narrow the matches to a listing country (the exchange’s, ISO alpha-2) or venue (ISO 10383 MIC)
before ranking and the limit. Funds have neither (their exchange is a registration artefact, both are null on
their rows), so either filter leaves them out. meta.total and meta.has_more describe the filtered matches;
meta.facets lists every country and exchange among the unfiltered matches with counts, each exchange with its
country_code, and no_venue counts matches with no listing venue.
curl --request GET \
--url https://api.synci.io/api/v1/finance/securities/search \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.synci.io/api/v1/finance/securities/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.synci.io/api/v1/finance/securities/search"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.synci.io/api/v1/finance/securities/search",
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.synci.io/api/v1/finance/securities/search"
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))
}{
"data": [
{
"id": "<string>",
"provider": "MARKETSTACK",
"provider_symbol": "<string>",
"name": "<string>",
"type": "EQUITY",
"currency": "<string>",
"exchange_mic": "<string>",
"exchange_name": "<string>",
"country_code": "<string>",
"priced": true,
"price_status": "UNVERIFIED",
"last_price_at": "<string>"
}
],
"meta": {
"total": 0,
"has_more": true,
"limit": 123,
"facets": {
"countries": [
"<unknown>"
],
"exchanges": [
"<unknown>"
],
"no_venue": 0
}
}
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>",
"errors": {}
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Query Parameters
A name, ticker or ISIN fragment, at least two characters.
2 - 64At most this many results. Defaults to 20, never more than 50.
1 <= x <= 50Listing country (ISO alpha-2, the exchange's country). Funds have none and are left out.
2Listing venue (ISO 10383 MIC, as exchange_mic on results and in meta.facets.exchanges).
3 - 8