> ## Documentation Index
> Fetch the complete documentation index at: https://praison.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Send Result • AI Agent SDK

> SendResult: Result of a single outbound send/edit through an adapter.

# SendResult

> Defined in the [**base**](../modules/base) module.

<Badge color="blue">AI Agent</Badge>

Result of a single outbound send/edit through an adapter.

A small, transport-neutral value returned by :meth:`BasePlatformAdapter.send`
and the default delivery helpers so callers can react uniformly regardless
of platform.

Attributes:
ok: Whether the send succeeded.
message\_id: Platform message id of the last message sent (if any). For
a chunked delivery this is the id of the final chunk.
chat\_id: The chat/channel the message was delivered to.
message\_ids: All platform message ids produced (one per chunk).
error: Human-readable error string when `ok` is False.
error\_kind: Structured, machine-readable classification of *why* the
send failed (see :class:`SendErrorKind`). `None` on success or
when a legacy adapter reports a failure without classifying it.
retryable: Whether the failure is worth retrying. Derived from
`error_kind` (permanent kinds → False); defaults True so an
unclassified failure preserves the historical retry-everything
behaviour rather than being silently dropped.
retry\_after: Suggested seconds to wait before retrying (from the
platform's rate-limit response, if provided).
metadata: Additional platform-specific result details.

## Properties

<ResponseField name="ok" type="bool">
  No description available.
</ResponseField>

<ResponseField name="message_id" type="Optional[str]">
  No description available.
</ResponseField>

<ResponseField name="chat_id" type="Optional[str]">
  No description available.
</ResponseField>

<ResponseField name="message_ids" type="List[str]">
  No description available.
</ResponseField>

<ResponseField name="error" type="Optional[str]">
  No description available.
</ResponseField>

<ResponseField name="error_kind" type="Optional[SendErrorKind]">
  No description available.
</ResponseField>

<ResponseField name="retryable" type="bool">
  No description available.
</ResponseField>

<ResponseField name="retry_after" type="Optional[float]">
  No description available.
</ResponseField>

<ResponseField name="metadata" type="Dict[str, Any]">
  No description available.
</ResponseField>

<Accordion title="Internal & Generic Methods">
  * **to\_dict**: Convert to a plain dictionary.
</Accordion>

## Source

<Card title="View on GitHub" icon="github" href="https://github.com/MervinPraison/PraisonAI/blob/main/src/praisonai-agents/praisonaiagents/bots/base.py#L247">
  `praisonaiagents/bots/base.py` at line 247
</Card>
