Prerequisiti
Per usare l'API apertus serve un account e una chiave API. Registrati con Google o email nella pagina Ottieni chiave API. Ricevi la chiave subito, senza numero di telefono. Per testare, ogni nuovo account riceve $0,50 di credito di prova valido per 7 giorni. Non serve la carta. Per la produzione, ricarica con cripto (USDT su TRC20 o USDC su Base). Il credito non scade mai e gli errori non consumano saldo. Hai una chiave attiva per account; generarne una nuova sostituisce quella vecchia. Tieni la chiave al sicuro e passala nell'intestazione Authorization come token bearer. L'API è solo testo e serve un modello senza censura ottimizzato per rispondere senza rifiuti sui contenuti.
URL base e autenticazione
Indirizza tutte le richieste a https://api.apertus.cc/v1. Questo URL base funziona con gli SDK ufficiali OpenAI e qualsiasi client compatibile modificando semplicemente l'endpoint. Inserisci la tua chiave API nell'intestazione: Authorization: Bearer YOUR_API_KEY. L'unico endpoint supportato è POST /v1/chat/completions. È disponibile anche un endpoint GET /v1/models per verificare la connettività. L'ID del modello da utilizzare è uncensored. Questo è un modello a pesi aperti in esecuzione sui nostri server, distinto da GPT, Claude o altri fornitori. Gestisce input testuali e restituisce output testuali. Non aspettarti embedding, immagini o audio. L'API è progettata per gli sviluppatori che vogliono un'integrazione semplice senza la complessità del routing dei modelli.
Prima richiesta
Invia una richiesta di completamento base per verificare la configurazione. Usa il comando curl per fare POST all'endpoint chat completions. Imposta il modello su uncensored e includi un messaggio semplice. Questo conferma che la chiave API funziona e che l'URL base è corretto. Puoi regolare parametri come temperature o max_tokens. La risposta contiene il testo del modello. Se ricevi 401, controlla la chiave. 402 indica credito insufficiente. 429 significa limite di richieste raggiunto. Questa richiesta semplice mostra l'accesso API grezzo senza middleware. È il modo più veloce per validare l'integrazione prima di logica complessa.
Integrazione Python
Usa l'SDK Python ufficiale openai per interagire con l'API. Inizializza il client con l'URL base https://api.apertus.cc/v1 e la tua chiave API. Imposta il modello su uncensored. Invia i messaggi come una lista di dizionari. L'SDK gestisce la serializzazione e l'analisi degli errori automaticamente. Questo approccio è ideale per servizi backend o script di elaborazione dati. Puoi eseguire lo streaming delle risposte o ottenere blocchi completi. Il codice del client è identico a quello che useresti per OpenAI, solo con un URL base diverso. Questo riduce l'attrito quando si passa da altri fornitori. Assicurati di avere l'ultima versione dell'SDK per la migliore compatibilità. L'integrazione è minima, richiede solo modifiche di configurazione alla tua configurazione client esistente.
Integrazione Node.js
Per JavaScript o TypeScript, usa il pacchetto npm openai. Configura il client con lo stesso URL base e chiave di Python. Chiama chat.completions.create() con il modello uncensored. Passa i messaggi nel formato standard. Funziona bene per funzioni serverless o backend Node.js. L'SDK gestisce le richieste HTTP e il parsing. Gestisci gli errori controllando lo status. Il codice è portabile tra servizi compatibili con OpenAI. È facile cambiare provider. L'integrazione Node.js supporta sia pattern sincroni che asincroni. Usalo per API, bot o flussi di lavoro che richiedono generazione di testo senza censura.
Risposte in streaming
Abilita lo streaming impostando stream: true. L'API restituisce blocchi di testo man mano che vengono generati. Questo riduce la latenza percepita. Ogni blocco contiene parte del completamento. L'ultimo blocco include le statistiche sui token. Lo streaming è supportato via Server-Sent Events (SSE). Usa le helper di streaming dell'SDK per elaborare i blocchi. È utile per chat o app real-time. Nota che lo streaming consuma gli stessi token. Gli errori possono avvenire a metà flusso, gestisci le interruzioni. Il modello senza censura supporta lo streaming di default. Questa funzione permette di mostrare il testo in modo incrementale. È una funzione standard nelle API LLM moderne. Assicurati che il client gestisca le risposte parziali correttamente.
Limiti, errori e contesto
La finestra di contesto è di 100.000 token in totale, inclusi prompt e completamento. L'output massimo è di 32.000 token per richiesta, o 2.048 se max_tokens non è impostato. I limiti di richiesta sono 300 richieste al minuto e 8 richieste parallele per chiave. I corpi delle richieste devono essere inferiori a 8 MB. Gli errori comuni includono 401 per chiavi non valide, 402 per assenza di credito e 429 per limiti di richiesta. Il modello rifiuta i contenuti sessuali che coinvolgono minori. Non rifiuta altri argomenti legali per adulti, di fantasia o controversi. I prezzi sono trasparenti: $0,25 per 1M di token in input e $1,00 per 1M di token in output. Gli errori sono gratuiti. Il credito è prepagato e non scade mai. Usa questi limiti per pianificare la scalabilità della tua applicazione. L'API è pensata per la generazione di testo ad alto volume e conveniente.
cURL
curl https://api.apertus.cc/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Write a blunt product review of a cheap VPN."}]
}'Python
from openai import OpenAI
client = OpenAI(base_url="https://api.apertus.cc/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.apertus.cc/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);Streaming
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)