GenuineAIGenuineAI
For usersFor developers
  • Overview
  • Guides
  • How-to
  • API reference
Documentation
  • Quickstart
  • Authentication
  • Errors
  • Rate limits
  • API reference
Platform
  • Platform overview
  • Solutions
  • Pricing
  • Sign in
Company
  • Status
  • Trust Center
  • Contact
  • Terms of Service
  • Privacy Policy

© 2026 GenuineAI Ventures LLC

support@genuinehq.com
Overview
Core
Media library
AI
    Agents
    Threads
    Messages
      List messagesgetSend a messagepostGet a messagegetEdit a messagepatchUndo an exchangedeleteRate a messagepatch
    Spaces
    Prompts
    Prompt categories
    Wildcards
    Memories
    Assist
Documents
Knowledge
Creative
Website & content
Automation
Customer channels
Administration
Schemas
GenuineAI API
GenuineAI API

Messages

The messages in a conversation, and the endpoint that runs the model.


List messages

GET
https://api.genuineai.app/api/v1
/threads/{id}/messages

Returns the messages in one thread, oldest first. The thread is the collection — it comes from the path, so a message can never be read through a thread it does not belong to.

List messages › path Parameters

id
​string · uuid · required

List messages › query Parameters

cursor
​string · maxLength: 512 · pattern: ^[A-Za-z0-9_-]+$
limit
​integer
msg_active
​boolean
msg_created
​array
msg_id
​string · uuid
msg_model
​string
msg_sender
​string · uuid
offset
​integer · min: 0
sort
​string · minLength: 1 · maxLength: 64 · pattern: ^-?[a-z0-9_]+$

List messages › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

List messages › Responses

Success

​Message[] · required
has_more
​boolean · required

Whether more rows exist past this page.

next_cursor
​string | null · required

Pass back as cursor for the next page. Null on the last page.

GET/threads/{id}/messages
curl https://api.genuineai.app/api/v1/threads/:id/messages \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "data": [ { "msg_id": "00000000-0000-0000-0000-000000000000", "msg_thread": "msg_thread", "msg_parent": "msg_parent", "msg_sequence": "msg_sequence", "msg_role": "msg_role", "msg_content": {}, "msg_sender": "msg_sender", "msg_model": "msg_model", "msg_metadata": {}, "msg_error": "msg_error", "msg_feedback": "msg_feedback", "msg_form": "msg_form", "msg_version": "msg_version", "msg_edited_at": "2024-08-25T15:00:00Z", "msg_tool_calls": "msg_tool_calls", "msg_tool_call_id": "00000000-0000-0000-0000-000000000000", "msg_created": "2024-08-25T15:00:00Z", "msg_active": true } ], "has_more": true, "next_cursor": "next_cursor" }
json
application/json

Send a message

POST
https://api.genuineai.app/api/v1
/threads/{id}/messages

Posts to the thread and starts the assistant's reply. This is the endpoint that runs a model, so it consumes credits and is counted against the expensive rate-limit tier.

The reply is produced asynchronously — follow the thread's event stream rather than waiting on this response for it.

Send a message › path Parameters

id
​string · uuid · required

Send a message › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Send a message › Request Body

​array · required
thread_agent
​string · uuid
thread_ref
​object
msg_model
​string
msg_active
​boolean
responseMessageId
​string · uuid
attach_logo
​boolean
retry
​boolean
imageQuality
​string · enum
Enum values:
1K
2K
4K
aspectRatio
​string · enum
Enum values:
1:1
2:3
3:2
3:4
4:3
4:5
5:4
9:16
design_template
​string · uuid

Send a message › Responses

Success

One message in a thread — what was said, by whom, and what it cost.
Message
msg_id
​string · uuid
msg_thread
​string
msg_parent
​string
msg_sequence
​string
msg_role
​string
msg_content
​object
msg_sender
​string
msg_model
​string
msg_metadata
​object
msg_error
​string
msg_feedback
​string
msg_form
​string
msg_version
​string
msg_edited_at
​string · date-time
msg_tool_calls
​string
msg_tool_call_id
​string · uuid
msg_created
​string · date-time
msg_active
​boolean
POST/threads/{id}/messages
curl https://api.genuineai.app/api/v1/threads/:id/messages \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "msg_content": [ {} ], "thread_agent": "00000000-0000-0000-0000-000000000000", "thread_ref": {}, "msg_model": "msg_model", "msg_active": true, "responseMessageId": "00000000-0000-0000-0000-000000000000", "attach_logo": true, "retry": true, "imageQuality": "1K", "aspectRatio": "1:1", "design_template": "00000000-0000-0000-0000-000000000000" }'
Example Request Body
{ "msg_content": [ {} ], "thread_agent": "00000000-0000-0000-0000-000000000000", "thread_ref": {}, "msg_model": "msg_model", "msg_active": true, "responseMessageId": "00000000-0000-0000-0000-000000000000", "attach_logo": true, "retry": true, "imageQuality": "1K", "aspectRatio": "1:1", "design_template": "00000000-0000-0000-0000-000000000000" }
json
Example Responses
{ "msg_id": "00000000-0000-0000-0000-000000000000", "msg_thread": "msg_thread", "msg_parent": "msg_parent", "msg_sequence": "msg_sequence", "msg_role": "msg_role", "msg_content": {}, "msg_sender": "msg_sender", "msg_model": "msg_model", "msg_metadata": {}, "msg_error": "msg_error", "msg_feedback": "msg_feedback", "msg_form": "msg_form", "msg_version": "msg_version", "msg_edited_at": "2024-08-25T15:00:00Z", "msg_tool_calls": "msg_tool_calls", "msg_tool_call_id": "00000000-0000-0000-0000-000000000000", "msg_created": "2024-08-25T15:00:00Z", "msg_active": true }
json
application/json

