curl --request POST \
--url https://api.croma.run/co/consejo-estado/search/v1 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"section": "SECCION TERCERA",
"type": "SENTENCIA",
"from_date": "2020-01-01",
"to_date": "2020-12-31"
}
'import requests
url = "https://api.croma.run/co/consejo-estado/search/v1"
payload = {
"section": "SECCION TERCERA",
"type": "SENTENCIA",
"from_date": "2020-01-01",
"to_date": "2020-12-31"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
section: 'SECCION TERCERA',
type: 'SENTENCIA',
from_date: '2020-01-01',
to_date: '2020-12-31'
})
};
fetch('https://api.croma.run/co/consejo-estado/search/v1', 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.croma.run/co/consejo-estado/search/v1",
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([
'section' => 'SECCION TERCERA',
'type' => 'SENTENCIA',
'from_date' => '2020-01-01',
'to_date' => '2020-12-31'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.croma.run/co/consejo-estado/search/v1"
payload := strings.NewReader("{\n \"section\": \"SECCION TERCERA\",\n \"type\": \"SENTENCIA\",\n \"from_date\": \"2020-01-01\",\n \"to_date\": \"2020-12-31\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.croma.run/co/consejo-estado/search/v1")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"section\": \"SECCION TERCERA\",\n \"type\": \"SENTENCIA\",\n \"from_date\": \"2020-01-01\",\n \"to_date\": \"2020-12-31\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.croma.run/co/consejo-estado/search/v1")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"section\": \"SECCION TERCERA\",\n \"type\": \"SENTENCIA\",\n \"from_date\": \"2020-01-01\",\n \"to_date\": \"2020-12-31\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"seccion": "<string>",
"tipo": "",
"fecha_desde": "<string>",
"fecha_hasta": "<string>",
"numero_proceso": "<string>",
"ponente": "<string>",
"demandante": "<string>",
"demandado": "<string>",
"total": 123,
"page": 123,
"per_page": 123,
"count": 123,
"results": [
{
"radicado": "<string>",
"tipo": "AUTO",
"seccion": "<string>",
"fecha": "<string>",
"ponente": "<string>",
"demandante": "<string>",
"demandado": "<string>",
"norma_demandada": "<string>",
"descriptores": [
"<string>"
],
"es_unificacion": true,
"es_extension": true,
"url": "<string>"
}
]
}
}{
"job": {
"id": "<string>",
"status": "queued",
"endpoint": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"finished_at": "2023-11-07T05:31:56Z",
"status_url": "<string>"
},
"data": {},
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}Consejo de Estado Jurisprudence Search
Search the Relatoría del Consejo de Estado’s traditional jurisprudence corpus (broadly providencias before December 2021) by section, type, date window, radicado, ponente, party or challenged rule. Each row carries the providencia’s metadata plus a url permalink to feed to consejo-estado-providencia. For December 2021 onward use the SAMAI endpoints.
Supports async delivery: set Prefer: wait=N for an inline result, pass callback_url to receive a POST when ready, or poll GET /jobs/{id}.
curl --request POST \
--url https://api.croma.run/co/consejo-estado/search/v1 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"section": "SECCION TERCERA",
"type": "SENTENCIA",
"from_date": "2020-01-01",
"to_date": "2020-12-31"
}
'import requests
url = "https://api.croma.run/co/consejo-estado/search/v1"
payload = {
"section": "SECCION TERCERA",
"type": "SENTENCIA",
"from_date": "2020-01-01",
"to_date": "2020-12-31"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
section: 'SECCION TERCERA',
type: 'SENTENCIA',
from_date: '2020-01-01',
to_date: '2020-12-31'
})
};
fetch('https://api.croma.run/co/consejo-estado/search/v1', 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.croma.run/co/consejo-estado/search/v1",
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([
'section' => 'SECCION TERCERA',
'type' => 'SENTENCIA',
'from_date' => '2020-01-01',
'to_date' => '2020-12-31'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.croma.run/co/consejo-estado/search/v1"
payload := strings.NewReader("{\n \"section\": \"SECCION TERCERA\",\n \"type\": \"SENTENCIA\",\n \"from_date\": \"2020-01-01\",\n \"to_date\": \"2020-12-31\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.croma.run/co/consejo-estado/search/v1")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"section\": \"SECCION TERCERA\",\n \"type\": \"SENTENCIA\",\n \"from_date\": \"2020-01-01\",\n \"to_date\": \"2020-12-31\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.croma.run/co/consejo-estado/search/v1")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"section\": \"SECCION TERCERA\",\n \"type\": \"SENTENCIA\",\n \"from_date\": \"2020-01-01\",\n \"to_date\": \"2020-12-31\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"seccion": "<string>",
"tipo": "",
"fecha_desde": "<string>",
"fecha_hasta": "<string>",
"numero_proceso": "<string>",
"ponente": "<string>",
"demandante": "<string>",
"demandado": "<string>",
"total": 123,
"page": 123,
"per_page": 123,
"count": 123,
"results": [
{
"radicado": "<string>",
"tipo": "AUTO",
"seccion": "<string>",
"fecha": "<string>",
"ponente": "<string>",
"demandante": "<string>",
"demandado": "<string>",
"norma_demandada": "<string>",
"descriptores": [
"<string>"
],
"es_unificacion": true,
"es_extension": true,
"url": "<string>"
}
]
}
}{
"job": {
"id": "<string>",
"status": "queued",
"endpoint": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"finished_at": "2023-11-07T05:31:56Z",
"status_url": "<string>"
},
"data": {},
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}Authorizations
Use Authorization: Bearer YOUR_API_KEY
Headers
Optional client-chosen key for this request (any string up to 255 characters, e.g. a UUID). Every Croma operation is an idempotent lookup: repeating a request with the same body returns the same result and creates nothing, so retrying after a timeout or network failure is always safe. The key is echoed back in the Idempotency-Key response header so you can correlate a retry with its first attempt. Each attempt that reaches the API counts against the rate limit.
255"0f8e9a42-6b7c-4d1e-9a3f-2c5d7e8f9a0b"
Set wait=N to hold the connection up to N seconds for an inline result. If the job finishes in time you get the normal 200 body; otherwise a 202 with a status_url to poll.
"wait=30"
Body
Optional section filter (e.g. SECCION TERCERA, SALA PLENA). Empty means all sections.
80Filter by providencia type; empty means any.
, AUTO, CONCEPTO, SENTENCIA Optional número de proceso (radicado) filter.
40Optional consejero ponente filter.
120Optional demandante (actor) filter.
120Optional demandado filter.
120Optional norma o acto demandado filter.
120Optional date filter in yyyy-mm-dd format.
Optional date filter in yyyy-mm-dd format.
1-based page number for paginated results.
1 <= x <= 1000Results per page (max 20). The source returns one record per view, so larger pages take proportionally longer.
1 <= x <= 20POST the job result here when it finishes.
Response
Successful response
Show child attributes
Show child attributes