curl --request POST \
--url https://api.example.com/v1/analyses/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"name": "<string>",
"urls": [
"<string>"
],
"structured_prompts": {
"ids": [
"prompt_01h45ytscbebyvny4gc8cr8ma2"
],
"definitions": [
{
"name": "<string>",
"description": "Extracts what a company does and whether it is generalist or specialist.",
"prompt": "Given the page content, answer the questions according to the schema.",
"response_schema": {
"draft_07": {
"enum": [
"generalist",
"specialist"
],
"type": "string"
}
}
}
]
},
"description": "<string>",
"config": {
"normalize_input_to_domains": true,
"max_pages": 5
}
}
'import requests
url = "https://api.example.com/v1/analyses/"
payload = {
"name": "<string>",
"urls": ["<string>"],
"structured_prompts": {
"ids": ["prompt_01h45ytscbebyvny4gc8cr8ma2"],
"definitions": [
{
"name": "<string>",
"description": "Extracts what a company does and whether it is generalist or specialist.",
"prompt": "Given the page content, answer the questions according to the schema.",
"response_schema": { "draft_07": {
"enum": ["generalist", "specialist"],
"type": "string"
} }
}
]
},
"description": "<string>",
"config": {
"normalize_input_to_domains": True,
"max_pages": 5
}
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
urls: ['<string>'],
structured_prompts: {
ids: ['prompt_01h45ytscbebyvny4gc8cr8ma2'],
definitions: [
{
name: '<string>',
description: 'Extracts what a company does and whether it is generalist or specialist.',
prompt: 'Given the page content, answer the questions according to the schema.',
response_schema: {draft_07: {enum: ['generalist', 'specialist'], type: 'string'}}
}
]
},
description: '<string>',
config: {normalize_input_to_domains: true, max_pages: 5}
})
};
fetch('https://api.example.com/v1/analyses/', 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.example.com/v1/analyses/",
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([
'name' => '<string>',
'urls' => [
'<string>'
],
'structured_prompts' => [
'ids' => [
'prompt_01h45ytscbebyvny4gc8cr8ma2'
],
'definitions' => [
[
'name' => '<string>',
'description' => 'Extracts what a company does and whether it is generalist or specialist.',
'prompt' => 'Given the page content, answer the questions according to the schema.',
'response_schema' => [
'draft_07' => [
'enum' => [
'generalist',
'specialist'
],
'type' => 'string'
]
]
]
]
],
'description' => '<string>',
'config' => [
'normalize_input_to_domains' => true,
'max_pages' => 5
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/analyses/"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"urls\": [\n \"<string>\"\n ],\n \"structured_prompts\": {\n \"ids\": [\n \"prompt_01h45ytscbebyvny4gc8cr8ma2\"\n ],\n \"definitions\": [\n {\n \"name\": \"<string>\",\n \"description\": \"Extracts what a company does and whether it is generalist or specialist.\",\n \"prompt\": \"Given the page content, answer the questions according to the schema.\",\n \"response_schema\": {\n \"draft_07\": {\n \"enum\": [\n \"generalist\",\n \"specialist\"\n ],\n \"type\": \"string\"\n }\n }\n }\n ]\n },\n \"description\": \"<string>\",\n \"config\": {\n \"normalize_input_to_domains\": true,\n \"max_pages\": 5\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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.example.com/v1/analyses/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"urls\": [\n \"<string>\"\n ],\n \"structured_prompts\": {\n \"ids\": [\n \"prompt_01h45ytscbebyvny4gc8cr8ma2\"\n ],\n \"definitions\": [\n {\n \"name\": \"<string>\",\n \"description\": \"Extracts what a company does and whether it is generalist or specialist.\",\n \"prompt\": \"Given the page content, answer the questions according to the schema.\",\n \"response_schema\": {\n \"draft_07\": {\n \"enum\": [\n \"generalist\",\n \"specialist\"\n ],\n \"type\": \"string\"\n }\n }\n }\n ]\n },\n \"description\": \"<string>\",\n \"config\": {\n \"normalize_input_to_domains\": true,\n \"max_pages\": 5\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/analyses/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"urls\": [\n \"<string>\"\n ],\n \"structured_prompts\": {\n \"ids\": [\n \"prompt_01h45ytscbebyvny4gc8cr8ma2\"\n ],\n \"definitions\": [\n {\n \"name\": \"<string>\",\n \"description\": \"Extracts what a company does and whether it is generalist or specialist.\",\n \"prompt\": \"Given the page content, answer the questions according to the schema.\",\n \"response_schema\": {\n \"draft_07\": {\n \"enum\": [\n \"generalist\",\n \"specialist\"\n ],\n \"type\": \"string\"\n }\n }\n }\n ]\n },\n \"description\": \"<string>\",\n \"config\": {\n \"normalize_input_to_domains\": true,\n \"max_pages\": 5\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "<string>",
"name": "<string>",
"owner": "<string>",
"prompts": {
"count": 123,
"ids": [
{
"id": "<string>",
"idx": 123
}
]
},
"urls": {
"count": 123,
"urls": [
"<string>"
]
},
"created_at": 123,
"description": "<string>"
},
"response_type": "AnalysisCreateResponse",
"links": []
}{
"data": {
"title": "Request Validation Error",
"status": 422,
"detail": "Request validation failed",
"instance": "https://urlyourequest.com/path?query=value"
},
"response_type": "ErrorResponse"
}{
"data": {
"title": "Unauthorized",
"status": 401,
"detail": "Authentication required",
"instance": "https://urlyourequest.com/path?query=value"
},
"response_type": "ErrorResponse"
}{
"data": {
"title": "Payment Required",
"status": 402,
"detail": "Payment required",
"instance": "https://urlyourequest.com/path?query=value"
},
"response_type": "ErrorResponse"
}{
"data": {
"title": "Forbidden",
"status": 403,
"detail": "Access forbidden",
"instance": "https://urlyourequest.com/path?query=value"
},
"response_type": "ErrorResponse"
}{
"data": {
"title": "Request Validation Error",
"status": 422,
"detail": "Request validation failed",
"instance": "https://urlyourequest.com/path?query=value"
},
"response_type": "ErrorResponse"
}{
"data": {
"title": "Internal Server Error",
"status": 500,
"detail": "Internal server error",
"instance": "https://urlyourequest.com/path?query=value"
},
"response_type": "ErrorResponse"
}Create Analysis
Create a new analysis with URLs and structured prompts.
This endpoint creates an analysis but does NOT automatically run it. Use POST //run to start processing after creation.
Accepts either existing structured prompt IDs or new prompt definitions. You must provide exactly one of these options.
curl --request POST \
--url https://api.example.com/v1/analyses/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"name": "<string>",
"urls": [
"<string>"
],
"structured_prompts": {
"ids": [
"prompt_01h45ytscbebyvny4gc8cr8ma2"
],
"definitions": [
{
"name": "<string>",
"description": "Extracts what a company does and whether it is generalist or specialist.",
"prompt": "Given the page content, answer the questions according to the schema.",
"response_schema": {
"draft_07": {
"enum": [
"generalist",
"specialist"
],
"type": "string"
}
}
}
]
},
"description": "<string>",
"config": {
"normalize_input_to_domains": true,
"max_pages": 5
}
}
'import requests
url = "https://api.example.com/v1/analyses/"
payload = {
"name": "<string>",
"urls": ["<string>"],
"structured_prompts": {
"ids": ["prompt_01h45ytscbebyvny4gc8cr8ma2"],
"definitions": [
{
"name": "<string>",
"description": "Extracts what a company does and whether it is generalist or specialist.",
"prompt": "Given the page content, answer the questions according to the schema.",
"response_schema": { "draft_07": {
"enum": ["generalist", "specialist"],
"type": "string"
} }
}
]
},
"description": "<string>",
"config": {
"normalize_input_to_domains": True,
"max_pages": 5
}
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
urls: ['<string>'],
structured_prompts: {
ids: ['prompt_01h45ytscbebyvny4gc8cr8ma2'],
definitions: [
{
name: '<string>',
description: 'Extracts what a company does and whether it is generalist or specialist.',
prompt: 'Given the page content, answer the questions according to the schema.',
response_schema: {draft_07: {enum: ['generalist', 'specialist'], type: 'string'}}
}
]
},
description: '<string>',
config: {normalize_input_to_domains: true, max_pages: 5}
})
};
fetch('https://api.example.com/v1/analyses/', 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.example.com/v1/analyses/",
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([
'name' => '<string>',
'urls' => [
'<string>'
],
'structured_prompts' => [
'ids' => [
'prompt_01h45ytscbebyvny4gc8cr8ma2'
],
'definitions' => [
[
'name' => '<string>',
'description' => 'Extracts what a company does and whether it is generalist or specialist.',
'prompt' => 'Given the page content, answer the questions according to the schema.',
'response_schema' => [
'draft_07' => [
'enum' => [
'generalist',
'specialist'
],
'type' => 'string'
]
]
]
]
],
'description' => '<string>',
'config' => [
'normalize_input_to_domains' => true,
'max_pages' => 5
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/analyses/"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"urls\": [\n \"<string>\"\n ],\n \"structured_prompts\": {\n \"ids\": [\n \"prompt_01h45ytscbebyvny4gc8cr8ma2\"\n ],\n \"definitions\": [\n {\n \"name\": \"<string>\",\n \"description\": \"Extracts what a company does and whether it is generalist or specialist.\",\n \"prompt\": \"Given the page content, answer the questions according to the schema.\",\n \"response_schema\": {\n \"draft_07\": {\n \"enum\": [\n \"generalist\",\n \"specialist\"\n ],\n \"type\": \"string\"\n }\n }\n }\n ]\n },\n \"description\": \"<string>\",\n \"config\": {\n \"normalize_input_to_domains\": true,\n \"max_pages\": 5\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
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.example.com/v1/analyses/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"urls\": [\n \"<string>\"\n ],\n \"structured_prompts\": {\n \"ids\": [\n \"prompt_01h45ytscbebyvny4gc8cr8ma2\"\n ],\n \"definitions\": [\n {\n \"name\": \"<string>\",\n \"description\": \"Extracts what a company does and whether it is generalist or specialist.\",\n \"prompt\": \"Given the page content, answer the questions according to the schema.\",\n \"response_schema\": {\n \"draft_07\": {\n \"enum\": [\n \"generalist\",\n \"specialist\"\n ],\n \"type\": \"string\"\n }\n }\n }\n ]\n },\n \"description\": \"<string>\",\n \"config\": {\n \"normalize_input_to_domains\": true,\n \"max_pages\": 5\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/analyses/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"urls\": [\n \"<string>\"\n ],\n \"structured_prompts\": {\n \"ids\": [\n \"prompt_01h45ytscbebyvny4gc8cr8ma2\"\n ],\n \"definitions\": [\n {\n \"name\": \"<string>\",\n \"description\": \"Extracts what a company does and whether it is generalist or specialist.\",\n \"prompt\": \"Given the page content, answer the questions according to the schema.\",\n \"response_schema\": {\n \"draft_07\": {\n \"enum\": [\n \"generalist\",\n \"specialist\"\n ],\n \"type\": \"string\"\n }\n }\n }\n ]\n },\n \"description\": \"<string>\",\n \"config\": {\n \"normalize_input_to_domains\": true,\n \"max_pages\": 5\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "<string>",
"name": "<string>",
"owner": "<string>",
"prompts": {
"count": 123,
"ids": [
{
"id": "<string>",
"idx": 123
}
]
},
"urls": {
"count": 123,
"urls": [
"<string>"
]
},
"created_at": 123,
"description": "<string>"
},
"response_type": "AnalysisCreateResponse",
"links": []
}{
"data": {
"title": "Request Validation Error",
"status": 422,
"detail": "Request validation failed",
"instance": "https://urlyourequest.com/path?query=value"
},
"response_type": "ErrorResponse"
}{
"data": {
"title": "Unauthorized",
"status": 401,
"detail": "Authentication required",
"instance": "https://urlyourequest.com/path?query=value"
},
"response_type": "ErrorResponse"
}{
"data": {
"title": "Payment Required",
"status": 402,
"detail": "Payment required",
"instance": "https://urlyourequest.com/path?query=value"
},
"response_type": "ErrorResponse"
}{
"data": {
"title": "Forbidden",
"status": 403,
"detail": "Access forbidden",
"instance": "https://urlyourequest.com/path?query=value"
},
"response_type": "ErrorResponse"
}{
"data": {
"title": "Request Validation Error",
"status": 422,
"detail": "Request validation failed",
"instance": "https://urlyourequest.com/path?query=value"
},
"response_type": "ErrorResponse"
}{
"data": {
"title": "Internal Server Error",
"status": 500,
"detail": "Internal server error",
"instance": "https://urlyourequest.com/path?query=value"
},
"response_type": "ErrorResponse"
}Authorizations
API Key for external integrations (format: greetincs_...)
Body
Request schema for creating analysis with URLs and structured prompts.
1 - 255List of URLs to analyze
1Input for structured prompts - either refs or full definitions.
Show child attributes
Show child attributes
1000Optional workflow configuration. If not provided, defaults are used.
Show child attributes
Show child attributes
Response
Successful Response
Basic analysis API response.
Basic analysis creation data.
Show child attributes
Show child attributes
HATEOAS links related to this response (e.g., self, next, prev)
Show child attributes
Show child attributes
[
{
"href": "/resource/{resource_id}",
"method": "GET",
"rel": "self",
"title": "Resource Details"
},
{
"href": "/resource/{resource_id}/related",
"method": "GET",
"rel": "related",
"title": "Related Resources"
}
]