Skip to main content
POST
Send a message to the AI athlete assistant

Authorizations

Authorization
string
header
required

JWT Bearer token authentication. Use the /api/login endpoint to obtain a token.

Body

application/json
message
string
required

The athlete's message to the assistant (max 2000 characters).

Maximum string length: 2000
Example:

"Which 3 am I waiting on payment for?"

scope
enum<string> | null

Legacy compatibility discriminator. With allowlisted deal_type and a strictly integral positive job_id it forms a complete tuple. The tuple is authorized and logged for compatibility; it does not direct loop tool selection. Partial tuples are logged and discarded.

Available options:
athlete,
deal
Example:

"deal"

deal_type
enum<string> | null

Legacy tuple type: job references a partner job and fan_req references an athlete-owned, non-deleted fan service request. The complete tuple is authorized but does not route the turn; the loop resolves the message through authorized tools.

Available options:
job,
fan_req
Example:

"job"

job_id
integer | null

Polymorphic legacy tuple ID: partner_jobs.id for job or fan_request_service.id for fan_req. Laravel authorizes and logs complete tuples, rejects invalid or unauthorized values, and never truncates decimal or floating-point values. The value does not direct loop routing.

Required range: x >= 1
Example:

42

conversation_id
string | null

Canonical ID of an existing conversation to continue. When qa_scenario_run_id is supplied, this (or session_id) must be a UUID and becomes the exact dedicated run-owned session; both aliases may be sent only when identical.

Maximum string length: 255
Example:

"550e8400-e29b-41d4-a716-446655440000"

session_id
string | null

Backwards-compatible alias for conversation_id. When qa_scenario_run_id is supplied, this (or conversation_id) must be a UUID; both aliases may be sent only when identical.

Maximum string length: 255
Example:

"550e8400-e29b-41d4-a716-446655440000"

client_message_id
string<uuid> | null

Idempotency key required for modern requests. Optional only for legacy payloads that include a non-null deal_type or job_id.

Maximum string length: 64
Example:

"8dc1b7b7-716e-4f26-b4fa-cc9c8d300c18"

qa_scenario_run_id
string<uuid> | null

Optional evaluation-only cleanup correlation. Requires one requested conversation UUID. Accepted only for a server-approved non-production evaluation athlete and a matching succeeded single-athlete run of an evaluation-correlated scenario (evaluation.recent_hire_support_escalation@1, files.mixed_deliverables@1, files.needs_review@1, or files.revision_requested@1) in the current environment. The server reserves that exact run-owned session before dispatch and derives all attached turn entity IDs from persisted data; clients cannot supply them.

Example:

"44444444-4444-4444-8444-444444444444"

portfolio_cursor
string | null

Deprecated compatibility field from the retired v3 path. It is still validated and accepted from released clients but does not route the turn; the loop resolves the message through its tools and does not promise cursor continuation for arbitrary lists.

Maximum string length: 512

Response

Message sent. Returns the two-item envelope containing the athlete message and assistant reply plus required server-derived evaluation metadata. Clients cannot enable, disable, or spoof metadata values: both booleans are false for normal athletes and true only for approved non-production evaluation athletes. New turns return a loop-1 trace context_resolution; replayed historical v3 turns return their stored semantic context_resolution; top-level compatibility fields remain available in both cases. Loop-1 portfolio turns may persist optional strict compact portfolio_state metadata inside context_resolution for trusted continuity, without exposing raw tool arguments or full results. No-deal support replies may include a sanitized support_request_summary and review-only support_action. Safe knowledge replies contain curated text/source IDs and omit support actions, drafts, and buttons.

status
string
required
Example:

"success"

message
string
required
Example:

"Message Sent Successfully!"

metadata
object
required

Server-derived evaluation and notification-safety metadata. Clients cannot enable, disable, or spoof these values. Both fields are false for normal athletes and true only for approved non-production evaluation athletes.

data
object[]
required