curl --request GET \
--url https://api.vivara.io/v1/scorings/{scoringId} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.vivara.io/v1/scorings/{scoringId}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.vivara.io/v1/scorings/{scoringId}', 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.vivara.io/v1/scorings/{scoringId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <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"
"net/http"
"io"
)
func main() {
url := "https://api.vivara.io/v1/scorings/{scoringId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.vivara.io/v1/scorings/{scoringId}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vivara.io/v1/scorings/{scoringId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"id": "6d1f0c3e-5b8a-4c1e-9f2a-3b7e8d4a1c90",
"status": "completed",
"postalCode": "08001",
"monthlyPaymentAmountInEuros": 1200,
"candidatures": [
{
"externalReference": "cand-001",
"status": "assessed",
"solvencyResult": "ok",
"delinquencyResult": "ok",
"discardReasons": [],
"isDelinquent": false,
"isSolvent": true,
"totalNetAnnualIncomeAmountInEuros": 46200,
"effortRate": 31.17,
"confidenceTier": "declared",
"members": [
{
"personalId": "12345678Z",
"workingStatus": "employed",
"netAnnualIncomeAmountInEuros": 25200
},
{
"personalId": "X1234567L",
"workingStatus": "retired",
"netAnnualIncomeAmountInEuros": 21000
}
]
},
{
"externalReference": "cand-002",
"status": "assessed",
"solvencyResult": "ok-marginal",
"delinquencyResult": "ko",
"discardReasons": [
"delinquent"
],
"isDelinquent": true,
"isSolvent": true,
"totalNetAnnualIncomeAmountInEuros": 38400,
"effortRate": 37.5,
"confidenceTier": "declared",
"members": [
{
"personalId": "87654321X",
"workingStatus": "self-employed",
"form100": {
"netIncomeAmountInEuros": 44000
},
"form130": {
"netIncomeAmountInEuros": 28800
}
}
]
},
{
"externalReference": "cand-004",
"status": "failed",
"failureReasons": [
"service-unavailable"
],
"members": [
{
"personalId": "Z1234567R",
"workingStatus": "self-employed",
"form100": {
"netIncomeAmountInEuros": 44000
},
"form130": {
"netIncomeAmountInEuros": 28800
}
}
]
}
],
"createdAt": "2026-10-26T16:00:00.000Z",
"updatedAt": "2026-10-26T16:00:05.000Z"
}
}Get a scoring
Returns the saved scoring: property context, status and candidatures.
Property context. postalCode and monthlyPaymentAmountInEuros are fixed at creation.
Members. Each member echoes the declaration from create or update. personalId and workingStatus are always present in the response and are null when omitted or explicitly set to null in the request. Employed and retired members include netAnnualIncomeAmountInEuros. Self-employed members include form100 and form130. Annualized self-employed income contributes to totalNetAnnualIncomeAmountInEuros and effortRate but does not replace the member declaration.
Saved evaluation. Does not run delinquency checks again or recalculate income.
In this release. status is completed. Candidatures are ranked for visit prioritization.
Each candidature is assessed (solvency, delinquency, discard reasons, annual income, effort rate and confidence tier) or failed (failureReasons).
Errors. 404 when the scoring does not exist or belongs to another client.
curl --request GET \
--url https://api.vivara.io/v1/scorings/{scoringId} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.vivara.io/v1/scorings/{scoringId}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.vivara.io/v1/scorings/{scoringId}', 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.vivara.io/v1/scorings/{scoringId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <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"
"net/http"
"io"
)
func main() {
url := "https://api.vivara.io/v1/scorings/{scoringId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.vivara.io/v1/scorings/{scoringId}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vivara.io/v1/scorings/{scoringId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"id": "6d1f0c3e-5b8a-4c1e-9f2a-3b7e8d4a1c90",
"status": "completed",
"postalCode": "08001",
"monthlyPaymentAmountInEuros": 1200,
"candidatures": [
{
"externalReference": "cand-001",
"status": "assessed",
"solvencyResult": "ok",
"delinquencyResult": "ok",
"discardReasons": [],
"isDelinquent": false,
"isSolvent": true,
"totalNetAnnualIncomeAmountInEuros": 46200,
"effortRate": 31.17,
"confidenceTier": "declared",
"members": [
{
"personalId": "12345678Z",
"workingStatus": "employed",
"netAnnualIncomeAmountInEuros": 25200
},
{
"personalId": "X1234567L",
"workingStatus": "retired",
"netAnnualIncomeAmountInEuros": 21000
}
]
},
{
"externalReference": "cand-002",
"status": "assessed",
"solvencyResult": "ok-marginal",
"delinquencyResult": "ko",
"discardReasons": [
"delinquent"
],
"isDelinquent": true,
"isSolvent": true,
"totalNetAnnualIncomeAmountInEuros": 38400,
"effortRate": 37.5,
"confidenceTier": "declared",
"members": [
{
"personalId": "87654321X",
"workingStatus": "self-employed",
"form100": {
"netIncomeAmountInEuros": 44000
},
"form130": {
"netIncomeAmountInEuros": 28800
}
}
]
},
{
"externalReference": "cand-004",
"status": "failed",
"failureReasons": [
"service-unavailable"
],
"members": [
{
"personalId": "Z1234567R",
"workingStatus": "self-employed",
"form100": {
"netIncomeAmountInEuros": 44000
},
"form130": {
"netIncomeAmountInEuros": 28800
}
}
]
}
],
"createdAt": "2026-10-26T16:00:00.000Z",
"updatedAt": "2026-10-26T16:00:05.000Z"
}
}