GET /v1/agent-runs/artifacts
Returns the durable list of served web-app artifacts built by completed app-builder runs in the given Caddie conversation. The organization is taken from the authenticated request; the conversation is scoped to it. Each item carries the run id and the absolute, browser-openable served URL.

Authentication

API Key (header: Authorization)

Query Parameters

conversationId string required query
Conversation ID
limit integer optional query
Max items to return (default 20, max 100)
offset integer optional query
Items to skip (default 0)

Responses

200 OK
application/json
code integer
data object
hasMore boolean
items object[]
Array of:
agentType string
createdAt string
runId string
url string
limit integer
offset integer
message string
requestId string
curl -X GET 'https://api.example.com/v1/agent-runs/artifacts?conversationId=string' \  -H 'Authorization: Bearer YOUR_API_TOKEN'
const response = await fetch('https://api.example.com/v1/agent-runs/artifacts?conversationId=string', {  method: 'GET',  headers: {      "Authorization": "Bearer YOUR_API_TOKEN"  }});const data = await response.json();console.log(data);
import requestsheaders = {    'Authorization': 'Bearer YOUR_API_TOKEN'}response = requests.get('https://api.example.com/v1/agent-runs/artifacts?conversationId=string', headers=headers)print(response.json())
package mainimport (	"fmt"	"io"	"net/http")func main() {	req, _ := http.NewRequest("GET", "https://api.example.com/v1/agent-runs/artifacts?conversationId=string", nil)	req.Header.Set("Authorization", "Bearer YOUR_API_TOKEN")	resp, _ := http.DefaultClient.Do(req)	defer resp.Body.Close()	result, _ := io.ReadAll(resp.Body)	fmt.Println(string(result))}
200 Response
{  "code": 200,  "data": {    "hasMore": true,    "items": [      {        "agentType": "<string>",        "createdAt": "<string>",        "runId": "<string>",        "url": "<string>"      }    ],    "limit": 123,    "offset": 123  },  "message": "success",  "requestId": "abc-123"}