Compare commits

..
Author SHA1 Message Date
Brandon Thomas 91ad838f3e dummy data, rename migrations 2026-03-30 14:31:06 -04:00
Brandon Thomas fcfc8bf485 doc, split types 2026-03-30 14:16:04 -04:00
Brandon Thomas 646ef895b3 endpoints 2026-03-30 14:09:40 -04:00
Brandon Thomas ac7058c252 reserved usernames 2026-03-30 13:38:24 -04:00
Brandon Thomas a6ba4c90d5 character token 2026-03-30 13:29:31 -04:00
Brandon Thomas c93ff4a3aa migrations wip (do not migrate with these yet!) 2026-03-29 23:00:42 -04:00
336 changed files with 6497 additions and 8567 deletions
-47
View File
@@ -1,47 +0,0 @@
# API Conventions
## HTTP Handlers (Actix-Web)
Handlers in `storyteller_web` follow this structure:
1. **Request/Response types** with `#[derive(Deserialize/Serialize, ToSchema)]`
2. **Error enum** implementing `ResponseError`, `Display`, `Serialize`, `ToSchema`
3. **Handler function** annotated with `#[utoipa::path(...)]` for OpenAPI docs
4. Handler returns `Result<Json<Response>, ErrorType>`. Only use `Result<HttpResponse, ErrorType>` when you need to set headers/cookies.
### Error Types
- Use `CommonWebError` for simple handlers that only need standard HTTP error codes
- Use a custom error enum when you need endpoint-specific error variants (e.g. `LoginErrorType::InvalidCredentials`)
- Custom error enums MUST implement `ResponseError` (actix), `Display`, and `Serialize`
- When adding `From<RequireUserSessionError>` or similar conversions, implement them on `CommonWebError` in its own module (orphan rule)
- Error response bodies include: `success: false`, `error_code`, `error_code_str`
### Session/Auth
- `require_user_session_using_connection()` reuses an open DB connection (preferred)
- `require_user_session()` acquires its own connection (deprecated)
- `require_moderator()` for admin-only endpoints
### API Type Definitions
- Shared request/response types go in `artcraft_api_defs` crate (under `crates/api_clients/artcraft/artcraft_api_defs/`)
- Types that need `ResponseError` impl must stay in `storyteller_web` (orphan rule)
- New types must be added to `api_doc.rs` schemas (in storyteller-web) for Swagger generation
## Enums (Database-backed)
- Located in `crates/schema/public/enums/src/by_table/{table_name}/`
- Require manual `to_str()` and `from_str()` implementations
- Use `impl_enum_display_and_debug_using_to_str!` and `impl_mysql_enum_coders!` macros
- Add comprehensive tests: serialization, round-trip, variant count
- YOU CAN ADD NEW VALUES but DO NOT CHANGE EXISTING VALUES without a migration strategy
- Note that adding new values can break older versions of the Tauri desktop app that read
responses over Rust - make sure it consumes variants with an "Unknown(String)" variant
catch-all to future proof the APIs.
## Tokens (Primary Keys)
- Located in `crates/schema/public/tokens/src/tokens/`
- Opaque `String` wrappers with Stripe-like prefixes (e.g. `user_`, `mf_`)
- Use `impl_string_token!`, `impl_mysql_token_from_row!`, `impl_crockford_generator!` macros
-59
View File
@@ -1,59 +0,0 @@
# Code Style
## Rust
- Two spaces for indentation (not four)
- No minimum supported Rust version; use latest stable features freely
- `#[macro_use] extern crate serde_derive;` is used in binary crates; library crates use `use serde_derive::{Serialize, Deserialize};`
- Prefer `log` crate macros (`info!`, `warn!`, `error!`) over `println!`
- Use `anyhow::Result` / `AnyhowResult` for fallible functions in application code
- Enum Display/Debug: use `impl_enum_display_and_debug_using_to_str!` macro, not `derive_more::Display` (CLion doesn't understand it)
- Fields that are optional use the `maybe_` prefix: `maybe_creator_user_token`, `maybe_prompt_token`
- When implementing `fmt::Display` for error types, use the pattern: `write!(f, "{:?}", self)`
## File Layout (Top-to-Bottom Reading Order)
Organize code so a human reading top-to-bottom encounters the most important things first and
can drill down into details only when curious. Think of it like a newspaper: headline first,
then the story, then the fine print.
### Ordering within a file
1. **Constants** at the top, right after imports.
2. **The primary public type** (the main struct/enum the file is about) comes next.
A reader opening this file should immediately see what it defines.
3. **Supporting/subordinate types** (sub-structs, helper enums, serialization DTOs) go
below the primary type, not above it. Ask: "Would a reader need to know this type
exists before seeing the main type?" — if no, push it down.
4. **Type ordering for API types**: Request, then Response (success), then Error.
5. **`impl` blocks** after their type definitions.
### Ordering within an `impl` block
1. **Constructors** (`new`, `from_*`, `builder`) at the top.
2. **Public methods** next — these are the main entry points a reader cares about.
3. **Private helper methods** below public methods.
- Among helpers: place "meaty" helpers (substantial logic, direct continuations of the
public entry point) above "leaf" helpers (small formatters, simple lookups).
- A method that calls another method in the same file should appear *above* the method
it calls. This lets readers follow the call chain downward.
## Naming
- Handler functions: `{verb}_{noun}_handler` (e.g. `get_health_check_handler`, `login_handler`)
- Error enums: `{Feature}Error` (e.g. `FalWebhookError`, `HealthCheckError`)
- Request/response structs: `{Action}Request`, `{Action}Response`, `{Action}SuccessResponse`
- Path params: `{Action}PathInfo`
- Builder structs: `{Thing}Builder` with `set_` prefixed setters and a `build()` method
## Imports
- Group imports: std, external crates, internal workspace crates, `crate::` imports
- Use fully qualified paths for one-off references; `use` for repeated references
- Prefer specific imports over wildcards, except in `api_doc.rs` and test modules
## TypeScript / Frontend
- TypeScript with React, Vite, Zustand, Three.js
- Nx monorepo under `crates/frontend/`
- Two spaces for indentation
-27
View File
@@ -1,27 +0,0 @@
# Testing
## Running Tests
- Most crates: `cargo test -p {crate_name}`
- Crates using SQLx offline mode: `SQLX_OFFLINE=true cargo test -p {crate_name}`
- The `storyteller-web` and `mysql_queries` crates require `SQLX_OFFLINE=true` for compilation
- Use `cargo check -p {crate_name}` for fast compilation checks without running tests
## Test Patterns
- Tests live in `#[cfg(test)] mod tests { ... }` at the bottom of each file
- Group related tests in sub-modules: `mod explicit_checks`, `mod mechanical_checks`
- Enum tests should cover: serialization, deserialization, `to_str`/`from_str` round-trip, variant count
- Password/crypto tests: be mindful of computation cost, don't add too many bcrypt test cases
## What to Test
- New error types and their mappings
- Enum variant serialization stability (these are stored in the database)
- Hash/deduplication functions with known inputs
- Edge cases in parsers (empty input, missing fields, malformed data)
## What Not to Test
- Don't add integration tests that require a running database unless explicitly asked
- Don't add tests for simple struct construction or trivial getters
-13
View File
@@ -17,8 +17,6 @@ artcraft/
│ ├── artcraft_migrations/ # ArtCraft desktop app SQLite migrations
│ ├── migrations/ # Server MySQL migrations
│ └── migrations_squashed/ # Fully materialized MySQL schema definitions for most tables
├── _tools/ # Various 3rd party tool integrations and configurations
│ └── postman/ # Postman configs for test HTTP requests against development and production
├── build/ # Dockerfile build instructions for server components
├── crates/ # Rust workspace
│ ├── api_clients/ # HTTP clients for calling internal and 3rd party services
@@ -62,14 +60,3 @@ artcraft/
- A mix of wreq and reqwest for Rust HTTP clients
- TypeScript with Nx, React, Vite, Zustand, and Three.js
- Use two spaces for indentation
### File Layout
Organize for top-to-bottom reading. Important things first, details later.
- **Constants** at the top (after imports)
- **Structs/enums** next; outer structs above inner sub-structs
- **API types** in order: Request, Response, Error
- **In impl blocks**: constructors first, then public methods, then private helpers
- Private helpers go *below* the methods that call them
- Among helpers: meatier logic above leaf-level formatters
Generated
-29
View File
@@ -5163,12 +5163,6 @@ dependencies = [
"pin-project-lite",
]
[[package]]
name = "http-range"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573"
[[package]]
name = "http-types"
version = "2.12.0"
@@ -8044,7 +8038,6 @@ dependencies = [
"errors",
"log",
"rootly_client",
"sha2 0.11.0-rc.5",
"tokio",
"workspace-build-acceleration",
]
@@ -9626,10 +9619,6 @@ dependencies = [
"workspace-build-acceleration",
]
[[package]]
name = "rootly_config"
version = "0.0.1"
[[package]]
name = "rsa"
version = "0.9.6"
@@ -10205,16 +10194,12 @@ dependencies = [
"jobs_common",
"log",
"mysql_queries",
"pager",
"reqwest 0.12.23",
"rootly_client",
"rootly_config",
"seedance2pro_client",
"serde",
"serde_derive",
"serde_json",
"server_environment",
"shared_env_var_config",
"sqlx",
"tokens",
"tokio",
@@ -10715,13 +10700,6 @@ dependencies = [
"keccak",
]
[[package]]
name = "shared_env_var_config"
version = "0.0.1"
dependencies = [
"easyenv",
]
[[package]]
name = "shlex"
version = "1.3.0"
@@ -11299,7 +11277,6 @@ dependencies = [
"resend-rs",
"reusable_types",
"rootly_client",
"rootly_config",
"rust-s3",
"rustls 0.23.36",
"seedance2pro_client",
@@ -11307,7 +11284,6 @@ dependencies = [
"serde_derive",
"serde_json",
"server_environment",
"shared_env_var_config",
"speculoos",
"sqlx",
"strum",
@@ -11852,7 +11828,6 @@ dependencies = [
"gtk",
"heck 0.5.0",
"http 1.3.1",
"http-range",
"jni 0.21.1",
"libc",
"log",
@@ -13384,14 +13359,10 @@ dependencies = [
"jobs_common",
"log",
"mysql_queries",
"pager",
"rootly_client",
"rootly_config",
"serde",
"serde_derive",
"serde_json",
"server_environment",
"shared_env_var_config",
"sqlx",
"tempdir",
"tokio",
+1 -7
View File
@@ -101,10 +101,6 @@ members = [
# Schema (buckets): S3/R2 topology
"crates/schema/buckets/bucket_paths",
# Schema (config): configuration constants for external services
"crates/schema/config/rootly_config",
"crates/schema/config/shared_env_var_config",
# Schema (database): queries, database layouts, Redis keys, etc.
"crates/schema/database/elasticsearch_schema",
"crates/schema/database/migration",
@@ -246,8 +242,6 @@ file_to_base64_url = { path = "crates/lib/files/file_to_base64_url" }
filesys = { path = "crates/lib/files/filesys" }
grok_client = { path = "crates/api_clients/grok_client" }
rootly_client = { path = "crates/api_clients/rootly_client" }
rootly_config = { path = "crates/schema/config/rootly_config" }
shared_env_var_config = { path = "crates/schema/config/shared_env_var_config" }
http_headers = { path = "crates/lib/http_headers" }
images = { path = "crates/lib/files/images" }
jobs_common = { path = "crates/lib/jobs_common" }
@@ -327,7 +321,7 @@ sha2 = "0.11.0-rc.5"
sha3 = "0.10.8"
speculoos = "0.11.0"
strum = { version = "0.28.0", features = ["derive"] }
tauri = { version = "2.8.3", features = ["unstable", "devtools", "protocol-asset"] } # NB: "devtools" prevents App Store distribution; "ubstable" is needed for window access
tauri = { version = "2.8.3", features = ["unstable", "devtools"] } # NB: "devtools" prevents App Store distribution; "ubstable" is needed for window access
tauri-plugin-dialog = "2.3.3"
tauri-plugin-fs = "2.4.2"
tauri-plugin-log = "2.6.0"
-16
View File
@@ -1,16 +0,0 @@
# Use this workspace to collaborate
workspace:
id: ""
# Each entry here maps a local resource to one or more corresponding objects in Postman Cloud
cloudResources:
collections:
../postman/collections/ArtCraft API: 32845438-9defd864-8fb5-4b32-abbb-b87f16af5451
environments:
../postman/environments/Local Development.environment.yaml: 32845438-8b5c042a-aed6-491a-99a6-fcb2f72cbc44
../postman/environments/Production.environment.yaml: 32845438-a5b2562e-057d-42c2-b054-67285a50e2b7
localResources:
environments:
- ../environments/Local Development.environment.yaml
- ../environments/Production.environment.yaml
@@ -1,6 +0,0 @@
$kind: collection
variables:
- key: api_host
value: https://api.fakeyou.com
disabled: true
secret: false
@@ -1,2 +0,0 @@
$kind: collection
order: 11000
@@ -1,2 +0,0 @@
$kind: collection
order: 1000
@@ -1,10 +0,0 @@
$kind: http-request
name: Set Bearer
url: "{{api_host}}/v1/control_plane/sora_secret"
method: POST
body:
type: urlencoded
content:
key: bearer
value: ""
order: 1000
@@ -1,10 +0,0 @@
$kind: http-request
name: Set Cookie
url: "{{api_host}}/v1/control_plane/sora_secret"
method: POST
body:
type: urlencoded
content:
key: cookie
value: ""
order: 2000
@@ -1,10 +0,0 @@
$kind: http-request
name: Set Sentinel
url: "{{api_host}}/v1/control_plane/sora_secret"
method: POST
body:
type: urlencoded
content:
key: sentinel
value: ""
order: 3000
@@ -1,2 +0,0 @@
$kind: collection
order: 3000
@@ -1,2 +0,0 @@
$kind: collection
order: 5000
@@ -1,25 +0,0 @@
$kind: http-request
name: Estimate Image Cost
url: "{{api_host}}/v1/generate/cost_estimate/image"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
disabled: true
body:
type: json
content: |
{
"model": "seedream_5_lite",
"provider": "artcraft",
"generation_mode": {"type": "text_to_image" },
"aspect_ratio": "wide_sixteen_by_nine",
"resolution": "two_k",
"image_batch_count": 1
}
order: 2000
@@ -1,26 +0,0 @@
$kind: http-request
name: Estimate Video Cost
url: "{{api_host}}/v1/generate/cost_estimate/video"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
disabled: true
body:
type: json
content: |
{
"model": "seedance_2p0",
"provider": "artcraft",
"generation_mode": {"type": "text_to_video" },
"aspect_ratio": "wide_sixteen_by_nine",
"resolution": "four_k",
"duration_seconds": 8,
"video_batch_count": 4
}
order: 1000
@@ -1,2 +0,0 @@
$kind: collection
order: 1000
@@ -1,18 +0,0 @@
$kind: http-request
name: Background Removal
url: "{{api_host}}/v1/generate/image/remove_background"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
body:
type: json
content: |-
{
"uuid_idempotency_token": "{{$randomUUID}}",
"media_file_token": "m_v0n7g8k6saeg3t117kxf227xprtdcc"
}
order: 5000
@@ -1,22 +0,0 @@
$kind: http-request
name: Flux 1 Dev (text to image)
url: "{{api_host}}/v1/generate/image/multi_function/gpt_image_1p5"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
disabled: true
body:
type: json
content: >
{
"uuid_idempotency_token": "{{$randomUUID}}",
"prompt": "A large dinosaur looks inside a house from outside. It's looking for food. Big t-rex. Scary. Photorealistic. Face in the window.",
"number_images": 2
}
order: 6000
@@ -1,2 +0,0 @@
$kind: collection
order: 1000
@@ -1,23 +0,0 @@
$kind: http-request
name: Qwen Angle Edit
url: "{{api_host}}/v1/generate/image/angle/qwen_edit_2511"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
body:
type: json
content: |
{
"uuid_idempotency_token": "{{$randomUUID}}",
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
"image_media_token": "m_z8v3nrjssha8rj5ayk51g85wef2cz9",
"vertical_angle": 33.0,
"horizontal_angle": 33.0
}
order: 1000
@@ -1,2 +0,0 @@
$kind: collection
order: 2000
@@ -1,46 +0,0 @@
$kind: http-request
name: Edit Gpt-Image-1
url: "{{api_host}}/v1/generate/image/edit/gpt_image_1"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
body:
type: json
content: >-
{
"uuid_idempotency_token": "{{$randomUUID}}",
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod)
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
"image_media_tokens": ["m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb", "m_4n0p3ve9qew899774pg6w03vgzb6af", "m_9y8hy50582mwxpm8hxmh4n4wjeh5cr"],
"prompt": "Put the cube from the image on the beach. Use the night sky."
}
/*pub struct GptImage1EditImageRequest {
/// Idempotency token to prevent duplicate requests.
pub uuid_idempotency_token: String,
/// Text prompt to generate the image from.
pub prompt: Option<String>,
// TODO: OneOf for image_urls or image_media_tokens
/// Image media tokens to include in the editing context.
pub image_media_tokens: Option<Vec<MediaFileToken>>,
/// Size of the image to generate. Default is Square.
pub image_size: Option<GptImage1EditImageImageSize>,
/// Number of images to generate. Default is one.
pub num_images: Option<GptImage1EditImageNumImages>,
/// Quality of the image to generate. Default is High.
pub image_quality: Option<GptImage1EditImageImageQuality>,
}*/
order: 1000
@@ -1,25 +0,0 @@
$kind: http-request
name: Flux Pro Kontext Max
url: "{{api_host}}/v1/generate/image/edit/flux_pro_kontext_max"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
body:
type: json
content: >
{
"uuid_idempotency_token": "{{$randomUUID}}",
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
"image_media_token": "m_z8v3nrjssha8rj5ayk51g85wef2cz9",
"prompt": "Make this scene photorealistic. Change it to an overcast sky. Make the bricks look more aged and worn."
}
order: 2000
@@ -1,2 +0,0 @@
$kind: collection
order: 3000
@@ -1,28 +0,0 @@
$kind: http-request
name: Flux Pro Inpaint
url: "{{api_host}}/v1/generate/image/inpaint/flux_pro_1"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
body:
type: json
content: |
{
"uuid_idempotency_token": "{{$randomUUID}}",
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod)
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
// m_cznbn2a1p9mcqeghbjedp12p5d60tn (dev - mochi glasses)
// m_v6ppx1jq7rbhyxpj8mg1hkryqbc9h6 (dev - mochi glasses MASK)
"image_media_token": "m_cznbn2a1p9mcqeghbjedp12p5d60tn",
"mask_media_token": "m_v6ppx1jq7rbhyxpj8mg1hkryqbc9h6",
"prompt": "Remove the glasses"
}
order: 1000
@@ -1,2 +0,0 @@
$kind: collection
order: 4000
@@ -1,32 +0,0 @@
$kind: http-request
name: Bytedance Seedream 4.5 (edit image)
url: "{{api_host}}/v1/generate/image/multi_function/bytedance_seedream_4p5"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
body:
type: json
content: >
{
"uuid_idempotency_token": "{{$randomUUID}}",
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
"image_media_tokens": ["m_4n0p3ve9qew899774pg6w03vgzb6af", "m_9y8hy50582mwxpm8hxmh4n4wjeh5cr", "m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb"],
"prompt": "Put the stars above the beach scene at night, add the cube on the beach."
}
order: 4000
@@ -1,22 +0,0 @@
$kind: http-request
name: Bytedance Seedream 4.5 (text to image)
url: "{{api_host}}/v1/generate/image/multi_function/bytedance_seedream_4p5"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
disabled: true
body:
type: json
content: >
{
"uuid_idempotency_token": "{{$randomUUID}}",
"prompt": "A large dinosaur looks inside a house from outside. It's looking for food. Big t-rex. Scary. Photorealistic. Face in the window.",
"number_images": 2
}
order: 6000
@@ -1,22 +0,0 @@
$kind: http-request
name: Bytedance Seedream 5 Lite
url: "{{api_host}}/v1/generate/image/multi_function/bytedance_seedream_5_lite"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
disabled: true
body:
type: json
content: >
{
"uuid_idempotency_token": "{{$randomUUID}}",
"prompt": "A large dinosaur looks inside a house from outside. It's looking for food. Big t-rex. Scary. Photorealistic. Face in the window.",
"number_images": 2
}
order: 7000
@@ -1,32 +0,0 @@
$kind: http-request
name: GPT Image 1.5 (edit image)
url: "{{api_host}}/v1/generate/image/multi_function/gpt_image_1p5"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
body:
type: json
content: >
{
"uuid_idempotency_token": "{{$randomUUID}}",
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
"image_media_tokens": ["m_4n0p3ve9qew899774pg6w03vgzb6af", "m_9y8hy50582mwxpm8hxmh4n4wjeh5cr", "m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb"],
"prompt": "Put the stars above the beach scene at night, add the cube on the beach."
}
order: 3000
@@ -1,22 +0,0 @@
$kind: http-request
name: GPT Image 1.5 (text to image)
url: "{{api_host}}/v1/generate/image/flux_1_dev_text_to_image"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
disabled: true
body:
type: json
content: >
{
"uuid_idempotency_token": "{{$randomUUID}}",
"prompt": "A large dinosaur looks inside a house from outside. It's looking for food. Big t-rex. Scary. Photorealistic. Face in the window.",
"number_images": 2
}
order: 5000
@@ -1,20 +0,0 @@
$kind: http-request
name: Nano Banana 2
url: "{{api_host}}/v1/generate/image/multi_function/nano_banana_2"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
body:
type: json
content: |
{
"uuid_idempotency_token": "{{$randomUUID}}",
// m_p4chw32084te7dv8t4jc3bjfmafmjh (these tokens are invalid)
//"image_media_tokens": [],
"prompt": "A t-rex jumping rope, photorealistic. The t-rex is nervous."
}
order: 2000
@@ -1,30 +0,0 @@
$kind: http-request
name: Nano Banana Pro (reference image)
url: "{{api_host}}/v1/generate/image/multi_function/nano_banana_pro"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
body:
type: json
content: >
{
"uuid_idempotency_token": "{{$randomUUID}}",
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
"image_media_tokens": ["m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2", "m_5hhwgx47tzc68ms2ydkkwrdjakwtxk", "m_p4chw32084te7dv8t4jc3bjfmafmjh"],
"prompt": "Add the man and the girl to the water scene. Make them hold hands."
}
order: 1000
@@ -1,2 +0,0 @@
$kind: collection
order: 3000
@@ -1,23 +0,0 @@
$kind: http-request
name: Generate Hunyuan 2 Image to 3d
url: "{{api_host}}/v1/generate/object/hunyuan_2_image_to_3d"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: ""
value: ""
disabled: true
body:
type: json
content: |-
{
"uuid_idempotency_token": "{{$randomUUID}}",
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod)
"media_file_token": "m_z8v3nrjssha8rj5ayk51g85wef2cz9"
}
order: 2000
@@ -1,2 +0,0 @@
$kind: collection
order: 1000
@@ -1,31 +0,0 @@
$kind: http-request
name: Generate Hunyuan 3D v3 Image to Object
url: "{{api_host}}/v1/generate/object/multi_function/hunyuan3d_v3"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: ""
value: ""
disabled: true
body:
type: json
content: |-
{
"uuid_idempotency_token": "{{$randomUUID}}",
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
"image_media_token": "m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1"
}
order: 1000
@@ -1,21 +0,0 @@
$kind: http-request
name: Generate Hunyuan 3D v3 Text to Object
url: "{{api_host}}/v1/generate/object/multi_function/hunyuan3d_v3"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: ""
value: ""
disabled: true
body:
type: json
content: |-
{
"uuid_idempotency_token": "{{$randomUUID}}",
"prompt": "a large blue dragon with a smile"
}
order: 2000
@@ -1,2 +0,0 @@
$kind: collection
order: 4000
@@ -1,21 +0,0 @@
$kind: http-request
name: Marble 0.1 Mini
url: "{{api_host}}/v1/generate/splat/worldlabs_marble_0p1_mini"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
disabled: true
body:
type: json
content: |
{
"uuid_idempotency_token": "{{$randomUUID}}",
"prompt": "A hidden forest grotto, fireflies, lush green"
}
order: 1000
@@ -1,2 +0,0 @@
$kind: collection
order: 2000
@@ -1,24 +0,0 @@
$kind: http-request
name: Generate Kling 1.6 Video
url: "{{api_host}}/v1/generate/video/kling_1.6_pro_image_to_video"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
body:
type: json
content: >-
{
"uuid_idempotency_token": "{{$randomUUID}}",
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
// m_mxr5s0qpbj0w321pqcw7s2pj93c962 (dev - container ship)
// m_f249t2nb8nggqd7ynpsjps5qmym5h3 (dev - oil tanker)
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod)
"media_file_token": "m_mxr5s0qpbj0w321pqcw7s2pj93c962",
"end_frame_image_media_token": "m_f249t2nb8nggqd7ynpsjps5qmym5h3",
"prompt": "A large ship in a lake, the camera pulls back and shows the oil tanker from overhead"
}
order: 2000
@@ -1,24 +0,0 @@
$kind: http-request
name: Generate Kling 2.1 Pro Video
url: "{{api_host}}/v1/generate/video/kling_2.1_pro_image_to_video"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
body:
type: json
content: >-
{
"uuid_idempotency_token": "{{$randomUUID}}",
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev) - cube
// m_mxr5s0qpbj0w321pqcw7s2pj93c962 (dev - container ship)
// m_f249t2nb8nggqd7ynpsjps5qmym5h3 (dev - oil tanker)
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod)
"media_file_token": "m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb",
"end_frame_image_media_token": "m_f249t2nb8nggqd7ynpsjps5qmym5h3",
"prompt": "A large ship in a lake, the camera pulls back and shows the oil tanker from overhead"
}
order: 3000
@@ -1,2 +0,0 @@
$kind: collection
order: 1000
@@ -1,33 +0,0 @@
$kind: http-request
name: Kling 2.5 Turbo Pro (image to video)
url: "{{api_host}}/v1/generate/video/multi_function/kling_2p5_turbo_pro"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
disabled: true
body:
type: json
content: |
{
"uuid_idempotency_token": "{{$randomUUID}}",
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
"start_frame_image_media_token": "m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1",
"prompt": "The camera is zooming by. It shows the full city"
}
order: 5000
@@ -1,33 +0,0 @@
$kind: http-request
name: Kling 2.6 Pro (image to video)
url: "{{api_host}}/v1/generate/video/multi_function/kling_2p6_pro"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
disabled: true
body:
type: json
content: |
{
"uuid_idempotency_token": "{{$randomUUID}}",
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
"start_frame_image_media_token": "m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1",
"prompt": "The camera is zooming by. It shows the full city"
}
order: 6000
@@ -1,28 +0,0 @@
$kind: http-request
name: Kling 3.0 Pro (image to video)
url: "{{api_host}}/v1/generate/video/multi_function/kling_3p0_pro"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
disabled: true
body:
type: json
content: >
{
"uuid_idempotency_token": "{{$randomUUID}}",
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
"start_frame_image_media_token": "m_8q0hx7g06dfrf28xxhjkgjhwcnqtbz",
"end_frame_image_media_token": "m_8q0hx7g06dfrf28xxhjkgjhwcnqtbz",
"prompt": "The corgi dances in a loop and then returns back to where it started"
}
order: 7000
@@ -1,31 +0,0 @@
$kind: http-request
name: Seedance 1.5 Pro (frame to video)
url: "{{api_host}}/v1/generate/video/multi_function/seedance_1p5_pro"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
disabled: true
body:
type: json
content: >
{
"uuid_idempotency_token": "{{$randomUUID}}",
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
// m_wfyggg046gp7tqvexd9xar4t6zr5yj (artcraft mac - trains)
// m_qty2g150r6ppkbapnryc4fx4ayf8rh (artcraft mac - trains wide)
"prompt": "A subway and a passenger train are moving along outside the window. The camera pans out to show a wider view of the city and trains.",
"start_frame_media_token": "m_wfyggg046gp7tqvexd9xar4t6zr5yj",
"end_frame_media_token": "m_qty2g150r6ppkbapnryc4fx4ayf8rh"
}
order: 2000
@@ -1,22 +0,0 @@
$kind: http-request
name: Seedance 1.5 Pro (text to video)
url: "{{api_host}}/v1/generate/video/multi_function/seedance_1p5_pro"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
disabled: true
body:
type: json
content: |
{
"uuid_idempotency_token": "{{$randomUUID}}",
"prompt": "A giant is walking around in a forest",
"duration_seconds": 4
}
order: 1000
@@ -1,31 +0,0 @@
$kind: http-request
name: Seedance 2.0 (frame to video)
url: "{{api_host}}/v1/generate/video/multi_function/seedance_2p0"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
disabled: true
body:
type: json
content: >
{
"uuid_idempotency_token": "{{$randomUUID}}",
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
// m_wfyggg046gp7tqvexd9xar4t6zr5yj (artcraft mac - trains)
// m_qty2g150r6ppkbapnryc4fx4ayf8rh (artcraft mac - trains wide)
"prompt": "A subway and a passenger train are moving along outside the window. The camera pans out to show a wider view of the city and trains.",
"start_frame_media_token": "m_wfyggg046gp7tqvexd9xar4t6zr5yj",
"end_frame_media_token": "m_qty2g150r6ppkbapnryc4fx4ayf8rh"
}
order: 4000
@@ -1,22 +0,0 @@
$kind: http-request
name: Seedance 2.0 (text to video)
url: "{{api_host}}/v1/generate/video/multi_function/seedance_2p0"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
disabled: true
body:
type: json
content: |
{
"uuid_idempotency_token": "{{$randomUUID}}",
"prompt": "A red panda is is walking around in a forest",
"duration_seconds": 4
}
order: 3000
@@ -1,33 +0,0 @@
$kind: http-request
name: Sora 2 (image to video)
url: "{{api_host}}/v1/generate/video/multi_function/sora_2"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
disabled: true
body:
type: json
content: >
{
"uuid_idempotency_token": "{{$randomUUID}}",
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
"image_media_token": "m_9y8hy50582mwxpm8hxmh4n4wjeh5cr",
"prompt": "The stars twinkle. There's a shooting star. The camera lowers to show the night sky above the forest"
}
order: 10000
@@ -1,33 +0,0 @@
$kind: http-request
name: Sora 2 Pro (image to video)
url: "{{api_host}}/v1/generate/video/multi_function/sora_2_pro"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
disabled: true
body:
type: json
content: >
{
"uuid_idempotency_token": "{{$randomUUID}}",
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
"image_media_token": "m_9y8hy50582mwxpm8hxmh4n4wjeh5cr",
"prompt": "The stars twinkle. There's a shooting star. The camera lowers to show the night sky above the forest"
}
order: 11000
@@ -1,33 +0,0 @@
$kind: http-request
name: Veo 3.1 (image to video) Copy
url: "{{api_host}}/v1/generate/video/multi_function/veo_3p1"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
disabled: true
body:
type: json
content: >
{
"uuid_idempotency_token": "{{$randomUUID}}",
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
"start_frame_image_media_token": "m_9y8hy50582mwxpm8hxmh4n4wjeh5cr",
"prompt": "The stars twinkle. There's a shooting star. The camera lowers to show the night sky above the forest"
}
order: 8000
@@ -1,33 +0,0 @@
$kind: http-request
name: Veo 3.1 Fast (image to video)
url: "{{api_host}}/v1/generate/video/multi_function/veo_3p1_fast"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
disabled: true
body:
type: json
content: >
{
"uuid_idempotency_token": "{{$randomUUID}}",
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev)
// m_z8v3nrjssha8rj5ayk51g85wef2cz9 (prod - godzilla stacks)
// m_4n0p3ve9qew899774pg6w03vgzb6af (dev - beach)
// m_9y8hy50582mwxpm8hxmh4n4wjeh5cr (dev - stars)
// m_p2hvrt9zd0mmexy7x5r7n8bx9ma3zb (dev - cube)
// m_w7cpyqr45d11fw9ca1wbkxp1q3kxs1 (dev - studio alley screenshot)
// m_gn0yvdvd8mw71m5n8whxsa6ywgsdb2 (dev halide - link)
// m_7jjskg45d8b00tsp5nxee0xjsr2fqw (dev halide - link again)
// m_5hhwgx47tzc68ms2ydkkwrdjakwtxk (dev halide - asian girl in rain)
// m_zm0xjkxrjh7vqxm3nd70qva49bnngn (dev halide - skeletal pose)
// m_p4chw32084te7dv8t4jc3bjfmafmjh (dev halide - water shader)
"start_frame_image_media_token": "m_9y8hy50582mwxpm8hxmh4n4wjeh5cr",
"prompt": "The stars twinkle. There's a shooting star. The camera lowers to show the night sky above the forest"
}
order: 9000
@@ -1,2 +0,0 @@
$kind: collection
order: 9000
@@ -1,28 +0,0 @@
$kind: http-request
name: Prompt Image
url: "{{api_host}}/v1/image_studio/prompt"
method: POST
headers:
- key: Session
value: ""
disabled: true
- key: Accept
value: application/json
- key: sora-bearer
value: ""
disabled: true
- key: sora-cookie
value: ""
disabled: true
- key: sora-sentinel
value: ""
disabled: true
body:
type: json
content: >-
{
"uuid_idempotency_token": "{{$randomUUID}}",
"snapshot_media_token": "m_kaghwk8vsn5yw1qp6q7yzbx9szfgwe",
"prompt": "Match the provided image's composition and pose exactly as a reference. The characters should have the exact body poses, and the layouts of buildings and props should be close to exact. A girl standing in the middle of a clock town. N64 aesthetic."
}
order: 2000
@@ -1,22 +0,0 @@
$kind: http-request
name: Upload Scene Snapshot
url: "{{api_host}}/v1/image_studio/scene_snapshot"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
body:
type: formdata
content:
- type: text
key: uuid_idempotency_token
value: "{{$randomUUID}}"
disabled: false
- type: file
key: snapshot
src: []
disabled: false
order: 1000
@@ -1,2 +0,0 @@
$kind: collection
order: 5000
@@ -1,2 +0,0 @@
$kind: collection
order: 1000
@@ -1,25 +0,0 @@
$kind: http-request
name: Enqueue Studio Gen2 (Dev)
url: "{{api_host}}/v1/studio_gen2/enqueue"
method: POST
headers:
- key: Accept
value: application/json
- key: Cookie
value: ""
disabled: true
body:
type: json
content: |-
{
"uuid_idempotency_token": "{{$randomUUID}}",
"image_file": "m_btkn9vng12j2bw9tm7dcbg8vp5bd3a",
"video_file": "m_12h6ymaj4szk7ffhdj01n7c8x0d7ds",
"debug_sleep_millis": 600000,
"debug_kill_old_jobs": true,
"skip_image_resize": true,
"tensor_image_width": 512,
"tensor_image_height": 768
}
order: 2000
@@ -1,22 +0,0 @@
$kind: http-request
name: Enqueue Studio Gen2 (Prod)
url: "{{api_host}}/v1/studio_gen2/enqueue"
method: POST
headers:
- key: Accept
value: application/json
- key: Cookie
value: ""
disabled: true
body:
type: json
content: |-
{
"uuid_idempotency_token": "{{$randomUUID}}",
"image_file": "m_5kdgmdrfm6psvyq4df7h50jwhc6be4",
"video_file": "m_hehnjnzkcf98gcmdx5g6ws85w7c2m3",
"output_width": 1024,
"output_height": 576,
"debug_sleep_millis": 600000
}
order: 3000
@@ -1,24 +0,0 @@
$kind: http-request
name: Enqueue Studio Gen2
url: "{{api_host}}/v1/studio_gen2/enqueue"
method: POST
headers:
- key: Accept
value: application/json
- key: Cookie
value: ""
disabled: true
body:
type: json
content: |-
{
"uuid_idempotency_token": "{{$randomUUID}}",
"image_file": "m_9b4bk5bqah5k1ek2p9tmr1726c85yb",
"video_file": "m_mzensqsx1fx82n7wqz3xknfw3qahfp",
"output_width": 512,
"output_height": 768,
"debug_sleep_millis": 60000,
"debug_kill_old_jobs": true,
"fps": 8
}
order: 1000
@@ -1,6 +0,0 @@
$kind: http-request
url: http://localhost:12345/v1/jobs/job/jinf_avdrxxv3dv04dfxh3jej57vbby2
method: DELETE
headers:
Accept: application/json
order: 6000
@@ -1,6 +0,0 @@
$kind: http-request
url: "{{api_host}}/v1/jobs/job/jinf_fr522a4fv7jwz59pta1cjh630cm"
method: DELETE
headers:
Accept: application/json
order: 5000
@@ -1,6 +0,0 @@
$kind: http-request
url: "{{api_host}}/v1/jobs/job/jinf_avdrxxv3dv04dfxh3jej57vbby2"
method: GET
headers:
Accept: application/json
order: 4000
@@ -1,11 +0,0 @@
$kind: http-request
name: List Session Jobs (localhost)
url: http://localhost:12345/v1/jobs/session
method: GET
headers:
- key: Accept
value: application/json
- key: Cookie
value: ""
disabled: true
order: 3000
@@ -1,6 +0,0 @@
$kind: http-request
url: "{{api_host}}/v1/jobs/session"
method: GET
headers:
Accept: application/json
order: 2000
@@ -1,2 +0,0 @@
$kind: collection
order: 7000
@@ -1,14 +0,0 @@
$kind: http-request
url: "{{api_host}}/v1/media_files/file/m_6hjpa9q8269h7n7rg5vk8zr82cxhx9"
method: DELETE
headers:
Accept: application/json
Content-Type: application/json
body:
type: json
content: |-
{
"as_mod": true,
"set_delete": true
}
order: 1000
@@ -1,33 +0,0 @@
$kind: http-request
name: Upload Engine Asset
url: "{{api_host}}/v1/media_files/upload/engine_asset"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Cookie
value: ""
disabled: true
body:
type: formdata
content:
- type: text
key: maybe_title
value: Walls and Floors
disabled: false
- type: text
key: uuid_idempotency_token
value: "{{$randomUUID}}"
disabled: false
- type: file
key: file
src: []
disabled: false
- type: text
key: source
value: file
disabled: false
order: 9000
@@ -1,26 +0,0 @@
$kind: http-request
name: Upload Image
url: "{{api_host}}/v1/media_files/upload/image"
method: POST
headers:
- key: Accept
value: application/json
- key: Cookie
value: ""
disabled: true
body:
type: formdata
content:
- type: text
key: maybe_title
value: Foo Bar Baz
disabled: false
- type: text
key: uuid_idempotency_token
value: "{{$randomUUID}}"
disabled: false
- type: file
key: file
src: []
disabled: false
order: 4000
@@ -1,24 +0,0 @@
$kind: http-request
name: Upload Media File (Generic - don't use unless necessary)
url: "{{api_host}}/v1/media_files/upload"
method: POST
headers:
- key: Accept
value: application/json
- key: Cookie
value: ""
disabled: true
body:
type: formdata
content:
- type: text
key: maybe_title
value: Foo Bar Baz
disabled: true
- type: text
key: uuid_idempotency_token
value: "{{$randomUUID}}"
- type: file
key: file
src: []
order: 5000
@@ -1,42 +0,0 @@
$kind: http-request
name: Upload New Engine Asset
url: "{{api_host}}/v1/media_files/upload/new_engine_asset"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Cookie
value: ""
disabled: true
body:
type: formdata
content:
- type: file
key: file
src: []
disabled: false
- type: text
key: maybe_title
value: |
Courtyard
disabled: false
- type: text
key: uuid_idempotency_token
value: "{{$randomUUID}}"
disabled: false
- type: text
key: source
value: file
disabled: false
- type: text
key: file
value: asdf
disabled: true
- type: text
key: engine_category
value: object
disabled: false
order: 11000
@@ -1,26 +0,0 @@
$kind: http-request
name: Upload New Engine Asset
url: "{{api_host}}/v1/media_files/upload/new_engine_asset"
method: POST
headers:
- key: Accept
value: application/json
- key: session
value: ""
disabled: true
body:
type: formdata
content:
- type: text
key: maybe_title
value: Foo Bar Baz
- type: text
key: uuid_idempotency_token
value: "{{$randomUUID}}"
- type: file
key: file
src: /Users/bt/dev/storyteller/assets/engineer_test_files/pikachu.glb
- type: text
key: engine_category
value: expression
order: 2000
@@ -1,38 +0,0 @@
$kind: http-request
name: Upload New Video
url: "{{api_host}}/v1/media_files/upload/new_video"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
body:
type: formdata
content:
- type: text
key: maybe_title
value: Foo Bar Baz
disabled: false
- type: text
key: uuid_idempotency_token
value: "{{$randomUUID}}"
disabled: false
- type: file
key: file
src: []
disabled: false
- type: text
key: maybe_resample_fps
value: "8"
disabled: true
- type: text
key: maybe_trim_start_millis
value: "3000"
disabled: false
- type: text
key: maybe_trim_end_millis
value: "2000"
disabled: true
order: 7000
@@ -1,30 +0,0 @@
$kind: http-request
name: Upload Pmx
url: "{{api_host}}/v1/media_files/upload/pmx"
method: POST
headers:
- key: Accept
value: application/json
- key: Cookie
value: ""
disabled: true
body:
type: formdata
content:
- type: text
key: maybe_title
value: Foo Bar Baz
disabled: false
- type: text
key: uuid_idempotency_token
value: "{{$randomUUID}}"
disabled: false
- type: file
key: file
src: []
disabled: false
- type: text
key: engine_category
value: character
disabled: false
order: 3000
@@ -1,29 +0,0 @@
$kind: http-request
name: Upload Spz
url: "{{api_host}}/v1/media_files/upload/spz"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Cookie
value: ""
disabled: true
body:
type: formdata
content:
- type: text
key: maybe_title
value: Splat File
disabled: false
- type: text
key: uuid_idempotency_token
value: "{{$randomUUID}}"
disabled: false
- type: file
key: file
src: []
disabled: false
order: 10000
@@ -1,23 +0,0 @@
$kind: http-request
name: Upload Studio Shot (upload hostname)
url: https://upload.storyteller.ai/v1/media_files/upload/studio_shot
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
body:
type: formdata
content:
- type: text
key: maybe_title
value: Foo Bar Baz
- type: text
key: uuid_idempotency_token
value: "{{$randomUUID}}"
- type: file
key: file
src: /Users/bt/dev/storyteller/temp/frames.zip
order: 8000
@@ -1,26 +0,0 @@
$kind: http-request
name: Upload Studio Shot
url: https://upload.storyteller.ai/v1/media_files/upload/studio_shot
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
body:
type: formdata
content:
- type: text
key: maybe_title
value: Foo Bar Baz
disabled: false
- type: text
key: uuid_idempotency_token
value: "{{$randomUUID}}"
disabled: false
- type: file
key: file
src: []
disabled: false
order: 6000
@@ -1,2 +0,0 @@
$kind: collection
order: 1000
@@ -1,21 +0,0 @@
$kind: http-request
name: Send Alert
url: "{{api_host}}/v1/moderation/alerts/send"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
disabled: true
body:
type: json
content: |
{
"title": "test alert from thread 2",
"description": "testing testing test"
}
order: 1000
@@ -1,2 +0,0 @@
$kind: collection
order: 4000
@@ -1,20 +0,0 @@
$kind: http-request
name: List Image Models
url: "{{api_host}}/v1/omni_gen/models/image"
method: GET
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
disabled: true
body:
type: text
content: |
{
"title": "test alert"
}
order: 1000
@@ -1,20 +0,0 @@
$kind: http-request
name: List Video Models
url: "{{api_host}}/v1/omni_gen/models/video"
method: GET
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
- key: Session
value: ""
disabled: true
body:
type: text
content: |
{
"title": "test alert"
}
order: 2000
@@ -1,2 +0,0 @@
$kind: collection
order: 10000
@@ -1,18 +0,0 @@
$kind: http-request
name: Create Prompt
url: "{{api_host}}/v1/prompts/create"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
body:
type: json
content: |-
{
"uuid_idempotency_token": "{{$randomUUID}}",
"positive_prompt": "This is a prompt"
}
order: 1000
@@ -1,11 +0,0 @@
$kind: http-request
name: Get Prompt
url: "{{api_host}}/v1/prompts/prompt_8q8fwcmh93nn8pjb2szeqbxgz"
method: GET
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
order: 2000
@@ -1,2 +0,0 @@
$kind: collection
order: 13000
@@ -1,19 +0,0 @@
$kind: http-request
name: Create Stripe Artcraft Checkout Session
url: "{{api_host}}/v1/stripe_artcraft/checkout/create_subscription"
method: POST
headers:
- key: Accept
value: application/json
- key: Session
value: ""
disabled: true
body:
type: json
content: |-
{
//"uuid_idempotency_token": "{{$randomUUID}}",
"plan": "artcraft_pro",
"cadence": "yearly"
}
order: 1000
@@ -1,14 +0,0 @@
$kind: http-request
url: "{{api_host}}/v1/stripe_artcraft/user_signup_subscription_checkout"
method: POST
headers:
Accept: application/json
body:
type: json
content: |-
{
//"uuid_idempotency_token": "{{$randomUUID}}",
"plan": "artcraft_pro",
"cadence": "monthly"
}
order: 2000
@@ -1,2 +0,0 @@
$kind: collection
order: 8000
@@ -1,15 +0,0 @@
$kind: http-request
name: Edit Tags
url: "{{api_host}}/v1/tags/edit/model_weight/weight_84t9zeafn72wkje1x59f9rm81"
method: POST
headers:
Accept: application/json
Content-Type: application/json
Cookie: ""
body:
type: json
content: |-
{
"tags": "video games, legend of zelda"
}
order: 1000
@@ -1,6 +0,0 @@
$kind: http-request
url: "{{api_host}}/v1/tags/list/model_weight/weight_84t9zeafn72wkje1x59f9rm81"
method: GET
headers:
Accept: application/json
order: 2000
@@ -1,2 +0,0 @@
$kind: collection
order: 6000
@@ -1,8 +0,0 @@
$kind: http-request
name: Create TTS (HEAD / CORS)
url: "{{api_host}}/v1/tts/inference"
method: HEAD
headers:
Accept: application/json
User-Agent: brandon
order: 2000
@@ -1,24 +0,0 @@
$kind: http-request
url: http://localhost:12345/v1/tts/inference
method: POST
headers:
Accept: application/json
Content-Type: application/json
User-Agent: brandon
body:
type: json
content: |-
{
"uuid_idempotency_token": "{{$randomUUID}}",
"tts_model_token": "weight_dmmthavhawqc2hj7yqyemcbf8",
"inference_text": "hello world"
}
scripts:
- type: beforeRequest
code: |-
let uuid = require('uuid');
let value = uuid.v4();
pm.environment.set("uuid", value);
language: text/javascript
order: 3000
@@ -1,16 +0,0 @@
$kind: http-request
url: "{{api_host}}/v1/tts/inference"
method: POST
headers:
Accept: application/json
Content-Type: application/json
User-Agent: brandon
body:
type: json
content: |-
{
"uuid_idempotency_token": "asdf",
"tts_model_token": "weight_dmmthavhawqc2hj7yqyemcbf8",
"inference_text": "hello world"
}
order: 1000

Some files were not shown because too many files have changed in this diff Show More