rynn-k / gists
g4f-nvidia.js javascript
const axios = require('axios');
const crypto = require('crypto');

class Nvidia {
    constructor() {
        const ip = [10, crypto.randomInt(256), crypto.randomInt(256), crypto.randomInt(256)].join('.');
        this.inst = axios.create({
            baseURL: 'https://g4f.space/api/nvidia',
            headers: {
                origin: 'https://g4f.dev',
                referer: 'https://g4f.dev/',
                'user-agent': 'Mozilla/5.0 (Linux; Android 15; SM-F958 Build/AP3A.240905.015) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.86 Mobile Safari/537.36',
                'x-forwarded-for': ip,
                'x-originating-ip': ip,
                'x-remote-ip': ip,
                'x-remote-addr': ip,
                'x-forwarded-host': ip,
                'x-connecting-ip': ip,
                'client-ip': ip,
                'x-client-ip': ip,
                'x-real-ip': ip,
                'x-forwarded-for-original': ip,
                'x-forwarded': ip,
                'x-cluster-client-ip': ip,
                'x-original-forwarded-for': ip
            }
        });
    }
    
    models = async function () {
        try {
            const { data } = await this.inst.get('/models');
            return data.data;
        } catch (error) {
            throw new Error(error.message);
        }
    }
    
    chat = async function ({ messages, model = 'openai/gpt-oss-120b', ...conf } = {}) {
        try {
            if (!Array.isArray(messages)) throw new Error('Messages array is required.');
            
            const models = await this.models();
            if (!models.map(m => m.id).includes(model)) throw new Error('Model not found.');
            
            const { data } = await this.inst.post('/chat/completions', {
                messages: messages,
                model: model,
                ...conf
            });
            
            return data;
        } catch (error) {
            throw new Error(error.message);
        }
    }
}

// Usage:
const or = new Nvidia();
or.chat({
    messages: [{
        role: 'user',
        content: 'hi!'
    }],
    model: 'google/gemma-3-27b-it'
}).then(res => console.log(JSON.stringify(res, null, 2)));
2225 bytes ยท Updated Mar 25, 2026