curl --request POST \
--url https://api.croma.run/sv/csj-sv/rulings-search/v1 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "debido proceso",
"court_type": "sala",
"subject": "constitucional"
}
'import requests
url = "https://api.croma.run/sv/csj-sv/rulings-search/v1"
payload = {
"query": "debido proceso",
"court_type": "sala",
"subject": "constitucional"
}
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({query: 'debido proceso', court_type: 'sala', subject: 'constitucional'})
};
fetch('https://api.croma.run/sv/csj-sv/rulings-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/sv/csj-sv/rulings-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([
'query' => 'debido proceso',
'court_type' => 'sala',
'subject' => 'constitucional'
]),
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/sv/csj-sv/rulings-search/v1"
payload := strings.NewReader("{\n \"query\": \"debido proceso\",\n \"court_type\": \"sala\",\n \"subject\": \"constitucional\"\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/sv/csj-sv/rulings-search/v1")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"debido proceso\",\n \"court_type\": \"sala\",\n \"subject\": \"constitucional\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.croma.run/sv/csj-sv/rulings-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 \"query\": \"debido proceso\",\n \"court_type\": \"sala\",\n \"subject\": \"constitucional\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"as_of": "<string>",
"query": "<string>",
"court_type": "<string>",
"court": "<string>",
"subject": "<string>",
"proceeding_type": "<string>",
"type": "<string>",
"crime": "<string>",
"registration_number": "<string>",
"year": 123,
"from_date": "<string>",
"to_date": "<string>",
"total": 123,
"page": 123,
"per_page": 123,
"total_pages": 123,
"count": 123,
"results": [
{
"id": "<string>",
"registration_number": "<string>",
"ruling_date": "<string>",
"year": 123,
"court_type": "corte_plena",
"court": "<string>",
"subject": "<string>",
"proceeding_type": "<string>",
"type": "<string>",
"appeal_type": "<string>",
"lawsuit_type": "<string>",
"decision": "<string>",
"facts": "<string>",
"crimes": [
"<string>"
],
"lower_courts": "<string>",
"courts_in_conflict": "<string>",
"challenged_act": "<string>",
"rights_invoked": "<string>",
"grounds": [
"<string>"
],
"applied_law": "<string>",
"other_fields": [
{
"label": "<string>",
"value": "<string>"
}
],
"descriptors": [
"<string>"
],
"extracts": [
{
"descriptor": "<string>",
"restrictors": [
"<string>"
]
}
],
"text_status": "ok",
"official_url": "<string>",
"document_url": "<string>",
"source_document_url": "<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": {}
}
}Corte Suprema de Justicia de El Salvador Rulings Search
Search the jurisprudencia the Corte Suprema de Justicia de El Salvador publishes: every resolution since 1951 from the Corte Plena and its Salas to the Cámaras, Tribunales de Sentencia and Juzgados. Free text matches the reference number, the court, the decision, the facts, the headnotes and the full text. Filter by court_type, court, subject (the area of law), proceeding_type, type (the kind of resolution), crime, registration_number (the reference number), year and the ruling date (from_date/to_date). Each result carries the original document, kept by Croma, and links to the record and the document on the court’s own site. Served by Croma (as_of says how current the data is).
Dataset endpoint: answers from the whole source in milliseconds and carries as_of.
curl --request POST \
--url https://api.croma.run/sv/csj-sv/rulings-search/v1 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "debido proceso",
"court_type": "sala",
"subject": "constitucional"
}
'import requests
url = "https://api.croma.run/sv/csj-sv/rulings-search/v1"
payload = {
"query": "debido proceso",
"court_type": "sala",
"subject": "constitucional"
}
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({query: 'debido proceso', court_type: 'sala', subject: 'constitucional'})
};
fetch('https://api.croma.run/sv/csj-sv/rulings-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/sv/csj-sv/rulings-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([
'query' => 'debido proceso',
'court_type' => 'sala',
'subject' => 'constitucional'
]),
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/sv/csj-sv/rulings-search/v1"
payload := strings.NewReader("{\n \"query\": \"debido proceso\",\n \"court_type\": \"sala\",\n \"subject\": \"constitucional\"\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/sv/csj-sv/rulings-search/v1")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"debido proceso\",\n \"court_type\": \"sala\",\n \"subject\": \"constitucional\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.croma.run/sv/csj-sv/rulings-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 \"query\": \"debido proceso\",\n \"court_type\": \"sala\",\n \"subject\": \"constitucional\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"as_of": "<string>",
"query": "<string>",
"court_type": "<string>",
"court": "<string>",
"subject": "<string>",
"proceeding_type": "<string>",
"type": "<string>",
"crime": "<string>",
"registration_number": "<string>",
"year": 123,
"from_date": "<string>",
"to_date": "<string>",
"total": 123,
"page": 123,
"per_page": 123,
"total_pages": 123,
"count": 123,
"results": [
{
"id": "<string>",
"registration_number": "<string>",
"ruling_date": "<string>",
"year": 123,
"court_type": "corte_plena",
"court": "<string>",
"subject": "<string>",
"proceeding_type": "<string>",
"type": "<string>",
"appeal_type": "<string>",
"lawsuit_type": "<string>",
"decision": "<string>",
"facts": "<string>",
"crimes": [
"<string>"
],
"lower_courts": "<string>",
"courts_in_conflict": "<string>",
"challenged_act": "<string>",
"rights_invoked": "<string>",
"grounds": [
"<string>"
],
"applied_law": "<string>",
"other_fields": [
{
"label": "<string>",
"value": "<string>"
}
],
"descriptors": [
"<string>"
],
"extracts": [
{
"descriptor": "<string>",
"restrictors": [
"<string>"
]
}
],
"text_status": "ok",
"official_url": "<string>",
"document_url": "<string>",
"source_document_url": "<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"
Body
Optional search terms matched against the reference number, the court, the decision, the facts, the headnotes and the full text.
300Optional level of the court: corte_plena, sala (the Salas of the Corte Suprema), camara (the second-instance Cámaras), tribunal_de_sentencia or juzgado.
, corte_plena, sala, camara, tribunal_de_sentencia, juzgado Optional court as court names it, e.g. Sala de lo Constitucional, matched from the start of the name. Case and accents are ignored.
160Optional area of law as subject names it, e.g. Penal, Familia, Civil y Mercantil, Constitucional, Laboral, matched from the start. Case and accents are ignored.
120Optional kind of proceeding as proceeding_type names it, e.g. Amparo, Hábeas corpus, Inconstitucionalidad, matched from the start. Case and accents are ignored.
160Optional kind of resolution as type names it, e.g. Sentencias definitivas, Interlocutorias, Improcedencias, matched from the start. Case and accents are ignored.
120Optional crime as it appears in crimes, e.g. Homicidio agravado, matched in full. Case and accents are ignored.
200Optional reference number (N°) as the court prints it, e.g. 49COMP2026 or 86-CAC-2026. Returns every resolution of that reference. Case, spaces and punctuation are ignored.
80Optional year of the resolution. 0 searches every year.
0 <= x <= 2100Optional 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 (1-50).
1 <= x <= 50Response
Successful response
Show child attributes
Show child attributes