Skip to content
Get started

Create Message

ThreadCreateMessageResponse v1().omniAi().threads().createMessage(ThreadCreateMessageParamsparams, RequestOptionsrequestOptions = RequestOptions.none())
POST/v1/omni-ai/threads/{thread_id}/messages

Continue an existing conversation thread.

Appends a new user message to the thread and starts an assistant response. Only one response may be active per thread at a time — if the previous turn is still in progress, this endpoint returns 409 Conflict. Wait for the active response to reach a terminal status before submitting the next turn.

Poll the returned response_id via GET /omni-ai/responses/{response_id} for assistant output.

ParametersExpand Collapse
ThreadCreateMessageParams params
Optional<String> threadId
long accountId
String text
Optional<List<Capability>> capabilities
PREFILL_ORDER("PREFILL_ORDER")
OPEN_CHART("OPEN_CHART")
OPEN_SCREENER("OPEN_SCREENER")
OPEN_ENTITLEMENT_CONSENT("OPEN_ENTITLEMENT_CONSENT")
ReturnsExpand Collapse
class ThreadCreateMessageResponse:

Response payload for continuing a thread with a new message.

String responseId
String threadId
String userMessageId

Create Message

package com.clear_street.api.example;

import com.clear_street.api.client.ClearStreetClient;
import com.clear_street.api.client.okhttp.ClearStreetOkHttpClient;
import com.clear_street.api.models.v1.omniai.threads.ThreadCreateMessageParams;
import com.clear_street.api.models.v1.omniai.threads.ThreadCreateMessageResponse;

public final class Main {
    private Main() {}

    public static void main(String[] args) {
        ClearStreetClient client = ClearStreetOkHttpClient.builder()
            .fromEnv()
            .apiKey("My API Key")
            .build();

        ThreadCreateMessageParams params = ThreadCreateMessageParams.builder()
            .threadId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
            .accountId(19816L)
            .text("Compare that to AMD.")
            .build();
        ThreadCreateMessageResponse response = client.v1().omniAi().threads().createMessage(params);
    }
}
{
  "data": {
    "response_id": "019dbaec-8dd3-7fa3-89d0-5303609f125f",
    "thread_id": "019dbae9-73b3-7fe0-bd14-25fe57e91475",
    "user_message_id": "019dbaec-8dd4-7f91-bce2-3ec8fba79eb7"
  },
  "metadata": {
    "request_id": "48775400-61f4-4c6c-bc6d-8f4996c571c7"
  }
}
{
  "error": {
    "code": 400,
    "message": "Failed to parse the request body as JSON: EOF while parsing an object at line 3 column 0"
  },
  "metadata": {
    "request_id": "8cf61bb3-a8c6-4f3e-abe8-5a5327001b55"
  }
}
{
  "error": {
    "code": 409,
    "message": "thread already has an active response"
  },
  "metadata": {
    "request_id": "7b34ad9b-e09a-40d1-aab8-2185a8df5a31"
  }
}
{
  "error": {
    "code": 422,
    "message": "Failed to deserialize the JSON body into the target type: missing field `account_id` at line 3 column 3"
  },
  "metadata": {
    "request_id": "9fbd975d-be1e-4710-9004-1f54d0d4dfb6"
  }
}
Returns Examples
{
  "data": {
    "response_id": "019dbaec-8dd3-7fa3-89d0-5303609f125f",
    "thread_id": "019dbae9-73b3-7fe0-bd14-25fe57e91475",
    "user_message_id": "019dbaec-8dd4-7f91-bce2-3ec8fba79eb7"
  },
  "metadata": {
    "request_id": "48775400-61f4-4c6c-bc6d-8f4996c571c7"
  }
}
{
  "error": {
    "code": 400,
    "message": "Failed to parse the request body as JSON: EOF while parsing an object at line 3 column 0"
  },
  "metadata": {
    "request_id": "8cf61bb3-a8c6-4f3e-abe8-5a5327001b55"
  }
}
{
  "error": {
    "code": 409,
    "message": "thread already has an active response"
  },
  "metadata": {
    "request_id": "7b34ad9b-e09a-40d1-aab8-2185a8df5a31"
  }
}
{
  "error": {
    "code": 422,
    "message": "Failed to deserialize the JSON body into the target type: missing field `account_id` at line 3 column 3"
  },
  "metadata": {
    "request_id": "9fbd975d-be1e-4710-9004-1f54d0d4dfb6"
  }
}