Skip to main content
Artifact builders live in aion-core and are shared across all frameworks. Use them to construct a2a.types.Artifact objects before passing them to emit_artifact() or thread.post().
from aion.core.a2a import url_artifact, file_artifact, data_artifact

url_artifact

url_artifact(
    url: str,
    *,
    mime_type: str,
    name: str | None = None,
    artifact_id: str | None = None,
) -> Artifact
Build an artifact referencing a remote file by URL.
ParameterDescription
urlRemote file URL (e.g. "https://cdn.example.com/report.pdf").
mime_typeMIME type of the file (e.g. "application/pdf", "image/png").
nameHuman-readable artifact name. Defaults to "file".
artifact_idExplicit artifact ID. Auto-generated if not provided.
Returns: a2a.types.Artifact with a single FilePart (FileWithUri).
url_artifact("https://example.com/report.pdf", mime_type="application/pdf", name="report")

file_artifact

file_artifact(
    data: bytes,
    *,
    mime_type: str,
    name: str | None = None,
    artifact_id: str | None = None,
) -> Artifact
Build an artifact carrying inline file content as bytes.
ParameterDescription
dataFile content as bytes.
mime_typeMIME type of the file (e.g. "text/plain", "image/png").
nameHuman-readable artifact name. Defaults to "file".
artifact_idExplicit artifact ID. Auto-generated if not provided.
Returns: a2a.types.Artifact with a single FilePart (FileWithBytes). Raises: TypeError if data is not bytes.
file_artifact(pdf_bytes, mime_type="application/pdf", name="report")

data_artifact

data_artifact(
    data: dict,
    *,
    name: str | None = None,
    artifact_id: str | None = None,
) -> Artifact
Build an artifact carrying structured JSON data.
ParameterDescription
dataJSON-serializable dict.
nameHuman-readable artifact name. Defaults to "data".
artifact_idExplicit artifact ID. Auto-generated if not provided.
Returns: a2a.types.Artifact with a single DataPart (Protobuf Value).
data_artifact({"status": "ok", "score": 0.95}, name="result")

Full Example

from aion.core.a2a import data_artifact, file_artifact, url_artifact

# Remote file
report = url_artifact("https://example.com/report.pdf", mime_type="application/pdf", name="report")

# Inline bytes
thumbnail = file_artifact(image_bytes, mime_type="image/png", name="thumbnail")

# Structured data
metrics = data_artifact({"accuracy": 0.95, "latency_ms": 120}, name="metrics")