Skip to main content

Models

List All Available Models

GET /api/v1/user/model List all available models in your account.
curl -X GET https://api.4minds.ai/api/v1/user/model \
  -H "Authorization: Bearer YOUR_API_KEY"
import requests

url = "https://api.4minds.ai/api/v1/user/model"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}

response = requests.get(url, headers=headers)
models = response.json()

for model in models:
    print(f"Model: {model['name']} - ID: {model['id']}")
const response = await fetch('https://api.4minds.ai/api/v1/user/model', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const models = await response.json();
models.forEach(model => {
  console.log(`Model: ${model.name} - ID: ${model.id}`);
});
const https = require('https');

const options = {
  hostname: 'api.4minds.ai',
  path: '/api/v1/user/model',
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  
  res.on('data', (chunk) => {
    data += chunk;
  });
  
  res.on('end', () => {
    const models = JSON.parse(data);
    models.forEach(model => {
      console.log(`Model: ${model.name} - ID: ${model.id}`);
    });
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.end();

Get Model Details

GET /api/v1/user/model/{model_id} Get details about a specific model.

Parameters

ParameterTypeRequiredDescription
model_idstringYesThe unique identifier of the model
curl -X GET https://api.4minds.ai/api/v1/user/model/{model_id} \
  -H "Authorization: Bearer YOUR_API_KEY"
import requests

model_id = "your_model_id"
url = f"https://api.4minds.ai/api/v1/user/model/{model_id}"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}

response = requests.get(url, headers=headers)
model_details = response.json()
print(model_details)
const modelId = 'model-123';
const response = await fetch(`https://api.4minds.ai/api/v1/user/model/${modelId}`, {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const model = await response.json();
console.log(`Model Name: ${model.name}`);
console.log(`Status: ${model.status}`);
console.log(`Created: ${model.created_at}`);
const https = require('https');

const modelId = 'model-123';

const options = {
  hostname: 'api.4minds.ai',
  path: `/api/v1/user/model/${modelId}`,
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
};

const req = https.request(options, (res) => {
  let data = '';

  res.on('data', (chunk) => {
    data += chunk;
  });

  res.on('end', () => {
    const model = JSON.parse(data);
    console.log(`Model Name: ${model.name}`);
    console.log(`Status: ${model.status}`);
    console.log(`Created: ${model.created_at}`);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.end();

Create a New Model

POST /api/v1/user/model Create a new model (optionally with a dataset attached).
curl -X POST https://api.4minds.ai/api/v1/user/model \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "your-model-name",
    "dataset": "optional-dataset-id"
  }'
import requests

url = "https://api.4minds.ai/api/v1/user/model"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}
payload = {
    "name": "your-model-name",
    "dataset": "optional-dataset-id"
}

response = requests.post(url, headers=headers, json=payload)
new_model = response.json()
print(f"Created model: {new_model}")
const response = await fetch('https://api.4minds.ai/api/v1/user/model', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    model_name: 'Customer Support Bot',
    description: 'Model trained on customer support conversations',
    base_model_id: 1,
    training_type_id: 'sft',  // Use training type ID from training_types table
    dataset_id: 232,  // Attach dataset to model
    use_case_id: 1,
    persona_id: null
  })
});

const model = await response.json();
console.log(`Model created: ${model.name} (ID: ${model.id})`);
console.log(`Status: ${model.status}`);

Delete a Model

DELETE /api/v1/user/model/{id} Delete a model by ID.

Parameters

ParameterTypeRequiredDescription
idstringYesThe unique identifier of the model to delete
curl -X DELETE https://api.4minds.ai/api/v1/user/model/{id} \
  -H "Authorization: Bearer YOUR_API_KEY"
import requests

model_id = 123
url = f"https://api.4minds.ai/api/v1/user/model/{model_id}"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}

response = requests.delete(url, headers=headers)

if response.status_code == 200:
    result = response.json()
    if result:
        print(f"Model {model_id} deleted successfully")
else:
    print(f"Error: {response.status_code} - {response.text}")
const modelId = 123;
const response = await fetch(`https://api.4minds.ai/api/v1/user/model/${modelId}`, {
  method: 'DELETE',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

if (response.ok) {
  const result = await response.json();
  if (result) {
    console.log(`Model ${modelId} deleted successfully`);
  }
} else {
  const error = await response.text();
  console.error(`Error: ${response.status} - ${error}`);
}
const https = require('https');

const modelId = 123;

const options = {
  hostname: 'api.4minds.ai',
  path: `/api/v1/user/model/${modelId}`,
  method: 'DELETE',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
};

const req = https.request(options, (res) => {
  let data = '';

  res.on('data', (chunk) => {
    data += chunk;
  });

  res.on('end', () => {
    if (res.statusCode === 200) {
      const result = JSON.parse(data);
      if (result) {
        console.log(`Model ${modelId} deleted successfully`);
      }
    } else {
      console.error(`Error: ${res.statusCode} - ${data}`);
    }
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.end();

Conversations

List All Conversations

GET /api/v1/user/conversations Retrieves all conversations for a specific model.

Query Parameters

ParameterTypeRequiredDescription
model_idstringYesThe ID of the model to list conversations for
curl -X GET "https://api.4minds.ai/api/v1/user/conversations?model_id=1" \
  -H "Authorization: Bearer YOUR_API_KEY"
import requests

url = "https://api.4minds.ai/api/v1/user/conversations"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}
params = {
    "model_id": 1,
    "limit": 10,
    "offset": 0
}

response = requests.get(url, headers=headers, params=params)
conversations = response.json()

for conv in conversations['conversations']:
    print(f"Conversation: {conv['title']}")
    print(f"  ID: {conv['id']}")
    print(f"  Messages: {conv['total_messages']}")
    print(f"  Created: {conv['created_at']}")
const response = await fetch('https://api.4minds.ai/api/v1/user/conversations?model_id=1&limit=10', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const data = await response.json();
data.conversations.forEach(conv => {
  console.log(`Conversation: ${conv.title}`);
  console.log(`  ID: ${conv.id}`);
  console.log(`  Messages: ${conv.total_messages}`);
  console.log(`  Created: ${conv.created_at}`);
});
const https = require('https');

const options = {
  hostname: 'api.4minds.ai',
  path: '/api/v1/user/conversations?model_id=1&limit=10',
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
};

const req = https.request(options, (res) => {
  let data = '';

  res.on('data', (chunk) => {
    data += chunk;
  });

  res.on('end', () => {
    const result = JSON.parse(data);
    result.conversations.forEach(conv => {
      console.log(`Conversation: ${conv.title}`);
      console.log(`  ID: ${conv.id}`);
      console.log(`  Messages: ${conv.total_messages}`);
      console.log(`  Created: ${conv.created_at}`);
    });
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.end();

Create a New Conversation

POST /api/v1/user/conversations Creates a new conversation thread.
curl -X POST "https://api.4minds.ai/api/v1/user/conversations" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model_id": "1",
    "title": "New Conversation"
  }'
import requests

url = "https://api.4minds.ai/api/v1/user/conversations"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}

data = {
    "title": "Customer Support Chat",
    "model_id": 1
}

response = requests.post(url, headers=headers, json=data)
conversation = response.json()

print(f"Conversation created: {conversation['id']}")
print(f"Title: {conversation['title']}")
print(f"Model ID: {conversation['model_id']}")
const response = await fetch('https://api.4minds.ai/api/v1/user/conversations', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    title: 'Customer Support Chat',
    model_id: 1
  })
});

const conversation = await response.json();
console.log(`Conversation created: ${conversation.id}`);
console.log(`Title: ${conversation.title}`);
console.log(`Model ID: ${conversation.model_id}`);
const https = require('https');

const data = JSON.stringify({
  title: 'Customer Support Chat',
  model_id: 1
});

const options = {
  hostname: 'api.4minds.ai',
  path: '/api/v1/user/conversations',
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
    'Content-Length': data.length
  }
};

const req = https.request(options, (res) => {
  let responseData = '';
  
  res.on('data', (chunk) => {
    responseData += chunk;
  });
  
  res.on('end', () => {
    const conversation = JSON.parse(responseData);
    console.log(`Conversation created: ${conversation.id}`);
    console.log(`Title: ${conversation.title}`);
    console.log(`Model ID: ${conversation.model_id}`);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.write(data);
req.end();

Rename a Conversation

PATCH /api/v1/user/conversations/{conversation_id} Updates the title of an existing conversation.

Path Parameters

ParameterTypeRequiredDescription
conversation_idstringYesThe ID of the conversation to rename
curl -X PATCH "https://api.4minds.ai/api/v1/user/conversations/conversation_id" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Updated Conversation Title"
  }'
import requests

conversation_id = "CONVERSATION_ID"
url = f"https://api.4minds.ai/api/v1/user/conversations/{conversation_id}"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}
params = {
    "title": "Updated Conversation Title"
}

response = requests.patch(url, headers=headers, params=params)
conversation = response.json()

print(f"Conversation updated: {conversation['id']}")
print(f"New title: {conversation['title']}")
const conversationId = 'CONVERSATION_ID';
const response = await fetch(`https://api.4minds.ai/api/v1/user/conversations/${conversationId}?title=${encodeURIComponent('Updated Conversation Title')}`, {
  method: 'PATCH',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const conversation = await response.json();
console.log(`Conversation updated: ${conversation.id}`);
console.log(`New title: ${conversation.title}`);
const https = require('https');

const conversationId = 'CONVERSATION_ID';
const title = encodeURIComponent('Updated Conversation Title');

const options = {
  hostname: 'api.4minds.ai',
  path: `/api/v1/user/conversations/${conversationId}?title=${title}`,
  method: 'PATCH',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
};

const req = https.request(options, (res) => {
  let data = '';

  res.on('data', (chunk) => {
    data += chunk;
  });

  res.on('end', () => {
    const conversation = JSON.parse(data);
    console.log(`Conversation updated: ${conversation.id}`);
    console.log(`New title: ${conversation.title}`);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.end();

Delete a Conversation

DELETE /api/v1/user/conversations/{conversation_id} Permanently deletes a conversation and all its messages.

Path Parameters

ParameterTypeRequiredDescription
conversation_idstringYesThe ID of the conversation to delete
curl -X DELETE "https://api.4minds.ai/api/v1/user/conversations/conversation_id" \
  -H "Authorization: Bearer YOUR_API_KEY"
import requests

conversation_id = "CONVERSATION_ID"
url = f"https://api.4minds.ai/api/v1/user/conversations/{conversation_id}"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}

response = requests.delete(url, headers=headers)

if response.status_code == 200:
    print(f"Conversation {conversation_id} deleted successfully")
else:
    print(f"Error: {response.status_code}")
const conversationId = 'CONVERSATION_ID';
const response = await fetch(`https://api.4minds.ai/api/v1/user/conversations/${conversationId}`, {
  method: 'DELETE',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

if (response.ok) {
  console.log(`Conversation ${conversationId} deleted successfully`);
} else {
  console.error(`Error: ${response.status}`);
}
const https = require('https');

const conversationId = 'CONVERSATION_ID';

const options = {
  hostname: 'api.4minds.ai',
  path: `/api/v1/user/conversations/${conversationId}`,
  method: 'DELETE',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
};

const req = https.request(options, (res) => {
  if (res.statusCode === 200) {
    console.log(`Conversation ${conversationId} deleted successfully`);
  } else {
    console.error(`Error: ${res.statusCode}`);
  }
});

req.on('error', (error) => {
  console.error(error);
});

req.end();

Get All Messages from a Conversation

GET /api/v1/user/conversations/{conversation_id}/messages Retrieves all messages from a specific conversation thread.

Path Parameters

ParameterTypeRequiredDescription
conversation_idstringYesThe ID of the conversation
curl -X GET "https://api.4minds.ai/api/v1/user/conversations/conversation_id/messages" \
  -H "Authorization: Bearer YOUR_API_KEY"
import requests

conversation_id = "CONVERSATION_ID"
url = f"https://api.4minds.ai/api/v1/user/conversations/{conversation_id}/messages"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}
params = {
    "limit": 50,
    "offset": 0
}

response = requests.get(url, headers=headers, params=params)
messages = response.json()

for msg in messages:
    print(f"{msg['sender_type']}: {msg['content']}")
    print(f"  Time: {msg['timestamp']}")
const conversationId = 'CONVERSATION_ID';
const response = await fetch(`https://api.4minds.ai/api/v1/user/conversations/${conversationId}/messages?limit=50`, {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const messages = await response.json();
messages.forEach(msg => {
  console.log(`${msg.sender_type}: ${msg.content}`);
  console.log(`  Time: ${msg.timestamp}`);
});
const https = require('https');

const conversationId = 'CONVERSATION_ID';

const options = {
  hostname: 'api.4minds.ai',
  path: `/api/v1/user/conversations/${conversationId}/messages?limit=50`,
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
};

const req = https.request(options, (res) => {
  let data = '';

  res.on('data', (chunk) => {
    data += chunk;
  });

  res.on('end', () => {
    const messages = JSON.parse(data);
    messages.forEach(msg => {
      console.log(`${msg.sender_type}: ${msg.content}`);
      console.log(`  Time: ${msg.timestamp}`);
    });
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.end();

Datasets

List All Datasets

GET /api/v1/user/dataset Retrieves a list of all available datasets.
curl -X GET "https://api.4minds.ai/api/v1/user/dataset" \
  -H "Authorization: Bearer YOUR_API_KEY"
import requests

url = " https://api.4minds.ai/api/v1/user/dataset"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}

response = requests.get(url, headers=headers)
datasets = response.json()

for dataset in datasets:
    print(f"Dataset: {dataset['name']}")
    print(f"  ID: {dataset['id']}")
    print(f"  Size: {dataset['size']} bytes")
    print(f"  Created: {dataset['created_at']}")
const response = await fetch(' https://api.4minds.ai/api/v1/user/dataset', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const datasets = await response.json();
datasets.forEach(dataset => {
  console.log(`Dataset: ${dataset.name}`);
  console.log(`  ID: ${dataset.id}`);
  console.log(`  Size: ${dataset.size} bytes`);
  console.log(`  Created: ${dataset.created_at}`);
});
const https = require('https');

const options = {
  hostname: 'api.4minds.ai',
  path: '/api/v1/user/dataset',
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  
  res.on('data', (chunk) => {
    data += chunk;
  });
  
  res.on('end', () => {
    const datasets = JSON.parse(data);
    datasets.forEach(dataset => {
      console.log(`Dataset: ${dataset.name}`);
      console.log(`  ID: ${dataset.id}`);
      console.log(`  Size: ${dataset.size} bytes`);
      console.log(`  Created: ${dataset.created_at}`);
    });
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.end();

Get Dataset Details

GET /api/v1/user/dataset/{id} Retrieves detailed information about a specific dataset.

Path Parameters

ParameterTypeRequiredDescription
idstringYesThe unique identifier of the dataset
curl -X GET "https://api.4minds.ai/api/v1/user/dataset/dataset_123" \
  -H "Authorization: Bearer YOUR_API_KEY"
import requests

dataset_id = "dataset-123"
url = f" https://api.4minds.ai/api/v1/user/dataset/{dataset_id}"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}

response = requests.get(url, headers=headers)
dataset = response.json()

print(f"Dataset Name: {dataset['name']}")
print(f"ID: {dataset['id']}")
print(f"Size: {dataset['size']} bytes")
print(f"Status: {dataset['status']}")
print(f"Created: {dataset['created_at']}")
const datasetId = 'dataset-123';
const response = await fetch(` https://api.4minds.ai/api/v1/user/dataset/${datasetId}`, {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const dataset = await response.json();
console.log(`Dataset Name: ${dataset.name}`);
console.log(`ID: ${dataset.id}`);
console.log(`Size: ${dataset.size} bytes`);
console.log(`Status: ${dataset.status}`);
console.log(`Created: ${dataset.created_at}`);
const https = require('https');

const datasetId = 'dataset-123';

const options = {
  hostname: 'api.4minds.ai',
  path: `/api/v1/user/dataset/${datasetId}`,
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  
  res.on('data', (chunk) => {
    data += chunk;
  });
  
  res.on('end', () => {
    const dataset = JSON.parse(data);
    console.log(`Dataset Name: ${dataset.name}`);
    console.log(`ID: ${dataset.id}`);
    console.log(`Size: ${dataset.size} bytes`);
    console.log(`Status: ${dataset.status}`);
    console.log(`Created: ${dataset.created_at}`);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.end();

Create a New Dataset

POST /api/v1/user/dataset Creates a new dataset by uploading files or providing URLs to scrape.

Request Body

ParameterTypeRequiredDescription
namestringYesName of the dataset
descriptionstringNoDescription of the dataset
filesarrayNoArray of files to upload
urlsarrayNoArray of URLs to scrape for data
curl -X POST  https://api.4minds.ai/api/v1/user/dataset \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "files=@training_data.jsonl" \
  -F "files=@additional_data.csv" \
  -F "dataset_name=Customer Support Dataset" \
  -F "description=Training data for customer support bot" \
  -F "tags=support,training,chatbot"
curl -X POST  https://api.4minds.ai/api/v1/user/dataset \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F 'urls=["https://docs.example.com/page1","https://docs.example.com/page2"]' \
  -F "dataset_name=Documentation Dataset" \
  -F "description=Training data from documentation pages" \
  -F "tags=docs,web,scraping"
curl -X POST  https://api.4minds.ai/api/v1/user/dataset \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "files=@training_data.jsonl" \
  -F 'urls=["https://docs.example.com/api","https://blog.example.com/post"]' \
  -F "dataset_name=Mixed Dataset" \
  -F "description=Training data from files and web sources" \
  -F "tags=mixed,training,web"
import requests

url = " https://api.4minds.ai/api/v1/user/dataset"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}

# Upload multiple files with metadata
files = [
    ('files', ('training_data.jsonl', open('training_data.jsonl', 'rb'), 'application/x-jsonlines')),
    ('files', ('additional_data.csv', open('additional_data.csv', 'rb'), 'text/csv'))
]

data = {
    'dataset_name': 'Customer Support Dataset',
    'description': 'Training data for customer support bot',
    'tags': 'support,training,chatbot'
}

response = requests.post(url, headers=headers, files=files, data=data)
dataset = response.json()

print(f"Dataset created: {dataset['id']}")
print(f"Name: {dataset['name']}")
print(f"Files uploaded: {len(dataset['files'])}")
print(f"Total size: {dataset['size']} bytes")
import requests
import json

url = " https://api.4minds.ai/api/v1/user/dataset"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}

# Create dataset from URLs
urls_to_scrape = [
    "https://docs.example.com/page1",
    "https://docs.example.com/page2",
    "https://blog.example.com/article"
]

data = {
    'urls': json.dumps(urls_to_scrape),
    'dataset_name': 'Documentation Dataset',
    'description': 'Training data from documentation pages',
    'tags': 'docs,web,scraping'
}

response = requests.post(url, headers=headers, data=data)
dataset = response.json()

print(f"Dataset created: {dataset['id']}")
print(f"Name: {dataset['name']}")
print(f"URLs added: {len(dataset.get('urls', []))}")
print(f"Status: {dataset['status']} (URLs will be scraped in background)")
import requests
import json

url = " https://api.4minds.ai/api/v1/user/dataset"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}

# Upload files AND URLs in one dataset
files = [
    ('files', ('training_data.jsonl', open('training_data.jsonl', 'rb'), 'application/x-jsonlines'))
]

urls_to_scrape = [
    "https://docs.example.com/api",
    "https://blog.example.com/tutorial"
]

data = {
    'urls': json.dumps(urls_to_scrape),
    'dataset_name': 'Mixed Dataset',
    'description': 'Training data from files and web sources',
    'tags': 'mixed,training,web'
}

response = requests.post(url, headers=headers, files=files, data=data)
dataset = response.json()

print(f"Dataset created: {dataset['id']}")
print(f"Files uploaded: {len(dataset['files'])}")
print(f"URLs added: {len(dataset.get('urls', []))}")
print(f"Status: {dataset['status']}")
// Browser-based file upload
const fileInput = document.getElementById('file-input');
const files = fileInput.files;

const formData = new FormData();

// Add all selected files
for (let i = 0; i < files.length; i++) {
  formData.append('files', files[i]);
}

// Add metadata
formData.append('dataset_name', 'Customer Support Dataset');
formData.append('description', 'Training data for customer support bot');
formData.append('tags', 'support,training,chatbot');

const response = await fetch(' https://api.4minds.ai/api/v1/user/dataset', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: formData
});

const dataset = await response.json();
console.log(`Dataset created: ${dataset.id}`);
console.log(`Name: ${dataset.name}`);
console.log(`Files uploaded: ${dataset.files.length}`);
// Create dataset from URLs
const urls = [
  'https://docs.example.com/page1',
  'https://docs.example.com/page2',
  'https://blog.example.com/article'
];

const formData = new FormData();
formData.append('urls', JSON.stringify(urls));
formData.append('dataset_name', 'Documentation Dataset');
formData.append('description', 'Training data from documentation pages');
formData.append('tags', 'docs,web,scraping');

const response = await fetch(' https://api.4minds.ai/api/v1/user/dataset', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: formData
});

const dataset = await response.json();
console.log(`Dataset created: ${dataset.id}`);
console.log(`URLs added: ${dataset.urls?.length || 0}`);
console.log(`Status: ${dataset.status} (URLs will be scraped in background)`);
// Upload files AND URLs in one dataset
const fileInput = document.getElementById('file-input');
const files = fileInput.files;

const urls = [
  'https://docs.example.com/api',
  'https://blog.example.com/tutorial'
];

const formData = new FormData();

// Add files
for (let i = 0; i < files.length; i++) {
  formData.append('files', files[i]);
}

// Add URLs
formData.append('urls', JSON.stringify(urls));
formData.append('dataset_name', 'Mixed Dataset');
formData.append('description', 'Training data from files and web sources');
formData.append('tags', 'mixed,training,web');

const response = await fetch(' https://api.4minds.ai/api/v1/user/dataset', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: formData
});

const dataset = await response.json();
console.log(`Dataset created: ${dataset.id}`);
console.log(`Files uploaded: ${dataset.files.length}`);
console.log(`URLs added: ${dataset.urls?.length || 0}`);
const fs = require('fs');
const FormData = require('form-data');
const https = require('https');

const form = new FormData();

// Add multiple files
form.append('files', fs.createReadStream('training_data.jsonl'));
form.append('files', fs.createReadStream('additional_data.csv'));

// Add metadata
form.append('dataset_name', 'Customer Support Dataset');
form.append('description', 'Training data for customer support bot');
form.append('tags', 'support,training,chatbot');

const options = {
  hostname: 'api.4minds.ai',
  path: '/api/v1/user/dataset',
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    ...form.getHeaders()
  }
};

const req = https.request(options, (res) => {
  let data = '';
  
  res.on('data', (chunk) => {
    data += chunk;
  });
  
  res.on('end', () => {
    const dataset = JSON.parse(data);
    console.log(`Dataset created: ${dataset.id}`);
    console.log(`Name: ${dataset.name}`);
    console.log(`Files uploaded: ${dataset.files.length}`);
    console.log(`Total size: ${dataset.size} bytes`);
  });
});

req.on('error', (error) => {
  console.error(error);
});

form.pipe(req);
const FormData = require('form-data');
const https = require('https');

const form = new FormData();

// Add URLs as JSON array
const urls = [
  'https://docs.example.com/page1',
  'https://docs.example.com/page2',
  'https://blog.example.com/article'
];

form.append('urls', JSON.stringify(urls));
form.append('dataset_name', 'Documentation Dataset');
form.append('description', 'Training data from documentation pages');
form.append('tags', 'docs,web,scraping');

const options = {
  hostname: 'api.4minds.ai',
  path: '/api/v1/user/dataset',
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    ...form.getHeaders()
  }
};

const req = https.request(options, (res) => {
  let data = '';
  
  res.on('data', (chunk) => {
    data += chunk;
  });
  
  res.on('end', () => {
    const dataset = JSON.parse(data);
    console.log(`Dataset created: ${dataset.id}`);
    console.log(`URLs added: ${dataset.urls?.length || 0}`);
    console.log(`Status: ${dataset.status} (URLs will be scraped in background)`);
  });
});

req.on('error', (error) => {
  console.error(error);
});

form.pipe(req);
const fs = require('fs');
const FormData = require('form-data');
const https = require('https');

const form = new FormData();

// Add files
form.append('files', fs.createReadStream('training_data.jsonl'));

// Add URLs as JSON array
const urls = [
  'https://docs.example.com/api',
  'https://blog.example.com/tutorial'
];

form.append('urls', JSON.stringify(urls));
form.append('dataset_name', 'Mixed Dataset');
form.append('description', 'Training data from files and web sources');
form.append('tags', 'mixed,training,web');

const options = {
  hostname: 'api.4minds.ai',
  path: '/api/v1/user/dataset',
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    ...form.getHeaders()
  }
};

const req = https.request(options, (res) => {
  let data = '';
  
  res.on('data', (chunk) => {
    data += chunk;
  });
  
  res.on('end', () => {
    const dataset = JSON.parse(data);
    console.log(`Dataset created: ${dataset.id}`);
    console.log(`Files uploaded: ${dataset.files.length}`);
    console.log(`URLs added: ${dataset.urls?.length || 0}`);
  });
});

req.on('error', (error) => {
  console.error(error);
});

form.pipe(req);

Upload Files to Dataset

POST /api/v1/user/dataset/upload Adds files to an existing dataset.

Request Body

Multipart form data with the following fields:
ParameterTypeRequiredDescription
dataset_idstringYesThe ID of the dataset
filefileYesThe file to upload
curl -X POST  https://api.4minds.ai/api/v1/user/dataset/upload \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "dataset_id=123" \
  -F "files=@training_data.jsonl" \
  -F "files=@additional_data.csv"
import requests

dataset_id = 123
url = " https://api.4minds.ai/api/v1/user/dataset/upload"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}

# Upload multiple files to existing dataset
files = [
    ('files', ('training_data.jsonl', open('training_data.jsonl', 'rb'), 'application/x-jsonlines')),
    ('files', ('additional_data.csv', open('additional_data.csv', 'rb'), 'text/csv'))
]

data = {
    'dataset_id': dataset_id
}

response = requests.post(url, headers=headers, files=files, data=data)

if response.status_code == 200:
    result = response.json()
    print(f"Files added successfully to dataset {dataset_id}")
    print(f"Files uploaded: {result['files_uploaded']}")
    print(f"Total files: {result['total_files']}")
const datasetId = 123;
const fileInput = document.getElementById('file-input');
const files = fileInput.files;

const formData = new FormData();

// Add dataset ID
formData.append('dataset_id', datasetId);

// Add all selected files
for (let i = 0; i < files.length; i++) {
  formData.append('files', files[i]);
}

const response = await fetch(' https://api.4minds.ai/api/v1/user/dataset/upload', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: formData
});

if (response.ok) {
  const result = await response.json();
  console.log(`Files added successfully to dataset ${datasetId}`);
  console.log(`Files uploaded: ${result.files_uploaded}`);
  console.log(`Total files: ${result.total_files}`);
}
const fs = require('fs');
const FormData = require('form-data');
const https = require('https');

const datasetId = 123;
const form = new FormData();

// Add dataset ID
form.append('dataset_id', datasetId);

// Add multiple files
form.append('files', fs.createReadStream('training_data.jsonl'));
form.append('files', fs.createReadStream('additional_data.csv'));

const options = {
  hostname: 'api.4minds.ai',
  path: '/api/v1/user/dataset/upload',
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    ...form.getHeaders()
  }
};

const req = https.request(options, (res) => {
  let data = '';
  
  res.on('data', (chunk) => {
    data += chunk;
  });
  
  res.on('end', () => {
    if (res.statusCode === 200) {
      const result = JSON.parse(data);
      console.log(`Files added successfully to dataset ${datasetId}`);
      console.log(`Files uploaded: ${result.files_uploaded}`);
      console.log(`Total files: ${result.total_files}`);
    }
  });
});

req.on('error', (error) => {
  console.error(error);
});

form.pipe(req);

Delete a Dataset

DELETE /api/v1/user/dataset/{id} Deletes a dataset. This can be a soft delete (by default), or a permanent delete.

Path Parameters

ParameterTypeRequiredDescription
idstringYesThe unique identifier of the dataset

Query Parameters

ParameterTypeRequiredDescription
permanentbooleanNoSet to true for permanent deletion. Default is false (soft delete)
curl -X DELETE  https://api.4minds.ai/api/v1/user/dataset/123 \
  -H "Authorization: Bearer YOUR_API_KEY"
curl -X DELETE " https://api.4minds.ai/api/v1/user/dataset/123?permanent=true" \
  -H "Authorization: Bearer YOUR_API_KEY"
import requests

dataset_id = 123
url = f" https://api.4minds.ai/api/v1/user/dataset/{dataset_id}"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}

response = requests.delete(url, headers=headers)

if response.status_code == 200:
    print(f"Dataset {dataset_id} moved to trash")
else:
    print(f"Error: {response.status_code}")
import requests

dataset_id = 123
url = f" https://api.4minds.ai/api/v1/user/dataset/{dataset_id}"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}
params = {
    "permanent": True
}

response = requests.delete(url, headers=headers, params=params)

if response.status_code == 200:
    print(f"Dataset {dataset_id} permanently deleted")
else:
    print(f"Error: {response.status_code}")
const datasetId = 123;
const response = await fetch(` https://api.4minds.ai/api/v1/user/dataset/${datasetId}`, {
  method: 'DELETE',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

if (response.ok) {
  console.log(`Dataset ${datasetId} moved to trash`);
} else {
  console.error(`Error: ${response.status}`);
}
const datasetId = 123;
const response = await fetch(` https://api.4minds.ai/api/v1/user/dataset/${datasetId}?permanent=true`, {
  method: 'DELETE',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

if (response.ok) {
  console.log(`Dataset ${datasetId} permanently deleted`);
} else {
  console.error(`Error: ${response.status}`);
}
const https = require('https');

const datasetId = 123;

const options = {
  hostname: 'api.4minds.ai',
  path: `/api/v1/user/dataset/${datasetId}`,
  method: 'DELETE',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
};

const req = https.request(options, (res) => {
  if (res.statusCode === 200) {
    console.log(`Dataset ${datasetId} moved to trash`);
  } else {
    console.error(`Error: ${res.statusCode}`);
  }
});

req.on('error', (error) => {
  console.error(error);
});

req.end();
const https = require('https');

const datasetId = 123;

const options = {
  hostname: 'api.4minds.ai',
  path: `/api/v1/user/dataset/${datasetId}?permanent=true`,
  method: 'DELETE',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
};

const req = https.request(options, (res) => {
  if (res.statusCode === 200) {
    console.log(`Dataset ${datasetId} permanently deleted`);
  } else {
    console.error(`Error: ${res.statusCode}`);
  }
});

req.on('error', (error) => {
  console.error(error);
});

req.end();

Evaluations

List All Evaluations

GET /api/v1/evaluations List all evaluations with pagination and filtering.

Query Parameters

ParameterTypeRequiredDescription
pageintegerNoPage number for pagination
per_pageintegerNoNumber of results per page (default: 20)
curl -X GET " https://api.4minds.ai/api/v1/evaluations?page=1&per_page=20" \
  -H "Authorization: Bearer YOUR_API_KEY"
import requests

url = " https://api.4minds.ai/api/v1/evaluations"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}
params = {
    "page": 1,
    "per_page": 20,
    "status": "completed"  # Optional: pending, running, completed, failed
}

response = requests.get(url, headers=headers, params=params)
evaluations = response.json()

for eval in evaluations['evaluations']:
    print(f"Evaluation: {eval['name']} - Score: {eval['score']}")
const response = await fetch(' https://api.4minds.ai/api/v1/evaluations?page=1&per_page=20', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const data = await response.json();
data.evaluations.forEach(eval => {
  console.log(`Evaluation: ${eval.name} - Score: ${eval.score}`);
});
const https = require('https');

const options = {
  hostname: 'api.4minds.ai',
  path: '/api/v1/evaluations?page=1&per_page=20',
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  
  res.on('data', (chunk) => {
    data += chunk;
  });
  
  res.on('end', () => {
    const result = JSON.parse(data);
    result.evaluations.forEach(eval => {
      console.log(`Evaluation: ${eval.name} - Score: ${eval.score}`);
    });
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.end();

Create a New Evaluation

POST /api/v1/evaluations Create a new evaluation for a model.

Request Body

ParameterTypeRequiredDescription
model_idstringYesThe ID of the model to evaluate
namestringYesName of the evaluation
configobjectNoModel-specific configuration for evaluation
curl -X POST  https://api.4minds.ai/api/v1/evaluations \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "GPT-4 RAGAS Evaluation",
    "description": "Evaluate GPT-4 on BEIR dataset",
    "type": "ragas",
    "model_id": 123,
    "benchmark_type": "beir",
    "question_count": 700
  }'
import requests

url = " https://api.4minds.ai/api/v1/evaluations"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}

data = {
    "name": "GPT-4 RAGAS Evaluation",
    "description": "Evaluate GPT-4 on BEIR dataset",
    "type": "ragas",
    "model_id": 123,
    "benchmark_type": "beir",
    "question_count": 700
}

response = requests.post(url, headers=headers, json=data)
evaluation = response.json()

print(f"Created evaluation: {evaluation['name']}")
print(f"Evaluation ID: {evaluation['id']}")
print(f"Status: {evaluation['status']}")
const response = await fetch(' https://api.4minds.ai/api/v1/evaluations', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'GPT-4 RAGAS Evaluation',
    description: 'Evaluate GPT-4 on BEIR dataset',
    type: 'ragas',
    model_id: 123,
    benchmark_type: 'beir',
    question_count: 700
  })
});

const evaluation = await response.json();
console.log(`Created evaluation: ${evaluation.name}`);
console.log(`Evaluation ID: ${evaluation.id}`);
console.log(`Status: ${evaluation.status}`);
const https = require('https');

const data = JSON.stringify({
  name: 'GPT-4 RAGAS Evaluation',
  description: 'Evaluate GPT-4 on BEIR dataset',
  type: 'ragas',
  model_id: 123,
  benchmark_type: 'beir',
  question_count: 700
});

const options = {
  hostname: 'api.4minds.ai',
  path: '/api/v1/evaluations',
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
    'Content-Length': data.length
  }
};

const req = https.request(options, (res) => {
  let responseData = '';
  
  res.on('data', (chunk) => {
    responseData += chunk;
  });
  
  res.on('end', () => {
    const evaluation = JSON.parse(responseData);
    console.log(`Created evaluation: ${evaluation.name}`);
    console.log(`Evaluation ID: ${evaluation.id}`);
    console.log(`Status: ${evaluation.status}`);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.write(data);
req.end();

Get Evaluation Details

GET /api/v1/evaluations/{evaluation_id} Get details about a specific evaluation.

Path Parameters

ParameterTypeRequiredDescription
evaluation_idstringYesThe unique identifier of the evaluation
curl -X GET  https://api.4minds.ai/api/v1/evaluations/456 \
  -H "Authorization: Bearer YOUR_API_KEY"
import requests

evaluation_id = 456
url = f" https://api.4minds.ai/api/v1/evaluations/{evaluation_id}"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}

response = requests.get(url, headers=headers)
evaluation = response.json()

print(f"Evaluation: {evaluation['name']}")
print(f"Status: {evaluation['status']}")
print(f"Score: {evaluation['score']}")
if evaluation.get('results'):
    print(f"Scores: {evaluation['results']['scores']}")
const evaluationId = 456;
const response = await fetch(` https://api.4minds.ai/api/v1/evaluations/${evaluationId}`, {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const evaluation = await response.json();
console.log(`Evaluation: ${evaluation.name}`);
console.log(`Status: ${evaluation.status}`);
console.log(`Score: ${evaluation.score}`);
if (evaluation.results) {
  console.log('Scores:', evaluation.results.scores);
}
const https = require('https');

const evaluationId = 456;

const options = {
  hostname: 'api.4minds.ai',
  path: `/api/v1/evaluations/${evaluationId}`,
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  
  res.on('data', (chunk) => {
    data += chunk;
  });
  
  res.on('end', () => {
    const evaluation = JSON.parse(data);
    console.log(`Evaluation: ${evaluation.name}`);
    console.log(`Status: ${evaluation.status}`);
    console.log(`Score: ${evaluation.score}`);
    if (evaluation.results) {
      console.log('Scores:', evaluation.results.scores);
    }
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.end();

Start Running an Evaluation

POST /api/v1/evaluations/{evaluation_id}/start Start running an evaluation.

Path Parameters

ParameterTypeRequiredDescription
evaluation_idstringYesThe unique identifier of the evaluation
curl -X POST  https://api.4minds.ai/api/v1/evaluations/456/start \
  -H "Authorization: Bearer YOUR_API_KEY"
import requests

evaluation_id = 456
url = f" https://api.4minds.ai/api/v1/evaluations/{evaluation_id}/start"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}

response = requests.post(url, headers=headers)
result = response.json()

print(result['message'])
const evaluationId = 456;
const response = await fetch(` https://api.4minds.ai/api/v1/evaluations/${evaluationId}/start`, {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const result = await response.json();
console.log(result.message);
const https = require('https');

const evaluationId = 456;

const options = {
  hostname: 'api.4minds.ai',
  path: `/api/v1/evaluations/${evaluationId}/start`,
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  
  res.on('data', (chunk) => {
    data += chunk;
  });
  
  res.on('end', () => {
    const result = JSON.parse(data);
    console.log(result.message);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.end();

Run RAGAS Evaluation

POST /api/v1/evaluations/{evaluation_id}/run-ragas Run RAGAS evaluation with benchmark data.

Path Parameters

ParameterTypeRequiredDescription
evaluation_idstringYesThe unique identifier of the evaluation
Executes a RAGAS (Retrieval Augmented Generation Assessment) benchmark evaluation on the specified evaluation.
curl -X POST  https://api.4minds.ai/api/v1/evaluations/456/run-ragas \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "samples": [],
    "selected_questions": []
  }'
import requests

evaluation_id = 456
url = f" https://api.4minds.ai/api/v1/evaluations/{evaluation_id}/run-ragas"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}

data = {
    "samples": [],
    "selected_questions": []
}

response = requests.post(url, headers=headers, json=data)
evaluation = response.json()

print(f"Evaluation completed: {evaluation['name']}")
print(f"Score: {evaluation['score']}")
print(f"Metrics: {evaluation['results']['scores']}")
const evaluationId = 456;
const response = await fetch(` https://api.4minds.ai/api/v1/evaluations/${evaluationId}/run-ragas`, {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    samples: [],
    selected_questions: []
  })
});

const evaluation = await response.json();
console.log(`Evaluation completed: ${evaluation.name}`);
console.log(`Score: ${evaluation.score}`);
console.log('Metrics:', evaluation.results.scores);
const https = require('https');

const evaluationId = 456;
const data = JSON.stringify({
  samples: [],
  selected_questions: []
});

const options = {
  hostname: 'api.4minds.ai',
  path: `/api/v1/evaluations/${evaluationId}/run-ragas`,
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
    'Content-Length': data.length
  }
};

const req = https.request(options, (res) => {
  let responseData = '';
  
  res.on('data', (chunk) => {
    responseData += chunk;
  });
  
  res.on('end', () => {
    const evaluation = JSON.parse(responseData);
    console.log(`Evaluation completed: ${evaluation.name}`);
    console.log(`Score: ${evaluation.score}`);
    console.log('Metrics:', evaluation.results.scores);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.write(data);
req.end();

Update Evaluation Metadata

PUT /api/v1/evaluations/{evaluation_id} Update an evaluation’s metadata.

Path Parameters

ParameterTypeRequiredDescription
evaluation_idstringYesThe unique identifier of the evaluation

Request Body

ParameterTypeRequiredDescription
namestringNoUpdated name for the evaluation
descriptionstringNoUpdated description
curl -X PUT  https://api.4minds.ai/api/v1/evaluations/456 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Updated Evaluation Name",
    "description": "Updated description"
  }'
import requests

evaluation_id = 456
url = f" https://api.4minds.ai/api/v1/evaluations/{evaluation_id}"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}

data = {
    "name": "Updated Evaluation Name",
    "description": "Updated description"
}

response = requests.put(url, headers=headers, json=data)
evaluation = response.json()

print(f"Updated evaluation: {evaluation['name']}")
const evaluationId = 456;
const response = await fetch(` https://api.4minds.ai/api/v1/evaluations/${evaluationId}`, {
  method: 'PUT',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    name: 'Updated Evaluation Name',
    description: 'Updated description'
  })
});

const evaluation = await response.json();
console.log(`Updated evaluation: ${evaluation.name}`);
const https = require('https');

const evaluationId = 456;
const data = JSON.stringify({
  name: 'Updated Evaluation Name',
  description: 'Updated description'
});

const options = {
  hostname: 'api.4minds.ai',
  path: `/api/v1/evaluations/${evaluationId}`,
  method: 'PUT',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
    'Content-Length': data.length
  }
};

const req = https.request(options, (res) => {
  let responseData = '';
  
  res.on('data', (chunk) => {
    responseData += chunk;
  });
  
  res.on('end', () => {
    const evaluation = JSON.parse(responseData);
    console.log(`Updated evaluation: ${evaluation.name}`);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.write(data);
req.end();

Delete an Evaluation

DELETE /api/v1/evaluations/{evaluation_id} Delete an evaluation (cannot delete running evaluations).

Path Parameters

ParameterTypeRequiredDescription
evaluation_idstringYesThe unique identifier of the evaluation
Note: You cannot delete evaluations that are currently running.
curl -X DELETE  https://api.4minds.ai/api/v1/evaluations/456 \
  -H "Authorization: Bearer YOUR_API_KEY"
import requests

evaluation_id = 456
url = f" https://api.4minds.ai/api/v1/evaluations/{evaluation_id}"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}

response = requests.delete(url, headers=headers)

if response.status_code == 200:
    result = response.json()
    print(result['message'])
else:
    print(f"Error: {response.status_code}")
const evaluationId = 456;
const response = await fetch(` https://api.4minds.ai/api/v1/evaluations/${evaluationId}`, {
  method: 'DELETE',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

if (response.ok) {
  const result = await response.json();
  console.log(result.message);
} else {
  console.error(`Error: ${response.status}`);
}
const https = require('https');

const evaluationId = 456;

const options = {
  hostname: 'api.4minds.ai',
  path: `/api/v1/evaluations/${evaluationId}`,
  method: 'DELETE',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  
  res.on('data', (chunk) => {
    data += chunk;
  });
  
  res.on('end', () => {
    if (res.statusCode === 200) {
      const result = JSON.parse(data);
      console.log(result.message);
    } else {
      console.error(`Error: ${res.statusCode}`);
    }
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.end();

Check Evaluation Name Availability

GET /api/v1/evaluations/check-name Check if an evaluation name is available.

Query Parameters

ParameterTypeRequiredDescription
namestringYesThe evaluation name to check
curl -X GET " https://api.4minds.ai/api/v1/evaluations/check-name?name=My%20Evaluation" \
  -H "Authorization: Bearer YOUR_API_KEY"
import requests

url = " https://api.4minds.ai/api/v1/evaluations/check-name"
headers = {
    "Authorization": "Bearer YOUR_API_KEY"
}
params = {
    "name": "My Evaluation"
}

response = requests.get(url, headers=headers, params=params)
result = response.json()

print(f"Available: {result['available']}")
print(f"Message: {result['message']}")
const name = 'My Evaluation';
const response = await fetch(` https://api.4minds.ai/api/v1/evaluations/check-name?name=${encodeURIComponent(name)}`, {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const result = await response.json();
console.log(`Available: ${result.available}`);
console.log(`Message: ${result.message}`);
const https = require('https');

const name = 'My Evaluation';

const options = {
  hostname: 'api.4minds.ai',
  path: `/api/v1/evaluations/check-name?name=${encodeURIComponent(name)}`,
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
};

const req = https.request(options, (res) => {
  let data = '';
  
  res.on('data', (chunk) => {
    data += chunk;
  });
  
  res.on('end', () => {
    const result = JSON.parse(data);
    console.log(`Available: ${result.available}`);
    console.log(`Message: ${result.message}`);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.end();

Inference

Perform direct inference queries without streaming, perfect for simple question-answering and batch processing workflows using knowledge graphs.

Run a Single Query

POST /api/v1/user/inference Run a single query with your knowledge graph.

Required Parameters

ParameterTypeRequiredDescription
querystringYesThe question or query to process
model_idintegerYesThe ID of the model to use for inference

Optional Parameters

ParameterTypeRequiredDescription
conversation_idstringNoContinue an existing conversation by providing its ID
thread_idstringNoThread identifier for managing conversation history
enable_web_searchbooleanNoEnable web search to enhance responses (default: false)
max_tokensintegerNoMaximum response length (default: model-specific)
temperaturefloatNoResponse randomness from 0.0 to 1.0 (default: model-specific)
image_generationbooleanNoEnable image generation in responses (default: false)
image_parametersobjectNoImage generation config: width, height, steps, guidance
personaobjectNoUser persona configuration for customized responses
base_modelbooleanNoBypass RAG and use base model directly, useful for evaluations (default: false)
session_idstringNoSession tracking identifier
user_idstringNoUser identifier for tracking and personalization
tenant_idstringNoMulti-tenancy identifier for organization-level isolation

Advanced sampling overrides

These parameters provide fine-grained control over response generation and are typically used for specialized use cases.
ParameterTypeRequiredDescription
top_kintegerNoTop-K sampling: limits token selection to top K options
top_pfloatNoNucleus sampling: cumulative probability threshold
response_length_preferencestringNoResponse verbosity: “concise”, “balanced”, or “detailed”
creativity_levelfloatNoBalance between creative and deterministic outputs
factual_precisionfloatNoPreference for factual accuracy in responses
curl -X POST  https://api.4minds.ai/api/v1/user/inference \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "What is machine learning?",
    "model_id": 1
  }'
import requests

url = " https://api.4minds.ai/api/v1/user/inference"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}

data = {
    "query": "What is machine learning?",
    "model_id": 1
}

response = requests.post(url, headers=headers, json=data)
result = response.json()

print(result)
const response = await fetch(' https://api.4minds.ai/api/v1/user/inference', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    query: 'What is machine learning?',
    model_id: 1
  })
});

const result = await response.json();
console.log(result);
const https = require('https');

const data = JSON.stringify({
  query: 'What is machine learning?',
  model_id: 1
});

const options = {
  hostname: 'api.4minds.ai',
  path: '/api/v1/user/inference',
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
    'Content-Length': data.length
  }
};

const req = https.request(options, (res) => {
  let responseData = '';
  
  res.on('data', (chunk) => {
    responseData += chunk;
  });
  
  res.on('end', () => {
    const result = JSON.parse(responseData);
    console.log(result);
  });
});

req.on('error', (error) => {
  console.error(error);
});

req.write(data);
req.end();

Authentication

All API requests require authentication using a Bearer token in the Authorization header:
Authorization: Bearer YOUR_API_KEY
You can obtain your API key from your 4MINDS dashboard.

Response Format

All responses are returned in JSON format.

Success Response

{
  "status": "success",
  "data": { ... }
}

Error Response

{
  "status": "error",
  "message": "Error description"
}