Skip to main content

OpenRouter

Struct OpenRouter 

Source
pub struct OpenRouter { /* private fields */ }

Implementations§

Source§

impl OpenRouter

Source

pub fn from_key_auto(key: String) -> Self

Source

pub fn openrouter_flavor(key: String) -> Self

Source

pub fn openai(key: String) -> Self

Source

pub fn opencode_go(key: String) -> Self

Source

pub fn openai_codex(key: String) -> Self

Source

pub const fn backend_tag(&self) -> BackendTag

Source

pub fn is_openrouter(&self) -> bool

Video gen is OpenRouter-only (not OpenAI/Codex/OpenCode).

Source

pub async fn generate_video(&self, req: VideoRequest) -> Result<(Vec<u8>, f64)>

Generate a video via OpenRouter’s /api/v1/videos endpoint. Submits the job, polls every 10s (up to 6 min), downloads on completion. Returns (mp4_bytes, cost_in_usd).

Source

pub const fn default_utility_model(&self) -> &'static str

Source

pub const fn default_research_model(&self) -> &'static str

Source

pub const fn default_embedding_model(&self) -> &'static str

Source

pub const fn default_video_gen_model(&self) -> &'static str

Source

pub const fn default_image_gen_model(&self) -> &'static str

Source

pub async fn list_models(&self) -> Result<Vec<Model>>

Fetch the live model catalog. No hardcoded list except Codex, whose subscription endpoint does not expose the normal OpenAI models catalog.

Source

pub async fn complete( &self, model: &str, messages: Vec<ChatMessage>, ) -> Result<String>

One-shot, non-streaming completion. Used for short utility calls like generating a session topic/slug. Returns the assistant’s message text.

Source

pub async fn complete_with_usage( &self, model: &str, messages: Vec<ChatMessage>, ) -> Result<Completion>

One-shot completion with the provider’s usage object when available. Keeping usage attached to the text lets background workflow stages use the same cache accounting as the interactive stream.

Source

pub async fn complete_with_params( &self, model: &str, messages: Vec<ChatMessage>, params: &ChatParams, ) -> Result<Completion>

One-shot completion with request parameters and usage accounting.

Source

pub async fn describe_image( &self, model: &str, image_data_url: &str, ) -> Result<String>

One-shot, non-streaming vision call: describe image_data_url with model.

Source

pub async fn generate_image( &self, model: &str, prompt: &str, size: &str, image_data: Option<&[u8]>, ) -> Result<(Vec<u8>, String)>

Generate an image via OpenRouter’s dedicated /api/v1/images endpoint. Returns (decoded_bytes, file_extension) — the caller should use the returned extension (e.g. "png", "jpg", "webp") for the saved file.

Source

pub async fn ocr_page( &self, model: &str, image_data_url: &str, ) -> Result<String>

One-shot, non-streaming vision call: transcribe a scanned page image.

Source

pub async fn embed( &self, model: &str, inputs: Vec<String>, ) -> Result<Vec<Vec<f32>>>

Embed inputs with model (OpenAI-format /embeddings endpoint); returns one vector per input, in order.

Source

pub fn stream_chat( &self, model: String, messages: Vec<ChatMessage>, params: ChatParams, tools: Vec<ToolDef>, toolbox: Arc<dyn ToolExecutor>, max_tool_iters: usize, ) -> (UnboundedReceiver<StreamEvent>, AbortHandle)

Start a streaming completion. Spawns a task that pushes tokens over the returned channel; the UI loop drains it alongside keypresses. If the model calls a tool, the task runs it via toolbox and continues the conversation, bounded by max_tool_iters round-trips.

Trait Implementations§

Source§

impl Clone for OpenRouter

Source§

fn clone(&self) -> OpenRouter

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more