Get case status and missing documents
curl --request GET \
--url https://api.vivara.io/v1/non-payment-insurance/cases/{caseId} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.vivara.io/v1/non-payment-insurance/cases/{caseId}"
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/non-payment-insurance/cases/{caseId}', 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/non-payment-insurance/cases/{caseId}",
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/non-payment-insurance/cases/{caseId}"
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/non-payment-insurance/cases/{caseId}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vivara.io/v1/non-payment-insurance/cases/{caseId}")
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": "3f9c2a7e-58b1-4d0a-9a51-0c6e2f1b7d42",
"externalReference": "CONTRACT-2026-004521",
"status": "pending-documentation",
"effectiveDate": "2026-11-01",
"contractDurationMonths": 12,
"rentalAmountInEuros": 1250,
"tenants": [
{
"id": "6b1e0d44-2c3f-4b8e-a0f2-91d7e5c3a810",
"externalReference": "TENANT-88412",
"role": "tenant",
"personalId": "87654321X"
}
],
"offer": {
"code": 16,
"description": "Protección Jurídica Familiar - Impago de alquiler",
"contractable": true,
"netPremiumInEuros": 423.5,
"totalPremiumInEuros": 451.2,
"firstInstallmentInEuros": 451.2,
"remainingInstallmentsInEuros": 0,
"coverages": [
{
"code": 101,
"sumInsuredInEuros": 15000
}
],
"exceptions": [],
"exclusions": []
},
"documentation": {
"complete": false,
"sentToInsurerAt": null,
"missing": [
{
"anyOf": [
"data-protection-consent"
],
"minFiles": 1,
"uploadedFiles": 0
},
{
"tenantId": "6b1e0d44-2c3f-4b8e-a0f2-91d7e5c3a810",
"anyOf": [
"identity-document"
],
"minFiles": 1,
"uploadedFiles": 0
}
],
"documents": []
},
"allowedActions": [
"upload-document"
],
"createdAt": "2026-10-26T10:15:00Z",
"updatedAt": "2026-10-26T10:15:04Z"
}
}Non-payment insurance
Get case status and missing documents
Returns the current state of a case: its status, the offer, the documents still missing and, once issued, the policy.
Designed for polling: poll with exponential backoff (at least 30 s between calls) until status is policy-issued or rejected.
documentation.missing lists every requirement still unmet; the policy can only be issued once it is empty.
GET
/
non-payment-insurance
/
cases
/
{caseId}
Get case status and missing documents
curl --request GET \
--url https://api.vivara.io/v1/non-payment-insurance/cases/{caseId} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.vivara.io/v1/non-payment-insurance/cases/{caseId}"
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/non-payment-insurance/cases/{caseId}', 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/non-payment-insurance/cases/{caseId}",
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/non-payment-insurance/cases/{caseId}"
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/non-payment-insurance/cases/{caseId}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vivara.io/v1/non-payment-insurance/cases/{caseId}")
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": "3f9c2a7e-58b1-4d0a-9a51-0c6e2f1b7d42",
"externalReference": "CONTRACT-2026-004521",
"status": "pending-documentation",
"effectiveDate": "2026-11-01",
"contractDurationMonths": 12,
"rentalAmountInEuros": 1250,
"tenants": [
{
"id": "6b1e0d44-2c3f-4b8e-a0f2-91d7e5c3a810",
"externalReference": "TENANT-88412",
"role": "tenant",
"personalId": "87654321X"
}
],
"offer": {
"code": 16,
"description": "Protección Jurídica Familiar - Impago de alquiler",
"contractable": true,
"netPremiumInEuros": 423.5,
"totalPremiumInEuros": 451.2,
"firstInstallmentInEuros": 451.2,
"remainingInstallmentsInEuros": 0,
"coverages": [
{
"code": 101,
"sumInsuredInEuros": 15000
}
],
"exceptions": [],
"exclusions": []
},
"documentation": {
"complete": false,
"sentToInsurerAt": null,
"missing": [
{
"anyOf": [
"data-protection-consent"
],
"minFiles": 1,
"uploadedFiles": 0
},
{
"tenantId": "6b1e0d44-2c3f-4b8e-a0f2-91d7e5c3a810",
"anyOf": [
"identity-document"
],
"minFiles": 1,
"uploadedFiles": 0
}
],
"documents": []
},
"allowedActions": [
"upload-document"
],
"createdAt": "2026-10-26T10:15:00Z",
"updatedAt": "2026-10-26T10:15:04Z"
}
}