Send CIARP file
curl --request POST \
--url https://api.dev.impactu.colav.co/submit/ciarp \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://api.dev.impactu.colav.co/submit/ciarp"
payload = {}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.dev.impactu.colav.co/submit/ciarp', 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.dev.impactu.colav.co/submit/ciarp",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.dev.impactu.colav.co/submit/ciarp"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.dev.impactu.colav.co/submit/ciarp")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dev.impactu.colav.co/submit/ciarp")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"success": true,
"errors": 0,
"warnings": 3,
"duplicates": 0,
"pdf_base64": "JVBERi0xLjQKJ...",
"file_msg": "Archivo ciarp_example-institution-id_2026-10-15_14:32.xlsx guardado correctamente."
}
{ "success": false, "msg": "Archivo requerido" }
{ "success": false, "errors": 2, "warnings": 1, "duplicates": 1, "pdf_base64": "JVBERi0xLjQKJ..." }
{ "success": false, "msg": "El archivo cargado está vacío. Verifique que contenga información." }
{"msg": "Token inválido o expirado", "success": false}
{
"success": false,
"errors": 1,
"duplicates": 0,
"msg": "El archivo enviado no cumple con el formato requerido de columnas",
"details": ["Columnas faltantes: identificación"],
"pdf_base64": "JVBERi0xLjQKJ..."
}
Submit
Send CIARP file
Uploads a CIARP Excel file (.xlsx), validates it and returns a quality report in PDF.
POST
/
submit
/
ciarp
Send CIARP file
curl --request POST \
--url https://api.dev.impactu.colav.co/submit/ciarp \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://api.dev.impactu.colav.co/submit/ciarp"
payload = {}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.dev.impactu.colav.co/submit/ciarp', 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.dev.impactu.colav.co/submit/ciarp",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.dev.impactu.colav.co/submit/ciarp"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.dev.impactu.colav.co/submit/ciarp")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dev.impactu.colav.co/submit/ciarp")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"success": true,
"errors": 0,
"warnings": 3,
"duplicates": 0,
"pdf_base64": "JVBERi0xLjQKJ...",
"file_msg": "Archivo ciarp_example-institution-id_2026-10-15_14:32.xlsx guardado correctamente."
}
{ "success": false, "msg": "Archivo requerido" }
{ "success": false, "errors": 2, "warnings": 1, "duplicates": 1, "pdf_base64": "JVBERi0xLjQKJ..." }
{ "success": false, "msg": "El archivo cargado está vacío. Verifique que contenga información." }
{"msg": "Token inválido o expirado", "success": false}
{
"success": false,
"errors": 1,
"duplicates": 0,
"msg": "El archivo enviado no cumple con el formato requerido de columnas",
"details": ["Columnas faltantes: identificación"],
"pdf_base64": "JVBERi0xLjQKJ..."
}
Requires an active session. The JWT is read from the
access_token_cookie cookie
and the request must carry the X-CSRF-TOKEN header. It is sent as
multipart/form-data.Request body
file
required
Excel
.xlsx file with the CIARP data. Another format, a file that cannot
be read or a file without data return 400.Response
boolean
true if the file has no errors. With errors, the response is 400 with
the same report.integer
Number of errors found in the file.
integer
Number of warnings.
integer
Number of duplicate records detected.
string | null
Quality report in PDF format encoded in Base64.
null if the file
has no errors, warnings or duplicates.string
Only with
200: result of saving, with the name under which the
file was stored.string
Only on errors: reason for the rejection. If columns are missing or there are unnamed columns, the
response is
422 and details lists each problem.{
"success": true,
"errors": 0,
"warnings": 3,
"duplicates": 0,
"pdf_base64": "JVBERi0xLjQKJ...",
"file_msg": "Archivo ciarp_example-institution-id_2026-10-15_14:32.xlsx guardado correctamente."
}
{ "success": false, "msg": "Archivo requerido" }
{ "success": false, "errors": 2, "warnings": 1, "duplicates": 1, "pdf_base64": "JVBERi0xLjQKJ..." }
{ "success": false, "msg": "El archivo cargado está vacío. Verifique que contenga información." }
{"msg": "Token inválido o expirado", "success": false}
{
"success": false,
"errors": 1,
"duplicates": 0,
"msg": "El archivo enviado no cumple con el formato requerido de columnas",
"details": ["Columnas faltantes: identificación"],
"pdf_base64": "JVBERi0xLjQKJ..."
}