> For the complete documentation index, see [llms.txt](https://docs.pletor.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.pletor.ai/documentation/api-reference/models.md).

# Models

## The Agent object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"Agent":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique agent identifier"},"name":{"type":"string","title":"Name","description":"Agent display name"},"description":{"type":"string","title":"Description","description":"Agent description and purpose"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","description":"Categorization tags for filtering"},"inputs":{"items":{"$ref":"#/components/schemas/AgentInput"},"type":"array","title":"Inputs","description":"All inputs for this agent. Use these IDs when creating a run; check the `required` flag on each input to determine which are mandatory"},"outputs":{"items":{"$ref":"#/components/schemas/AgentOutput"},"type":"array","title":"Outputs","description":"Expected outputs. Match these IDs in run results"},"estimated_cost":{"type":"integer","title":"Estimated Cost","description":"Estimated credit cost per execution"},"has_human_review":{"type":"boolean","title":"Has Human Review","description":"True when this agent includes a human review step that will pause execution until resolved via POST /runs/{run_id}/reviews/{review_id}. Poll GET /runs/{run_id} for `awaiting_human_review` while the run is in progress.","default":false}},"type":"object","required":["id","name","description","estimated_cost"],"title":"Agent","description":"Complete representation of an AI agent with its inputs, outputs, and cost."},"AgentInput":{"properties":{"id":{"type":"string","title":"Id","description":"Node ID to use when providing this input"},"type":{"$ref":"#/components/schemas/NodeType","description":"Input type: text_input, image_input, video_input, file_input, etc."},"description":{"type":"string","title":"Description","description":"Human-readable description of this input"},"required":{"type":"boolean","title":"Required","description":"Whether this input must be provided when creating a run","default":true}},"type":"object","required":["id","type","description"],"title":"AgentInput","description":"Represents an input requirement for an agent."},"NodeType":{"type":"string","enum":["text_input","image_input","file_input","video_input","audio_input","brand_system_input","llm","image_generation","video_generation","text_to_speech","screen_mockup","remove_background","upscale","upscale_video","video_background_removal","extract_video_frame","image_generation_lora","change_aspect_ratio","meta_ads_extractor","image_edit","vectorize","image_erase","linkedin_ads_extractor","instagram_posts_extractor","linkedin_posts_extractor","human_review","match_brand_colors","tiktok_extractor","add_logo","video_subtitle","video_concat","video_add_sound","generic_fal","comment","group","composer","googledrive_find_file","googledrive_upload_file","prompt_concatenate","text_split","list_selector","video_edit","router","camera_angle","rename_asset","music_generation","merge_audio_video","trim_speed","extract_audio","remove_audio","isolate_sound","clone_voice","translate_audio","translate_video","transcribe"],"title":"NodeType"},"AgentOutput":{"properties":{"id":{"type":"string","title":"Id","description":"Node ID to match in run results"},"type":{"$ref":"#/components/schemas/DataType","description":"Output data type: text, images, videos, files, audio, or data"},"description":{"type":"string","title":"Description","description":"Human-readable description of this output"}},"type":"object","required":["id","type","description"],"title":"AgentOutput","description":"Represents an output produced by an agent."},"DataType":{"type":"string","enum":["text","images","videos","files","audio","data"],"title":"DataType","description":"Types of data that agents can accept as input or produce as output."}}}}
```

## The AgentInput object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"AgentInput":{"properties":{"id":{"type":"string","title":"Id","description":"Node ID to use when providing this input"},"type":{"$ref":"#/components/schemas/NodeType","description":"Input type: text_input, image_input, video_input, file_input, etc."},"description":{"type":"string","title":"Description","description":"Human-readable description of this input"},"required":{"type":"boolean","title":"Required","description":"Whether this input must be provided when creating a run","default":true}},"type":"object","required":["id","type","description"],"title":"AgentInput","description":"Represents an input requirement for an agent."},"NodeType":{"type":"string","enum":["text_input","image_input","file_input","video_input","audio_input","brand_system_input","llm","image_generation","video_generation","text_to_speech","screen_mockup","remove_background","upscale","upscale_video","video_background_removal","extract_video_frame","image_generation_lora","change_aspect_ratio","meta_ads_extractor","image_edit","vectorize","image_erase","linkedin_ads_extractor","instagram_posts_extractor","linkedin_posts_extractor","human_review","match_brand_colors","tiktok_extractor","add_logo","video_subtitle","video_concat","video_add_sound","generic_fal","comment","group","composer","googledrive_find_file","googledrive_upload_file","prompt_concatenate","text_split","list_selector","video_edit","router","camera_angle","rename_asset","music_generation","merge_audio_video","trim_speed","extract_audio","remove_audio","isolate_sound","clone_voice","translate_audio","translate_video","transcribe"],"title":"NodeType"}}}}
```

## The AgentOutput object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"AgentOutput":{"properties":{"id":{"type":"string","title":"Id","description":"Node ID to match in run results"},"type":{"$ref":"#/components/schemas/DataType","description":"Output data type: text, images, videos, files, audio, or data"},"description":{"type":"string","title":"Description","description":"Human-readable description of this output"}},"type":"object","required":["id","type","description"],"title":"AgentOutput","description":"Represents an output produced by an agent."},"DataType":{"type":"string","enum":["text","images","videos","files","audio","data"],"title":"DataType","description":"Types of data that agents can accept as input or produce as output."}}}}
```

## The AgentSummary object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"AgentSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique agent identifier"},"name":{"type":"string","title":"Name","description":"Agent display name"},"description":{"type":"string","title":"Description","description":"Agent description and purpose"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","description":"Categorization tags for filtering"},"estimated_cost":{"type":"integer","title":"Estimated Cost","description":"Estimated credit cost per execution"},"visibility":{"$ref":"#/components/schemas/FlowVisibility","description":"Visibility level: PRIVATE, SHARED, or PUBLIC"},"inputs":{"items":{"$ref":"#/components/schemas/AgentInput"},"type":"array","title":"Inputs","description":"All inputs for this agent; check the `required` flag on each to determine which are mandatory"},"has_human_review":{"type":"boolean","title":"Has Human Review","description":"True when this agent includes a human review step that will pause execution until resolved via POST /runs/{run_id}/reviews/{review_id}. Poll GET /runs/{run_id} for `awaiting_human_review` while the run is in progress.","default":false}},"type":"object","required":["id","name","description","estimated_cost","visibility"],"title":"AgentSummary","description":"Lightweight agent summary for list views."},"FlowVisibility":{"type":"string","enum":["public","shared","private"],"title":"FlowVisibility","description":"Visibility levels for workflows."},"AgentInput":{"properties":{"id":{"type":"string","title":"Id","description":"Node ID to use when providing this input"},"type":{"$ref":"#/components/schemas/NodeType","description":"Input type: text_input, image_input, video_input, file_input, etc."},"description":{"type":"string","title":"Description","description":"Human-readable description of this input"},"required":{"type":"boolean","title":"Required","description":"Whether this input must be provided when creating a run","default":true}},"type":"object","required":["id","type","description"],"title":"AgentInput","description":"Represents an input requirement for an agent."},"NodeType":{"type":"string","enum":["text_input","image_input","file_input","video_input","audio_input","brand_system_input","llm","image_generation","video_generation","text_to_speech","screen_mockup","remove_background","upscale","upscale_video","video_background_removal","extract_video_frame","image_generation_lora","change_aspect_ratio","meta_ads_extractor","image_edit","vectorize","image_erase","linkedin_ads_extractor","instagram_posts_extractor","linkedin_posts_extractor","human_review","match_brand_colors","tiktok_extractor","add_logo","video_subtitle","video_concat","video_add_sound","generic_fal","comment","group","composer","googledrive_find_file","googledrive_upload_file","prompt_concatenate","text_split","list_selector","video_edit","router","camera_angle","rename_asset","music_generation","merge_audio_video","trim_speed","extract_audio","remove_audio","isolate_sound","clone_voice","translate_audio","translate_video","transcribe"],"title":"NodeType"}}}}
```

## The App object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"App":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Stable app identifier"},"name":{"type":"string","title":"Name","description":"App display name"},"description":{"type":"string","title":"Description","description":"App description and purpose"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url","description":"Public CDN URL for the app thumbnail image"},"visibility":{"$ref":"#/components/schemas/FlowApplicationVisibility","description":"Visibility level: private, workspace, shared, or public"},"inputs":{"items":{"$ref":"#/components/schemas/AppInput"},"type":"array","title":"Inputs","description":"Required inputs for this app. Use these IDs when creating a run"},"outputs":{"items":{"$ref":"#/components/schemas/AppOutput"},"type":"array","title":"Outputs","description":"Expected outputs. Match these IDs in run results"},"estimated_cost":{"type":"integer","title":"Estimated Cost","description":"Estimated credit cost per execution"}},"type":"object","required":["id","name","description","visibility","estimated_cost"],"title":"App","description":"Complete representation of a runnable app with its inputs, outputs, and cost."},"FlowApplicationVisibility":{"type":"string","enum":["private","workspace","shared","public"],"title":"FlowApplicationVisibility","description":"Visibility levels for flow applications."},"AppInput":{"properties":{"id":{"type":"string","title":"Id","description":"Node ID to use when providing this input"},"type":{"$ref":"#/components/schemas/AppInputType","description":"Input type: text, image, video, audio, brand, or file"},"name":{"type":"string","title":"Name","description":"Display name of this input"},"required":{"type":"boolean","title":"Required","description":"Whether this input is mandatory"},"options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Options","description":"Allowed values when the input is a fixed set: label strings for text inputs, asset IDs for media inputs"},"min_selections":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Selections","description":"Minimum number of values the caller must provide for this input"},"max_selections":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Selections","description":"Maximum number of values the caller may provide for this input"}},"type":"object","required":["id","type","name","required"],"title":"AppInput","description":"Represents an input requirement for an app."},"AppInputType":{"type":"string","enum":["text","image","video","audio","brand","file"],"title":"AppInputType","description":"Types of inputs an app can accept from a caller."},"AppOutput":{"properties":{"id":{"type":"string","title":"Id","description":"Node ID to match in run results"},"type":{"$ref":"#/components/schemas/DataType","description":"Output data type: text, images, videos, files, audio, or data"},"description":{"type":"string","title":"Description","description":"Human-readable description of this output"}},"type":"object","required":["id","type","description"],"title":"AppOutput","description":"Represents an output produced by an app."},"DataType":{"type":"string","enum":["text","images","videos","files","audio","data"],"title":"DataType","description":"Types of data that agents can accept as input or produce as output."}}}}
```

## The AppInput object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"AppInput":{"properties":{"id":{"type":"string","title":"Id","description":"Node ID to use when providing this input"},"type":{"$ref":"#/components/schemas/AppInputType","description":"Input type: text, image, video, audio, brand, or file"},"name":{"type":"string","title":"Name","description":"Display name of this input"},"required":{"type":"boolean","title":"Required","description":"Whether this input is mandatory"},"options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Options","description":"Allowed values when the input is a fixed set: label strings for text inputs, asset IDs for media inputs"},"min_selections":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Selections","description":"Minimum number of values the caller must provide for this input"},"max_selections":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Selections","description":"Maximum number of values the caller may provide for this input"}},"type":"object","required":["id","type","name","required"],"title":"AppInput","description":"Represents an input requirement for an app."},"AppInputType":{"type":"string","enum":["text","image","video","audio","brand","file"],"title":"AppInputType","description":"Types of inputs an app can accept from a caller."}}}}
```

## The AppInputType object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"AppInputType":{"type":"string","enum":["text","image","video","audio","brand","file"],"title":"AppInputType","description":"Types of inputs an app can accept from a caller."}}}}
```

## The AppOutput object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"AppOutput":{"properties":{"id":{"type":"string","title":"Id","description":"Node ID to match in run results"},"type":{"$ref":"#/components/schemas/DataType","description":"Output data type: text, images, videos, files, audio, or data"},"description":{"type":"string","title":"Description","description":"Human-readable description of this output"}},"type":"object","required":["id","type","description"],"title":"AppOutput","description":"Represents an output produced by an app."},"DataType":{"type":"string","enum":["text","images","videos","files","audio","data"],"title":"DataType","description":"Types of data that agents can accept as input or produce as output."}}}}
```

## The AppRun object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"AppRun":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique run identifier"},"app_id":{"type":"string","format":"uuid","title":"App Id","description":"Stable ID of the app being executed"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id","description":"Client-supplied reference id provided at creation, if any"},"status":{"$ref":"#/components/schemas/FlowRunStatus","description":"Current execution state: in_progress, completed, failed, or canceled"},"progress":{"type":"number","maximum":1,"minimum":0,"title":"Progress","description":"Completion progress from 0.0 to 1.0","default":0},"current_node":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Node","description":"Type of the node currently executing (e.g. image_generation, llm). Only present while status is in_progress"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the run was created"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At","description":"When execution started"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At","description":"When execution finished"},"inputs":{"items":{"$ref":"#/components/schemas/RunInput"},"type":"array","title":"Inputs","description":"Inputs provided for this run"},"results":{"items":{"$ref":"#/components/schemas/RunResult"},"type":"array","title":"Results","description":"Curated app outputs, populated when status is completed"},"cost":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cost","description":"Total credits consumed by this run"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error","description":"Error message if the run failed"},"failure_reason":{"anyOf":[{"$ref":"#/components/schemas/FailureReason"},{"type":"null"}],"description":"Categorized failure reason (timeout, content_policy, insufficient_credits, invalid_input, provider_error, provider_auth_required, canceled, unknown). Present when status is failed."}},"type":"object","required":["id","app_id","status","created_at"],"title":"AppRun","description":"Complete representation of an app execution run."},"FlowRunStatus":{"type":"string","enum":["in_progress","completed","failed","canceled"],"title":"FlowRunStatus","description":"Execution status of a workflow run."},"RunInput":{"properties":{"id":{"type":"string","title":"Id","description":"Node ID that this input targets"},"value":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"}],"title":"Value","description":"Input value: plain text string for text inputs, or {\"asset_ids\": [\"uuid\"]} for asset inputs"}},"type":"object","required":["id","value"],"title":"RunInput","description":"Represents an input provided to a run.\n\nShared by agent runs and app runs: both pipelines accept the same wire shape."},"RunResult":{"properties":{"id":{"type":"string","title":"Id","description":"Node ID that produced this result"},"type":{"$ref":"#/components/schemas/DataType","description":"Type of the result data"},"value":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Value","description":"Result content: text string, list of asset UUIDs, or structured data"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Human-readable description of the result"}},"type":"object","required":["id","type"],"title":"RunResult","description":"Represents a result produced by a run.\n\nShared by agent runs and app runs: both pipelines emit the same wire shape."},"DataType":{"type":"string","enum":["text","images","videos","files","audio","data"],"title":"DataType","description":"Types of data that agents can accept as input or produce as output."},"FailureReason":{"type":"string","enum":["timeout","content_policy","insufficient_credits","invalid_input","provider_error","provider_auth_required","canceled","unknown"],"title":"FailureReason","description":"Stable, client-facing categories for why a run failed. A curated public\nview over the internal `NodeFailureReason`; internal-only causes collapse to\n`unknown` so the public contract stays stable as internals change."}}}}
```

## The AppRunCreateRequest object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"AppRunCreateRequest":{"properties":{"app_id":{"type":"string","format":"uuid","title":"App Id","description":"Stable ID of the app to execute"},"inputs":{"items":{"$ref":"#/components/schemas/RunInput"},"type":"array","title":"Inputs","description":"Inputs for the app. Get required inputs from GET /apps/{id}"},"external_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"External Id","description":"Optional client-supplied reference id (e.g. your order or job id, max 255 chars). Unique per organization: reusing one returns 409 conflict — so a dropped-response retry never creates a duplicate. Echoed on every app run and filterable via GET /app-runs?external_id= to fetch it. Use a new id per run."}},"type":"object","required":["app_id"],"title":"AppRunCreateRequest","description":"Request to create and start a new app execution run."},"RunInput":{"properties":{"id":{"type":"string","title":"Id","description":"Node ID that this input targets"},"value":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"}],"title":"Value","description":"Input value: plain text string for text inputs, or {\"asset_ids\": [\"uuid\"]} for asset inputs"}},"type":"object","required":["id","value"],"title":"RunInput","description":"Represents an input provided to a run.\n\nShared by agent runs and app runs: both pipelines accept the same wire shape."}}}}
```

## The AppRunSummary object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"AppRunSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique run identifier"},"app_id":{"type":"string","format":"uuid","title":"App Id","description":"Stable ID of the app that was executed"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id","description":"Client-supplied reference id provided at creation, if any"},"status":{"$ref":"#/components/schemas/FlowRunStatus","description":"Current execution state"},"progress":{"type":"number","maximum":1,"minimum":0,"title":"Progress","description":"Completion progress from 0.0 to 1.0","default":0},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the run was created"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At","description":"When execution started"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At","description":"When execution finished"},"cost":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cost","description":"Total credits consumed by this run"}},"type":"object","required":["id","app_id","status","created_at"],"title":"AppRunSummary","description":"Lightweight app-run summary for list views."},"FlowRunStatus":{"type":"string","enum":["in_progress","completed","failed","canceled"],"title":"FlowRunStatus","description":"Execution status of a workflow run."}}}}
```

## The AppSummary object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"AppSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Stable app identifier"},"name":{"type":"string","title":"Name","description":"App display name"},"description":{"type":"string","title":"Description","description":"App description and purpose"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url","description":"Public CDN URL for the app thumbnail image"},"visibility":{"$ref":"#/components/schemas/FlowApplicationVisibility","description":"Visibility level: private, workspace, shared, or public"},"estimated_cost":{"type":"integer","title":"Estimated Cost","description":"Estimated credit cost per execution"},"inputs":{"items":{"$ref":"#/components/schemas/AppInput"},"type":"array","title":"Inputs","description":"Required inputs for this app"}},"type":"object","required":["id","name","description","visibility","estimated_cost"],"title":"AppSummary","description":"Lightweight app summary for list views."},"FlowApplicationVisibility":{"type":"string","enum":["private","workspace","shared","public"],"title":"FlowApplicationVisibility","description":"Visibility levels for flow applications."},"AppInput":{"properties":{"id":{"type":"string","title":"Id","description":"Node ID to use when providing this input"},"type":{"$ref":"#/components/schemas/AppInputType","description":"Input type: text, image, video, audio, brand, or file"},"name":{"type":"string","title":"Name","description":"Display name of this input"},"required":{"type":"boolean","title":"Required","description":"Whether this input is mandatory"},"options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Options","description":"Allowed values when the input is a fixed set: label strings for text inputs, asset IDs for media inputs"},"min_selections":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Selections","description":"Minimum number of values the caller must provide for this input"},"max_selections":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Selections","description":"Maximum number of values the caller may provide for this input"}},"type":"object","required":["id","type","name","required"],"title":"AppInput","description":"Represents an input requirement for an app."},"AppInputType":{"type":"string","enum":["text","image","video","audio","brand","file"],"title":"AppInputType","description":"Types of inputs an app can accept from a caller."}}}}
```

## The Asset object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"Asset":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique asset identifier"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id","description":"Client-supplied reference id provided at upload, if any"},"asset_type":{"$ref":"#/components/schemas/AssetType","description":"Asset role: reference (input), intermediate, or output"},"media_type":{"$ref":"#/components/schemas/MediaType","description":"Media category: image, video, audio, or file"},"media_extension":{"$ref":"#/components/schemas/MediaExtension","description":"File extension: png, jpg, mp4, pdf, etc."},"visibility":{"$ref":"#/components/schemas/AssetVisibility","description":"Visibility level: private, public, or shared"},"bookmarked":{"type":"boolean","title":"Bookmarked","description":"Whether the asset is bookmarked","default":false},"archived":{"type":"boolean","title":"Archived","description":"Whether the asset is archived","default":false},"downloaded":{"type":"boolean","title":"Downloaded","description":"Whether the asset has been downloaded before","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the asset was created"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When the asset was last modified"},"url":{"type":"string","title":"Url","description":"CDN URL for the asset (thumbnail/preview size)"},"large_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Large Url","description":"CDN URL for the full-resolution version"},"agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Id","description":"ID of the agent that produced this asset. Null for uploaded assets."},"run_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Run Id","description":"ID of the run that produced this asset. Null for uploaded assets."},"asset_metadata":{"additionalProperties":{"anyOf":[{"type":"string"},{"type":"integer"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},"type":"object","title":"Asset Metadata","description":"Technical metadata: generation_model, aspect_ratio, duration, etc."},"is_flow_output_sample":{"type":"boolean","title":"Is Flow Output Sample","description":"Whether this asset is a sample output displayed on the agent card","default":false},"blur_hash":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Blur Hash","description":"BlurHash string for progressive image loading"}},"type":"object","required":["id","asset_type","media_type","media_extension","visibility","created_at","updated_at","url"],"title":"Asset","description":"Complete asset with all metadata."},"AssetType":{"type":"string","enum":["reference","intermediate","output"],"title":"AssetType","description":"Classification of assets by their role in workflows."},"MediaType":{"type":"string","enum":["image","video","audio","file"],"title":"MediaType","description":"Primary media categories for assets."},"MediaExtension":{"type":"string","enum":["png","jpg","jpeg","svg","heic","heif","avif","webp","mp4","wav","mp3","mov","webm","pdf","docx","csv","txt","json","md","ttf","otf","woff","woff2"],"title":"MediaExtension"},"AssetVisibility":{"type":"string","enum":["public","shared","private"],"title":"AssetVisibility"}}}}
```

## The AssetSummary object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"AssetSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique asset identifier"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id","description":"Client-supplied reference id provided at upload, if any"},"asset_type":{"$ref":"#/components/schemas/AssetType","description":"Asset role: reference (input), intermediate, or output"},"media_type":{"$ref":"#/components/schemas/MediaType","description":"Media category: image, video, audio, or file"},"media_extension":{"$ref":"#/components/schemas/MediaExtension","description":"File extension: png, jpg, mp4, pdf, etc."},"visibility":{"$ref":"#/components/schemas/AssetVisibility","description":"Visibility level: private, public, or shared"},"bookmarked":{"type":"boolean","title":"Bookmarked","description":"Whether the asset is bookmarked","default":false},"archived":{"type":"boolean","title":"Archived","description":"Whether the asset is archived","default":false},"downloaded":{"type":"boolean","title":"Downloaded","description":"Whether the asset has been downloaded before","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the asset was created"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When the asset was last modified"},"url":{"type":"string","title":"Url","description":"CDN URL for the asset (thumbnail/preview size)"},"large_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Large Url","description":"CDN URL for the full-resolution version"},"agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Id","description":"ID of the agent that produced this asset. Null for uploaded assets."},"run_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Run Id","description":"ID of the run that produced this asset. Null for uploaded assets."}},"type":"object","required":["id","asset_type","media_type","media_extension","visibility","created_at","updated_at","url"],"title":"AssetSummary","description":"Summary of an asset for list views."},"AssetType":{"type":"string","enum":["reference","intermediate","output"],"title":"AssetType","description":"Classification of assets by their role in workflows."},"MediaType":{"type":"string","enum":["image","video","audio","file"],"title":"MediaType","description":"Primary media categories for assets."},"MediaExtension":{"type":"string","enum":["png","jpg","jpeg","svg","heic","heif","avif","webp","mp4","wav","mp3","mov","webm","pdf","docx","csv","txt","json","md","ttf","otf","woff","woff2"],"title":"MediaExtension"},"AssetVisibility":{"type":"string","enum":["public","shared","private"],"title":"AssetVisibility"}}}}
```

## The AssetType object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"AssetType":{"type":"string","enum":["reference","intermediate","output"],"title":"AssetType","description":"Classification of assets by their role in workflows."}}}}
```

## The AssetVisibility object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"AssetVisibility":{"type":"string","enum":["public","shared","private"],"title":"AssetVisibility"}}}}
```

## The Body\_upload\_asset\_assets\_upload\_\_post object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"Body_upload_asset_assets_upload__post":{"properties":{"file":{"type":"string","contentMediaType":"application/octet-stream","title":"File"},"visibility":{"type":"string","title":"Visibility","description":"Asset visibility level","default":"private"},"filename":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Filename","description":"Optional custom filename"},"external_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"External Id","description":"Optional client-supplied reference id, unique per organization. Reusing one returns 409; fetch the existing asset via GET /assets?external_id=. Makes the upload safe to retry without creating a duplicate."}},"type":"object","required":["file"],"title":"Body_upload_asset_assets_upload__post"}}}}
```

## The CursorPaginatedResponse\_AgentSummary\_ object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"CursorPaginatedResponse_AgentSummary_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/AgentSummary"},"type":"array","title":"Data"},"has_more":{"type":"boolean","title":"Has More"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["data","has_more"],"title":"CursorPaginatedResponse[AgentSummary]"},"AgentSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique agent identifier"},"name":{"type":"string","title":"Name","description":"Agent display name"},"description":{"type":"string","title":"Description","description":"Agent description and purpose"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags","description":"Categorization tags for filtering"},"estimated_cost":{"type":"integer","title":"Estimated Cost","description":"Estimated credit cost per execution"},"visibility":{"$ref":"#/components/schemas/FlowVisibility","description":"Visibility level: PRIVATE, SHARED, or PUBLIC"},"inputs":{"items":{"$ref":"#/components/schemas/AgentInput"},"type":"array","title":"Inputs","description":"All inputs for this agent; check the `required` flag on each to determine which are mandatory"},"has_human_review":{"type":"boolean","title":"Has Human Review","description":"True when this agent includes a human review step that will pause execution until resolved via POST /runs/{run_id}/reviews/{review_id}. Poll GET /runs/{run_id} for `awaiting_human_review` while the run is in progress.","default":false}},"type":"object","required":["id","name","description","estimated_cost","visibility"],"title":"AgentSummary","description":"Lightweight agent summary for list views."},"FlowVisibility":{"type":"string","enum":["public","shared","private"],"title":"FlowVisibility","description":"Visibility levels for workflows."},"AgentInput":{"properties":{"id":{"type":"string","title":"Id","description":"Node ID to use when providing this input"},"type":{"$ref":"#/components/schemas/NodeType","description":"Input type: text_input, image_input, video_input, file_input, etc."},"description":{"type":"string","title":"Description","description":"Human-readable description of this input"},"required":{"type":"boolean","title":"Required","description":"Whether this input must be provided when creating a run","default":true}},"type":"object","required":["id","type","description"],"title":"AgentInput","description":"Represents an input requirement for an agent."},"NodeType":{"type":"string","enum":["text_input","image_input","file_input","video_input","audio_input","brand_system_input","llm","image_generation","video_generation","text_to_speech","screen_mockup","remove_background","upscale","upscale_video","video_background_removal","extract_video_frame","image_generation_lora","change_aspect_ratio","meta_ads_extractor","image_edit","vectorize","image_erase","linkedin_ads_extractor","instagram_posts_extractor","linkedin_posts_extractor","human_review","match_brand_colors","tiktok_extractor","add_logo","video_subtitle","video_concat","video_add_sound","generic_fal","comment","group","composer","googledrive_find_file","googledrive_upload_file","prompt_concatenate","text_split","list_selector","video_edit","router","camera_angle","rename_asset","music_generation","merge_audio_video","trim_speed","extract_audio","remove_audio","isolate_sound","clone_voice","translate_audio","translate_video","transcribe"],"title":"NodeType"}}}}
```

## The CursorPaginatedResponse\_AppRunSummary\_ object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"CursorPaginatedResponse_AppRunSummary_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/AppRunSummary"},"type":"array","title":"Data"},"has_more":{"type":"boolean","title":"Has More"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["data","has_more"],"title":"CursorPaginatedResponse[AppRunSummary]"},"AppRunSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique run identifier"},"app_id":{"type":"string","format":"uuid","title":"App Id","description":"Stable ID of the app that was executed"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id","description":"Client-supplied reference id provided at creation, if any"},"status":{"$ref":"#/components/schemas/FlowRunStatus","description":"Current execution state"},"progress":{"type":"number","maximum":1,"minimum":0,"title":"Progress","description":"Completion progress from 0.0 to 1.0","default":0},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the run was created"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At","description":"When execution started"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At","description":"When execution finished"},"cost":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cost","description":"Total credits consumed by this run"}},"type":"object","required":["id","app_id","status","created_at"],"title":"AppRunSummary","description":"Lightweight app-run summary for list views."},"FlowRunStatus":{"type":"string","enum":["in_progress","completed","failed","canceled"],"title":"FlowRunStatus","description":"Execution status of a workflow run."}}}}
```

## The CursorPaginatedResponse\_AppSummary\_ object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"CursorPaginatedResponse_AppSummary_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/AppSummary"},"type":"array","title":"Data"},"has_more":{"type":"boolean","title":"Has More"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["data","has_more"],"title":"CursorPaginatedResponse[AppSummary]"},"AppSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Stable app identifier"},"name":{"type":"string","title":"Name","description":"App display name"},"description":{"type":"string","title":"Description","description":"App description and purpose"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url","description":"Public CDN URL for the app thumbnail image"},"visibility":{"$ref":"#/components/schemas/FlowApplicationVisibility","description":"Visibility level: private, workspace, shared, or public"},"estimated_cost":{"type":"integer","title":"Estimated Cost","description":"Estimated credit cost per execution"},"inputs":{"items":{"$ref":"#/components/schemas/AppInput"},"type":"array","title":"Inputs","description":"Required inputs for this app"}},"type":"object","required":["id","name","description","visibility","estimated_cost"],"title":"AppSummary","description":"Lightweight app summary for list views."},"FlowApplicationVisibility":{"type":"string","enum":["private","workspace","shared","public"],"title":"FlowApplicationVisibility","description":"Visibility levels for flow applications."},"AppInput":{"properties":{"id":{"type":"string","title":"Id","description":"Node ID to use when providing this input"},"type":{"$ref":"#/components/schemas/AppInputType","description":"Input type: text, image, video, audio, brand, or file"},"name":{"type":"string","title":"Name","description":"Display name of this input"},"required":{"type":"boolean","title":"Required","description":"Whether this input is mandatory"},"options":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Options","description":"Allowed values when the input is a fixed set: label strings for text inputs, asset IDs for media inputs"},"min_selections":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Selections","description":"Minimum number of values the caller must provide for this input"},"max_selections":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Selections","description":"Maximum number of values the caller may provide for this input"}},"type":"object","required":["id","type","name","required"],"title":"AppInput","description":"Represents an input requirement for an app."},"AppInputType":{"type":"string","enum":["text","image","video","audio","brand","file"],"title":"AppInputType","description":"Types of inputs an app can accept from a caller."}}}}
```

## The CursorPaginatedResponse\_AssetSummary\_ object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"CursorPaginatedResponse_AssetSummary_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/AssetSummary"},"type":"array","title":"Data"},"has_more":{"type":"boolean","title":"Has More"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["data","has_more"],"title":"CursorPaginatedResponse[AssetSummary]"},"AssetSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique asset identifier"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id","description":"Client-supplied reference id provided at upload, if any"},"asset_type":{"$ref":"#/components/schemas/AssetType","description":"Asset role: reference (input), intermediate, or output"},"media_type":{"$ref":"#/components/schemas/MediaType","description":"Media category: image, video, audio, or file"},"media_extension":{"$ref":"#/components/schemas/MediaExtension","description":"File extension: png, jpg, mp4, pdf, etc."},"visibility":{"$ref":"#/components/schemas/AssetVisibility","description":"Visibility level: private, public, or shared"},"bookmarked":{"type":"boolean","title":"Bookmarked","description":"Whether the asset is bookmarked","default":false},"archived":{"type":"boolean","title":"Archived","description":"Whether the asset is archived","default":false},"downloaded":{"type":"boolean","title":"Downloaded","description":"Whether the asset has been downloaded before","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the asset was created"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When the asset was last modified"},"url":{"type":"string","title":"Url","description":"CDN URL for the asset (thumbnail/preview size)"},"large_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Large Url","description":"CDN URL for the full-resolution version"},"agent_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Agent Id","description":"ID of the agent that produced this asset. Null for uploaded assets."},"run_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Run Id","description":"ID of the run that produced this asset. Null for uploaded assets."}},"type":"object","required":["id","asset_type","media_type","media_extension","visibility","created_at","updated_at","url"],"title":"AssetSummary","description":"Summary of an asset for list views."},"AssetType":{"type":"string","enum":["reference","intermediate","output"],"title":"AssetType","description":"Classification of assets by their role in workflows."},"MediaType":{"type":"string","enum":["image","video","audio","file"],"title":"MediaType","description":"Primary media categories for assets."},"MediaExtension":{"type":"string","enum":["png","jpg","jpeg","svg","heic","heif","avif","webp","mp4","wav","mp3","mov","webm","pdf","docx","csv","txt","json","md","ttf","otf","woff","woff2"],"title":"MediaExtension"},"AssetVisibility":{"type":"string","enum":["public","shared","private"],"title":"AssetVisibility"}}}}
```

## The CursorPaginatedResponse\_RunSummary\_ object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"CursorPaginatedResponse_RunSummary_":{"properties":{"data":{"items":{"$ref":"#/components/schemas/RunSummary"},"type":"array","title":"Data"},"has_more":{"type":"boolean","title":"Has More"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"}},"type":"object","required":["data","has_more"],"title":"CursorPaginatedResponse[RunSummary]"},"RunSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique run identifier"},"agent_id":{"type":"string","format":"uuid","title":"Agent Id","description":"ID of the agent that was executed"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id","description":"Client-supplied reference id provided at creation, if any"},"status":{"$ref":"#/components/schemas/FlowRunStatus","description":"Current execution state"},"progress":{"type":"number","maximum":1,"minimum":0,"title":"Progress","description":"Completion progress from 0.0 to 1.0","default":0},"awaiting_human_review":{"type":"boolean","title":"Awaiting Human Review","description":"True when the run has paused on one or more human review nodes. Fetch GET /runs/{run_id} to inspect pending reviews.","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the run was created"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At","description":"When execution started"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At","description":"When execution finished"},"cost":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cost","description":"Total credits consumed by this run"}},"type":"object","required":["id","agent_id","status","created_at"],"title":"RunSummary","description":"Lightweight run summary for list views."},"FlowRunStatus":{"type":"string","enum":["in_progress","completed","failed","canceled"],"title":"FlowRunStatus","description":"Execution status of a workflow run."}}}}
```

## The DataType object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"DataType":{"type":"string","enum":["text","images","videos","files","audio","data"],"title":"DataType","description":"Types of data that agents can accept as input or produce as output."}}}}
```

## The FailureReason object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"FailureReason":{"type":"string","enum":["timeout","content_policy","insufficient_credits","invalid_input","provider_error","provider_auth_required","canceled","unknown"],"title":"FailureReason","description":"Stable, client-facing categories for why a run failed. A curated public\nview over the internal `NodeFailureReason`; internal-only causes collapse to\n`unknown` so the public contract stays stable as internals change."}}}}
```

## The FlowApplicationVisibility object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"FlowApplicationVisibility":{"type":"string","enum":["private","workspace","shared","public"],"title":"FlowApplicationVisibility","description":"Visibility levels for flow applications."}}}}
```

## The FlowRunStatus object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"FlowRunStatus":{"type":"string","enum":["in_progress","completed","failed","canceled"],"title":"FlowRunStatus","description":"Execution status of a workflow run."}}}}
```

## The FlowVisibility object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"FlowVisibility":{"type":"string","enum":["public","shared","private"],"title":"FlowVisibility","description":"Visibility levels for workflows."}}}}
```

## The HTTPValidationError object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}
```

## The MediaExtension object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"MediaExtension":{"type":"string","enum":["png","jpg","jpeg","svg","heic","heif","avif","webp","mp4","wav","mp3","mov","webm","pdf","docx","csv","txt","json","md","ttf","otf","woff","woff2"],"title":"MediaExtension"}}}}
```

## The MediaType object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"MediaType":{"type":"string","enum":["image","video","audio","file"],"title":"MediaType","description":"Primary media categories for assets."}}}}
```

## The NodeType object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"NodeType":{"type":"string","enum":["text_input","image_input","file_input","video_input","audio_input","brand_system_input","llm","image_generation","video_generation","text_to_speech","screen_mockup","remove_background","upscale","upscale_video","video_background_removal","extract_video_frame","image_generation_lora","change_aspect_ratio","meta_ads_extractor","image_edit","vectorize","image_erase","linkedin_ads_extractor","instagram_posts_extractor","linkedin_posts_extractor","human_review","match_brand_colors","tiktok_extractor","add_logo","video_subtitle","video_concat","video_add_sound","generic_fal","comment","group","composer","googledrive_find_file","googledrive_upload_file","prompt_concatenate","text_split","list_selector","video_edit","router","camera_angle","rename_asset","music_generation","merge_audio_video","trim_speed","extract_audio","remove_audio","isolate_sound","clone_voice","translate_audio","translate_video","transcribe"],"title":"NodeType"}}}}
```

## The PendingReview object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"PendingReview":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Identifier of the pending review. Use this as `review_id` when calling POST /runs/{run_id}/reviews/{review_id} to resume execution."},"node_id":{"type":"string","title":"Node Id","description":"ID of the human review node inside the agent definition"},"reviewed_node_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewed Node Type","description":"Type of the upstream node whose output is being reviewed (e.g. image_generation, llm). May be null for legacy reviews."},"reviewed_output_type":{"anyOf":[{"$ref":"#/components/schemas/DataType"},{"type":"null"}],"description":"Business-friendly type of the output under review (text, images, videos, audio, files, data)."},"proposed_output":{"anyOf":[{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"},{"type":"string"},{"type":"null"}],"title":"Proposed Output","description":"Output produced by the upstream node(s) that is being reviewed. Submit this back (optionally edited) as `output` when approving. To discard items, submit only the ones you want to keep — omitted items are dropped. At least one item must be kept."},"can_edit_outputs":{"type":"boolean","title":"Can Edit Outputs","description":"Whether the agent definition allows editing the proposed output before approval.","default":false},"can_generate_more":{"type":"boolean","title":"Can Generate More","description":"Whether the agent definition allows regenerating the upstream output (decision=retry).","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the review was opened"}},"type":"object","required":["id","node_id","created_at"],"title":"PendingReview","description":"A human review step that is currently waiting for a decision."},"DataType":{"type":"string","enum":["text","images","videos","files","audio","data"],"title":"DataType","description":"Types of data that agents can accept as input or produce as output."}}}}
```

## The ReviewDecision object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"ReviewDecision":{"type":"string","enum":["approve","retry"],"title":"ReviewDecision","description":"Possible decisions when responding to a pending human review."}}}}
```

## The Run object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"Run":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique run identifier"},"agent_id":{"type":"string","format":"uuid","title":"Agent Id","description":"ID of the agent being executed"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id","description":"Client-supplied reference id provided at creation, if any"},"status":{"$ref":"#/components/schemas/FlowRunStatus","description":"Current execution state: in_progress, completed, failed, or canceled"},"progress":{"type":"number","maximum":1,"minimum":0,"title":"Progress","description":"Completion progress from 0.0 to 1.0","default":0},"current_node":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Node","description":"Type of the node currently executing (e.g. image_generation, llm). Only present while status is in_progress"},"awaiting_human_review":{"type":"boolean","title":"Awaiting Human Review","description":"True when the run has paused on one or more human review nodes and is waiting for a decision via POST /runs/{run_id}/reviews/{review_id}. While true, `status` remains `in_progress`.","default":false},"pending_reviews":{"items":{"$ref":"#/components/schemas/PendingReview"},"type":"array","title":"Pending Reviews","description":"Human review steps currently waiting for a decision. Empty unless `awaiting_human_review` is true."},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the run was created"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At","description":"When execution started"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At","description":"When execution finished"},"inputs":{"items":{"$ref":"#/components/schemas/RunInput"},"type":"array","title":"Inputs","description":"Inputs provided for this run"},"results":{"items":{"$ref":"#/components/schemas/RunResult"},"type":"array","title":"Results","description":"Output results, populated when status is completed"},"cost":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cost","description":"Total credits consumed by this run"},"error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error","description":"Error message if the run failed"},"failure_reason":{"anyOf":[{"$ref":"#/components/schemas/FailureReason"},{"type":"null"}],"description":"Categorized failure reason (timeout, content_policy, insufficient_credits, invalid_input, provider_error, provider_auth_required, canceled, unknown). Present when status is failed."}},"type":"object","required":["id","agent_id","status","created_at"],"title":"Run","description":"Complete representation of an agent execution run."},"FlowRunStatus":{"type":"string","enum":["in_progress","completed","failed","canceled"],"title":"FlowRunStatus","description":"Execution status of a workflow run."},"PendingReview":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Identifier of the pending review. Use this as `review_id` when calling POST /runs/{run_id}/reviews/{review_id} to resume execution."},"node_id":{"type":"string","title":"Node Id","description":"ID of the human review node inside the agent definition"},"reviewed_node_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reviewed Node Type","description":"Type of the upstream node whose output is being reviewed (e.g. image_generation, llm). May be null for legacy reviews."},"reviewed_output_type":{"anyOf":[{"$ref":"#/components/schemas/DataType"},{"type":"null"}],"description":"Business-friendly type of the output under review (text, images, videos, audio, files, data)."},"proposed_output":{"anyOf":[{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"},{"type":"string"},{"type":"null"}],"title":"Proposed Output","description":"Output produced by the upstream node(s) that is being reviewed. Submit this back (optionally edited) as `output` when approving. To discard items, submit only the ones you want to keep — omitted items are dropped. At least one item must be kept."},"can_edit_outputs":{"type":"boolean","title":"Can Edit Outputs","description":"Whether the agent definition allows editing the proposed output before approval.","default":false},"can_generate_more":{"type":"boolean","title":"Can Generate More","description":"Whether the agent definition allows regenerating the upstream output (decision=retry).","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the review was opened"}},"type":"object","required":["id","node_id","created_at"],"title":"PendingReview","description":"A human review step that is currently waiting for a decision."},"DataType":{"type":"string","enum":["text","images","videos","files","audio","data"],"title":"DataType","description":"Types of data that agents can accept as input or produce as output."},"RunInput":{"properties":{"id":{"type":"string","title":"Id","description":"Node ID that this input targets"},"value":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"}],"title":"Value","description":"Input value: plain text string for text inputs, or {\"asset_ids\": [\"uuid\"]} for asset inputs"}},"type":"object","required":["id","value"],"title":"RunInput","description":"Represents an input provided to a run.\n\nShared by agent runs and app runs: both pipelines accept the same wire shape."},"RunResult":{"properties":{"id":{"type":"string","title":"Id","description":"Node ID that produced this result"},"type":{"$ref":"#/components/schemas/DataType","description":"Type of the result data"},"value":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Value","description":"Result content: text string, list of asset UUIDs, or structured data"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Human-readable description of the result"}},"type":"object","required":["id","type"],"title":"RunResult","description":"Represents a result produced by a run.\n\nShared by agent runs and app runs: both pipelines emit the same wire shape."},"FailureReason":{"type":"string","enum":["timeout","content_policy","insufficient_credits","invalid_input","provider_error","provider_auth_required","canceled","unknown"],"title":"FailureReason","description":"Stable, client-facing categories for why a run failed. A curated public\nview over the internal `NodeFailureReason`; internal-only causes collapse to\n`unknown` so the public contract stays stable as internals change."}}}}
```

## The RunCreateRequest object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"RunCreateRequest":{"properties":{"agent_id":{"type":"string","format":"uuid","title":"Agent Id","description":"ID of the agent to execute"},"inputs":{"items":{"$ref":"#/components/schemas/RunInput"},"type":"array","title":"Inputs","description":"Inputs for the agent. Get required inputs from GET /agents/{id}"},"external_id":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}],"title":"External Id","description":"Optional client-supplied reference id (e.g. your order or job id, max 255 chars). Unique per organization: reusing one returns 409 conflict — so a dropped-response retry never creates a duplicate. Echoed on every run and filterable via GET /runs?external_id= to fetch it. Use a new id per run."}},"type":"object","required":["agent_id"],"title":"RunCreateRequest","description":"Request to create and start a new agent execution run."},"RunInput":{"properties":{"id":{"type":"string","title":"Id","description":"Node ID that this input targets"},"value":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"}],"title":"Value","description":"Input value: plain text string for text inputs, or {\"asset_ids\": [\"uuid\"]} for asset inputs"}},"type":"object","required":["id","value"],"title":"RunInput","description":"Represents an input provided to a run.\n\nShared by agent runs and app runs: both pipelines accept the same wire shape."}}}}
```

## The RunInput object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"RunInput":{"properties":{"id":{"type":"string","title":"Id","description":"Node ID that this input targets"},"value":{"anyOf":[{"type":"string"},{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"}],"title":"Value","description":"Input value: plain text string for text inputs, or {\"asset_ids\": [\"uuid\"]} for asset inputs"}},"type":"object","required":["id","value"],"title":"RunInput","description":"Represents an input provided to a run.\n\nShared by agent runs and app runs: both pipelines accept the same wire shape."}}}}
```

## The RunResult object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"RunResult":{"properties":{"id":{"type":"string","title":"Id","description":"Node ID that produced this result"},"type":{"$ref":"#/components/schemas/DataType","description":"Type of the result data"},"value":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"},{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Value","description":"Result content: text string, list of asset UUIDs, or structured data"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Human-readable description of the result"}},"type":"object","required":["id","type"],"title":"RunResult","description":"Represents a result produced by a run.\n\nShared by agent runs and app runs: both pipelines emit the same wire shape."},"DataType":{"type":"string","enum":["text","images","videos","files","audio","data"],"title":"DataType","description":"Types of data that agents can accept as input or produce as output."}}}}
```

## The RunSummary object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"RunSummary":{"properties":{"id":{"type":"string","format":"uuid","title":"Id","description":"Unique run identifier"},"agent_id":{"type":"string","format":"uuid","title":"Agent Id","description":"ID of the agent that was executed"},"external_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"External Id","description":"Client-supplied reference id provided at creation, if any"},"status":{"$ref":"#/components/schemas/FlowRunStatus","description":"Current execution state"},"progress":{"type":"number","maximum":1,"minimum":0,"title":"Progress","description":"Completion progress from 0.0 to 1.0","default":0},"awaiting_human_review":{"type":"boolean","title":"Awaiting Human Review","description":"True when the run has paused on one or more human review nodes. Fetch GET /runs/{run_id} to inspect pending reviews.","default":false},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When the run was created"},"started_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Started At","description":"When execution started"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At","description":"When execution finished"},"cost":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cost","description":"Total credits consumed by this run"}},"type":"object","required":["id","agent_id","status","created_at"],"title":"RunSummary","description":"Lightweight run summary for list views."},"FlowRunStatus":{"type":"string","enum":["in_progress","completed","failed","canceled"],"title":"FlowRunStatus","description":"Execution status of a workflow run."}}}}
```

## The SubmitReviewRequest object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"SubmitReviewRequest":{"properties":{"decision":{"$ref":"#/components/schemas/ReviewDecision","description":"`approve` resumes execution using the (optionally edited) output. `retry` re-runs the upstream node(s) to produce a new candidate output."},"output":{"anyOf":[{"additionalProperties":true,"type":"object"},{"items":{},"type":"array"},{"type":"string"},{"type":"null"}],"title":"Output","description":"Output to use when continuing execution. Required when decision is `approve`. Ignored when decision is `retry`. Must match the shape of `proposed_output` ({\"asset_ids\": [...]} for image/video/audio reviews, or {\"prompts\": [...]} for text-prompt reviews). To discard items, submit only the ones you want to keep; the rest are dropped. At least one item is required — an empty output is rejected."}},"type":"object","required":["decision"],"title":"SubmitReviewRequest","description":"Request to resolve a pending human review."},"ReviewDecision":{"type":"string","enum":["approve","retry"],"title":"ReviewDecision","description":"Possible decisions when responding to a pending human review."}}}}
```

## The ValidationError object

```json
{"openapi":"3.1.0","info":{"title":"Pletor - Public API","version":"1.0.0"},"components":{"schemas":{"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}
```
