curl --request POST \
--url https://api.croma.run/global/generate/json/v1 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "https://www.funcionpublica.gov.co/eva/gestornormativo/norma.php?i=304",
"instructions": "Resume la norma en dos frases y clasifica su materia principal.",
"json_schema": {
"type": "object",
"required": [
"summary",
"subject"
],
"properties": {
"summary": {
"type": "string"
},
"subject": {
"type": "string"
}
}
}
}
'import requests
url = "https://api.croma.run/global/generate/json/v1"
payload = {
"url": "https://www.funcionpublica.gov.co/eva/gestornormativo/norma.php?i=304",
"instructions": "Resume la norma en dos frases y clasifica su materia principal.",
"json_schema": {
"type": "object",
"required": ["summary", "subject"],
"properties": {
"summary": { "type": "string" },
"subject": { "type": "string" }
}
}
}
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({
url: 'https://www.funcionpublica.gov.co/eva/gestornormativo/norma.php?i=304',
instructions: 'Resume la norma en dos frases y clasifica su materia principal.',
json_schema: {
type: 'object',
required: ['summary', 'subject'],
properties: {summary: {type: 'string'}, subject: {type: 'string'}}
}
})
};
fetch('https://api.croma.run/global/generate/json/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/global/generate/json/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([
'url' => 'https://www.funcionpublica.gov.co/eva/gestornormativo/norma.php?i=304',
'instructions' => 'Resume la norma en dos frases y clasifica su materia principal.',
'json_schema' => [
'type' => 'object',
'required' => [
'summary',
'subject'
],
'properties' => [
'summary' => [
'type' => 'string'
],
'subject' => [
'type' => 'string'
]
]
]
]),
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/global/generate/json/v1"
payload := strings.NewReader("{\n \"url\": \"https://www.funcionpublica.gov.co/eva/gestornormativo/norma.php?i=304\",\n \"instructions\": \"Resume la norma en dos frases y clasifica su materia principal.\",\n \"json_schema\": {\n \"type\": \"object\",\n \"required\": [\n \"summary\",\n \"subject\"\n ],\n \"properties\": {\n \"summary\": {\n \"type\": \"string\"\n },\n \"subject\": {\n \"type\": \"string\"\n }\n }\n }\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/global/generate/json/v1")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"https://www.funcionpublica.gov.co/eva/gestornormativo/norma.php?i=304\",\n \"instructions\": \"Resume la norma en dos frases y clasifica su materia principal.\",\n \"json_schema\": {\n \"type\": \"object\",\n \"required\": [\n \"summary\",\n \"subject\"\n ],\n \"properties\": {\n \"summary\": {\n \"type\": \"string\"\n },\n \"subject\": {\n \"type\": \"string\"\n }\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.croma.run/global/generate/json/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 \"url\": \"https://www.funcionpublica.gov.co/eva/gestornormativo/norma.php?i=304\",\n \"instructions\": \"Resume la norma en dos frases y clasifica su materia principal.\",\n \"json_schema\": {\n \"type\": \"object\",\n \"required\": [\n \"summary\",\n \"subject\"\n ],\n \"properties\": {\n \"summary\": {\n \"type\": \"string\"\n },\n \"subject\": {\n \"type\": \"string\"\n }\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"url": "<string>",
"result": {}
}
}{
"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": {}
}
}{
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"details": {}
}
}Read a public web page and return a new object built from it, following your instructions and your JSON Schema. Unlike extract-json, the fields need not appear on the page: summarize, classify, translate or reshape what is there.
curl --request POST \
--url https://api.croma.run/global/generate/json/v1 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"url": "https://www.funcionpublica.gov.co/eva/gestornormativo/norma.php?i=304",
"instructions": "Resume la norma en dos frases y clasifica su materia principal.",
"json_schema": {
"type": "object",
"required": [
"summary",
"subject"
],
"properties": {
"summary": {
"type": "string"
},
"subject": {
"type": "string"
}
}
}
}
'import requests
url = "https://api.croma.run/global/generate/json/v1"
payload = {
"url": "https://www.funcionpublica.gov.co/eva/gestornormativo/norma.php?i=304",
"instructions": "Resume la norma en dos frases y clasifica su materia principal.",
"json_schema": {
"type": "object",
"required": ["summary", "subject"],
"properties": {
"summary": { "type": "string" },
"subject": { "type": "string" }
}
}
}
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({
url: 'https://www.funcionpublica.gov.co/eva/gestornormativo/norma.php?i=304',
instructions: 'Resume la norma en dos frases y clasifica su materia principal.',
json_schema: {
type: 'object',
required: ['summary', 'subject'],
properties: {summary: {type: 'string'}, subject: {type: 'string'}}
}
})
};
fetch('https://api.croma.run/global/generate/json/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/global/generate/json/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([
'url' => 'https://www.funcionpublica.gov.co/eva/gestornormativo/norma.php?i=304',
'instructions' => 'Resume la norma en dos frases y clasifica su materia principal.',
'json_schema' => [
'type' => 'object',
'required' => [
'summary',
'subject'
],
'properties' => [
'summary' => [
'type' => 'string'
],
'subject' => [
'type' => 'string'
]
]
]
]),
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/global/generate/json/v1"
payload := strings.NewReader("{\n \"url\": \"https://www.funcionpublica.gov.co/eva/gestornormativo/norma.php?i=304\",\n \"instructions\": \"Resume la norma en dos frases y clasifica su materia principal.\",\n \"json_schema\": {\n \"type\": \"object\",\n \"required\": [\n \"summary\",\n \"subject\"\n ],\n \"properties\": {\n \"summary\": {\n \"type\": \"string\"\n },\n \"subject\": {\n \"type\": \"string\"\n }\n }\n }\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/global/generate/json/v1")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"url\": \"https://www.funcionpublica.gov.co/eva/gestornormativo/norma.php?i=304\",\n \"instructions\": \"Resume la norma en dos frases y clasifica su materia principal.\",\n \"json_schema\": {\n \"type\": \"object\",\n \"required\": [\n \"summary\",\n \"subject\"\n ],\n \"properties\": {\n \"summary\": {\n \"type\": \"string\"\n },\n \"subject\": {\n \"type\": \"string\"\n }\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.croma.run/global/generate/json/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 \"url\": \"https://www.funcionpublica.gov.co/eva/gestornormativo/norma.php?i=304\",\n \"instructions\": \"Resume la norma en dos frases y clasifica su materia principal.\",\n \"json_schema\": {\n \"type\": \"object\",\n \"required\": [\n \"summary\",\n \"subject\"\n ],\n \"properties\": {\n \"summary\": {\n \"type\": \"string\"\n },\n \"subject\": {\n \"type\": \"string\"\n }\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"url": "<string>",
"result": {}
}
}{
"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": {}
}
}{
"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
Public http or https URL of the page to read. Loopback and private addresses are not accepted.
2000What to do with the page: summarize, classify, translate, reformat. Write it as you would brief an analyst.
3 - 20000JSON Schema for the object to return. Field names and nesting are yours; describe each field so it can be located on the page.
Effort to spend on the page: min is fastest and may serve a recent copy, standard is the balanced default, max always reads the page live and handles pages that render themselves in the browser.
min, standard, max Response
Successful response
Show child attributes
Show child attributes