No dialog yet (fresh pair, observed 2026-10-12) — HTTP 200 with nothread and no thread_id anywhere in the payload: the server returns
the pre-thread compose form the app renders on the compose screen — user
cards, thread context items, reachability statuses, icebreakers, welcome
message (DirectThreadGetByParticipantsComposeResponse).
The compose fields were observed only on the compose form, so the thread
form does not declare them. The call never creates the dialog; check
thread for presence before reading either form.
Two wire forms, selected by whether a dialog between the participants already exists:
threadis present and carries the conversation (the previously verified shape, DirectThreadGetByParticipantsThreadResponse).threadand nothread_idanywhere in the payload: the server returns the pre-thread compose form the app renders on the compose screen — user cards, thread context items, reachability statuses, icebreakers, welcome message (DirectThreadGetByParticipantsComposeResponse).The compose fields were observed only on the compose form, so the thread form does not declare them. The call never creates the dialog; check
threadfor presence before reading either form.