Get a message

GET
https://api.genuineai.app/api/v1
/threads/{id}/messages/{message_id}

Returns one message with its content, its sender and what the model spent on it.

Get a message › path Parameters

id
​string · uuid · required
message_id
​string · uuid · required

Get a message › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Get a message › Responses

Success

One message in a thread — what was said, by whom, and what it cost.
Message
msg_id
​string · uuid
msg_thread
​string
msg_parent
​string
msg_sequence
​string
msg_role
​string
msg_content
​object
msg_sender
​string
msg_model
​string
msg_metadata
​object
msg_error
​string
msg_feedback
​string
msg_form
​string
msg_version
​string
msg_edited_at
​string · date-time
msg_tool_calls
​string
msg_tool_call_id
​string · uuid
msg_created
​string · date-time
msg_active
​boolean
GET/threads/{id}/messages/{message_id}
curl https://api.genuineai.app/api/v1/threads/:id/messages/:message_id \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "msg_id": "00000000-0000-0000-0000-000000000000", "msg_thread": "msg_thread", "msg_parent": "msg_parent", "msg_sequence": "msg_sequence", "msg_role": "msg_role", "msg_content": {}, "msg_sender": "msg_sender", "msg_model": "msg_model", "msg_metadata": {}, "msg_error": "msg_error", "msg_feedback": "msg_feedback", "msg_form": "msg_form", "msg_version": "msg_version", "msg_edited_at": "2024-08-25T15:00:00Z", "msg_tool_calls": "msg_tool_calls", "msg_tool_call_id": "00000000-0000-0000-0000-000000000000", "msg_created": "2024-08-25T15:00:00Z", "msg_active": true }
json
application/json

Edit a message

PATCH
https://api.genuineai.app/api/v1
/threads/{id}/messages/{message_id}/content

Rewrites the text of a message already sent. It does not re-run the model — discard the exchange for that.

Edit a message › path Parameters

id
​string · uuid · required
message_id
​string · uuid · required

Edit a message › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Edit a message › Request Body

​array · required

Edit a message › Responses

Success

No data returned
PATCH/threads/{id}/messages/{message_id}/content
curl https://api.genuineai.app/api/v1/threads/:id/messages/:message_id/content \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "msg_content": [ {} ] }'
Example Request Body
{ "msg_content": [ {} ] }
json
Example Responses
No example specified for this content type

Undo an exchange

DELETE
https://api.genuineai.app/api/v1
/threads/{id}/messages/{message_id}/discard

Removes this message, the user message that prompted it, and everything after it in the thread — rewinding the conversation to before the exchange. Used to back out an edit that went wrong.

Undo an exchange › path Parameters

id
​string · uuid · required
message_id
​string · uuid · required

Undo an exchange › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Undo an exchange › Responses

Success

No data returned
DELETE/threads/{id}/messages/{message_id}/discard
curl https://api.genuineai.app/api/v1/threads/:id/messages/:message_id/discard \ --request DELETE \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
No example specified for this content type

Rate a message

PATCH
https://api.genuineai.app/api/v1
/threads/{id}/messages/{message_id}/feedback

Records a thumbs up or down against an assistant reply.

Rate a message › path Parameters

id
​string · uuid · required
message_id
​string · uuid · required

Rate a message › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Rate a message › Request Body

feedback_type
​string · enum · required
Enum values:
up
down
clear

Rate a message › Responses

Success

No data returned
PATCH/threads/{id}/messages/{message_id}/feedback
curl https://api.genuineai.app/api/v1/threads/:id/messages/:message_id/feedback \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "feedback_type": "up" }'
Example Request Body
{ "feedback_type": "up" }
json
Example Responses
No example specified for this content type

ThreadsSpaces