JSPM

railwail

1.0.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 5
  • Score
    100M100P100Q29223F
  • License MIT

Official SDK for the Railwail API — run 100+ AI models (text, image, video, audio) with one simple call.

Package Exports

  • railwail

Readme

railwail

Official SDK for the Railwail API — run 100+ AI models (text, image, video, audio) with one simple call.

Install

npm install railwail

Quick Start

import railwail from "railwail";

const rw = railwail("rw_live_your_api_key");

// Text generation
const text = await rw.run("gpt-4", "Explain quantum computing in one sentence");
console.log(text);

// Image generation
const images = await rw.run("flux-schnell", "A sunset over Tokyo, studio ghibli style");
console.log(images[0].url);

// Embeddings
const vectors = await rw.run("text-embedding-3-small", "Hello world", { type: "embed" });

Get your API key at railwail.com/settings/api-keys.

Usage

rw.run(model, input, options?) — Universal

Auto-detects the right endpoint based on the model name. Returns a string for text, an array of image objects for images, or embedding vectors.

// String prompt → chat completion, returns string
const reply = await rw.run("claude-3-opus", "Write a haiku about coding");

// Message array → chat completion with history
const reply = await rw.run("gpt-4", [
  { role: "system", content: "You are a pirate." },
  { role: "user", content: "Tell me a joke" },
]);

// Image model → returns ImageResult[]
const images = await rw.run("flux-schnell", "A cat astronaut");
console.log(images[0].url);

// Force a type with { type: "embed" | "image" | "chat" }
const vectors = await rw.run("text-embedding-3-small", "Hello", { type: "embed" });

rw.chat(model, messages, options?) — Chat Completions

Full OpenAI-compatible chat completions response.

const res = await rw.chat("gpt-4", [
  { role: "user", content: "Hello!" }
], {
  temperature: 0.7,
  max_tokens: 500,
});

console.log(res.choices[0].message.content);
console.log(res.usage); // { prompt_tokens, completion_tokens, total_tokens }

rw.image(model, prompt, options?) — Image Generation

const res = await rw.image("flux-schnell", "A cyberpunk cityscape", {
  size: "1024x1024",
  n: 2,
  negative_prompt: "blurry, low quality",
});

for (const img of res.data) {
  console.log(img.url);
}

rw.embed(model, input, options?) — Embeddings

const res = await rw.embed("text-embedding-3-small", ["Hello", "World"]);

for (const item of res.data) {
  console.log(item.embedding.length); // vector dimensions
}

rw.models(options?) — List Models

const all = await rw.models();
const imageModels = await rw.models({ category: "image" });
const featured = await rw.models({ featured: true, limit: 10 });

rw.model(slug) — Get Model Details

const model = await rw.model("flux-schnell");
console.log(model.name, model.pricing);

rw.job(id) — Check Job Status

const job = await rw.job("job_abc123");
console.log(job.status); // "completed" | "queued" | "processing" | "failed"

Options

import { Railwail } from "railwail";

const rw = new Railwail("rw_live_xxx", {
  baseUrl: "https://railwail.com",  // default
  timeout: 120000,                   // 2 min default
});

Error Handling

import { RailwailError } from "railwail";

try {
  await rw.run("gpt-4", "Hello");
} catch (err) {
  if (err instanceof RailwailError) {
    console.log(err.status);  // 401, 402, 429, etc.
    console.log(err.code);    // "invalid_api_key", "insufficient_credits", etc.
    console.log(err.message); // Human-readable error
  }
}

Available Models

Browse all models at railwail.com/models. Categories include:

  • Text & Chat — GPT-4, Claude, Gemini, Llama, Mistral, Qwen, DeepSeek
  • Image — Flux, DALL-E, Stable Diffusion, Ideogram, Recraft
  • Video — Sora, Runway, Kling, Luma
  • Audio — Suno, ElevenLabs, Whisper
  • Embeddings — text-embedding-3, Nomic, BGE
  • Code — Codestral, StarCoder, DeepSeek Coder

License

MIT