Artifacts API
Artifacts are verifiable proof objects generated during AI execution. They provide transparent decision-making records including task plans, implementation plans, walkthroughs, verification proofs, decision records, code changes, and research summaries. Artifacts support status tracking, comments, version chains via superseding, and can be linked to conversations, messages, or workflow runs. Rate-limited to 120 requests per minute.
Artifact Metadata
Public endpoint for discovering available artifact types and statuses. No authentication required.
/api/v2/artifacts/meta/typesReturns the list of supported artifact types and valid status values. This endpoint is public and does not require authentication.
Request
400">curl -X 400">GET https:400">class="text-zinc-500">//api.lvng.ai/api/v2/artifacts/meta/typesResponse 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"data": {
400">class="text-emerald-400">"types": {
400">class="text-emerald-400">"TASK_PLAN": 400">class="text-emerald-400">"task_plan",
400">class="text-emerald-400">"IMPLEMENTATION_PLAN": 400">class="text-emerald-400">"implementation_plan",
400">class="text-emerald-400">"WALKTHROUGH": 400">class="text-emerald-400">"walkthrough",
400">class="text-emerald-400">"VERIFICATION_PROOF": 400">class="text-emerald-400">"verification_proof",
400">class="text-emerald-400">"DECISION_RECORD": 400">class="text-emerald-400">"decision_record",
400">class="text-emerald-400">"PLAN_MODE": 400">class="text-emerald-400">"plan_mode",
400">class="text-emerald-400">"CODE_CHANGE": 400">class="text-emerald-400">"code_change",
400">class="text-emerald-400">"RESEARCH_SUMMARY": 400">class="text-emerald-400">"research_summary"
},
400">class="text-emerald-400">"statuses": {
400">class="text-emerald-400">"DRAFT": 400">class="text-emerald-400">"draft",
400">class="text-emerald-400">"PENDING_REVIEW": 400">class="text-emerald-400">"pending_review",
400">class="text-emerald-400">"APPROVED": 400">class="text-emerald-400">"approved",
400">class="text-emerald-400">"REJECTED": 400">class="text-emerald-400">"rejected",
400">class="text-emerald-400">"SUPERSEDED": 400">class="text-emerald-400">"superseded"
}
}
}Artifact CRUD
Create, retrieve, update, and delete artifacts. All authenticated endpoints require a workspace context via the x-workspace-id header or workspace_id query parameter. Returns 400 if workspace context is missing.
/api/v2/artifactsAuthenticatedList artifacts with optional filters. Requires workspace context. Supports filtering by type, status, workflow, conversation, and message.
Query Parameters
typestringFilter by artifact type (task_plan, implementation_plan, walkthrough, verification_proof, decision_record, plan_mode, code_change, research_summary).
statusstringFilter by status (draft, pending_review, approved, rejected, superseded).
workflow_iduuidFilter by associated workflow ID.
workflow_run_iduuidFilter by workflow run ID.
conversation_iduuidFilter by conversation ID.
message_iduuidFilter by message ID.
limitinteger50Maximum number of artifacts to return.
offsetinteger0Pagination offset.
Request
400">curl -X 400">GET 400">class="text-emerald-400">"https:400">class="text-zinc-500">//api.lvng.ai/api/v2/artifacts?400">type=code_change&status=approved&limit=10" \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_API_KEY" \
-H 400">class="text-emerald-400">"x-workspace-id: b2c3d4e5-f6a7-8901-bcde-f23456789012"Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"data": [
{
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"7b8c9d0e-1f2a-3b4c-5d6e-7f8a9b0c1d2e",
400">class="text-emerald-400">"workspace_id": 400">class="text-emerald-400">"b2c3d4e5-f6a7-8901-bcde-f23456789012",
400">class="text-emerald-400">"customer_id": 400">class="text-emerald-400">"8f3a2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"code_change",
400">class="text-emerald-400">"subtype": null,
400">class="text-emerald-400">"title": 400">class="text-emerald-400">"API Rate Limiter Middleware",
400">class="text-emerald-400">"content": { 400">class="text-emerald-400">"diff": 400">class="text-emerald-400">"...", 400">class="text-emerald-400">"language": 400">class="text-emerald-400">"javascript" },
400">class="text-emerald-400">"status": 400">class="text-emerald-400">"approved",
400">class="text-emerald-400">"workflow_id": null,
400">class="text-emerald-400">"workflow_run_id": null,
400">class="text-emerald-400">"conversation_id": 400">class="text-emerald-400">"a1b2c3d4-e5f6-7890-abcd-ef1234567890",
400">class="text-emerald-400">"message_id": 400">class="text-emerald-400">"msg_1a2b3c4d-5e6f-7890-abcd-ef1234567890",
400">class="text-emerald-400">"parent_artifact_id": 400">class="text-emerald-400">"5a6b7c8d-9e0f-1a2b-3c4d-5e6f7a8b9c0d",
400">class="text-emerald-400">"confidence_score": 0.92,
400">class="text-emerald-400">"created_by": 400">class="text-emerald-400">"8f3a2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
400">class="text-emerald-400">"created_at": 400">class="text-emerald-400">"2026-03-15T16:20:00.000Z",
400">class="text-emerald-400">"updated_at": 400">class="text-emerald-400">"2026-03-18T09:10:00.000Z"
},
{
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"2c3d4e5f-6a7b-8c9d-0e1f-2a3b4c5d6e7f",
400">class="text-emerald-400">"workspace_id": 400">class="text-emerald-400">"b2c3d4e5-f6a7-8901-bcde-f23456789012",
400">class="text-emerald-400">"customer_id": 400">class="text-emerald-400">"8f3a2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"code_change",
400">class="text-emerald-400">"subtype": null,
400">class="text-emerald-400">"title": 400">class="text-emerald-400">"Database Migration Script",
400">class="text-emerald-400">"content": { 400">class="text-emerald-400">"diff": 400">class="text-emerald-400">"...", 400">class="text-emerald-400">"language": 400">class="text-emerald-400">"sql" },
400">class="text-emerald-400">"status": 400">class="text-emerald-400">"approved",
400">class="text-emerald-400">"workflow_id": null,
400">class="text-emerald-400">"workflow_run_id": null,
400">class="text-emerald-400">"conversation_id": 400">class="text-emerald-400">"b2c3d4e5-f6a7-8901-bcde-f12345678901",
400">class="text-emerald-400">"message_id": null,
400">class="text-emerald-400">"parent_artifact_id": null,
400">class="text-emerald-400">"confidence_score": null,
400">class="text-emerald-400">"created_by": 400">class="text-emerald-400">"8f3a2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
400">class="text-emerald-400">"created_at": 400">class="text-emerald-400">"2026-03-17T11:45:00.000Z",
400">class="text-emerald-400">"updated_at": 400">class="text-emerald-400">"2026-03-17T11:45:00.000Z"
}
],
400">class="text-emerald-400">"meta": {
400">class="text-emerald-400">"count": 2,
400">class="text-emerald-400">"limit": 10,
400">class="text-emerald-400">"offset": 0
}
}/api/v2/artifacts/:idAuthenticatedGet a single artifact by ID including its full content. Requires workspace context.
Path Parameters
iduuidrequiredThe artifact ID.
Request
400">curl -X 400">GET https:400">class="text-zinc-500">//api.lvng.ai/api/v2/artifacts/7b8c9d0e-1f2a-3b4c-5d6e-7f8a9b0c1d2e \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_API_KEY" \
-H 400">class="text-emerald-400">"x-workspace-id: b2c3d4e5-f6a7-8901-bcde-f23456789012"Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"data": {
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"7b8c9d0e-1f2a-3b4c-5d6e-7f8a9b0c1d2e",
400">class="text-emerald-400">"workspace_id": 400">class="text-emerald-400">"b2c3d4e5-f6a7-8901-bcde-f23456789012",
400">class="text-emerald-400">"customer_id": 400">class="text-emerald-400">"8f3a2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"code_change",
400">class="text-emerald-400">"subtype": null,
400">class="text-emerald-400">"title": 400">class="text-emerald-400">"API Rate Limiter Middleware",
400">class="text-emerald-400">"content": {
400">class="text-emerald-400">"diff": 400">class="text-emerald-400">"+400">import rateLimit 400">from 'express-rate-limit';\n+400">const limiter = rateLimit({ windowMs: 15 * 60 * 1000, max: 100 });",
400">class="text-emerald-400">"language": 400">class="text-emerald-400">"javascript",
400">class="text-emerald-400">"file_path": 400">class="text-emerald-400">"src/middleware/rate-limit.js"
},
400">class="text-emerald-400">"status": 400">class="text-emerald-400">"approved",
400">class="text-emerald-400">"workflow_id": null,
400">class="text-emerald-400">"workflow_run_id": null,
400">class="text-emerald-400">"conversation_id": 400">class="text-emerald-400">"a1b2c3d4-e5f6-7890-abcd-ef1234567890",
400">class="text-emerald-400">"message_id": 400">class="text-emerald-400">"msg_1a2b3c4d-5e6f-7890-abcd-ef1234567890",
400">class="text-emerald-400">"parent_artifact_id": 400">class="text-emerald-400">"5a6b7c8d-9e0f-1a2b-3c4d-5e6f7a8b9c0d",
400">class="text-emerald-400">"related_artifacts": [],
400">class="text-emerald-400">"confidence_score": 0.92,
400">class="text-emerald-400">"review_policy": 400">class="text-emerald-400">"agent_decides",
400">class="text-emerald-400">"created_by": 400">class="text-emerald-400">"8f3a2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
400">class="text-emerald-400">"created_at": 400">class="text-emerald-400">"2026-03-15T16:20:00.000Z",
400">class="text-emerald-400">"updated_at": 400">class="text-emerald-400">"2026-03-18T09:10:00.000Z"
}
}/api/v2/artifactsAuthenticatedCreate a new artifact. Type must be one of the valid artifact types returned by the meta/types endpoint. Title is required. Content defaults to empty object. Can be linked to a conversation, message, workflow, or parent artifact.
Body Parameters
typestringrequiredArtifact type: task_plan, implementation_plan, walkthrough, verification_proof, decision_record, plan_mode, code_change, or research_summary.
subtypestringOptional subtype for further classification.
titlestringrequiredDescriptive title for the artifact.
contentobjectArtifact content (structure varies by type). Defaults to empty object.
workflow_iduuidAssociated workflow ID.
workflow_run_iduuidAssociated workflow run ID.
parent_artifact_iduuidParent artifact ID for version chains.
related_artifactsuuid[]Array of related artifact IDs.
conversation_iduuidConversation that produced this artifact (for inline chat display).
message_iduuidSpecific message that produced this artifact.
confidenceobjectConfidence scoring object with score field.
review_policystringReview policy: always_proceed, agent_decides, or request_review.
Request
400">curl -X 400">POST https:400">class="text-zinc-500">//api.lvng.ai/api/v2/artifacts \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_API_KEY" \
-H 400">class="text-emerald-400">"Content-Type: application/json" \
-H 400">class="text-emerald-400">"x-workspace-id: b2c3d4e5-f6a7-8901-bcde-f23456789012" \
-d '{
400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"task_plan",
400">class="text-emerald-400">"title": 400">class="text-emerald-400">"Implement OAuth2 Authentication Flow",
400">class="text-emerald-400">"content": {
400">class="text-emerald-400">"objective": 400">class="text-emerald-400">"Add OAuth2 support for third-party integrations",
400">class="text-emerald-400">"steps": [
{ 400">class="text-emerald-400">"id": 1, 400">class="text-emerald-400">"description": 400">class="text-emerald-400">"Install passport-oauth2 dependency", 400">class="text-emerald-400">"estimated_time": 400">class="text-emerald-400">"5m" },
{ 400">class="text-emerald-400">"id": 2, 400">class="text-emerald-400">"description": 400">class="text-emerald-400">"Create OAuth strategy configuration", 400">class="text-emerald-400">"estimated_time": 400">class="text-emerald-400">"30m" },
{ 400">class="text-emerald-400">"id": 3, 400">class="text-emerald-400">"description": 400">class="text-emerald-400">"Add callback route handler", 400">class="text-emerald-400">"estimated_time": 400">class="text-emerald-400">"20m" },
{ 400">class="text-emerald-400">"id": 4, 400">class="text-emerald-400">"description": 400">class="text-emerald-400">"Write integration tests", 400">class="text-emerald-400">"estimated_time": 400">class="text-emerald-400">"45m" }
],
400">class="text-emerald-400">"total_estimated_time": 400">class="text-emerald-400">"1h 40m"
},
400">class="text-emerald-400">"conversation_id": 400">class="text-emerald-400">"a1b2c3d4-e5f6-7890-abcd-ef1234567890",
400">class="text-emerald-400">"review_policy": 400">class="text-emerald-400">"request_review"
}'Response 201
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"data": {
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"9e0f1a2b-3c4d-5e6f-7a8b-9c0d1e2f3a4b",
400">class="text-emerald-400">"workspace_id": 400">class="text-emerald-400">"b2c3d4e5-f6a7-8901-bcde-f23456789012",
400">class="text-emerald-400">"customer_id": 400">class="text-emerald-400">"8f3a2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"task_plan",
400">class="text-emerald-400">"subtype": null,
400">class="text-emerald-400">"title": 400">class="text-emerald-400">"Implement OAuth2 Authentication Flow",
400">class="text-emerald-400">"content": {
400">class="text-emerald-400">"objective": 400">class="text-emerald-400">"Add OAuth2 support for third-party integrations",
400">class="text-emerald-400">"steps": [
{ 400">class="text-emerald-400">"id": 1, 400">class="text-emerald-400">"description": 400">class="text-emerald-400">"Install passport-oauth2 dependency", 400">class="text-emerald-400">"estimated_time": 400">class="text-emerald-400">"5m" },
{ 400">class="text-emerald-400">"id": 2, 400">class="text-emerald-400">"description": 400">class="text-emerald-400">"Create OAuth strategy configuration", 400">class="text-emerald-400">"estimated_time": 400">class="text-emerald-400">"30m" },
{ 400">class="text-emerald-400">"id": 3, 400">class="text-emerald-400">"description": 400">class="text-emerald-400">"Add callback route handler", 400">class="text-emerald-400">"estimated_time": 400">class="text-emerald-400">"20m" },
{ 400">class="text-emerald-400">"id": 4, 400">class="text-emerald-400">"description": 400">class="text-emerald-400">"Write integration tests", 400">class="text-emerald-400">"estimated_time": 400">class="text-emerald-400">"45m" }
],
400">class="text-emerald-400">"total_estimated_time": 400">class="text-emerald-400">"1h 40m"
},
400">class="text-emerald-400">"status": 400">class="text-emerald-400">"draft",
400">class="text-emerald-400">"conversation_id": 400">class="text-emerald-400">"a1b2c3d4-e5f6-7890-abcd-ef1234567890",
400">class="text-emerald-400">"message_id": null,
400">class="text-emerald-400">"parent_artifact_id": null,
400">class="text-emerald-400">"related_artifacts": [],
400">class="text-emerald-400">"review_policy": 400">class="text-emerald-400">"request_review",
400">class="text-emerald-400">"created_by": 400">class="text-emerald-400">"8f3a2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
400">class="text-emerald-400">"created_at": 400">class="text-emerald-400">"2026-03-19T10:30:00.000Z",
400">class="text-emerald-400">"updated_at": 400">class="text-emerald-400">"2026-03-19T10:30:00.000Z"
}
}/api/v2/artifacts/:idAuthenticatedUpdate an artifact's title, content, confidence, or review policy. Requires workspace context.
Path Parameters
iduuidrequiredThe artifact ID.
Body Parameters
titlestringUpdated title.
contentobjectUpdated content object.
confidenceobjectUpdated confidence scoring. The score field is extracted and stored.
review_policystringUpdated review policy.
Request
400">curl -X 400">PATCH https:400">class="text-zinc-500">//api.lvng.ai/api/v2/artifacts/9e0f1a2b-3c4d-5e6f-7a8b-9c0d1e2f3a4b \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_API_KEY" \
-H 400">class="text-emerald-400">"Content-Type: application/json" \
-H 400">class="text-emerald-400">"x-workspace-id: b2c3d4e5-f6a7-8901-bcde-f23456789012" \
-d '{
400">class="text-emerald-400">"title": 400">class="text-emerald-400">"Implement OAuth2 Authentication Flow (Updated)",
400">class="text-emerald-400">"confidence": { 400">class="text-emerald-400">"score": 0.95 }
}'Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"data": {
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"9e0f1a2b-3c4d-5e6f-7a8b-9c0d1e2f3a4b",
400">class="text-emerald-400">"workspace_id": 400">class="text-emerald-400">"b2c3d4e5-f6a7-8901-bcde-f23456789012",
400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"task_plan",
400">class="text-emerald-400">"title": 400">class="text-emerald-400">"Implement OAuth2 Authentication Flow (Updated)",
400">class="text-emerald-400">"content": { 400">class="text-emerald-400">"..." : 400">class="text-emerald-400">"..." },
400">class="text-emerald-400">"status": 400">class="text-emerald-400">"draft",
400">class="text-emerald-400">"confidence_score": 0.95,
400">class="text-emerald-400">"review_policy": 400">class="text-emerald-400">"request_review",
400">class="text-emerald-400">"created_at": 400">class="text-emerald-400">"2026-03-19T10:30:00.000Z",
400">class="text-emerald-400">"updated_at": 400">class="text-emerald-400">"2026-03-19T10:45:00.000Z"
}
}/api/v2/artifacts/:idAuthenticatedPermanently delete an artifact. Does not affect other artifacts in the version chain. Requires workspace context.
Path Parameters
iduuidrequiredThe artifact ID.
Request
400">curl -X 400">DELETE https:400">class="text-zinc-500">//api.lvng.ai/api/v2/artifacts/9e0f1a2b-3c4d-5e6f-7a8b-9c0d1e2f3a4b \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_API_KEY" \
-H 400">class="text-emerald-400">"x-workspace-id: b2c3d4e5-f6a7-8901-bcde-f23456789012"Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"message": 400">class="text-emerald-400">"Artifact deleted"
}Status & Comments
Transition artifacts through their lifecycle and add review comments. Valid statuses are: draft, pending_review, approved, rejected, and superseded.
/api/v2/artifacts/:id/statusAuthenticatedTransition an artifact to a new status. The status must be a valid ARTIFACT_STATUS value. Records which user performed the review.
Path Parameters
iduuidrequiredThe artifact ID.
Body Parameters
statusstringrequiredNew status: draft, pending_review, approved, rejected, or superseded.
Request
400">curl -X 400">POST https:400">class="text-zinc-500">//api.lvng.ai/api/v2/artifacts/9e0f1a2b-3c4d-5e6f-7a8b-9c0d1e2f3a4b/status \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_API_KEY" \
-H 400">class="text-emerald-400">"Content-Type: application/json" \
-H 400">class="text-emerald-400">"x-workspace-id: b2c3d4e5-f6a7-8901-bcde-f23456789012" \
-d 400">class="text-emerald-400">'{ "status": "approved" }'Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"data": {
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"9e0f1a2b-3c4d-5e6f-7a8b-9c0d1e2f3a4b",
400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"task_plan",
400">class="text-emerald-400">"title": 400">class="text-emerald-400">"Implement OAuth2 Authentication Flow (Updated)",
400">class="text-emerald-400">"status": 400">class="text-emerald-400">"approved",
400">class="text-emerald-400">"reviewed_by": 400">class="text-emerald-400">"8f3a2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
400">class="text-emerald-400">"updated_at": 400">class="text-emerald-400">"2026-03-19T11:00:00.000Z"
}
}/api/v2/artifacts/:id/commentsAuthenticatedAdd a comment to an artifact. Comments are stored as part of the artifact. Supports optional position data for inline annotations.
Path Parameters
iduuidrequiredThe artifact ID.
Body Parameters
contentstringrequiredThe comment text.
positionobjectOptional position data for inline comments (e.g., line numbers, offsets).
Request
400">curl -X 400">POST https:400">class="text-zinc-500">//api.lvng.ai/api/v2/artifacts/9e0f1a2b-3c4d-5e6f-7a8b-9c0d1e2f3a4b/comments \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_API_KEY" \
-H 400">class="text-emerald-400">"Content-Type: application/json" \
-H 400">class="text-emerald-400">"x-workspace-id: b2c3d4e5-f6a7-8901-bcde-f23456789012" \
-d '{
400">class="text-emerald-400">"content": 400">class="text-emerald-400">"Looks good. Consider adding rate limiting per IP in addition to per user.",
400">class="text-emerald-400">"position": { 400">class="text-emerald-400">"step_id": 2 }
}'Response 201
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"data": {
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"9e0f1a2b-3c4d-5e6f-7a8b-9c0d1e2f3a4b",
400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"task_plan",
400">class="text-emerald-400">"title": 400">class="text-emerald-400">"Implement OAuth2 Authentication Flow (Updated)",
400">class="text-emerald-400">"comments": [
{
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"cmt_4b5c6d7e-8f9a-0b1c-2d3e-4f5a6b7c8d9e",
400">class="text-emerald-400">"user_id": 400">class="text-emerald-400">"8f3a2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
400">class="text-emerald-400">"content": 400">class="text-emerald-400">"Looks good. Consider adding rate limiting per IP in addition to per user.",
400">class="text-emerald-400">"position": { 400">class="text-emerald-400">"step_id": 2 },
400">class="text-emerald-400">"created_at": 400">class="text-emerald-400">"2026-03-19T11:15:00.000Z"
}
],
400">class="text-emerald-400">"updated_at": 400">class="text-emerald-400">"2026-03-19T11:15:00.000Z"
}
}Version Chain
Artifacts can be superseded to create version chains. When an artifact is superseded, its status is set to "superseded" and a new artifact is created with a parent_artifact_id linking back to the original. The chain endpoint traverses these links to show the full evolution history.
/api/v2/artifacts/:id/supersedeAuthenticatedCreate a new version of an artifact. The original is marked as superseded. The new artifact inherits the type, subtype, and workflow_id from the original. Title and content can be overridden.
Path Parameters
iduuidrequiredThe artifact ID to supersede.
Body Parameters
titlestringTitle for the new version. Defaults to the original title.
contentobjectContent for the new version. Defaults to the original content.
confidenceobjectConfidence scoring for the new version.
Request
400">curl -X 400">POST https:400">class="text-zinc-500">//api.lvng.ai/api/v2/artifacts/7b8c9d0e-1f2a-3b4c-5d6e-7f8a9b0c1d2e/supersede \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_API_KEY" \
-H 400">class="text-emerald-400">"Content-Type: application/json" \
-H 400">class="text-emerald-400">"x-workspace-id: b2c3d4e5-f6a7-8901-bcde-f23456789012" \
-d '{
400">class="text-emerald-400">"title": 400">class="text-emerald-400">"API Rate Limiter Middleware v4",
400">class="text-emerald-400">"content": {
400">class="text-emerald-400">"diff": 400">class="text-emerald-400">"+400">const limiter = rateLimit({ windowMs: 15 * 60 * 1000, max: 200, keyGenerator: (req) => req.ip });",
400">class="text-emerald-400">"language": 400">class="text-emerald-400">"javascript"
}
}'Response 201
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"data": {
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"f1a2b3c4-d5e6-f7a8-b9c0-d1e2f3a4b5c6",
400">class="text-emerald-400">"workspace_id": 400">class="text-emerald-400">"b2c3d4e5-f6a7-8901-bcde-f23456789012",
400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"code_change",
400">class="text-emerald-400">"title": 400">class="text-emerald-400">"API Rate Limiter Middleware v4",
400">class="text-emerald-400">"content": {
400">class="text-emerald-400">"diff": 400">class="text-emerald-400">"+400">const limiter = rateLimit({ windowMs: 15 * 60 * 1000, max: 200, keyGenerator: (req) => req.ip });",
400">class="text-emerald-400">"language": 400">class="text-emerald-400">"javascript"
},
400">class="text-emerald-400">"status": 400">class="text-emerald-400">"draft",
400">class="text-emerald-400">"parent_artifact_id": 400">class="text-emerald-400">"7b8c9d0e-1f2a-3b4c-5d6e-7f8a9b0c1d2e",
400">class="text-emerald-400">"created_by": 400">class="text-emerald-400">"8f3a2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
400">class="text-emerald-400">"created_at": 400">class="text-emerald-400">"2026-03-19T12:00:00.000Z",
400">class="text-emerald-400">"updated_at": 400">class="text-emerald-400">"2026-03-19T12:00:00.000Z"
}
}/api/v2/artifacts/:id/chainAuthenticatedGet the full version chain for an artifact. Traverses parent_artifact_id links to return all ancestors and descendants in chronological order.
Path Parameters
iduuidrequiredThe ID of any artifact in the chain.
Request
400">curl -X 400">GET https:400">class="text-zinc-500">//api.lvng.ai/api/v2/artifacts/7b8c9d0e-1f2a-3b4c-5d6e-7f8a9b0c1d2e/chain \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_API_KEY" \
-H 400">class="text-emerald-400">"x-workspace-id: b2c3d4e5-f6a7-8901-bcde-f23456789012"Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"data": [
{
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"3a4b5c6d-7e8f-9a0b-1c2d-3e4f5a6b7c8d",
400">class="text-emerald-400">"title": 400">class="text-emerald-400">"API Rate Limiter Middleware",
400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"code_change",
400">class="text-emerald-400">"status": 400">class="text-emerald-400">"superseded",
400">class="text-emerald-400">"parent_artifact_id": null,
400">class="text-emerald-400">"created_at": 400">class="text-emerald-400">"2026-03-10T08:00:00.000Z"
},
{
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"5a6b7c8d-9e0f-1a2b-3c4d-5e6f7a8b9c0d",
400">class="text-emerald-400">"title": 400">class="text-emerald-400">"API Rate Limiter Middleware",
400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"code_change",
400">class="text-emerald-400">"status": 400">class="text-emerald-400">"superseded",
400">class="text-emerald-400">"parent_artifact_id": 400">class="text-emerald-400">"3a4b5c6d-7e8f-9a0b-1c2d-3e4f5a6b7c8d",
400">class="text-emerald-400">"created_at": 400">class="text-emerald-400">"2026-03-12T14:30:00.000Z"
},
{
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"7b8c9d0e-1f2a-3b4c-5d6e-7f8a9b0c1d2e",
400">class="text-emerald-400">"title": 400">class="text-emerald-400">"API Rate Limiter Middleware",
400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"code_change",
400">class="text-emerald-400">"status": 400">class="text-emerald-400">"superseded",
400">class="text-emerald-400">"parent_artifact_id": 400">class="text-emerald-400">"5a6b7c8d-9e0f-1a2b-3c4d-5e6f7a8b9c0d",
400">class="text-emerald-400">"created_at": 400">class="text-emerald-400">"2026-03-15T16:20:00.000Z"
},
{
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"f1a2b3c4-d5e6-f7a8-b9c0-d1e2f3a4b5c6",
400">class="text-emerald-400">"title": 400">class="text-emerald-400">"API Rate Limiter Middleware v4",
400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"code_change",
400">class="text-emerald-400">"status": 400">class="text-emerald-400">"draft",
400">class="text-emerald-400">"parent_artifact_id": 400">class="text-emerald-400">"7b8c9d0e-1f2a-3b4c-5d6e-7f8a9b0c1d2e",
400">class="text-emerald-400">"created_at": 400">class="text-emerald-400">"2026-03-19T12:00:00.000Z"
}
]
}Context Queries
Fetch artifacts by their context -- either the conversation they were created in or the workflow run that produced them. These endpoints are useful for displaying artifacts inline within chat or workflow execution views.
/api/v2/artifacts/conversation/:conversationIdAuthenticatedGet all artifacts associated with a conversation. Used for inline artifact display in the chat interface.
Path Parameters
conversationIduuidrequiredThe conversation ID.
Request
400">curl -X 400">GET https:400">class="text-zinc-500">//api.lvng.ai/api/v2/artifacts/conversation/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_API_KEY" \
-H 400">class="text-emerald-400">"x-workspace-id: b2c3d4e5-f6a7-8901-bcde-f23456789012"Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"data": [
{
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"7b8c9d0e-1f2a-3b4c-5d6e-7f8a9b0c1d2e",
400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"code_change",
400">class="text-emerald-400">"title": 400">class="text-emerald-400">"API Rate Limiter Middleware",
400">class="text-emerald-400">"status": 400">class="text-emerald-400">"approved",
400">class="text-emerald-400">"conversation_id": 400">class="text-emerald-400">"a1b2c3d4-e5f6-7890-abcd-ef1234567890",
400">class="text-emerald-400">"message_id": 400">class="text-emerald-400">"msg_1a2b3c4d-5e6f-7890-abcd-ef1234567890",
400">class="text-emerald-400">"created_at": 400">class="text-emerald-400">"2026-03-15T16:20:00.000Z"
},
{
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"9e0f1a2b-3c4d-5e6f-7a8b-9c0d1e2f3a4b",
400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"task_plan",
400">class="text-emerald-400">"title": 400">class="text-emerald-400">"Implement OAuth2 Authentication Flow",
400">class="text-emerald-400">"status": 400">class="text-emerald-400">"approved",
400">class="text-emerald-400">"conversation_id": 400">class="text-emerald-400">"a1b2c3d4-e5f6-7890-abcd-ef1234567890",
400">class="text-emerald-400">"message_id": null,
400">class="text-emerald-400">"created_at": 400">class="text-emerald-400">"2026-03-19T10:30:00.000Z"
}
]
}/api/v2/artifacts/workflow/:runIdAuthenticatedGet all artifacts produced by a specific workflow execution run.
Path Parameters
runIduuidrequiredThe workflow run ID.
Request
400">curl -X 400">GET https:400">class="text-zinc-500">//api.lvng.ai/api/v2/artifacts/workflow/e5f6a7b8-c9d0-1234-ef56-789012345678 \
-H 400">class="text-emerald-400">"Authorization: Bearer YOUR_API_KEY" \
-H 400">class="text-emerald-400">"x-workspace-id: b2c3d4e5-f6a7-8901-bcde-f23456789012"Response 200
{
400">class="text-emerald-400">"success": true,
400">class="text-emerald-400">"data": [
{
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"ab12cd34-ef56-7890-abcd-ef1234567890",
400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"task_plan",
400">class="text-emerald-400">"title": 400">class="text-emerald-400">"Sales Report Generation Plan",
400">class="text-emerald-400">"status": 400">class="text-emerald-400">"approved",
400">class="text-emerald-400">"workflow_id": 400">class="text-emerald-400">"a1b2c3d4-e5f6-7890-abcd-ef1234567890",
400">class="text-emerald-400">"workflow_run_id": 400">class="text-emerald-400">"e5f6a7b8-c9d0-1234-ef56-789012345678",
400">class="text-emerald-400">"created_at": 400">class="text-emerald-400">"2026-03-19T18:00:01.000Z"
},
{
400">class="text-emerald-400">"id": 400">class="text-emerald-400">"bc23de45-f678-9012-bcde-f23456789012",
400">class="text-emerald-400">"400">type": 400">class="text-emerald-400">"walkthrough",
400">class="text-emerald-400">"title": 400">class="text-emerald-400">"Sales Report Generation - Execution Summary",
400">class="text-emerald-400">"status": 400">class="text-emerald-400">"approved",
400">class="text-emerald-400">"workflow_id": 400">class="text-emerald-400">"a1b2c3d4-e5f6-7890-abcd-ef1234567890",
400">class="text-emerald-400">"workflow_run_id": 400">class="text-emerald-400">"e5f6a7b8-c9d0-1234-ef56-789012345678",
400">class="text-emerald-400">"created_at": 400">class="text-emerald-400">"2026-03-19T18:00:47.000Z"
}
]
}