Create Horse
curl --request POST \
--url https://api.example.com/api/horses \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"age": 123,
"breed": "<string>",
"discipline": "<string>",
"pedigree": "<string>",
"location": {
"country": "<string>",
"region": "<string>",
"city": "<string>",
"coordinates": {
"lat": 123,
"lng": 123
}
},
"price": 123,
"currency": "<string>",
"photos": [
{
"url": "<string>",
"caption": "<string>",
"is_cover": true
}
],
"videos": [
{
"url": "<string>",
"video_type": "<string>",
"title": "<string>",
"description": "<string>",
"recorded_at": "<string>"
}
]
}
'import requests
url = "https://api.example.com/api/horses"
payload = {
"name": "<string>",
"age": 123,
"breed": "<string>",
"discipline": "<string>",
"pedigree": "<string>",
"location": {
"country": "<string>",
"region": "<string>",
"city": "<string>",
"coordinates": {
"lat": 123,
"lng": 123
}
},
"price": 123,
"currency": "<string>",
"photos": [
{
"url": "<string>",
"caption": "<string>",
"is_cover": True
}
],
"videos": [
{
"url": "<string>",
"video_type": "<string>",
"title": "<string>",
"description": "<string>",
"recorded_at": "<string>"
}
]
}
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({
name: '<string>',
age: 123,
breed: '<string>',
discipline: '<string>',
pedigree: '<string>',
location: {
country: '<string>',
region: '<string>',
city: '<string>',
coordinates: {lat: 123, lng: 123}
},
price: 123,
currency: '<string>',
photos: [{url: '<string>', caption: '<string>', is_cover: true}],
videos: [
{
url: '<string>',
video_type: '<string>',
title: '<string>',
description: '<string>',
recorded_at: '<string>'
}
]
})
};
fetch('https://api.example.com/api/horses', 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/api/horses",
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>',
'age' => 123,
'breed' => '<string>',
'discipline' => '<string>',
'pedigree' => '<string>',
'location' => [
'country' => '<string>',
'region' => '<string>',
'city' => '<string>',
'coordinates' => [
'lat' => 123,
'lng' => 123
]
],
'price' => 123,
'currency' => '<string>',
'photos' => [
[
'url' => '<string>',
'caption' => '<string>',
'is_cover' => true
]
],
'videos' => [
[
'url' => '<string>',
'video_type' => '<string>',
'title' => '<string>',
'description' => '<string>',
'recorded_at' => '<string>'
]
]
]),
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.example.com/api/horses"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"age\": 123,\n \"breed\": \"<string>\",\n \"discipline\": \"<string>\",\n \"pedigree\": \"<string>\",\n \"location\": {\n \"country\": \"<string>\",\n \"region\": \"<string>\",\n \"city\": \"<string>\",\n \"coordinates\": {\n \"lat\": 123,\n \"lng\": 123\n }\n },\n \"price\": 123,\n \"currency\": \"<string>\",\n \"photos\": [\n {\n \"url\": \"<string>\",\n \"caption\": \"<string>\",\n \"is_cover\": true\n }\n ],\n \"videos\": [\n {\n \"url\": \"<string>\",\n \"video_type\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"recorded_at\": \"<string>\"\n }\n ]\n}")
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.example.com/api/horses")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"age\": 123,\n \"breed\": \"<string>\",\n \"discipline\": \"<string>\",\n \"pedigree\": \"<string>\",\n \"location\": {\n \"country\": \"<string>\",\n \"region\": \"<string>\",\n \"city\": \"<string>\",\n \"coordinates\": {\n \"lat\": 123,\n \"lng\": 123\n }\n },\n \"price\": 123,\n \"currency\": \"<string>\",\n \"photos\": [\n {\n \"url\": \"<string>\",\n \"caption\": \"<string>\",\n \"is_cover\": true\n }\n ],\n \"videos\": [\n {\n \"url\": \"<string>\",\n \"video_type\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"recorded_at\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/horses")
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 = "{\n \"name\": \"<string>\",\n \"age\": 123,\n \"breed\": \"<string>\",\n \"discipline\": \"<string>\",\n \"pedigree\": \"<string>\",\n \"location\": {\n \"country\": \"<string>\",\n \"region\": \"<string>\",\n \"city\": \"<string>\",\n \"coordinates\": {\n \"lat\": 123,\n \"lng\": 123\n }\n },\n \"price\": 123,\n \"currency\": \"<string>\",\n \"photos\": [\n {\n \"url\": \"<string>\",\n \"caption\": \"<string>\",\n \"is_cover\": true\n }\n ],\n \"videos\": [\n {\n \"url\": \"<string>\",\n \"video_type\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"recorded_at\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Horse listing created",
"data": {
"_id": "507f1f77bcf86cd799439011",
"seller_id": "507f191e810c19729de860ea",
"name": "Thunder",
"age": 8,
"breed": "Thoroughbred",
"discipline": "Show Jumping",
"pedigree": "Sire: Storm Cat, Dam: Winning Colors",
"location": {
"country": "Argentina",
"region": "Buenos Aires",
"city": "San Isidro",
"coordinates": {
"lat": -34.4708,
"lng": -58.5247
}
},
"price": 45000,
"currency": "USD",
"photos": [
{
"_id": "65f1a2b3c4d5e6f7g8h9i0j1",
"url": "https://cdn.horsetrust.com/photos/abc123.jpg",
"caption": "Thunder at competition",
"is_cover": true,
"uploaded_at": "2026-03-05T10:00:00Z"
},
{
"_id": "65f1a2b3c4d5e6f7g8h9i0j2",
"url": "https://cdn.horsetrust.com/photos/abc124.jpg",
"caption": "Side view",
"is_cover": false,
"uploaded_at": "2026-03-05T10:00:00Z"
},
{
"_id": "65f1a2b3c4d5e6f7g8h9i0j3",
"url": "https://cdn.horsetrust.com/photos/abc125.jpg",
"caption": "Training session",
"is_cover": false,
"uploaded_at": "2026-03-05T10:00:00Z"
}
],
"videos": [
{
"_id": "65f1a2b3c4d5e6f7g8h9i0j4",
"url": "https://youtube.com/watch?v=abc123",
"embed_url": "https://www.youtube.com/embed/abc123",
"video_type": "competition",
"title": "Thunder jumping 1.40m",
"recorded_at": "2026-02-15T00:00:00Z",
"uploaded_at": "2026-03-05T10:00:00Z"
}
],
"status": "draft",
"views_count": 0,
"created_at": "2026-03-05T10:00:00Z",
"updated_at": "2026-03-05T10:00:00Z"
}
}
Horses
Create Horse
Create a new horse listing (seller or admin only)
POST
/
api
/
horses
Create Horse
curl --request POST \
--url https://api.example.com/api/horses \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"age": 123,
"breed": "<string>",
"discipline": "<string>",
"pedigree": "<string>",
"location": {
"country": "<string>",
"region": "<string>",
"city": "<string>",
"coordinates": {
"lat": 123,
"lng": 123
}
},
"price": 123,
"currency": "<string>",
"photos": [
{
"url": "<string>",
"caption": "<string>",
"is_cover": true
}
],
"videos": [
{
"url": "<string>",
"video_type": "<string>",
"title": "<string>",
"description": "<string>",
"recorded_at": "<string>"
}
]
}
'import requests
url = "https://api.example.com/api/horses"
payload = {
"name": "<string>",
"age": 123,
"breed": "<string>",
"discipline": "<string>",
"pedigree": "<string>",
"location": {
"country": "<string>",
"region": "<string>",
"city": "<string>",
"coordinates": {
"lat": 123,
"lng": 123
}
},
"price": 123,
"currency": "<string>",
"photos": [
{
"url": "<string>",
"caption": "<string>",
"is_cover": True
}
],
"videos": [
{
"url": "<string>",
"video_type": "<string>",
"title": "<string>",
"description": "<string>",
"recorded_at": "<string>"
}
]
}
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({
name: '<string>',
age: 123,
breed: '<string>',
discipline: '<string>',
pedigree: '<string>',
location: {
country: '<string>',
region: '<string>',
city: '<string>',
coordinates: {lat: 123, lng: 123}
},
price: 123,
currency: '<string>',
photos: [{url: '<string>', caption: '<string>', is_cover: true}],
videos: [
{
url: '<string>',
video_type: '<string>',
title: '<string>',
description: '<string>',
recorded_at: '<string>'
}
]
})
};
fetch('https://api.example.com/api/horses', 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/api/horses",
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>',
'age' => 123,
'breed' => '<string>',
'discipline' => '<string>',
'pedigree' => '<string>',
'location' => [
'country' => '<string>',
'region' => '<string>',
'city' => '<string>',
'coordinates' => [
'lat' => 123,
'lng' => 123
]
],
'price' => 123,
'currency' => '<string>',
'photos' => [
[
'url' => '<string>',
'caption' => '<string>',
'is_cover' => true
]
],
'videos' => [
[
'url' => '<string>',
'video_type' => '<string>',
'title' => '<string>',
'description' => '<string>',
'recorded_at' => '<string>'
]
]
]),
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.example.com/api/horses"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"age\": 123,\n \"breed\": \"<string>\",\n \"discipline\": \"<string>\",\n \"pedigree\": \"<string>\",\n \"location\": {\n \"country\": \"<string>\",\n \"region\": \"<string>\",\n \"city\": \"<string>\",\n \"coordinates\": {\n \"lat\": 123,\n \"lng\": 123\n }\n },\n \"price\": 123,\n \"currency\": \"<string>\",\n \"photos\": [\n {\n \"url\": \"<string>\",\n \"caption\": \"<string>\",\n \"is_cover\": true\n }\n ],\n \"videos\": [\n {\n \"url\": \"<string>\",\n \"video_type\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"recorded_at\": \"<string>\"\n }\n ]\n}")
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.example.com/api/horses")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"age\": 123,\n \"breed\": \"<string>\",\n \"discipline\": \"<string>\",\n \"pedigree\": \"<string>\",\n \"location\": {\n \"country\": \"<string>\",\n \"region\": \"<string>\",\n \"city\": \"<string>\",\n \"coordinates\": {\n \"lat\": 123,\n \"lng\": 123\n }\n },\n \"price\": 123,\n \"currency\": \"<string>\",\n \"photos\": [\n {\n \"url\": \"<string>\",\n \"caption\": \"<string>\",\n \"is_cover\": true\n }\n ],\n \"videos\": [\n {\n \"url\": \"<string>\",\n \"video_type\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"recorded_at\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/horses")
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 = "{\n \"name\": \"<string>\",\n \"age\": 123,\n \"breed\": \"<string>\",\n \"discipline\": \"<string>\",\n \"pedigree\": \"<string>\",\n \"location\": {\n \"country\": \"<string>\",\n \"region\": \"<string>\",\n \"city\": \"<string>\",\n \"coordinates\": {\n \"lat\": 123,\n \"lng\": 123\n }\n },\n \"price\": 123,\n \"currency\": \"<string>\",\n \"photos\": [\n {\n \"url\": \"<string>\",\n \"caption\": \"<string>\",\n \"is_cover\": true\n }\n ],\n \"videos\": [\n {\n \"url\": \"<string>\",\n \"video_type\": \"<string>\",\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"recorded_at\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Horse listing created",
"data": {
"_id": "507f1f77bcf86cd799439011",
"seller_id": "507f191e810c19729de860ea",
"name": "Thunder",
"age": 8,
"breed": "Thoroughbred",
"discipline": "Show Jumping",
"pedigree": "Sire: Storm Cat, Dam: Winning Colors",
"location": {
"country": "Argentina",
"region": "Buenos Aires",
"city": "San Isidro",
"coordinates": {
"lat": -34.4708,
"lng": -58.5247
}
},
"price": 45000,
"currency": "USD",
"photos": [
{
"_id": "65f1a2b3c4d5e6f7g8h9i0j1",
"url": "https://cdn.horsetrust.com/photos/abc123.jpg",
"caption": "Thunder at competition",
"is_cover": true,
"uploaded_at": "2026-03-05T10:00:00Z"
},
{
"_id": "65f1a2b3c4d5e6f7g8h9i0j2",
"url": "https://cdn.horsetrust.com/photos/abc124.jpg",
"caption": "Side view",
"is_cover": false,
"uploaded_at": "2026-03-05T10:00:00Z"
},
{
"_id": "65f1a2b3c4d5e6f7g8h9i0j3",
"url": "https://cdn.horsetrust.com/photos/abc125.jpg",
"caption": "Training session",
"is_cover": false,
"uploaded_at": "2026-03-05T10:00:00Z"
}
],
"videos": [
{
"_id": "65f1a2b3c4d5e6f7g8h9i0j4",
"url": "https://youtube.com/watch?v=abc123",
"embed_url": "https://www.youtube.com/embed/abc123",
"video_type": "competition",
"title": "Thunder jumping 1.40m",
"recorded_at": "2026-02-15T00:00:00Z",
"uploaded_at": "2026-03-05T10:00:00Z"
}
],
"status": "draft",
"views_count": 0,
"created_at": "2026-03-05T10:00:00Z",
"updated_at": "2026-03-05T10:00:00Z"
}
}
Authentication
Required - JWT Bearer token withseller or admin role
Authorization: Bearer YOUR_JWT_TOKEN
Request Body
string
required
Horse name (trimmed)
number
required
Horse age in years (0-40)
string
required
Horse breed (trimmed)
string
required
Primary discipline (trimmed)
string
Pedigree information
object
required
number
Listing price (minimum: 0)
string
default:"USD"
Currency code: USD, EUR, ARS, BRL, MXN
array
required
array
Response
boolean
Indicates if the request was successful
string
Success message
object
Created horse listing
string
Horse unique identifier
string
Seller ID (automatically set from authenticated user)
string
Horse name
number
Horse age
string
Horse breed
string
Primary discipline
string
Pedigree information
object
Location details
number
Listing price
string
Currency code
array
Array of photos with generated IDs and timestamps
array
Array of videos with auto-generated embed_url for YouTube/Vimeo
string
Initial status (always “draft”)
number
Initial view count (always 0)
string
Creation timestamp
string
Last update timestamp
Notes
- New listings are created with
status: "draft"by default seller_idis automatically set from the authenticated userviews_countis initialized to 0- Video
embed_urlis auto-generated for YouTube and Vimeo URLs - Photos must include at least 3 items (validated)
- Full-text search index includes name, breed, discipline, and pedigree
Examples
curl -X POST "https://api.horsetrust.com/api/horses" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-d '{
"name": "Thunder",
"age": 8,
"breed": "Thoroughbred",
"discipline": "Show Jumping",
"pedigree": "Sire: Storm Cat, Dam: Winning Colors",
"location": {
"country": "Argentina",
"region": "Buenos Aires",
"city": "San Isidro",
"coordinates": {
"lat": -34.4708,
"lng": -58.5247
}
},
"price": 45000,
"currency": "USD",
"photos": [
{
"url": "https://cdn.horsetrust.com/photos/abc123.jpg",
"caption": "Thunder at competition",
"is_cover": true
},
{
"url": "https://cdn.horsetrust.com/photos/abc124.jpg",
"caption": "Side view"
},
{
"url": "https://cdn.horsetrust.com/photos/abc125.jpg",
"caption": "Training session"
}
],
"videos": [
{
"url": "https://youtube.com/watch?v=abc123",
"video_type": "competition",
"title": "Thunder jumping 1.40m",
"recorded_at": "2026-02-15T00:00:00Z"
}
]
}'
const response = await fetch('https://api.horsetrust.com/api/horses', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_JWT_TOKEN'
},
body: JSON.stringify({
name: 'Thunder',
age: 8,
breed: 'Thoroughbred',
discipline: 'Show Jumping',
pedigree: 'Sire: Storm Cat, Dam: Winning Colors',
location: {
country: 'Argentina',
region: 'Buenos Aires',
city: 'San Isidro',
coordinates: {
lat: -34.4708,
lng: -58.5247
}
},
price: 45000,
currency: 'USD',
photos: [
{
url: 'https://cdn.horsetrust.com/photos/abc123.jpg',
caption: 'Thunder at competition',
is_cover: true
},
{
url: 'https://cdn.horsetrust.com/photos/abc124.jpg',
caption: 'Side view'
},
{
url: 'https://cdn.horsetrust.com/photos/abc125.jpg',
caption: 'Training session'
}
],
videos: [
{
url: 'https://youtube.com/watch?v=abc123',
video_type: 'competition',
title: 'Thunder jumping 1.40m',
recorded_at: '2026-02-15T00:00:00Z'
}
]
})
});
const data = await response.json();
console.log(data);
import requests
response = requests.post(
'https://api.horsetrust.com/api/horses',
headers={
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_JWT_TOKEN'
},
json={
'name': 'Thunder',
'age': 8,
'breed': 'Thoroughbred',
'discipline': 'Show Jumping',
'pedigree': 'Sire: Storm Cat, Dam: Winning Colors',
'location': {
'country': 'Argentina',
'region': 'Buenos Aires',
'city': 'San Isidro',
'coordinates': {
'lat': -34.4708,
'lng': -58.5247
}
},
'price': 45000,
'currency': 'USD',
'photos': [
{
'url': 'https://cdn.horsetrust.com/photos/abc123.jpg',
'caption': 'Thunder at competition',
'is_cover': True
},
{
'url': 'https://cdn.horsetrust.com/photos/abc124.jpg',
'caption': 'Side view'
},
{
'url': 'https://cdn.horsetrust.com/photos/abc125.jpg',
'caption': 'Training session'
}
],
'videos': [
{
'url': 'https://youtube.com/watch?v=abc123',
'video_type': 'competition',
'title': 'Thunder jumping 1.40m',
'recorded_at': '2026-02-15T00:00:00Z'
}
]
}
)
data = response.json()
print(data)
{
"success": true,
"message": "Horse listing created",
"data": {
"_id": "507f1f77bcf86cd799439011",
"seller_id": "507f191e810c19729de860ea",
"name": "Thunder",
"age": 8,
"breed": "Thoroughbred",
"discipline": "Show Jumping",
"pedigree": "Sire: Storm Cat, Dam: Winning Colors",
"location": {
"country": "Argentina",
"region": "Buenos Aires",
"city": "San Isidro",
"coordinates": {
"lat": -34.4708,
"lng": -58.5247
}
},
"price": 45000,
"currency": "USD",
"photos": [
{
"_id": "65f1a2b3c4d5e6f7g8h9i0j1",
"url": "https://cdn.horsetrust.com/photos/abc123.jpg",
"caption": "Thunder at competition",
"is_cover": true,
"uploaded_at": "2026-03-05T10:00:00Z"
},
{
"_id": "65f1a2b3c4d5e6f7g8h9i0j2",
"url": "https://cdn.horsetrust.com/photos/abc124.jpg",
"caption": "Side view",
"is_cover": false,
"uploaded_at": "2026-03-05T10:00:00Z"
},
{
"_id": "65f1a2b3c4d5e6f7g8h9i0j3",
"url": "https://cdn.horsetrust.com/photos/abc125.jpg",
"caption": "Training session",
"is_cover": false,
"uploaded_at": "2026-03-05T10:00:00Z"
}
],
"videos": [
{
"_id": "65f1a2b3c4d5e6f7g8h9i0j4",
"url": "https://youtube.com/watch?v=abc123",
"embed_url": "https://www.youtube.com/embed/abc123",
"video_type": "competition",
"title": "Thunder jumping 1.40m",
"recorded_at": "2026-02-15T00:00:00Z",
"uploaded_at": "2026-03-05T10:00:00Z"
}
],
"status": "draft",
"views_count": 0,
"created_at": "2026-03-05T10:00:00Z",
"updated_at": "2026-03-05T10:00:00Z"
}
}
Error Responses
400 - Validation Error
{
"success": false,
"message": "Horse validation failed: name: Horse name is required, photos: At least 3 photos are required"
}
401 - Unauthorized
{
"success": false,
"message": "Authentication required"
}
403 - Forbidden
{
"success": false,
"message": "Seller role required"
}
500 - Server Error
{
"success": false,
"message": "Server error"
}
⌘I

