chatapi.ai-now.space API Documentation
This document provides a comprehensive overview of the chatapi.ai-now.space API, detailing its functionalities, endpoints, and usage instructions.
Overview
chatapi.ai-now.space is a proxy API that provides access to various large language models (LLMs) for chat completions and other AI-related tasks. It offers a unified interface for interacting with different models, simplifying the development process for users.
Authentication
All API requests require an API key for authentication. To obtain an API key, please contact admin@ai-now.space.
The API key should be included in the Authorization
header of each request using the Bearer
scheme:
Authorization: Bearer YOUR_API_KEY
Endpoints
/models
GET - Retrieves a list of available models.
Response:
{
"data": [
{
"id": 1,
"name": "Model A",
"contextWindow": 2048,
"inputCostPer1kTokens": 0.001,
"outputCostPer1kTokens": 0.002,
"quality": "high",
"medianPrice": 0.05,
"outputTokensPerSecond": 10,
"latencyToFirstChunk": 500,
"average": 85,
"multiChoiceQs": 90,
"reasoning": 80,
"pythonCoding": 75,
"futureCapabilities": 70,
"gradeSchoolMath": 95,
"mathProblems": 80,
"arenaScore": 75,
"confidenceInterval": 90,
"votes": 100,
"organization": "Organization A",
"license": "MIT",
"knowledgeCutoff": "2023-01-01",
"working": true
},
// ... other models
]
}
Full list of models is available here
Example:
curl -H "Authorization: Bearer YOUR_API_KEY" https://chatapi.ai-now.space/models
/chat/completions
POST - Generates chat completions using the specified model.
Request Body:
{
"model": "Model A",
"messages": [
{ "role": "user", "content": "What is the capital of France?" }
],
"stream": false, // Optional, defaults to false
// ... other parameters (see OpenAI's Chat Completion API documentation)
}
Response (Non-Streaming):
{
"id": "chatcmpl-XXXXXXXXXXXXXXXXX",
"object": "chat.completion",
"created": 1678886384,
"model": "Model A",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "The capital of France is Paris."
},
"finish_reason": "stop"
}
],
"input_tokens": 7,
"output_tokens": 6,
"input_tokens_cost": 0.000007,
"output_tokens_cost": 0.000012,
"total_tokens_cost": 0.000019,
"total_time_taken": 123,
"tokens_per_second": 0.1057
}
Response (Streaming):
data: {"id": "chatcmpl-XXXXXXXXXXXXXXXXX", "object": "chat.completion.chunk", "created": 1678886384, "model": "Model A", "choices": [{"index": 0, "delta": {"content": "The"}, "finish_reason": null}]}
data: {"id": "chatcmpl-XXXXXXXXXXXXXXXXX", "object": "chat.completion.chunk", "created": 1678886384, "model": "Model A", "choices": [{"index": 0, "delta": {"content": " capital"}, "finish_reason": null}]}
data: {"id": "chatcmpl-XXXXXXXXXXXXXXXXX", "object": "chat.completion.chunk", "created": 1678886384, "model": "Model A", "choices": [{"index": 0, "delta": {"content": " of"}, "finish_reason": null}]}
data: {"id": "chatcmpl-XXXXXXXXXXXXXXXXX", "object": "chat.completion.chunk", "created": 1678886384, "model": "Model A", "choices": [{"index": 0, "delta": {"content": " France"}, "finish_reason": null}]}
data: {"id": "chatcmpl-XXXXXXXXXXXXXXXXX", "object": "chat.completion.chunk", "created": 1678886384, "model": "Model A", "choices": [{"index": 0, "delta": {"content": " is"}, "finish_reason": null}]}
data: {"id": "chatcmpl-XXXXXXXXXXXXXXXXX", "object": "chat.completion.chunk", "created": 1678886384, "model": "Model A", "choices": [{"index": 0, "delta": {"content": " Paris."}, "finish_reason": null}]}
data: {"id": "chatcmpl-XXXXXXXXXXXXXXXXX", "object": "chat.completion.chunk", "created": 1678886384, "model": "Model A", "choices": [{"index": 0, "delta": {}, "finish_reason": "stop"}]}
data: {"input_tokens": 7, "output_tokens": 6, "input_tokens_cost": 0.000007, "output_tokens_cost": 0.000012, "total_tokens_cost": 0.000019, "total_time_taken": 123, "tokens_per_second": 0.1057}
data: [DONE]
Example (Non-Streaming):
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{
"model": "Model A",
"messages": [
{ "role": "user", "content": "What is the capital of France?" }
]
}' https://chatapi.ai-now.space/chat/completions
Example (Streaming):
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{
"model": "Model A",
"messages": [
{ "role": "user", "content": "What is the capital of France?" }
],
"stream": true
}' https://chatapi.ai-now.space/chat/completions
/tokens
POST - Counts the number of tokens in a given text.
Request Body:
{
"text": "This is a test sentence."
}
Response:
{
"tokens": 6
}
Example:
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{
"text": "This is a test sentence."
}' https://chatapi.ai-now.space/tokens
/credits
GET - Retrieves the remaining credits for the API key.
Response:
{
"credits": 1000
}
Example:
curl -H "Authorization: Bearer YOUR_API_KEY" https://chatapi.ai-now.space/credits
/moderate
POST - Moderates the given input text using OpenAI's moderation API.
Request Body:
{
"input": "This is a test sentence."
}
Response:
{
"id": "modr-XXXXXXXXXXXXXXXXX",
"model": "text-moderation-latest",
"results": [
{
"categories": {
"hate": false,
"hate/threatening": false,
"self-harm": false,
"sexual": false,
"sexual/minors": false,
"violence": false,
"violence/graphic": false
},
"category_scores": {
"hate": 0.0000000000000000,
"hate/threatening": 0.0000000000000000,
"self-harm": 0.0000000000000000,
"sexual": 0.0000000000000000,
"sexual/minors": 0.0000000000000000,
"violence": 0.0000000000000000,
"violence/graphic": 0.0000000000000000
},
"flagged": false
}
]
}
Example:
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{
"input": "This is a test sentence."
}' https://chatapi.ai-now.space/moderate
Rate Limiting
The API is rate limited to 100 requests per minute per API key. Exceeding this limit will result in a 429 Too Many Requests
error.
Error Handling
The API uses standard HTTP status codes to indicate the success or failure of a request. Common error codes include:
- 400 Bad Request: The request was malformed or invalid.
- 401 Unauthorized: The API key was missing or invalid.
- 429 Too Many Requests: The rate limit has been exceeded.
- 500 Internal Server Error: An unexpected error occurred on the server.
Contact
For any questions or issues, please contact admin@ai-now.space.
Usage Examples
Python
Non-Streaming Example
import requests
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
data = {
'model': 'GPT-4 Turbo',
'messages': [
{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': 'What is the capital of France?'}
]
}
response = requests.post('https://chatapi.ai-now.space/chat/completions', headers=headers, json=data)
print(response.json())
Streaming Example
import requests
headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
data = {
'model': 'Claude 3.5 Sonnet',
'messages': [
{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': 'Write a short poem about the sea.'}
],
'stream': True
}
response = requests.post('https://chatapi.ai-now.space/chat/completions', headers=headers, json=data, stream=True)
for line in response.iter_lines():
if line:
decoded_line = line.decode('utf-8')
if decoded_line.startswith('data: '):
print(decoded_line[6:])
C#
Non-Streaming Example
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
public class ChatCompletionExample
{
public static async Task Main(string[] args)
{
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "YOUR_API_KEY");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var requestBody = new
{
model = "GPT-4 Turbo",
messages = new[]
{
new { role = "system", content = "You are a helpful assistant." },
new { role = "user", content = "What is the capital of France?" }
}
};
var json = JsonConvert.SerializeObject(requestBody);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://chatapi.ai-now.space/chat/completions", content);
var responseString = await response.Content.ReadAsStringAsync();
Console.WriteLine(responseString);
}
}
}
Streaming Example
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
public class ChatCompletionStreamingExample
{
public static async Task Main(string[] args)
{
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "YOUR_API_KEY");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var requestBody = new
{
model = "Claude 3.5 Sonnet",
messages = new[]
{
new { role = "system", content = "You are a helpful assistant." },
new { role = "user", content = "Write a short poem about the sea." }
},
stream = true
};
var json = JsonConvert.SerializeObject(requestBody);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync("https://chatapi.ai-now.space/chat/completions", content);
using (var stream = await response.Content.ReadAsStreamAsync())
using (var reader = new System.IO.StreamReader(stream))
{
string line;
while ((line = await reader.ReadLineAsync()) != null)
{
if (line.StartsWith("data: "))
{
Console.WriteLine(line.Substring(6));
}
}
}
}
}
}
Node.js
Non-Streaming Example
const axios = require('axios');
const headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
};
const data = {
model: 'GPT-4 Turbo',
messages: [
{ role: 'system', content: 'You are a helpful assistant.' },
{ role: 'user', content: 'What is the capital of France?' }
]
};
axios.post('https://chatapi.ai-now.space/chat/completions', data, { headers })
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
Streaming Example
const axios = require('axios');
const headers = {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
};
const data = {
model: 'Claude 3.5 Sonnet',
messages: [
{ role: 'system', content: 'You are a helpful assistant.' },
{ role: 'user', content: 'Write a short poem about the sea.' }
],
stream: true
};
axios.post('https://chatapi.ai-now.space/chat/completions', data, { headers, responseType: 'stream' })
.then(response => {
response.data.on('data', (chunk) => {
const lines = chunk.toString().split('\n');
lines.forEach(line => {
if (line.startsWith('data: ')) {
console.log(line.substring(6));
}
});
});
})
.catch(error => {
console.error(error);
});
Remember to replace YOUR_API_KEY
with your actual API key.