Skip to main content

POST /api/ai/complete (Non-Streaming)

Get complete AI response in a single request for batch processing and non-interactive applications.

Endpoint

POST https://regpilot.dev/api/ai/complete

Authentication

Required header: X-API-Key: sk_your_api_key

Request

Body Parameters

ParameterTypeRequiredDefaultDescription
messagesArrayYes-Array of message objects
qualityStringNobalancedcheap, balanced, or frontier
temperatureNumberNo0.7Randomness (0-2)
maxTokensNumberNo1000Maximum tokens to generate
modeStringNotexttext or json

Response

Response Body

{
  text: string,              // Generated response
  provider: string,          // AI provider used
  model: string,            // Model name
  cacheHit: boolean,        // Was cached?
  usage: {
    promptTokens: number,
    completionTokens: number,
    totalTokens: number,
    costCents: number       // Cost in cents
  }
}

Code Examples

const response = await fetch('https://regpilot.dev/api/ai/complete', {
  method: 'POST',
  headers: {
    'X-API-Key': process.env.REGPILOT_API_KEY!,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    messages: [
      { role: 'user', content: 'Summarize quantum computing' }
    ],
    quality: 'balanced',
    maxTokens: 500
  })
});

const data = await response.json();
console.log(data.text);
console.log(`Used ${data.usage.totalTokens} tokens, cost: $${data.usage.costCents / 100}`);

JSON Mode

Request structured JSON responses:
const response = await fetch('https://regpilot.dev/api/ai/complete', {
  method: 'POST',
  headers: {
    'X-API-Key': process.env.REGPILOT_API_KEY!,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    messages: [
      { 
        role: 'user', 
        content: 'List 3 programming languages. Return as JSON with name and description fields.' 
      }
    ],
    mode: 'json',
    quality: 'balanced'
  })
});

const data = await response.json();
const languages = JSON.parse(data.text);
console.log(languages);
// Output: [{"name": "Python", "description": "..."}, ...]

Use Cases

Batch Processing

const prompts = [
  'Translate "hello" to Spanish',
  'Translate "hello" to French',
  'Translate "hello" to German'
];

const results = await Promise.all(
  prompts.map(async (prompt) => {
    const response = await fetch('https://regpilot.dev/api/ai/complete', {
      method: 'POST',
      headers: {
        'X-API-Key': process.env.REGPILOT_API_KEY!,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        messages: [{ role: 'user', content: prompt }],
        quality: 'cheap'
      })
    });
    return response.json();
  })
);

results.forEach((r, i) => {
  console.log(`${prompts[i]}: ${r.text}`);
});

Background Jobs

// Queue job
async function processDocument(documentId: string) {
  const document = await getDocument(documentId);
  
  const response = await fetch('https://regpilot.dev/api/ai/complete', {
    method: 'POST',
    headers: {
      'X-API-Key': process.env.REGPILOT_API_KEY!,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      messages: [
        { role: 'user', content: `Summarize this document: ${document.content}` }
      ],
      quality: 'balanced',
      maxTokens: 1000
    })
  });
  
  const result = await response.json();
  await saveSummary(documentId, result.text);
  
  return result;
}

Next: Usage Stats →