Skip to content

[Bug]: 404 on /api/v1/chat/completions #19

@Saboteur777

Description

@Saboteur777

Crust Version

2.1.0

Operating System

Linux

Area

Proxy

Bug Description

Trying to set up PhpStorm to use Crust as a proxy:

Image

Connection works fine, as the model dropdowns are populated by the response from Crust.

Trying to use AI Assistant results in an error:

Image

This is the stacktrace I got:

java.lang.IllegalStateException: Error from OpenAILLMClientExt API: 404 Not Found: Expected status code 200 but was 404
Body:

	at ai.koog.http.client.ktor.KtorKoogHttpClient$sse$1.invokeSuspend(KtorKoogHttpClient.kt:153)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:34)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:98)
	at com.intellij.openapi.application.impl.DispatchedRunnable.run(DispatchedRunnable.kt:42)
	at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:239)
	at com.intellij.openapi.application.TransactionGuardImpl.access$100(TransactionGuardImpl.java:25)
	at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:221)
	at com.intellij.openapi.application.impl.NonBlockingFlushQueue.runNextEvent$lambda$1$1$0(NonBlockingFlushQueue.kt:334)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:901)
	at com.intellij.openapi.application.impl.NonBlockingFlushQueue.runNextEvent$lambda$1$1(NonBlockingFlushQueue.kt:333)
	at com.intellij.concurrency.ThreadContext.resetThreadContext(threadContext.kt:294)
	at com.intellij.openapi.application.impl.NonBlockingFlushQueue.runNextEvent$lambda$1(NonBlockingFlushQueue.kt:330)
	at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.tryRunWriteIntentReadAction(NestedLocksThreadingSupport.kt:689)
	at com.intellij.openapi.application.impl.NonBlockingFlushQueue.runNextEvent(NonBlockingFlushQueue.kt:326)
	at com.intellij.openapi.application.impl.NonBlockingFlushQueue.flushNow(NonBlockingFlushQueue.kt:305)
	at com.intellij.openapi.application.impl.NonBlockingFlushQueue.FLUSH_NOW$lambda$0(NonBlockingFlushQueue.kt:167)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:781)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:728)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:750)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:664)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:517)
	at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$0$0$0(IdeEventQueue.kt:333)
	at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1065)
	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:109)
	at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1065)
	at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$0(IdeEventQueue.kt:331)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:371)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)

The interesting here is the 404, which I found in the Crust logs:

09:59:04 [INFO] [proxy] POST /api/v1/chat/completions model=openai/gpt-5.2-codex → https://api.openai.com/api/v1/chat/completions status=404 duration=387.141886ms [stream-error]

It seems Crust routes these to https://api.openai.com/api/v1/chat/completions, but the correct URL is https://api.openai.com/v1/chat/completions (no /api/). I suspect this comes from the setup I did on PhpStorm, but omitting the /api/ part resulted in a failed connection.

I am not sure if this is IDEA product-related issue, so feel free to close it if unrelated.

Steps to Reproduce

  1. Set up Crust in any IntelliJ IDEA product as OpenAI compatible provider.
  2. Try to use AI Assistant.

Logs

09:59:04 [INFO] [proxy] POST /api/v1/chat/completions model=openai/gpt-5.2-codex → https://api.openai.com/api/v1/chat/completions status=404 duration=387.141886ms [stream-error]

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions