{"info":{"title":"Rainbrand API","version":"1.0.0"},"servers":[{"url":"https://www.rainbrand.com/api/v1"}],"tags":[{"name":"Feedback","description":"Report problems and observations about Rainbrand."},{"name":"Uploads","description":"Stage private local files for brand sources, the Library, and other supported operations."},{"name":"Account","description":"Check the connected account, accessible teams, and credit balances."},{"name":"Brands","description":"Manage brands and brand identity."},{"name":"Library","description":"Add, list, and remove a brand's images, video, and audio."},{"name":"Images","description":"Retrieve and manage images."},{"name":"Videos","description":"Retrieve and manage video files."},{"name":"Audio","description":"Retrieve and manage audio files."},{"name":"Briefs","description":"Get brand guidance and selected assets for a specific task."},{"name":"Models","description":"Find available models and check their inputs."},{"name":"Generations","description":"Create and retrieve model generations."},{"name":"Reviews","description":"Check an asset against a brand's color, typography, logo, and copy guidance."}],"security":[{"apiKey":[]},{"bearer":[]},{"oauth":[]}],"components":{"schemas":{"ApiError":{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]},"FeedbackCreate400ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BAD_REQUEST"},"status":{"const":400},"message":{"type":"string","default":"Input validation failed"},"data":{}},"required":["code","status","message"],"title":"BAD_REQUEST"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"FeedbackCreate401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"FeedbackCreate403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"FeedbackCreate429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"FeedbackCreate500ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INTERNAL_ERROR"},"status":{"const":500},"message":{"type":"string","default":"Feedback could not be submitted. Continue the original task."},"data":{}},"required":["code","status","message"],"title":"INTERNAL_ERROR"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"FeedbackCreate503ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"SERVICE_UNAVAILABLE"},"status":{"const":503},"message":{"type":"string","default":"Feedback could not be submitted. Continue the original task."},"data":{}},"required":["code","status","message"],"title":"SERVICE_UNAVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsList401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsList403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsList429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsCreate400ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INVALID_URL"},"status":{"const":400},"message":{"type":"string","default":"Invalid URL"},"data":{}},"required":["code","status","message"],"title":"INVALID_URL"},{"type":"object","properties":{"code":{"const":"UNSUPPORTED_SOURCE"},"status":{"const":400},"message":{"type":"string","default":"This brand source is not supported"},"data":{}},"required":["code","status","message"],"title":"UNSUPPORTED_SOURCE"},{"type":"object","properties":{"code":{"const":"INVALID_SOURCE"},"status":{"const":400},"message":{"type":"string","default":"Invalid brand source"},"data":{}},"required":["code","status","message"],"title":"INVALID_SOURCE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsCreate401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsCreate402ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INSUFFICIENT_CREDITS"},"status":{"const":402},"message":{"type":"string","default":"Not enough credits to create a brand"},"data":{"type":"object","properties":{"action_url":{"type":"string","format":"uri","description":"Deep link to /pricing for the caller to top up credits"},"credits_required":{"type":"number","description":"Credits the refused request needed"},"balance":{"type":"number","description":"The workspace's credit balance when the request was refused"},"pricing_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The workspace's pricing version. Credit amounts are comparable only within one version."}},"required":["action_url"]}},"required":["code","status","message","data"],"title":"INSUFFICIENT_CREDITS"},{"type":"object","properties":{"code":{"const":"PAYMENT_REQUIRED"},"status":{"const":402},"message":{"type":"string","default":"Subscription paused — complete payment to resume"},"data":{"type":"object","properties":{"action_url":{"type":"string","format":"uri","description":"Deep link to /pricing to complete the pending payment"}},"required":["action_url"]}},"required":["code","status","message","data"],"title":"PAYMENT_REQUIRED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsCreate403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"const":"TARGET_RESTRICTED"},"status":{"const":403},"message":{"type":"string","default":"This brand cannot be added on a free account right now"},"data":{"type":"object","properties":{"supportReference":{"type":"string"}},"required":["supportReference"]}},"required":["code","status","message","data"],"title":"TARGET_RESTRICTED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsCreate404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"WORKSPACE_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Workspace not found or not accessible"},"data":{}},"required":["code","status","message"],"title":"WORKSPACE_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsCreate409ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"IDEMPOTENCY_CONFLICT"},"status":{"const":409},"message":{"type":"string","default":"Idempotency-Key was already used with a different request"},"data":{}},"required":["code","status","message"],"title":"IDEMPOTENCY_CONFLICT"},{"type":"object","properties":{"code":{"const":"DUPLICATE_BRAND"},"status":{"const":409},"message":{"type":"string","default":"A Brand in this workspace already uses one or more of these sources."},"data":{"type":"object","properties":{"matches":{"type":"array","minItems":1,"items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"status":{"enum":["analyzing","ready","logo_required","failed"],"type":"string"},"matchingSources":{"type":"array","minItems":1,"items":{"anyOf":[{"type":"object","properties":{"kind":{"const":"website"},"url":{"type":"string","format":"uri"}},"required":["kind","url"]},{"type":"object","properties":{"kind":{"const":"instagram"},"username":{"type":"string"}},"required":["kind","username"]}]}}},"required":["id","name","status","matchingSources"]}}},"required":["matches"]}},"required":["code","status","message","data"],"title":"DUPLICATE_BRAND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsCreate429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsCreate500ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INTERNAL_ERROR"},"status":{"const":500},"message":{"type":"string","default":"Failed to start brand creation"},"data":{}},"required":["code","status","message"],"title":"INTERNAL_ERROR"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsCreate503ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"SCRAPE_FAILED"},"status":{"const":503},"message":{"type":"string","default":"Couldn't reach that URL. Please try again."},"data":{}},"required":["code","status","message"],"title":"SCRAPE_FAILED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsGet401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsGet403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsGet404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsGet429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsDelete401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsDelete403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsDelete404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsDelete429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsInspect401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsInspect403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsInspect404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsInspect409ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_SKILL_UNAVAILABLE"},"status":{"const":409},"message":{"type":"string","default":"Brand has no inspectable Skill"},"data":{}},"required":["code","status","message"],"title":"BRAND_SKILL_UNAVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsInspect429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsInspect500ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INTERNAL_ERROR"},"status":{"const":500},"message":{"type":"string","default":"Failed to inspect Brand"},"data":{}},"required":["code","status","message"],"title":"INTERNAL_ERROR"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsCreateExport401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsCreateExport403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsCreateExport404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsCreateExport409ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_SKILL_UNAVAILABLE"},"status":{"const":409},"message":{"type":"string","default":"Brand has no exportable Skill"},"data":{}},"required":["code","status","message"],"title":"BRAND_SKILL_UNAVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsCreateExport429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsCreateExport500ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INTERNAL_ERROR"},"status":{"const":500},"message":{"type":"string","default":"Failed to request Brand export"},"data":{}},"required":["code","status","message"],"title":"INTERNAL_ERROR"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsGetExport401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsGetExport403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsGetExport404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"const":"BRAND_EXPORT_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand export not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_EXPORT_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsGetExport429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsGetExport500ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INTERNAL_ERROR"},"status":{"const":500},"message":{"type":"string","default":"Failed to get Brand export"},"data":{}},"required":["code","status","message"],"title":"INTERNAL_ERROR"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsEdit400ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INVALID_INPUT"},"status":{"const":400},"message":{"type":"string","default":"Invalid Brand Edit input"},"data":{}},"required":["code","status","message"],"title":"INVALID_INPUT"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsEdit401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsEdit402ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INSUFFICIENT_CREDITS"},"status":{"const":402},"message":{"type":"string","default":"Not enough credits to edit this brand"},"data":{"type":"object","properties":{"action_url":{"type":"string","format":"uri","description":"Deep link to /pricing for the caller to top up credits"},"credits_required":{"type":"number","description":"Credits the refused request needed"},"balance":{"type":"number","description":"The workspace's credit balance when the request was refused"},"pricing_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The workspace's pricing version. Credit amounts are comparable only within one version."}},"required":["action_url"]}},"required":["code","status","message","data"],"title":"INSUFFICIENT_CREDITS"},{"type":"object","properties":{"code":{"const":"PAYMENT_REQUIRED"},"status":{"const":402},"message":{"type":"string","default":"Subscription paused — complete payment to resume"},"data":{"type":"object","properties":{"action_url":{"type":"string","format":"uri","description":"Deep link to /pricing to complete the pending payment"}},"required":["action_url"]}},"required":["code","status","message","data"],"title":"PAYMENT_REQUIRED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsEdit403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsEdit404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsEdit409ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_SKILL_UNAVAILABLE"},"status":{"const":409},"message":{"type":"string","default":"Brand has no editable Skill"},"data":{}},"required":["code","status","message"],"title":"BRAND_SKILL_UNAVAILABLE"},{"type":"object","properties":{"code":{"const":"BRAND_CHANGED"},"status":{"const":409},"message":{"type":"string","default":"The active Brand Skill no longer matches the Skill this edit is based on. Inspect the Brand again and retry."},"data":{"type":"object","properties":{"activeSkillId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]}},"required":["activeSkillId"]}},"required":["code","status","message","data"],"title":"BRAND_CHANGED"},{"type":"object","properties":{"code":{"const":"IDEMPOTENCY_CONFLICT"},"status":{"const":409},"message":{"type":"string","default":"Idempotency-Key was already used with a different request"},"data":{}},"required":["code","status","message"],"title":"IDEMPOTENCY_CONFLICT"},{"type":"object","properties":{"code":{"const":"REPLACEMENT_CONFLICT"},"status":{"const":409},"message":{"type":"string","default":"The Brand Edit being replaced is no longer awaiting approval"},"data":{}},"required":["code","status","message"],"title":"REPLACEMENT_CONFLICT"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsEdit429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsEdit500ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INTERNAL_ERROR"},"status":{"const":500},"message":{"type":"string","default":"Failed to create Brand Edit"},"data":{}},"required":["code","status","message"],"title":"INTERNAL_ERROR"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsUploadFontAsset400ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INVALID_FONT"},"status":{"const":400},"message":{"type":"string","default":"Invalid font file"},"data":{}},"required":["code","status","message"],"title":"INVALID_FONT"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsUploadFontAsset401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsUploadFontAsset403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsUploadFontAsset404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"const":"UPLOAD_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Upload not found"},"data":{}},"required":["code","status","message"],"title":"UPLOAD_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsUploadFontAsset409ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_SKILL_UNAVAILABLE"},"status":{"const":409},"message":{"type":"string","default":"Brand has no editable Skill"},"data":{}},"required":["code","status","message"],"title":"BRAND_SKILL_UNAVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsUploadFontAsset429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsUploadFontAsset500ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INTERNAL_ERROR"},"status":{"const":500},"message":{"type":"string","default":"Font upload failed"},"data":{}},"required":["code","status","message"],"title":"INTERNAL_ERROR"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsGetEdit401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsGetEdit403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsGetEdit404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"const":"BRAND_EDIT_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand edit not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_EDIT_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsGetEdit429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsGetEdit500ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INTERNAL_ERROR"},"status":{"const":500},"message":{"type":"string","default":"Brand edit request failed"},"data":{}},"required":["code","status","message"],"title":"INTERNAL_ERROR"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsGetEditFile400ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INVALID_CURSOR"},"status":{"const":400},"message":{"type":"string","default":"Invalid pagination cursor"},"data":{}},"required":["code","status","message"],"title":"INVALID_CURSOR"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsGetEditFile401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsGetEditFile403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsGetEditFile404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"const":"BRAND_EDIT_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand edit not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_EDIT_NOT_FOUND"},{"type":"object","properties":{"code":{"const":"BRAND_EDIT_FILE_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Changed Brand file not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_EDIT_FILE_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsGetEditFile429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsGetEditFile500ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INTERNAL_ERROR"},"status":{"const":500},"message":{"type":"string","default":"Brand edit request failed"},"data":{}},"required":["code","status","message"],"title":"INTERNAL_ERROR"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsContinueEdit400ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INVALID_RESPONSE"},"status":{"const":400},"message":{"type":"string","default":"Invalid Brand Edit interaction response"},"data":{}},"required":["code","status","message"],"title":"INVALID_RESPONSE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsContinueEdit401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsContinueEdit402ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INSUFFICIENT_CREDITS"},"status":{"const":402},"message":{"type":"string","default":"Not enough credits to continue this edit"},"data":{"type":"object","properties":{"action_url":{"type":"string","format":"uri","description":"Deep link to /pricing for the caller to top up credits"},"credits_required":{"type":"number","description":"Credits the refused request needed"},"balance":{"type":"number","description":"The workspace's credit balance when the request was refused"},"pricing_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The workspace's pricing version. Credit amounts are comparable only within one version."}},"required":["action_url"]}},"required":["code","status","message","data"],"title":"INSUFFICIENT_CREDITS"},{"type":"object","properties":{"code":{"const":"PAYMENT_REQUIRED"},"status":{"const":402},"message":{"type":"string","default":"Subscription paused — complete payment to resume"},"data":{"type":"object","properties":{"action_url":{"type":"string","format":"uri","description":"Deep link to /pricing to complete the pending payment"}},"required":["action_url"]}},"required":["code","status","message","data"],"title":"PAYMENT_REQUIRED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsContinueEdit403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsContinueEdit404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"const":"BRAND_EDIT_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand edit not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_EDIT_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsContinueEdit409ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"IDEMPOTENCY_CONFLICT"},"status":{"const":409},"message":{"type":"string","default":"Idempotency-Key was already used with a different request"},"data":{}},"required":["code","status","message"],"title":"IDEMPOTENCY_CONFLICT"},{"type":"object","properties":{"code":{"const":"BRAND_EDIT_INTERACTION_CONFLICT"},"status":{"const":409},"message":{"type":"string","default":"The Brand Edit interaction is no longer current"},"data":{"type":"object","properties":{"editId":{"type":"string","format":"uuid"},"status":{"enum":["preparing","input_required","awaiting_approval","applied","discarded","stale","no_changes","failed"],"type":"string"}},"required":["editId","status"]}},"required":["code","status","message","data"],"title":"BRAND_EDIT_INTERACTION_CONFLICT"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsContinueEdit429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsContinueEdit500ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INTERNAL_ERROR"},"status":{"const":500},"message":{"type":"string","default":"Brand edit request failed"},"data":{}},"required":["code","status","message"],"title":"INTERNAL_ERROR"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsApplyEdit401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsApplyEdit403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsApplyEdit404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"const":"BRAND_EDIT_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand edit not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_EDIT_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsApplyEdit409ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_EDIT_STALE"},"status":{"const":409},"message":{"type":"string","default":"Brand changed while the edit waited for approval"},"data":{"type":"object","properties":{"editId":{"type":"string","format":"uuid"},"status":{"const":"stale"},"activeSkillId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]}},"required":["editId","status","activeSkillId"]}},"required":["code","status","message","data"],"title":"BRAND_EDIT_STALE"},{"type":"object","properties":{"code":{"const":"BRAND_EDIT_STATE_CONFLICT"},"status":{"const":409},"message":{"type":"string","default":"Brand edit cannot be applied in its current state"},"data":{"type":"object","properties":{"editId":{"type":"string","format":"uuid"},"status":{"enum":["preparing","input_required","awaiting_approval","applied","discarded","stale","no_changes","failed"],"type":"string"}},"required":["editId","status"]}},"required":["code","status","message","data"],"title":"BRAND_EDIT_STATE_CONFLICT"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsApplyEdit429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsApplyEdit500ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INTERNAL_ERROR"},"status":{"const":500},"message":{"type":"string","default":"Brand edit request failed"},"data":{}},"required":["code","status","message"],"title":"INTERNAL_ERROR"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsDiscardEdit401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsDiscardEdit403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsDiscardEdit404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"const":"BRAND_EDIT_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand edit not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_EDIT_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsDiscardEdit409ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_EDIT_STATE_CONFLICT"},"status":{"const":409},"message":{"type":"string","default":"Brand edit cannot be discarded in its current state"},"data":{"type":"object","properties":{"editId":{"type":"string","format":"uuid"},"status":{"enum":["preparing","input_required","awaiting_approval","applied","discarded","stale","no_changes","failed"],"type":"string"}},"required":["editId","status"]}},"required":["code","status","message","data"],"title":"BRAND_EDIT_STATE_CONFLICT"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsDiscardEdit429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BrandsDiscardEdit500ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INTERNAL_ERROR"},"status":{"const":500},"message":{"type":"string","default":"Brand edit request failed"},"data":{}},"required":["code","status","message"],"title":"INTERNAL_ERROR"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"LibraryAdd400ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UPLOAD_UNAVAILABLE"},"status":{"const":400},"message":{"type":"string","default":"Temporary upload is unavailable"},"data":{}},"required":["code","status","message"],"title":"UPLOAD_UNAVAILABLE"},{"type":"object","properties":{"code":{"const":"INVALID_URL"},"status":{"const":400},"message":{"type":"string","default":"Please provide a valid, publicly reachable URL."},"data":{}},"required":["code","status","message"],"title":"INVALID_URL"},{"type":"object","properties":{"code":{"const":"DOWNLOAD_FAILED"},"status":{"const":400},"message":{"type":"string","default":"Failed to download the file"},"data":{}},"required":["code","status","message"],"title":"DOWNLOAD_FAILED"},{"type":"object","properties":{"code":{"const":"UNSUPPORTED_FORMAT"},"status":{"const":400},"message":{"type":"string","default":"Unsupported file type"},"data":{}},"required":["code","status","message"],"title":"UNSUPPORTED_FORMAT"},{"type":"object","properties":{"code":{"const":"FILE_TOO_LARGE"},"status":{"const":400},"message":{"type":"string","default":"File is too large"},"data":{}},"required":["code","status","message"],"title":"FILE_TOO_LARGE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"LibraryAdd401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"LibraryAdd403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"LibraryAdd404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"const":"MEDIA_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Media not found"},"data":{}},"required":["code","status","message"],"title":"MEDIA_NOT_FOUND"},{"type":"object","properties":{"code":{"const":"UPLOAD_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Upload not found"},"data":{}},"required":["code","status","message"],"title":"UPLOAD_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"LibraryAdd429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"LibraryAdd503ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"LIBRARY_UNAVAILABLE"},"status":{"const":503},"message":{"type":"string","default":"The Library cannot be changed right now"},"data":{}},"required":["code","status","message"],"title":"LIBRARY_UNAVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"LibraryList401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"LibraryList403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"LibraryList404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"LibraryList429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"LibraryRemove401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"LibraryRemove403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"LibraryRemove404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"const":"MEDIA_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Media not found in this brand"},"data":{}},"required":["code","status","message"],"title":"MEDIA_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"LibraryRemove429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"LibraryRemove503ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"LIBRARY_UNAVAILABLE"},"status":{"const":503},"message":{"type":"string","default":"The Library cannot be changed right now"},"data":{}},"required":["code","status","message"],"title":"LIBRARY_UNAVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ModelsList400ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INVALID_CURSOR"},"status":{"const":400},"message":{"type":"string","default":"Invalid generation model cursor"},"data":{}},"required":["code","status","message"],"title":"INVALID_CURSOR"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ModelsList401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ModelsList403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ModelsList429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ModelsList503ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"CATALOG_UNAVAILABLE"},"status":{"const":503},"message":{"type":"string","default":"Could not load generation models"},"data":{}},"required":["code","status","message"],"title":"CATALOG_UNAVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ModelsGet401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ModelsGet403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ModelsGet404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"MODEL_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Generation model not found"},"data":{}},"required":["code","status","message"],"title":"MODEL_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ModelsGet429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ModelsGet503ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"CATALOG_UNAVAILABLE"},"status":{"const":503},"message":{"type":"string","default":"Could not load generation models"},"data":{}},"required":["code","status","message"],"title":"CATALOG_UNAVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"GenerationsCreate400ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INVALID_INPUT"},"status":{"const":400},"message":{"type":"string","default":"Invalid generation input"},"data":{}},"required":["code","status","message"],"title":"INVALID_INPUT"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"GenerationsCreate401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"GenerationsCreate402ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INSUFFICIENT_CREDITS"},"status":{"const":402},"message":{"type":"string","default":"Not enough credits to generate"},"data":{"type":"object","properties":{"action_url":{"type":"string","format":"uri","description":"Deep link to /pricing to purchase credits or choose a paid plan"}},"required":["action_url"]}},"required":["code","status","message","data"],"title":"INSUFFICIENT_CREDITS"},{"type":"object","properties":{"code":{"const":"PAYMENT_REQUIRED"},"status":{"const":402},"message":{"type":"string","default":"Subscription paused — complete payment to resume"},"data":{"type":"object","properties":{"action_url":{"type":"string","format":"uri","description":"Deep link to /pricing to complete the pending payment"}},"required":["action_url"]}},"required":["code","status","message","data"],"title":"PAYMENT_REQUIRED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"GenerationsCreate403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"GenerationsCreate404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"MODEL_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Generation model not found"},"data":{}},"required":["code","status","message"],"title":"MODEL_NOT_FOUND"},{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"const":"BRIEF_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brief not found"},"data":{}},"required":["code","status","message"],"title":"BRIEF_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"GenerationsCreate409ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"IDEMPOTENCY_CONFLICT"},"status":{"const":409},"message":{"type":"string","default":"Idempotency-Key was already used with a different request"},"data":{}},"required":["code","status","message"],"title":"IDEMPOTENCY_CONFLICT"},{"type":"object","properties":{"code":{"const":"BILLING_CONFIRMATION_PENDING"},"status":{"const":409},"message":{"type":"string","default":"Credit reservation is unconfirmed. Check your balance before retrying."},"data":{"type":"object","properties":{"retryable":{"const":false}},"required":["retryable"]}},"required":["code","status","message","data"],"title":"BILLING_CONFIRMATION_PENDING"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"GenerationsCreate429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"const":"ACTIVE_GENERATION_LIMIT_REACHED"},"status":{"const":429},"message":{"type":"string","default":"Wait for an active generation to finish"},"data":{"type":"object","properties":{"active_generation_id":{"type":"string","format":"uuid","description":"ID of the account's oldest active billed generation. A slot opens when any active generation finishes, fails, or reaches two hours"},"action_url":{"type":"string","format":"uri","description":"Deep link to /pricing to choose a paid plan"}},"required":["active_generation_id","action_url"]}},"required":["code","status","message","data"],"title":"ACTIVE_GENERATION_LIMIT_REACHED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"GenerationsCreate500ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BILLING_SETUP_ERROR"},"status":{"const":500},"message":{"type":"string","default":"We couldn't determine the value of this account's credits, so this generation didn't run and nothing was charged. Retrying won't help; email support@rainbrand.com and we'll fix the account."},"data":{}},"required":["code","status","message"],"title":"BILLING_SETUP_ERROR"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"GenerationsCreate503ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"CATALOG_UNAVAILABLE"},"status":{"const":503},"message":{"type":"string","default":"Could not load generation models"},"data":{}},"required":["code","status","message"],"title":"CATALOG_UNAVAILABLE"},{"type":"object","properties":{"code":{"const":"BILLING_TEMPORARILY_UNAVAILABLE"},"status":{"const":503},"message":{"type":"string","default":"Generation is temporarily busy. Please try again shortly."},"data":{}},"required":["code","status","message"],"title":"BILLING_TEMPORARILY_UNAVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"GenerationsList401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"GenerationsList403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"GenerationsList429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"GenerationsGet401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"GenerationsGet403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"GenerationsGet404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"GENERATION_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Generation not found"},"data":{}},"required":["code","status","message"],"title":"GENERATION_NOT_FOUND"},{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"GenerationsGet429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"VideosList401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"VideosList403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"VideosList429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"VideosGet401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"VideosGet403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"VideosGet404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"MEDIA_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Video not found"},"data":{}},"required":["code","status","message"],"title":"MEDIA_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"VideosGet429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"VideosDelete401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"VideosDelete403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"VideosDelete404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"MEDIA_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Video not found"},"data":{}},"required":["code","status","message"],"title":"MEDIA_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"VideosDelete429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"AudioList401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"AudioList403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"AudioList429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"AudioGet401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"AudioGet403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"AudioGet404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"MEDIA_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Audio not found"},"data":{}},"required":["code","status","message"],"title":"MEDIA_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"AudioGet429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"AudioDelete401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"AudioDelete403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"AudioDelete404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"MEDIA_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Audio not found"},"data":{}},"required":["code","status","message"],"title":"MEDIA_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"AudioDelete429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ImagesList401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ImagesList403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ImagesList422ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":422},"message":{"type":"string","default":"Brand session not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ImagesList429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ImagesDeleteMany401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ImagesDeleteMany403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ImagesDeleteMany429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ImagesGet401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ImagesGet403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ImagesGet404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"IMAGE_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Image not found"},"data":{}},"required":["code","status","message"],"title":"IMAGE_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ImagesGet429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ImagesDelete401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ImagesDelete403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ImagesDelete404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"IMAGE_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Image not found"},"data":{}},"required":["code","status","message"],"title":"IMAGE_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ImagesDelete429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ImagesSearch400ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INVALID_CURSOR"},"status":{"const":400},"message":{"type":"string","default":"Invalid pagination cursor"},"data":{}},"required":["code","status","message"],"title":"INVALID_CURSOR"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ImagesSearch401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ImagesSearch403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ImagesSearch422ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":422},"message":{"type":"string","default":"Brand session not found"},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ImagesSearch429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BriefsCreate401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BriefsCreate402ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INSUFFICIENT_CREDITS"},"status":{"const":402},"message":{"type":"string","default":"Not enough credits to create a brief"},"data":{"type":"object","properties":{"action_url":{"type":"string","format":"uri","description":"Deep link to /pricing for the caller to top up credits"},"credits_required":{"type":"number","description":"Credits the refused request needed"},"balance":{"type":"number","description":"The workspace's credit balance when the request was refused"},"pricing_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The workspace's pricing version. Credit amounts are comparable only within one version."}},"required":["action_url"]}},"required":["code","status","message","data"],"title":"INSUFFICIENT_CREDITS"},{"type":"object","properties":{"code":{"const":"PAYMENT_REQUIRED"},"status":{"const":402},"message":{"type":"string","default":"Subscription paused — complete payment to resume"},"data":{"type":"object","properties":{"action_url":{"type":"string","format":"uri","description":"Deep link to /pricing to complete the pending payment"}},"required":["action_url"]}},"required":["code","status","message","data"],"title":"PAYMENT_REQUIRED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BriefsCreate403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BriefsCreate404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand not found."},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BriefsCreate409ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_SKILL_UNAVAILABLE"},"status":{"const":409},"message":{"type":"string","default":"This brand is not ready for briefs yet"},"data":{}},"required":["code","status","message"],"title":"BRAND_SKILL_UNAVAILABLE"},{"type":"object","properties":{"code":{"const":"IDEMPOTENCY_CONFLICT"},"status":{"const":409},"message":{"type":"string","default":"Idempotency-Key was already used with a different request"},"data":{}},"required":["code","status","message"],"title":"IDEMPOTENCY_CONFLICT"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BriefsCreate429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"const":"ACTIVE_BRIEF_LIMIT_REACHED"},"status":{"const":429},"message":{"type":"string","default":"Too many briefs are already running"},"data":{}},"required":["code","status","message"],"title":"ACTIVE_BRIEF_LIMIT_REACHED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BriefsCreate500ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INTERNAL_ERROR"},"status":{"const":500},"message":{"type":"string","default":"Failed to create brief"},"data":{}},"required":["code","status","message"],"title":"INTERNAL_ERROR"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BriefsGet401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BriefsGet403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BriefsGet404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRIEF_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brief not found"},"data":{}},"required":["code","status","message"],"title":"BRIEF_NOT_FOUND"},{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand not found."},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"BriefsGet429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ReviewsCreate400ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INVALID_INPUT"},"status":{"const":400},"message":{"type":"string","default":"Invalid review input"},"data":{}},"required":["code","status","message"],"title":"INVALID_INPUT"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ReviewsCreate401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ReviewsCreate402ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INSUFFICIENT_CREDITS"},"status":{"const":402},"message":{"type":"string","default":"Not enough credits to review this image"},"data":{"type":"object","properties":{"action_url":{"type":"string","format":"uri","description":"Deep link to /pricing for the caller to top up credits"},"credits_required":{"type":"number","description":"Credits the refused request needed"},"balance":{"type":"number","description":"The workspace's credit balance when the request was refused"},"pricing_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The workspace's pricing version. Credit amounts are comparable only within one version."}},"required":["action_url"]}},"required":["code","status","message","data"],"title":"INSUFFICIENT_CREDITS"},{"type":"object","properties":{"code":{"const":"PAYMENT_REQUIRED"},"status":{"const":402},"message":{"type":"string","default":"Subscription paused — complete payment to resume"},"data":{"type":"object","properties":{"action_url":{"type":"string","format":"uri","description":"Deep link to /pricing to complete the pending payment"}},"required":["action_url"]}},"required":["code","status","message","data"],"title":"PAYMENT_REQUIRED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ReviewsCreate403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ReviewsCreate404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand not found."},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"const":"IMAGE_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Image not found in this brand's workspace"},"data":{}},"required":["code","status","message"],"title":"IMAGE_NOT_FOUND"},{"type":"object","properties":{"code":{"const":"UPLOAD_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Upload not found in this workspace"},"data":{}},"required":["code","status","message"],"title":"UPLOAD_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ReviewsCreate409ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"BRAND_SKILL_UNAVAILABLE"},"status":{"const":409},"message":{"type":"string","default":"This brand is not ready for reviews yet"},"data":{}},"required":["code","status","message"],"title":"BRAND_SKILL_UNAVAILABLE"},{"type":"object","properties":{"code":{"const":"IMAGE_NOT_READY"},"status":{"const":409},"message":{"type":"string","default":"The image is not complete"},"data":{}},"required":["code","status","message"],"title":"IMAGE_NOT_READY"},{"type":"object","properties":{"code":{"const":"IDEMPOTENCY_CONFLICT"},"status":{"const":409},"message":{"type":"string","default":"Idempotency-Key was already used with a different request"},"data":{}},"required":["code","status","message"],"title":"IDEMPOTENCY_CONFLICT"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ReviewsCreate429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"const":"ACTIVE_REVIEW_LIMIT_REACHED"},"status":{"const":429},"message":{"type":"string","default":"Too many reviews are already running"},"data":{}},"required":["code","status","message"],"title":"ACTIVE_REVIEW_LIMIT_REACHED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ReviewsCreate500ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INTERNAL_ERROR"},"status":{"const":500},"message":{"type":"string","default":"Failed to create review"},"data":{}},"required":["code","status","message"],"title":"INTERNAL_ERROR"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ReviewsGet401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ReviewsGet403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ReviewsGet404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"REVIEW_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Review not found."},"data":{}},"required":["code","status","message"],"title":"REVIEW_NOT_FOUND"},{"type":"object","properties":{"code":{"const":"BRAND_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Brand not found."},"data":{}},"required":["code","status","message"],"title":"BRAND_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"ReviewsGet429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"UploadsCreate400ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INVALID_UPLOAD"},"status":{"const":400},"message":{"type":"string","default":"Invalid upload request"},"data":{}},"required":["code","status","message"],"title":"INVALID_UPLOAD"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"UploadsCreate401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"UploadsCreate403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"UploadsCreate404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"WORKSPACE_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Workspace not found or not accessible"},"data":{}},"required":["code","status","message"],"title":"WORKSPACE_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"UploadsCreate429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"const":"UPLOAD_QUOTA_EXCEEDED"},"status":{"const":429},"message":{"type":"string","default":"Temporary upload limit reached"},"data":{}},"required":["code","status","message"],"title":"UPLOAD_QUOTA_EXCEEDED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"UploadsCreate500ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INTERNAL_ERROR"},"status":{"const":500},"message":{"type":"string","default":"Failed to create uploads"},"data":{}},"required":["code","status","message"],"title":"INTERNAL_ERROR"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"AccountGet401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"AccountGet403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"AccountGet429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"CreditsGet401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"CreditsGet403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"CreditsGet404ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"WORKSPACE_NOT_FOUND"},"status":{"const":404},"message":{"type":"string","default":"Workspace not found or not accessible"},"data":{}},"required":["code","status","message"],"title":"WORKSPACE_NOT_FOUND"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"CreditsGet429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"CreditsGet500ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"INTERNAL_SERVER_ERROR"},"status":{"const":500},"message":{"type":"string","default":"Failed to check credit balance"},"data":{}},"required":["code","status","message"],"title":"INTERNAL_SERVER_ERROR"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"WorkspacesList401ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"UNAUTHORIZED"},"status":{"const":401},"message":{"type":"string","default":"Invalid or missing API credentials"},"data":{}},"required":["code","status","message"],"title":"UNAUTHORIZED"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"WorkspacesList403ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"ACCOUNT_BANNED"},"status":{"const":403},"message":{"type":"string","default":"This account has been suspended."},"data":{}},"required":["code","status","message"],"title":"ACCOUNT_BANNED"},{"type":"object","properties":{"code":{"const":"FORBIDDEN"},"status":{"const":403},"message":{"type":"string","default":"Plan upgrade required"},"data":{}},"required":["code","status","message"],"title":"FORBIDDEN"},{"type":"object","properties":{"code":{"const":"FEATURE_NOT_AVAILABLE"},"status":{"const":403},"message":{"type":"string","default":"This operation isn't available for this integration."},"data":{"type":"object","properties":{"feature":{"type":"string","minLength":1,"description":"The unavailable feature. See [known feature values](https://docs.rainbrand.com/api/errors#known-feature-values). New values may be added. If a value is unfamiliar, display the error's message.","examples":["brands","brand_creation","brand_exports","brand_edits","brand_library","brand_fonts","briefs","reviews","generations","image_transformations","temporary_uploads","model_catalog","image_search","docs_search","agent_feedback","account","workspaces","credits","media","pdf_sources","instagram_sources","brand_sources","brand_processing"]},"sourceIndex":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Zero-based index in the submitted sources array, when a particular source caused the refusal."},"requestId":{"type":"string","format":"uuid","description":"Diagnostic identifier for this refusal. Include it when contacting support."}},"required":["feature"]}},"required":["code","status","message","data"],"title":"FEATURE_NOT_AVAILABLE"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]},"WorkspacesList429ErrorResponse":{"type":"object","properties":{"error":{"allOf":[{"$ref":"#/components/schemas/ApiError"},{"anyOf":[{"type":"object","properties":{"code":{"const":"TOO_MANY_REQUESTS"},"status":{"const":429},"message":{"type":"string","default":"Rate limit exceeded"},"data":{}},"required":["code","status","message"],"title":"TOO_MANY_REQUESTS"},{"type":"object","properties":{"code":{"type":"string"},"status":{"type":"integer"},"message":{"type":"string"},"data":{}},"required":["code","status","message"]}]}]}},"required":["error"]}},"securitySchemes":{"apiKey":{"type":"apiKey","in":"header","name":"x-api-key","description":"Rainbrand API key, for example `x-api-key: bloom_sk_...`."},"bearer":{"type":"http","scheme":"bearer","description":"Rainbrand API key (`Bearer bloom_sk_...`) or Rainbrand OAuth access token."},"oauth":{"type":"oauth2","description":"Authorization Code with PKCE S256. See [Authentication](https://docs.rainbrand.com/api/authentication).","flows":{"authorizationCode":{"authorizationUrl":"https://www.rainbrand.com/api/auth/oauth2/authorize","tokenUrl":"https://www.rainbrand.com/api/auth/oauth2/token","scopes":{"openid":"Authenticate the user's identity with OpenID Connect.","offline_access":"Request a refresh token for access when the user is offline."}}}}}},"openapi":"3.1.1","paths":{"/feedback":{"post":{"operationId":"feedback.create","summary":"Submit feedback","description":"Report a problem or observation about Rainbrand for internal review. Continue the original task after submitting.","tags":["Feedback"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","minLength":1,"maxLength":2000,"description":"What Rainbrand did, what you expected, and the effect on the task. Omit private task content."},"category":{"enum":["bug","docs_mismatch","friction","feature_gap","quality_degradation","other"],"type":"string","default":"other","description":"Issue type. Defaults to other."},"tool_name":{"type":"string","minLength":1,"maxLength":100,"description":"Name of the Rainbrand tool involved, if known."},"related_id":{"type":"string","minLength":1,"maxLength":200,"description":"Rainbrand-generated ID of the affected resource or operation, if known."}},"required":["message"],"additionalProperties":false,"examples":[{"message":"Acme Inc.'s Brand Skill export is missing the font files listed in its typography guidance.","category":"docs_mismatch"}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"status":{"const":"received"}},"required":["status"]}},"required":["data"]},"example":{"data":{"status":"received"}}}}},"400":{"description":"400","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackCreate400ErrorResponse"}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackCreate401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackCreate403ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackCreate429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}},"500":{"description":"500","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackCreate500ErrorResponse"}}}},"503":{"description":"503","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackCreate503ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying, when supplied. Temporary billing unavailability includes this header.","schema":{"type":"integer","minimum":1}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request POST \\\n  --url 'https://www.rainbrand.com/api/v1/feedback' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\" \\\n  --header \"Content-Type: application/json\" \\\n  --data '{\n  \"message\": \"Acme Inc.'\\''s Brand Skill export is missing the font files listed in its typography guidance.\",\n  \"category\": \"docs_mismatch\"\n}'"}]}},"/brands":{"get":{"operationId":"brands.list","summary":"List brands","description":"List the brands you can access.","tags":["Brands"],"parameters":[{"name":"workspaceId","in":"query","schema":{"type":"string","minLength":1,"description":"Team workspace ID. Scopes results to that workspace. Omit to list across every workspace the caller can see."},"allowEmptyValue":true,"allowReserved":true},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Results per page (1–100, default 50)"},"allowEmptyValue":true,"allowReserved":true},{"name":"cursor","in":"query","schema":{"type":"string","description":"Pagination cursor from a previous response's nextCursor"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"brands":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"status":{"enum":["analyzing","ready","logo_required","failed"],"type":"string"},"imageCount":{"type":"number","description":"Number of completed generated images that have not been deleted."},"libraryImageCount":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Number of saved images in this brand's Brand Library, such as user uploads, images imported from websites or social profiles, and logos or graphics extracted from official brand sources. Excludes generated images."},"workspaceId":{"anyOf":[{"type":"string"},{"type":"null"}]},"workspaceName":{"type":"string"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["id","name","status","imageCount","libraryImageCount","workspaceId","workspaceName","createdAt"]}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"hasMore":{"type":"boolean"}},"required":["brands","nextCursor","hasMore"]}},"required":["data"]},"example":{"data":{"brands":[{"id":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","name":"Acme Inc.","status":"ready","imageCount":1,"libraryImageCount":1,"workspaceId":null,"workspaceName":"Personal","createdAt":"2026-10-24T09:00:00.000Z"}],"nextCursor":null,"hasMore":false}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsList401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsList403ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsList429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/brands' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]},"post":{"operationId":"brands.create","summary":"Create a brand","description":"Build reusable brand context from your sources. Check progress with [Get a brand](/api-reference/brands/get-a-brand).","tags":["Brands"],"parameters":[{"name":"idempotency-key","in":"header","schema":{"type":"string","minLength":1,"maxLength":255,"description":"Optional retry key, 1–255 characters after trimming. Reuse with the same request to recover the original Brand ID. Use a new key for a new creation."}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"sources":{"type":"array","minItems":1,"maxItems":30,"items":{"anyOf":[{"anyOf":[{"type":"object","properties":{"kind":{"enum":["website"],"type":"string","description":"Source type for a public website"},"url":{"type":"string","format":"uri","description":"Public website URL to turn into a Brand Skill"}},"required":["kind","url"],"title":"Website"},{"type":"object","properties":{"kind":{"enum":["instagram"],"type":"string","description":"Source type for an Instagram account"},"username":{"type":"string","minLength":1,"maxLength":31,"description":"Instagram username to use as brand evidence"}},"required":["kind","username"],"title":"Instagram"},{"type":"object","properties":{"kind":{"enum":["file"],"type":"string","description":"Source type for an uploaded file, including a PDF"},"url":{"type":"string","format":"uri","description":"Temporary public HTTPS URL for a file up to 100 MiB, including a PDF"},"filename":{"type":"string","minLength":1,"maxLength":240,"description":"Original filename used for source labels. It defaults from the URL when possible."}},"required":["kind","url"],"additionalProperties":false,"title":"File"}]},{"type":"object","properties":{"kind":{"const":"file","description":"Source type for a completed temporary upload"},"uploadId":{"type":"string","format":"uuid","description":"Completed temporary upload from POST /uploads"}},"required":["kind","uploadId"],"additionalProperties":false,"title":"Temporary upload"}]},"description":"Sources to combine into a Brand Skill. At most one website and one Instagram account can be included. Files may be public HTTPS URLs or completed temporary uploads, up to 100 MiB each and 256 MiB combined."},"instructions":{"type":"string","maxLength":4000,"description":"Optional instructions passed to the Brand Agent for this run. The Agent applies them using its existing judgment."},"workspaceId":{"type":"string","minLength":1,"description":"Team workspace ID. The brand is created in that workspace and billed to its customer. Omit to create in the caller's personal workspace."},"allowDuplicate":{"type":"boolean","description":"Allow creation when a website or Instagram source matches an existing brand in the selected workspace. Set to true only when the caller intentionally chooses to create another brand. Defaults to false."}},"required":["sources"],"additionalProperties":false,"title":"One or more sources","examples":[{"sources":[{"kind":"website","url":"https://acme.com"}]}]}}}},"responses":{"202":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"const":"analyzing"}},"required":["id","status"]}},"required":["data"]},"example":{"data":{"id":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","status":"analyzing"}}}}},"400":{"description":"400","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsCreate400ErrorResponse"}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsCreate401ErrorResponse"}}}},"402":{"description":"402","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsCreate402ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsCreate403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsCreate404ErrorResponse"}}}},"409":{"description":"409","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsCreate409ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsCreate429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying after the API-key request limit or billing-account brand onboarding limit is reached. Present only when the active limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}},"500":{"description":"500","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsCreate500ErrorResponse"}}}},"503":{"description":"503","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsCreate503ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying, when supplied. Temporary billing unavailability includes this header.","schema":{"type":"integer","minimum":1}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request POST \\\n  --url 'https://www.rainbrand.com/api/v1/brands' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\" \\\n  --header \"Content-Type: application/json\" \\\n  --data '{\n  \"sources\": [\n    {\n      \"kind\": \"website\",\n      \"url\": \"https://acme.com\"\n    }\n  ]\n}'"}]}},"/brands/{id}":{"get":{"operationId":"brands.get","summary":"Get a brand","description":"Read the brand's current profile and active Brand Skill version, or check progress while it is being prepared.","tags":["Brands"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Brand ID","example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},"example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},{"name":"wait","in":"query","schema":{"anyOf":[{"type":"boolean"},{"enum":["0","1","true","false"],"type":"string"}],"default":false,"description":"Hold the connection until the resource reaches a terminal status"},"allowEmptyValue":true,"allowReserved":true},{"name":"timeout","in":"query","schema":{"type":"integer","minimum":1,"maximum":295,"default":120,"description":"Max seconds to wait (default 120, max 295)"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"enum":["analyzing","ready","logo_required","failed"],"type":"string"},"failure":{"anyOf":[{"type":"object","properties":{"code":{"enum":["INVALID_URL","UNSUPPORTED_SOURCE","SCRAPE_FAILED","WEBSITE_SOURCE_REJECTED","INSTAGRAM_FETCH_FAILED","INSTAGRAM_PROFILE_NOT_FOUND","INSTAGRAM_PRIVATE_PROFILE","PDF_PROCESSING_FAILED","PDF_SOURCE_REJECTED","SOURCE_REJECTED","TARGET_RESTRICTED","BRAND_GUIDE_BUILD_FAILED","INTERNAL_ERROR","VISUAL_DNA_FAILED"],"type":"string"},"message":{"type":"string"}},"required":["code","message"]},{"type":"null"}]},"profile":{"anyOf":[{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"primaryLogo":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","format":"uri"},"mediaType":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["url","mediaType"]},{"type":"null"}]},"logoCatalog":{"anyOf":[{"type":"object","properties":{"primaryLogoImageId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"items":{"type":"array","items":{"type":"object","properties":{"imageId":{"type":"string","format":"uuid"},"form":{"enum":["icon","wordmark","lockup"],"type":"string"},"contrastsBestOn":{"anyOf":[{"type":"array","items":{"enum":["light","dark"],"type":"string"}},{"type":"null"}],"description":"Backgrounds that independently pass the visibility check for a transparent logo. An empty array means neither passes. Null means analysis was unavailable for a transparent asset or does not apply to an opaque asset. This heuristic does not establish Brand approval."},"asset":{"type":"object","properties":{"path":{"type":"string"},"mediaType":{"type":"string"},"byteLength":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0},"height":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0},"aspectRatio":{"type":"number","exclusiveMinimum":0},"hasTransparency":{"type":"boolean"},"url":{"type":"string","format":"uri","description":"Temporary signed URL for the logo bytes saved with this Brand Skill version. Read the version again to refresh an expired URL."}},"required":["path","mediaType","byteLength","sha256","width","height","aspectRatio","hasTransparency","url"]}},"required":["imageId","form","contrastsBestOn","asset"]}}},"required":["primaryLogoImageId","items"]},{"type":"null"}],"description":"Supported logos saved with this Brand Skill version. Null means no catalog was published; an empty items array explicitly records no supported logos. Asset URLs are temporary. Follow exact caller selection and relevant Brand Skill guidance before visibility hints, with the primary logo as a general fallback."},"favicon":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","format":"uri"},"mediaType":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["url","mediaType"]},{"type":"null"}]},"palette":{"type":"array","items":{"type":"object","properties":{"hex":{"type":"string","description":"Six-digit HEX color value, including the leading #."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The source-established color name, when available."},"group":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The source-defined palette group, or null when the source does not group this color."},"usage":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Source-supported guidance for using this color, when available."}},"required":["hex","name","group","usage"]},"description":"The Brand's complete ordered color palette."},"gradients":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"The gradient's name, as established by the source."},"angle":{"type":"number","minimum":0,"exclusiveMaximum":360,"description":"The linear gradient's angle in degrees, from 0 up to but not including 360."},"stops":{"type":"array","minItems":2,"items":{"type":"object","properties":{"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Six-digit HEX color value for this stop, including the leading #."},"position":{"type":"number","minimum":0,"maximum":100,"description":"The stop's position as a percentage from 0 to 100."}},"required":["hex","position"],"additionalProperties":false},"description":"At least two color stops in non-decreasing position order. Adjacent stops may share a position to create a hard transition."},"usage":{"type":"string","minLength":1,"maxLength":500,"description":"Source-supported guidance on when and how to use this gradient."}},"required":["name","angle","stops"],"additionalProperties":false},"description":"The Brand's complete ordered linear gradients."},"typography":{"anyOf":[{"type":"object","properties":{"heading":{"anyOf":[{"type":"object","properties":{"family":{"type":"string"}},"required":["family"]},{"type":"null"}],"description":"Deprecated. Font of the role named Heading, if any."},"body":{"anyOf":[{"type":"object","properties":{"family":{"type":"string"}},"required":["family"]},{"type":"null"}],"description":"Deprecated. Font of the role named Body, if any."},"roles":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The brand's name for this typography role, such as Eyebrow."},"family":{"type":"string"},"weight":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Font weight for this role, or null when unspecified."}},"required":["name","family","weight"]},"description":"The brand's typography roles, most prominent first."}},"required":["heading","body","roles"]},{"type":"null"}]}},"required":["name","primaryLogo","logoCatalog","favicon","palette","gradients","typography"]},{"type":"null"}],"description":"Current brand identity. Brands with an active Brand Skill read this from that immutable Skill; brands still being created may not have a profile yet."},"activeSkill":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["id","createdAt"]},{"type":"null"}],"description":"Current immutable Brand Skill, when one is active."},"workspaceId":{"anyOf":[{"type":"string"},{"type":"null"}]},"workspaceName":{"type":"string"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["id","status","failure","profile","activeSkill","workspaceId","workspaceName","createdAt"]}},"required":["data"]},"example":{"data":{"id":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","status":"ready","failure":null,"profile":{"name":"Acme Inc.","primaryLogo":null,"logoCatalog":null,"favicon":null,"palette":[{"hex":"#FFD600","name":"Yellow","group":"Atlas Pro","usage":"Atlas Pro product materials."}],"gradients":[],"typography":null},"activeSkill":{"id":"6590fb89-c177-45b3-85d4-74ab6b92dc2a","createdAt":"2026-10-24T09:00:00.000Z"},"workspaceId":null,"workspaceName":"Personal","createdAt":"2026-10-24T09:00:00.000Z"}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsGet401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsGet403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsGet404ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsGet429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/brands/e6220a5e-4a68-4d39-8bb9-5105e9a3a164' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]},"delete":{"operationId":"brands.delete","summary":"Delete a brand","description":"Remove the brand from your account and cancel its running tasks. This cannot be undone.","tags":["Brands"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Brand ID","example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},"example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"workspaceId":{"anyOf":[{"type":"string"},{"type":"null"}]},"workspaceName":{"type":"string"}},"required":["id","name","workspaceId","workspaceName"]}},"required":["data"]},"example":{"data":{"id":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","name":"Acme Inc.","workspaceId":null,"workspaceName":"Personal"}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsDelete401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsDelete403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsDelete404ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsDelete429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request DELETE \\\n  --url 'https://www.rainbrand.com/api/v1/brands/e6220a5e-4a68-4d39-8bb9-5105e9a3a164' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/brands/{id}/skill":{"get":{"operationId":"brands.inspect","summary":"Inspect a Brand Skill","description":"Retrieve the complete active Brand Skill as an immutable snapshot of the brand's profile, guidance, and assets. For a ZIP, [export the Brand Skill](/api-reference/brands/export-a-brand-skill).","tags":["Brands"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Brand ID","example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},"example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"schemaVersion":{"const":7,"description":"Response schema version"},"id":{"type":"string","format":"uuid","description":"Brand ID"},"skillId":{"type":"string","format":"uuid","description":"Canonical identity of this complete immutable Brand Skill; use it for caching and versioning"},"basedOnSkillId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Base Skill ID this Skill was derived from, when available"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date","description":"Time this immutable Skill was created"},"profile":{"anyOf":[{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"primaryLogo":{"anyOf":[{"type":"object","properties":{"assetId":{}},"additionalProperties":false},{"type":"null"}]},"colors":{"anyOf":[{"type":"array","minItems":1,"items":{"type":"object","properties":{"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Six-digit HEX color value, including the leading #."},"name":{"type":"string","minLength":1,"maxLength":80,"description":"The color's name, when established by the source."},"group":{"type":"string","minLength":1,"maxLength":80,"description":"The source's palette group label. Omit when the source does not group this color."},"usage":{"type":"string","minLength":1,"maxLength":500,"description":"Source-supported guidance on when and how to use this color."}},"required":["hex"],"additionalProperties":false}},{"type":"null"}]},"gradients":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"The gradient's name, as established by the source."},"angle":{"type":"number","minimum":0,"exclusiveMaximum":360,"description":"The linear gradient's angle in degrees, from 0 up to but not including 360."},"stops":{"type":"array","minItems":2,"items":{"type":"object","properties":{"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Six-digit HEX color value for this stop, including the leading #."},"position":{"type":"number","minimum":0,"maximum":100,"description":"The stop's position as a percentage from 0 to 100."}},"required":["hex","position"],"additionalProperties":false},"description":"At least two color stops in non-decreasing position order. Adjacent stops may share a position to create a hard transition."},"usage":{"type":"string","minLength":1,"maxLength":500,"description":"Source-supported guidance on when and how to use this gradient."}},"required":["name","angle","stops"],"additionalProperties":false},"description":"The Brand's evidenced linear gradients in source order, including exact angles, stops, and usage guidance."},"typography":{"type":"object","properties":{"heading":{"anyOf":[{"anyOf":[{"type":"object","properties":{"family":{"type":"string","minLength":1},"status":{"const":"unavailable"},"reason":{"type":"string","minLength":1},"files":{"type":"array","maxItems":0,"items":{"not":{}}}},"required":["family","status","reason","files"],"additionalProperties":false},{"type":"object","properties":{"source":{"const":"google"},"family":{"type":"string","minLength":1,"maxLength":120},"weight":{"type":"integer","minimum":1,"maximum":1000,"description":"The weight to use from this Google Fonts family, such as 400 for regular or 700 for bold."},"specimen":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"A temporary signed URL for downloading the font specimen PNG."},"mediaType":{"const":"image/png","description":"The media type of the font specimen."}},"required":["url","mediaType"],"description":"A font specimen: a PNG rendered from this Google Fonts family at the specified weight."}},"required":["source","family"],"additionalProperties":false},{"type":"object","properties":{"source":{"const":"custom"},"family":{"type":"string","minLength":1,"maxLength":120},"files":{"type":"array","minItems":1,"items":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Temporary signed font URL; retrieve the Brand Skill again if the URL expires"},"mediaType":{"type":"string"},"byteLength":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"format":{"enum":["ttf","otf","woff","woff2"],"type":"string"},"weight":{"type":"integer","minimum":1,"maximum":1000},"variable":{"type":"boolean"},"primary":{"type":"boolean"},"specimen":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"A temporary signed URL for downloading the font specimen PNG."},"mediaType":{"const":"image/png","description":"The media type of the font specimen."}},"required":["url","mediaType"],"description":"A font specimen: a PNG rendered from this exact font file at the specified weight."}},"required":["url","mediaType","byteLength","sha256","format","weight","variable","primary"]}}},"required":["source","family","files"],"additionalProperties":false}]},{"type":"null"}],"description":"Deprecated. Font of the role named Heading, if any."},"body":{"anyOf":[{"anyOf":[{"type":"object","properties":{"family":{"type":"string","minLength":1},"status":{"const":"unavailable"},"reason":{"type":"string","minLength":1},"files":{"type":"array","maxItems":0,"items":{"not":{}}}},"required":["family","status","reason","files"],"additionalProperties":false},{"type":"object","properties":{"source":{"const":"google"},"family":{"type":"string","minLength":1,"maxLength":120},"weight":{"type":"integer","minimum":1,"maximum":1000,"description":"The weight to use from this Google Fonts family, such as 400 for regular or 700 for bold."},"specimen":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"A temporary signed URL for downloading the font specimen PNG."},"mediaType":{"const":"image/png","description":"The media type of the font specimen."}},"required":["url","mediaType"],"description":"A font specimen: a PNG rendered from this Google Fonts family at the specified weight."}},"required":["source","family"],"additionalProperties":false},{"type":"object","properties":{"source":{"const":"custom"},"family":{"type":"string","minLength":1,"maxLength":120},"files":{"type":"array","minItems":1,"items":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Temporary signed font URL; retrieve the Brand Skill again if the URL expires"},"mediaType":{"type":"string"},"byteLength":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"format":{"enum":["ttf","otf","woff","woff2"],"type":"string"},"weight":{"type":"integer","minimum":1,"maximum":1000},"variable":{"type":"boolean"},"primary":{"type":"boolean"},"specimen":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"A temporary signed URL for downloading the font specimen PNG."},"mediaType":{"const":"image/png","description":"The media type of the font specimen."}},"required":["url","mediaType"],"description":"A font specimen: a PNG rendered from this exact font file at the specified weight."}},"required":["url","mediaType","byteLength","sha256","format","weight","variable","primary"]}}},"required":["source","family","files"],"additionalProperties":false}]},{"type":"null"}],"description":"Deprecated. Font of the role named Body, if any."},"roles":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"The brand's name for this typography role, such as Eyebrow."},"weight":{"anyOf":[{"type":"integer","minimum":1,"maximum":1000},{"type":"null"}],"description":"Font weight for this role, or null when unspecified."},"font":{"anyOf":[{"type":"object","properties":{"family":{"type":"string","minLength":1},"status":{"const":"unavailable"},"reason":{"type":"string","minLength":1},"files":{"type":"array","maxItems":0,"items":{"not":{}}}},"required":["family","status","reason","files"],"additionalProperties":false},{"type":"object","properties":{"source":{"const":"google"},"family":{"type":"string","minLength":1,"maxLength":120},"weight":{"type":"integer","minimum":1,"maximum":1000,"description":"The weight to use from this Google Fonts family, such as 400 for regular or 700 for bold."},"specimen":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"A temporary signed URL for downloading the font specimen PNG."},"mediaType":{"const":"image/png","description":"The media type of the font specimen."}},"required":["url","mediaType"],"description":"A font specimen: a PNG rendered from this Google Fonts family at the specified weight."}},"required":["source","family"],"additionalProperties":false},{"type":"object","properties":{"source":{"const":"custom"},"family":{"type":"string","minLength":1,"maxLength":120},"files":{"type":"array","minItems":1,"items":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Temporary signed font URL; retrieve the Brand Skill again if the URL expires"},"mediaType":{"type":"string"},"byteLength":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"format":{"enum":["ttf","otf","woff","woff2"],"type":"string"},"weight":{"type":"integer","minimum":1,"maximum":1000},"variable":{"type":"boolean"},"primary":{"type":"boolean"},"specimen":{"type":"object","properties":{"url":{},"mediaType":{}},"description":"A font specimen: a PNG rendered from this exact font file at the specified weight."}},"required":["url","mediaType","byteLength","sha256","format","weight","variable","primary"]}}},"required":["source","family","files"],"additionalProperties":false}]}},"required":["name","weight","font"]},"description":"The brand's typography roles, most prominent first."}},"required":["heading","body","roles"]},"logoCatalog":{"anyOf":[{"type":"object","properties":{"primaryLogoImageId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"items":{"type":"array","items":{"type":"object","properties":{"imageId":{"type":"string","format":"uuid"},"form":{"enum":["icon","wordmark","lockup"],"type":"string"},"contrastsBestOn":{"anyOf":[{"type":"array","items":{"enum":["light","dark"],"type":"string"}},{"type":"null"}],"description":"Backgrounds that independently pass the visibility check for a transparent logo. An empty array means neither passes. Null means analysis was unavailable for a transparent asset or does not apply to an opaque asset. This heuristic does not establish Brand approval."},"asset":{"type":"object","properties":{"path":{"type":"string"},"mediaType":{"type":"string"},"byteLength":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0},"sha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"width":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0},"height":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0},"aspectRatio":{"type":"number","exclusiveMinimum":0},"hasTransparency":{"type":"boolean"},"url":{"type":"string","format":"uri","description":"Temporary signed URL for the logo bytes saved with this Brand Skill version. Read the version again to refresh an expired URL."}},"required":["path","mediaType","byteLength","sha256","width","height","aspectRatio","hasTransparency","url"]}},"required":["imageId","form","contrastsBestOn","asset"]}}},"required":["primaryLogoImageId","items"]},{"type":"null"}],"description":"Supported logos saved with this Brand Skill version. Null means no catalog was published; an empty items array explicitly records no supported logos. Asset URLs are temporary. Follow exact caller selection and relevant Brand Skill guidance before visibility hints, with the primary logo as a general fallback."}},"required":["name","primaryLogo","gradients","typography","logoCatalog"],"additionalProperties":false},{"type":"null"}],"description":"Structured brand profile, including temporary signed URLs for custom font files"},"files":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"path":{"type":"string","description":"Skill-relative Markdown file path"},"mediaType":{"const":"text/markdown"},"kind":{"const":"text"},"byteLength":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The size of the Markdown file in bytes."},"content":{"type":"string","description":"Complete Markdown file contents"},"libraryAssetIds":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Brand Library asset IDs referenced by this file"}},"required":["path","mediaType","kind","byteLength","content","libraryAssetIds"],"additionalProperties":false},{"type":"object","properties":{"path":{"type":"string","description":"Skill-relative image, font, or other file path"},"mediaType":{"type":"string"},"kind":{"enum":["image","font","other"],"type":"string"},"byteLength":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"The size of the file in bytes. Omitted for font specimens."},"description":{"type":"string","description":"What an image or font specimen shows, when recorded."},"url":{"type":"string","format":"uri","description":"Temporary signed download URL; retrieve the Skill again if the URL expires"}},"required":["path","mediaType","kind","url"],"additionalProperties":false}]},"description":"Every file in this Skill: Markdown files in order with their contents, then images, fonts, and font specimens with download URLs"}},"required":["schemaVersion","id","skillId","basedOnSkillId","createdAt","profile","files"]}},"required":["data"]},"example":{"data":{"schemaVersion":7,"id":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","skillId":"6590fb89-c177-45b3-85d4-74ab6b92dc2a","basedOnSkillId":null,"createdAt":"2026-10-24T09:00:00.000Z","profile":{"name":"Acme Inc.","primaryLogo":null,"gradients":[],"typography":{"heading":null,"body":null,"roles":[]},"logoCatalog":null},"files":[{"path":"references/colors.md","mediaType":"text/markdown","kind":"text","content":"# Product colors\n\nAtlas Pro uses yellow #FFD600.\n","byteLength":49,"libraryAssetIds":[]}]}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsInspect401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsInspect403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsInspect404ErrorResponse"}}}},"409":{"description":"409","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsInspect409ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsInspect429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}},"500":{"description":"500","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsInspect500ErrorResponse"}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/brands/e6220a5e-4a68-4d39-8bb9-5105e9a3a164/skill' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/brands/{id}/exports":{"post":{"operationId":"brands.createExport","summary":"Export a Brand Skill","description":"Prepare a downloadable ZIP of the active Brand Skill. Retrieve the download with [Get a Brand Skill export](/api-reference/brands/get-a-brand-skill-export).","tags":["Brands"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Brand ID","example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},"example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"}],"responses":{"202":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"skillId":{"type":"string","format":"uuid"},"status":{"enum":["preparing","ready"],"type":"string"}},"required":["id","skillId","status"]}},"required":["data"]},"example":{"data":{"id":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","skillId":"6590fb89-c177-45b3-85d4-74ab6b92dc2a","status":"preparing"}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsCreateExport401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsCreateExport403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsCreateExport404ErrorResponse"}}}},"409":{"description":"409","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsCreateExport409ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsCreateExport429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}},"500":{"description":"500","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsCreateExport500ErrorResponse"}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request POST \\\n  --url 'https://www.rainbrand.com/api/v1/brands/e6220a5e-4a68-4d39-8bb9-5105e9a3a164/exports' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/brands/{id}/exports/{skillId}":{"get":{"operationId":"brands.getExport","summary":"Get a Brand Skill export","description":"Check an export and download its ZIP when ready. The export stays tied to the Brand Skill selected when it was requested.","tags":["Brands"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Brand ID","example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},"example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},{"name":"skillId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Skill ID returned when export was requested","example":"6590fb89-c177-45b3-85d4-74ab6b92dc2a"},"example":"6590fb89-c177-45b3-85d4-74ab6b92dc2a"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"skillId":{"type":"string","format":"uuid"},"status":{"const":"preparing"}},"required":["id","skillId","status"]},{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"skillId":{"type":"string","format":"uuid"},"status":{"const":"ready"},"download":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"filename":{"type":"string"},"byteLength":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["url","filename","byteLength"]}},"required":["id","skillId","status","download"]},{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"skillId":{"type":"string","format":"uuid"},"status":{"const":"failed"},"failure":{"type":"object","properties":{"code":{"const":"export_failed"},"message":{"type":"string"},"retryable":{"type":"boolean"}},"required":["code","message","retryable"],"title":"export_failed"}},"required":["id","skillId","status","failure"]}]}},"required":["data"]},"example":{"data":{"id":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","skillId":"6590fb89-c177-45b3-85d4-74ab6b92dc2a","status":"ready","download":{"url":"https://assets.acme.com/rainbrand/acme-inc-brand-skill.zip","filename":"acme-inc-brand-skill.zip","byteLength":245760}}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsGetExport401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsGetExport403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsGetExport404ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsGetExport429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}},"500":{"description":"500","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsGetExport500ErrorResponse"}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/brands/e6220a5e-4a68-4d39-8bb9-5105e9a3a164/exports/6590fb89-c177-45b3-85d4-74ab6b92dc2a' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/brands/{id}/edits":{"post":{"operationId":"brands.edit","summary":"Create a Brand Edit","description":"Prepare proposed changes without changing the active brand. Inspect progress and the proposal with [Get a Brand Edit](/api-reference/brands/get-a-brand-edit).","tags":["Brands"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Brand ID","example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},"example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},{"name":"idempotency-key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255,"description":"A unique key for this operation. Reuse it when retrying the same request.","example":"acme-atlas-pro-color-update"},"example":"acme-atlas-pro-color-update"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"baseSkillId":{"type":"string","format":"uuid","description":"The active Brand Skill version on which this edit is based."},"replacesEditId":{"type":"string","format":"uuid","description":"A candidate awaiting approval to replace atomically once the new candidate is ready. The previous candidate remains available while preparation is incomplete or unsuccessful."},"change":{"anyOf":[{"type":"object","properties":{"kind":{"const":"instruction"},"instruction":{"type":"string","minLength":1,"maxLength":4000}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"profile"},"changes":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"primaryLogo":{"type":"object","properties":{"imageId":{"type":"string","format":"uuid"}},"required":["imageId"],"additionalProperties":false},"colors":{"type":"array","minItems":1,"items":{"type":"object","properties":{"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"name":{"anyOf":[{"type":"string","minLength":1,"maxLength":80},{"type":"null"}],"description":"The color's name. Omit to keep the name for a matching HEX value, or send null to remove it."},"group":{"anyOf":[{"type":"string","minLength":1,"maxLength":80},{"type":"null"}],"description":"The palette group label. Omit to keep the group for a matching HEX value, or send null to remove it."},"usage":{"anyOf":[{"type":"string","minLength":1,"maxLength":500},{"type":"null"}],"description":"Guidance on when and how to use this color. Omit to keep the guidance for a matching HEX value, or send null to remove it."}},"required":["hex"],"additionalProperties":false},"description":"The complete desired palette in order. For a matching HEX value, omitted name, group, and usage fields keep their current values; null removes that metadata field. Colors absent from the list are removed."},"gradients":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"The gradient's name, as established by the source."},"angle":{"type":"number","minimum":0,"exclusiveMaximum":360,"description":"The linear gradient's angle in degrees, from 0 up to but not including 360."},"stops":{"type":"array","minItems":2,"items":{"type":"object","properties":{"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Six-digit HEX color value for this stop, including the leading #."},"position":{"type":"number","minimum":0,"maximum":100,"description":"The stop's position as a percentage from 0 to 100."}},"required":["hex","position"],"additionalProperties":false},"description":"At least two color stops in non-decreasing position order. Adjacent stops may share a position to create a hard transition."},"usage":{"type":"string","minLength":1,"maxLength":500,"description":"Source-supported guidance on when and how to use this gradient."}},"required":["name","angle","stops"],"additionalProperties":false},"description":"The complete desired list of linear gradients. Omit to keep the current gradients, or send an empty list to remove them all."},"typography":{"anyOf":[{"type":"object","properties":{"roles":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"Existing role to change, or a new role to add. Names are unique regardless of case."},"newName":{"type":"string","minLength":1,"maxLength":80,"description":"Rename the role."},"font":{"anyOf":[{"type":"object","properties":{"source":{},"family":{}},"additionalProperties":false},{"type":"object","properties":{"source":{},"family":{},"fontAssetId":{}},"additionalProperties":false}],"description":"Required for a new role. Omit to keep the role's font."},"weight":{"anyOf":[{"type":"integer","minimum":1,"maximum":1000},{"type":"null"}],"description":"Font weight for this role. Omit to keep it; null clears it."}},"required":["name"],"additionalProperties":false},"description":"Roles to add or change, by name. New roles are appended."},"removeRoles":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"description":"Roles to remove, by name."}},"additionalProperties":false},{"type":"object","properties":{"heading":{"anyOf":[{"anyOf":[{"type":"object","properties":{"source":{"const":"google"},"family":{"type":"string","minLength":1,"maxLength":120}},"required":["source","family"],"additionalProperties":false},{"type":"object","properties":{"source":{"const":"custom"},"family":{"type":"string","minLength":1,"maxLength":120,"description":"Font family, 1–120 characters, with no line breaks or NUL characters. For a custom font, use the exact family returned by font upload; matching is case-sensitive after trimming."},"fontAssetId":{"type":"string","format":"uuid"}},"required":["source","family","fontAssetId"],"additionalProperties":false}]},{"type":"null"}],"description":"Font for the role named Heading; null removes that role."},"body":{"anyOf":[{"anyOf":[{"type":"object","properties":{"source":{"const":"google"},"family":{"type":"string","minLength":1,"maxLength":120}},"required":["source","family"],"additionalProperties":false},{"type":"object","properties":{"source":{"const":"custom"},"family":{"type":"string","minLength":1,"maxLength":120,"description":"Font family, 1–120 characters, with no line breaks or NUL characters. For a custom font, use the exact family returned by font upload; matching is case-sensitive after trimming."},"fontAssetId":{"type":"string","format":"uuid"}},"required":["source","family","fontAssetId"],"additionalProperties":false}]},{"type":"null"}],"description":"Font for the role named Body; null removes that role."}},"additionalProperties":false,"description":"Deprecated. Heading and body fonts, applied to the roles named Heading and Body. A font changes or adds that role."}]}},"additionalProperties":false,"description":"Exact structured Brand Profile values to include in the candidate; related Markdown may also change."},"instruction":{"type":"string","minLength":1,"maxLength":4000,"description":"Additional guidance for Brand content related to the profile changes."}},"required":["kind","changes"],"additionalProperties":false}],"description":"The requested change: an instruction for a semantic edit, or exact profile values with an optional related instruction."},"evidence":{"type":"object","properties":{"sources":{"type":"array","maxItems":30,"items":{"anyOf":[{"anyOf":[{"type":"object","properties":{"kind":{"enum":["website"],"type":"string","description":"Source type for a public website"},"url":{"type":"string","format":"uri","description":"Public website URL to turn into a Brand Skill"}},"required":["kind","url"],"title":"Website"},{"type":"object","properties":{"kind":{"enum":["instagram"],"type":"string","description":"Source type for an Instagram account"},"username":{"type":"string","minLength":1,"maxLength":31,"description":"Instagram username to use as brand evidence"}},"required":["kind","username"],"title":"Instagram"},{"type":"object","properties":{"kind":{"enum":["file"],"type":"string","description":"Source type for an uploaded file, including a PDF"},"url":{"type":"string","format":"uri","description":"Temporary public HTTPS URL for a file up to 100 MiB, including a PDF"},"filename":{"type":"string","minLength":1,"maxLength":240,"description":"Original filename used for source labels. It defaults from the URL when possible."}},"required":["kind","url"],"additionalProperties":false,"title":"File"}]},{"type":"object","properties":{"kind":{"const":"file","description":"Source type for a completed temporary upload"},"uploadId":{"type":"string","format":"uuid","description":"Completed temporary upload from POST /uploads"}},"required":["kind","uploadId"],"additionalProperties":false,"title":"Temporary upload"}]},"description":"Evidence sources for this request. Across the original request and all follow-up answers, a Brand Edit accepts at most 30 submitted sources and 256 MiB of stored files, with up to 100 MiB per file. Resubmitting the same URL consumes another source slot. Each submission may include at most one website and one Instagram account.","default":[]},"imageIds":{"type":"array","maxItems":10,"items":{"type":"string","format":"uuid"},"default":[],"description":"Brand Library image IDs to use as evidence. At most 10 submitted IDs across the original request and all follow-up answers; submitting an image again consumes another slot."}},"additionalProperties":false,"default":{"sources":[],"imageIds":[]},"description":"Optional sources and Brand Library images that support the requested change."}},"required":["baseSkillId","change"],"additionalProperties":false,"examples":[{"baseSkillId":"6590fb89-c177-45b3-85d4-74ab6b92dc2a","change":{"kind":"instruction","instruction":"Update Acme Inc. to use burgundy #6D1A36 for Atlas Pro materials. Keep the rest of the brand unchanged."}}]}}}},"responses":{"202":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"brandId":{"type":"string","format":"uuid"},"status":{"enum":["preparing","input_required","awaiting_approval","applied","discarded","stale","no_changes","failed"],"type":"string"},"baseSkillId":{"type":"string","format":"uuid"},"target":{"anyOf":[{"type":"object","properties":{"skillId":{"type":"string","format":"uuid"}},"required":["skillId"],"additionalProperties":false},{"type":"null"}]},"changeSet":{"anyOf":[{"type":"object","properties":{"schemaVersion":{"const":2},"baseSkillId":{"type":"string","format":"uuid","description":"Canonical identity of the complete base Brand revision."},"targetSkillId":{"type":"string","format":"uuid","description":"Canonical identity reserved for the complete candidate Brand revision."},"profileChanges":{"type":"array","items":{"type":"object","properties":{"kind":{"const":"field"},"path":{"type":"string","minLength":1},"operation":{"enum":["add","remove","replace"],"type":"string"},"previous":{"anyOf":[{"type":"string"},{"type":"null"}]},"next":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["kind","path","operation","previous","next"],"additionalProperties":false}},"markdownChanges":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","minLength":1},"operation":{"enum":["add","remove","modify"],"type":"string"},"additions":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"deletions":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"hunks":{"type":"array","items":{"type":"object","properties":{"oldStart":{"type":"integer","minimum":0,"maximum":9007199254740991},"oldLines":{"type":"integer","minimum":0,"maximum":9007199254740991},"newStart":{"type":"integer","minimum":0,"maximum":9007199254740991},"newLines":{"type":"integer","minimum":0,"maximum":9007199254740991},"lines":{"type":"array","items":{"type":"object","properties":{"kind":{"enum":["context","add","remove"],"type":"string"},"text":{"type":"string"},"noNewlineAtEndOfFile":{"const":true,"description":"This line has no terminating newline: in the original file for remove, the candidate for add, or both for context. This annotation does not count as a content line. Older receipts may omit this information."}},"required":["kind","text"],"additionalProperties":false}}},"required":["oldStart","oldLines","newStart","newLines","lines"],"additionalProperties":false}},"truncated":{"type":"boolean"}},"required":["path","operation","additions","deletions","hunks","truncated"],"additionalProperties":false}},"assetChanges":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"const":"asset"},"role":{"const":"primary_logo"},"operation":{"enum":["add","remove","replace"],"type":"string"},"previousAssetId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"nextAssetId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]}},"required":["kind","role","operation","previousAssetId","nextAssetId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"asset"},"role":{"const":"font"},"operation":{"enum":["add","remove"],"type":"string"},"path":{"type":"string","minLength":1},"family":{"type":"string","minLength":1},"weight":{"type":"integer","minimum":1,"maximum":1000},"format":{"enum":["woff","woff2","ttf","otf"],"type":"string"}},"required":["kind","role","operation","path","family","weight","format"],"additionalProperties":false}]}}},"required":["schemaVersion","baseSkillId","targetSkillId","profileChanges","markdownChanges","assetChanges"],"additionalProperties":false},{"type":"null"}]},"targetProfile":{"anyOf":[{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"colors":{"anyOf":[{"type":"array","minItems":1,"items":{"type":"object","properties":{"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Six-digit HEX color value, including the leading #."},"name":{"type":"string","minLength":1,"maxLength":80,"description":"The color's name, when established by the source."},"group":{"type":"string","minLength":1,"maxLength":80,"description":"The source's palette group label. Omit when the source does not group this color."},"usage":{"type":"string","minLength":1,"maxLength":500,"description":"Source-supported guidance on when and how to use this color."}},"required":["hex"],"additionalProperties":false}},{"type":"null"}]},"gradients":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"The gradient's name, as established by the source."},"angle":{"type":"number","minimum":0,"exclusiveMaximum":360,"description":"The linear gradient's angle in degrees, from 0 up to but not including 360."},"stops":{"type":"array","minItems":2,"items":{"type":"object","properties":{"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Six-digit HEX color value for this stop, including the leading #."},"position":{"type":"number","minimum":0,"maximum":100,"description":"The stop's position as a percentage from 0 to 100."}},"required":["hex","position"],"additionalProperties":false},"description":"At least two color stops in non-decreasing position order. Adjacent stops may share a position to create a hard transition."},"usage":{"type":"string","minLength":1,"maxLength":500,"description":"Source-supported guidance on when and how to use this gradient."}},"required":["name","angle","stops"],"additionalProperties":false},"description":"The Brand's evidenced linear gradients in source order, including exact angles, stops, and usage guidance."},"primaryLogo":{"anyOf":[{"type":"object","properties":{"imageId":{"type":"string","format":"uuid"}},"required":["imageId"],"additionalProperties":false},{"type":"null"}]},"typography":{"type":"object","properties":{"roles":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1},"weight":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"font":{"anyOf":[{"type":"object","properties":{"source":{"enum":["google","custom"],"type":"string"},"family":{"type":"string","minLength":1,"maxLength":120}},"required":["source","family"],"additionalProperties":false},{"type":"object","properties":{"family":{"type":"string","minLength":1},"status":{"const":"unavailable"},"reason":{"type":"string","minLength":1}},"required":["family","status","reason"],"additionalProperties":false}]}},"required":["name","weight","font"],"additionalProperties":false}},"heading":{"anyOf":[{"anyOf":[{"type":"object","properties":{"source":{"enum":["google","custom"],"type":"string"},"family":{"type":"string","minLength":1,"maxLength":120}},"required":["source","family"],"additionalProperties":false},{"type":"object","properties":{"family":{"type":"string","minLength":1},"status":{"const":"unavailable"},"reason":{"type":"string","minLength":1}},"required":["family","status","reason"],"additionalProperties":false}]},{"type":"null"}],"description":"Deprecated. Font of the role named Heading, if any."},"body":{"anyOf":[{"anyOf":[{"type":"object","properties":{"source":{"enum":["google","custom"],"type":"string"},"family":{"type":"string","minLength":1,"maxLength":120}},"required":["source","family"],"additionalProperties":false},{"type":"object","properties":{"family":{"type":"string","minLength":1},"status":{"const":"unavailable"},"reason":{"type":"string","minLength":1}},"required":["family","status","reason"],"additionalProperties":false}]},{"type":"null"}],"description":"Deprecated. Font of the role named Body, if any."}},"required":["roles","heading","body"],"additionalProperties":false}},"required":["name","primaryLogo"],"additionalProperties":false},{"type":"null"}]},"interaction":{"anyOf":[{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"subject":{"type":"string","minLength":1,"maxLength":200},"prompt":{"type":"string","minLength":1,"maxLength":1000},"kind":{"const":"clarification"},"accepts":{"type":"object","properties":{"text":{"type":"object","properties":{"required":{"type":"boolean","default":false},"minLength":{"type":"integer","minimum":0,"maximum":10000,"default":1},"maxLength":{"type":"integer","minimum":-9007199254740991,"maximum":10000,"exclusiveMinimum":0,"default":10000}},"additionalProperties":false},"images":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["max"],"additionalProperties":false},"sources":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["max"],"additionalProperties":false}},"additionalProperties":false}},"required":["id","subject","prompt","kind","accepts"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"subject":{"type":"string","minLength":1,"maxLength":200},"prompt":{"type":"string","minLength":1,"maxLength":1000},"kind":{"const":"choice"},"options":{"type":"array","minItems":2,"maxItems":6,"items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":80},"label":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":500},"imageIds":{"type":"array","maxItems":10,"items":{"type":"string","format":"uuid"}}},"required":["id","label"],"additionalProperties":false}},"alternate":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200},"accepts":{"type":"object","properties":{"text":{"type":"object","properties":{"required":{"type":"boolean","default":false},"minLength":{"type":"integer","minimum":0,"maximum":10000,"default":1},"maxLength":{"type":"integer","minimum":-9007199254740991,"maximum":10000,"exclusiveMinimum":0,"default":10000}},"additionalProperties":false},"images":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["max"],"additionalProperties":false},"sources":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["max"],"additionalProperties":false}},"additionalProperties":false}},"required":["accepts"],"additionalProperties":false}},"required":["id","subject","prompt","kind","options"],"additionalProperties":false}]},{"type":"null"}]},"replacement":{"anyOf":[{"type":"object","properties":{"replacesEditId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"replacedByEditId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"discardReason":{"anyOf":[{"enum":["explicit","replaced"],"type":"string"},{"type":"null"}]}},"required":["replacesEditId","replacedByEditId","discardReason"],"additionalProperties":false},{"type":"null"}]},"changeSummary":{"anyOf":[{"type":"string"},{"type":"null"}]},"statusMessage":{"type":"string"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","minLength":1},"message":{"type":"string","minLength":1},"retryable":{"type":"boolean"}},"required":["code","message","retryable"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"updatedAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["id","brandId","status","baseSkillId","target","changeSet","targetProfile","interaction","replacement","changeSummary","statusMessage","error","createdAt","updatedAt"],"additionalProperties":false}},"required":["data"]},"example":{"data":{"id":"22f07ed4-665a-46de-9843-b271e2e3d247","brandId":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","baseSkillId":"6590fb89-c177-45b3-85d4-74ab6b92dc2a","target":null,"changeSet":null,"targetProfile":null,"interaction":null,"replacement":null,"changeSummary":null,"statusMessage":"Preparing Acme Inc.'s brand update.","error":null,"createdAt":"2026-10-24T09:00:00.000Z","updatedAt":"2026-10-24T09:00:00.000Z","status":"preparing"}}}},"headers":{"Location":{"description":"Relative API path for reading this Brand Edit: `/api/v1/brands/{brandId}/edits/{editId}`.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before reading the edit again. Present only when the returned status is `preparing`; currently 2.","schema":{"type":"integer","minimum":0}}}},"400":{"description":"400","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsEdit400ErrorResponse"}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsEdit401ErrorResponse"}}}},"402":{"description":"402","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsEdit402ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsEdit403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsEdit404ErrorResponse"}}}},"409":{"description":"409","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsEdit409ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsEdit429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}},"500":{"description":"500","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsEdit500ErrorResponse"}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request POST \\\n  --url 'https://www.rainbrand.com/api/v1/brands/e6220a5e-4a68-4d39-8bb9-5105e9a3a164/edits' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\" \\\n  --header 'idempotency-key: acme-atlas-pro-color-update' \\\n  --header \"Content-Type: application/json\" \\\n  --data '{\n  \"baseSkillId\": \"6590fb89-c177-45b3-85d4-74ab6b92dc2a\",\n  \"change\": {\n    \"kind\": \"instruction\",\n    \"instruction\": \"Update Acme Inc. to use burgundy #6D1A36 for Atlas Pro materials. Keep the rest of the brand unchanged.\"\n  }\n}'"}]}},"/brands/{id}/font-assets":{"post":{"operationId":"brands.uploadFontAsset","summary":"Upload a brand font","description":"Upload a custom font for use in a [Brand Edit](/api-reference/brands/create-a-brand-edit); uploading it alone does not change the brand.","tags":["Brands"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Brand ID","example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},"example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"uploadId":{"type":"string","format":"uuid","description":"Completed temporary upload from POST /uploads"}},"required":["uploadId"],"additionalProperties":false},"example":{"uploadId":"5bcd39ea-2fc6-4751-9953-589c707b3d5c"}},"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","contentMediaType":"*/*","description":"TTF, OTF, WOFF, or WOFF2 font file, max 5MB"}},"required":["file"],"additionalProperties":false}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"family":{"type":"string"},"format":{"enum":["ttf","otf","woff","woff2"],"type":"string"},"weight":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"variable":{"type":"boolean"},"expiresAt":{"type":"string","format":"date-time","x-native-type":"date","description":"Expiry timestamp for this single-use font asset. The consuming Brand Edit must finish preparing before this time; starting before expiry is not sufficient."}},"required":["id","family","format","weight","variable","expiresAt"]}},"required":["data"]},"example":{"data":{"id":"7298cb25-73c7-4e7a-890d-397d4c781e34","family":"Acme Display","format":"woff2","weight":700,"variable":false,"expiresAt":"2026-10-25T09:00:00.000Z"}}}}},"400":{"description":"400","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsUploadFontAsset400ErrorResponse"}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsUploadFontAsset401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsUploadFontAsset403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsUploadFontAsset404ErrorResponse"}}}},"409":{"description":"409","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsUploadFontAsset409ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsUploadFontAsset429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}},"500":{"description":"500","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsUploadFontAsset500ErrorResponse"}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request POST \\\n  --url 'https://www.rainbrand.com/api/v1/brands/e6220a5e-4a68-4d39-8bb9-5105e9a3a164/font-assets' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\" \\\n  --header \"Content-Type: application/json\" \\\n  --data '{\n  \"uploadId\": \"5bcd39ea-2fc6-4751-9953-589c707b3d5c\"\n}'"}]}},"/brands/{id}/edits/{editId}":{"get":{"operationId":"brands.getEdit","summary":"Get a Brand Edit","description":"Check a Brand Edit's progress, requested input, and proposed changes. Inspect the full text with [Get a changed brand file](/api-reference/brands/get-a-changed-brand-file).","tags":["Brands"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Brand ID","example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},"example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},{"name":"editId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Brand Edit ID","example":"22f07ed4-665a-46de-9843-b271e2e3d247"},"example":"22f07ed4-665a-46de-9843-b271e2e3d247"},{"name":"wait","in":"query","schema":{"anyOf":[{"type":"boolean"},{"enum":["0","1","true","false"],"type":"string"}],"default":false,"description":"Wait while the edit is preparing, until its status changes or the timeout expires"},"allowEmptyValue":true,"allowReserved":true},{"name":"timeout","in":"query","schema":{"type":"integer","minimum":1,"maximum":295,"default":120,"description":"Max seconds to wait (default 120, max 295)"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"brandId":{"type":"string","format":"uuid"},"status":{"enum":["preparing","input_required","awaiting_approval","applied","discarded","stale","no_changes","failed"],"type":"string"},"baseSkillId":{"type":"string","format":"uuid"},"target":{"anyOf":[{"type":"object","properties":{"skillId":{"type":"string","format":"uuid"}},"required":["skillId"],"additionalProperties":false},{"type":"null"}]},"changeSet":{"anyOf":[{"type":"object","properties":{"schemaVersion":{"const":2},"baseSkillId":{"type":"string","format":"uuid","description":"Canonical identity of the complete base Brand revision."},"targetSkillId":{"type":"string","format":"uuid","description":"Canonical identity reserved for the complete candidate Brand revision."},"profileChanges":{"type":"array","items":{"type":"object","properties":{"kind":{"const":"field"},"path":{"type":"string","minLength":1},"operation":{"enum":["add","remove","replace"],"type":"string"},"previous":{"anyOf":[{"type":"string"},{"type":"null"}]},"next":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["kind","path","operation","previous","next"],"additionalProperties":false}},"markdownChanges":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","minLength":1},"operation":{"enum":["add","remove","modify"],"type":"string"},"additions":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"deletions":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"hunks":{"type":"array","items":{"type":"object","properties":{"oldStart":{"type":"integer","minimum":0,"maximum":9007199254740991},"oldLines":{"type":"integer","minimum":0,"maximum":9007199254740991},"newStart":{"type":"integer","minimum":0,"maximum":9007199254740991},"newLines":{"type":"integer","minimum":0,"maximum":9007199254740991},"lines":{"type":"array","items":{"type":"object","properties":{"kind":{"enum":["context","add","remove"],"type":"string"},"text":{"type":"string"},"noNewlineAtEndOfFile":{"const":true,"description":"This line has no terminating newline: in the original file for remove, the candidate for add, or both for context. This annotation does not count as a content line. Older receipts may omit this information."}},"required":["kind","text"],"additionalProperties":false}}},"required":["oldStart","oldLines","newStart","newLines","lines"],"additionalProperties":false}},"truncated":{"type":"boolean"}},"required":["path","operation","additions","deletions","hunks","truncated"],"additionalProperties":false}},"assetChanges":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"const":"asset"},"role":{"const":"primary_logo"},"operation":{"enum":["add","remove","replace"],"type":"string"},"previousAssetId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"nextAssetId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]}},"required":["kind","role","operation","previousAssetId","nextAssetId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"asset"},"role":{"const":"font"},"operation":{"enum":["add","remove"],"type":"string"},"path":{"type":"string","minLength":1},"family":{"type":"string","minLength":1},"weight":{"type":"integer","minimum":1,"maximum":1000},"format":{"enum":["woff","woff2","ttf","otf"],"type":"string"}},"required":["kind","role","operation","path","family","weight","format"],"additionalProperties":false}]}}},"required":["schemaVersion","baseSkillId","targetSkillId","profileChanges","markdownChanges","assetChanges"],"additionalProperties":false},{"type":"null"}]},"targetProfile":{"anyOf":[{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"colors":{"anyOf":[{"type":"array","minItems":1,"items":{"type":"object","properties":{"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Six-digit HEX color value, including the leading #."},"name":{"type":"string","minLength":1,"maxLength":80,"description":"The color's name, when established by the source."},"group":{"type":"string","minLength":1,"maxLength":80,"description":"The source's palette group label. Omit when the source does not group this color."},"usage":{"type":"string","minLength":1,"maxLength":500,"description":"Source-supported guidance on when and how to use this color."}},"required":["hex"],"additionalProperties":false}},{"type":"null"}]},"gradients":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"The gradient's name, as established by the source."},"angle":{"type":"number","minimum":0,"exclusiveMaximum":360,"description":"The linear gradient's angle in degrees, from 0 up to but not including 360."},"stops":{"type":"array","minItems":2,"items":{"type":"object","properties":{"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Six-digit HEX color value for this stop, including the leading #."},"position":{"type":"number","minimum":0,"maximum":100,"description":"The stop's position as a percentage from 0 to 100."}},"required":["hex","position"],"additionalProperties":false},"description":"At least two color stops in non-decreasing position order. Adjacent stops may share a position to create a hard transition."},"usage":{"type":"string","minLength":1,"maxLength":500,"description":"Source-supported guidance on when and how to use this gradient."}},"required":["name","angle","stops"],"additionalProperties":false},"description":"The Brand's evidenced linear gradients in source order, including exact angles, stops, and usage guidance."},"primaryLogo":{"anyOf":[{"type":"object","properties":{"imageId":{"type":"string","format":"uuid"}},"required":["imageId"],"additionalProperties":false},{"type":"null"}]},"typography":{"type":"object","properties":{"roles":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1},"weight":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"font":{"anyOf":[{"type":"object","properties":{"source":{"enum":["google","custom"],"type":"string"},"family":{"type":"string","minLength":1,"maxLength":120}},"required":["source","family"],"additionalProperties":false},{"type":"object","properties":{"family":{"type":"string","minLength":1},"status":{"const":"unavailable"},"reason":{"type":"string","minLength":1}},"required":["family","status","reason"],"additionalProperties":false}]}},"required":["name","weight","font"],"additionalProperties":false}},"heading":{"anyOf":[{"anyOf":[{"type":"object","properties":{"source":{"enum":["google","custom"],"type":"string"},"family":{"type":"string","minLength":1,"maxLength":120}},"required":["source","family"],"additionalProperties":false},{"type":"object","properties":{"family":{"type":"string","minLength":1},"status":{"const":"unavailable"},"reason":{"type":"string","minLength":1}},"required":["family","status","reason"],"additionalProperties":false}]},{"type":"null"}],"description":"Deprecated. Font of the role named Heading, if any."},"body":{"anyOf":[{"anyOf":[{"type":"object","properties":{"source":{"enum":["google","custom"],"type":"string"},"family":{"type":"string","minLength":1,"maxLength":120}},"required":["source","family"],"additionalProperties":false},{"type":"object","properties":{"family":{"type":"string","minLength":1},"status":{"const":"unavailable"},"reason":{"type":"string","minLength":1}},"required":["family","status","reason"],"additionalProperties":false}]},{"type":"null"}],"description":"Deprecated. Font of the role named Body, if any."}},"required":["roles","heading","body"],"additionalProperties":false}},"required":["name","primaryLogo"],"additionalProperties":false},{"type":"null"}]},"interaction":{"anyOf":[{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"subject":{"type":"string","minLength":1,"maxLength":200},"prompt":{"type":"string","minLength":1,"maxLength":1000},"kind":{"const":"clarification"},"accepts":{"type":"object","properties":{"text":{"type":"object","properties":{"required":{"type":"boolean","default":false},"minLength":{"type":"integer","minimum":0,"maximum":10000,"default":1},"maxLength":{"type":"integer","minimum":-9007199254740991,"maximum":10000,"exclusiveMinimum":0,"default":10000}},"additionalProperties":false},"images":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["max"],"additionalProperties":false},"sources":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["max"],"additionalProperties":false}},"additionalProperties":false}},"required":["id","subject","prompt","kind","accepts"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"subject":{"type":"string","minLength":1,"maxLength":200},"prompt":{"type":"string","minLength":1,"maxLength":1000},"kind":{"const":"choice"},"options":{"type":"array","minItems":2,"maxItems":6,"items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":80},"label":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":500},"imageIds":{"type":"array","maxItems":10,"items":{"type":"string","format":"uuid"}}},"required":["id","label"],"additionalProperties":false}},"alternate":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200},"accepts":{"type":"object","properties":{"text":{"type":"object","properties":{"required":{"type":"boolean","default":false},"minLength":{"type":"integer","minimum":0,"maximum":10000,"default":1},"maxLength":{"type":"integer","minimum":-9007199254740991,"maximum":10000,"exclusiveMinimum":0,"default":10000}},"additionalProperties":false},"images":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["max"],"additionalProperties":false},"sources":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["max"],"additionalProperties":false}},"additionalProperties":false}},"required":["accepts"],"additionalProperties":false}},"required":["id","subject","prompt","kind","options"],"additionalProperties":false}]},{"type":"null"}]},"replacement":{"anyOf":[{"type":"object","properties":{"replacesEditId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"replacedByEditId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"discardReason":{"anyOf":[{"enum":["explicit","replaced"],"type":"string"},{"type":"null"}]}},"required":["replacesEditId","replacedByEditId","discardReason"],"additionalProperties":false},{"type":"null"}]},"changeSummary":{"anyOf":[{"type":"string"},{"type":"null"}]},"statusMessage":{"type":"string"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","minLength":1},"message":{"type":"string","minLength":1},"retryable":{"type":"boolean"}},"required":["code","message","retryable"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"updatedAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["id","brandId","status","baseSkillId","target","changeSet","targetProfile","interaction","replacement","changeSummary","statusMessage","error","createdAt","updatedAt"],"additionalProperties":false}},"required":["data"]},"example":{"data":{"id":"22f07ed4-665a-46de-9843-b271e2e3d247","brandId":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","baseSkillId":"6590fb89-c177-45b3-85d4-74ab6b92dc2a","target":{"skillId":"6a46ce07-8509-461d-bb64-46cb6cd996ea"},"changeSet":{"schemaVersion":2,"baseSkillId":"6590fb89-c177-45b3-85d4-74ab6b92dc2a","targetSkillId":"6a46ce07-8509-461d-bb64-46cb6cd996ea","profileChanges":[],"assetChanges":[],"markdownChanges":[{"path":"references/colors.md","operation":"modify","additions":1,"deletions":1,"hunks":[{"oldStart":3,"oldLines":1,"newStart":3,"newLines":1,"lines":[{"kind":"remove","text":"Atlas Pro uses yellow #FFD600."},{"kind":"add","text":"Atlas Pro uses burgundy #6D1A36."}]}],"truncated":false}]},"targetProfile":{"name":"Acme Inc.","primaryLogo":null},"interaction":null,"replacement":null,"changeSummary":"Use burgundy #6D1A36 for Atlas Pro materials.","statusMessage":"Ready for review.","error":null,"createdAt":"2026-10-24T09:00:00.000Z","updatedAt":"2026-10-24T09:00:00.000Z","status":"awaiting_approval"}}}},"headers":{"Retry-After":{"description":"Seconds to wait before reading the edit again. Returned when the edit is still preparing; currently 2.","schema":{"type":"integer","minimum":0}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsGetEdit401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsGetEdit403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsGetEdit404ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsGetEdit429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}},"500":{"description":"500","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsGetEdit500ErrorResponse"}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/brands/e6220a5e-4a68-4d39-8bb9-5105e9a3a164/edits/22f07ed4-665a-46de-9843-b271e2e3d247' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/brands/{id}/edits/{editId}/files":{"get":{"operationId":"brands.getEditFile","summary":"Get a changed brand file","description":"Read the original and proposed versions of a file to inspect a [Brand Edit](/api-reference/brands/get-a-brand-edit).","tags":["Brands"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Brand ID","example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},"example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},{"name":"editId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Brand Edit ID","example":"22f07ed4-665a-46de-9843-b271e2e3d247"},"example":"22f07ed4-665a-46de-9843-b271e2e3d247"},{"name":"path","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":512,"description":"Changed Markdown file path","example":"references/colors.md"},"allowEmptyValue":true,"allowReserved":true,"example":"references/colors.md"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":128,"description":"Pagination cursor returned by the previous page"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"schemaVersion":{"const":2},"editId":{"type":"string","format":"uuid"},"status":{"enum":["awaiting_approval","applied","discarded","stale"],"type":"string"},"path":{"type":"string","minLength":1},"operation":{"enum":["add","remove","modify"],"type":"string"},"base":{"anyOf":[{"type":"object","properties":{"skillId":{"type":"string","format":"uuid"},"fileSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"startCharacter":{"type":"integer","minimum":0,"maximum":9007199254740991},"endCharacter":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalCharacters":{"type":"integer","minimum":0,"maximum":9007199254740991},"content":{"type":"string"}},"required":["skillId","fileSha256","startCharacter","endCharacter","totalCharacters","content"],"additionalProperties":false},{"type":"null"}]},"candidate":{"anyOf":[{"type":"object","properties":{"skillId":{"type":"string","format":"uuid"},"fileSha256":{"type":"string","pattern":"^[a-f0-9]{64}$"},"startCharacter":{"type":"integer","minimum":0,"maximum":9007199254740991},"endCharacter":{"type":"integer","minimum":0,"maximum":9007199254740991},"totalCharacters":{"type":"integer","minimum":0,"maximum":9007199254740991},"content":{"type":"string"}},"required":["skillId","fileSha256","startCharacter","endCharacter","totalCharacters","content"],"additionalProperties":false},{"type":"null"}]},"hasMore":{"type":"boolean"},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["schemaVersion","editId","status","path","operation","base","candidate","hasMore","nextCursor"],"additionalProperties":false}},"required":["data"]},"example":{"data":{"schemaVersion":2,"editId":"22f07ed4-665a-46de-9843-b271e2e3d247","status":"awaiting_approval","path":"references/colors.md","operation":"modify","base":{"skillId":"6590fb89-c177-45b3-85d4-74ab6b92dc2a","fileSha256":"e6a777c0f452323a9e6dcd25f6bd6fe958f0f450be5137a9b17f1922b6051750","startCharacter":0,"endCharacter":49,"totalCharacters":49,"content":"# Product colors\n\nAtlas Pro uses yellow #FFD600.\n"},"candidate":{"skillId":"6a46ce07-8509-461d-bb64-46cb6cd996ea","fileSha256":"f05ed73e13c756df5dacc57e6817d2d10b7fe154610b38bc367da3a70fc2f530","startCharacter":0,"endCharacter":51,"totalCharacters":51,"content":"# Product colors\n\nAtlas Pro uses burgundy #6D1A36.\n"},"nextCursor":null,"hasMore":false}}}}},"400":{"description":"400","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsGetEditFile400ErrorResponse"}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsGetEditFile401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsGetEditFile403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsGetEditFile404ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsGetEditFile429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}},"500":{"description":"500","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsGetEditFile500ErrorResponse"}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/brands/e6220a5e-4a68-4d39-8bb9-5105e9a3a164/edits/22f07ed4-665a-46de-9843-b271e2e3d247/files?path=references%2Fcolors.md' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/brands/{id}/edits/{editId}/interactions/{interactionId}/responses":{"post":{"operationId":"brands.continueEdit","summary":"Continue a Brand Edit","description":"Answer a Brand Edit's request for input so preparation can continue without applying it. Check the result with [Get a Brand Edit](/api-reference/brands/get-a-brand-edit).","tags":["Brands"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Brand ID","example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},"example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},{"name":"editId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Brand Edit ID","example":"22f07ed4-665a-46de-9843-b271e2e3d247"},"example":"22f07ed4-665a-46de-9843-b271e2e3d247"},{"name":"interactionId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Current Brand Edit interaction ID","example":"3c5ef412-8b9b-47a9-a317-c288d62c5ad8"},"example":"3c5ef412-8b9b-47a9-a317-c288d62c5ad8"},{"name":"idempotency-key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":255,"description":"A unique key for this operation. Reuse it when retrying the same request.","example":"acme-atlas-pro-color-answer"},"example":"acme-atlas-pro-color-answer"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"response":{"anyOf":[{"type":"object","properties":{"kind":{"const":"selection"},"optionId":{"type":"string","minLength":1,"maxLength":80}},"required":["kind","optionId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"answer"},"text":{"type":"string","minLength":1,"maxLength":10000},"evidence":{"type":"object","properties":{"sources":{"type":"array","maxItems":30,"items":{"anyOf":[{"anyOf":[{"type":"object","properties":{"kind":{"enum":["website"],"type":"string","description":"Source type for a public website"},"url":{"type":"string","format":"uri","description":"Public website URL to turn into a Brand Skill"}},"required":["kind","url"],"title":"Website"},{"type":"object","properties":{"kind":{"enum":["instagram"],"type":"string","description":"Source type for an Instagram account"},"username":{"type":"string","minLength":1,"maxLength":31,"description":"Instagram username to use as brand evidence"}},"required":["kind","username"],"title":"Instagram"},{"type":"object","properties":{"kind":{"enum":["file"],"type":"string","description":"Source type for an uploaded file, including a PDF"},"url":{"type":"string","format":"uri","description":"Temporary public HTTPS URL for a file up to 100 MiB, including a PDF"},"filename":{"type":"string","minLength":1,"maxLength":240,"description":"Original filename used for source labels. It defaults from the URL when possible."}},"required":["kind","url"],"additionalProperties":false,"title":"File"}]},{"type":"object","properties":{"kind":{"const":"file","description":"Source type for a completed temporary upload"},"uploadId":{"type":"string","format":"uuid","description":"Completed temporary upload from POST /uploads"}},"required":["kind","uploadId"],"additionalProperties":false,"title":"Temporary upload"}]},"description":"Evidence sources for this request. Across the original request and all follow-up answers, a Brand Edit accepts at most 30 submitted sources and 256 MiB of stored files, with up to 100 MiB per file. Resubmitting the same URL consumes another source slot. Each submission may include at most one website and one Instagram account.","default":[]},"imageIds":{"type":"array","maxItems":10,"items":{"type":"string","format":"uuid"},"default":[],"description":"Brand Library image IDs to use as evidence. At most 10 submitted IDs across the original request and all follow-up answers; submitting an image again consumes another slot."}},"additionalProperties":false,"default":{"sources":[],"imageIds":[]}}},"required":["kind"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"decline"}},"required":["kind"],"additionalProperties":false}]}},"required":["response"],"additionalProperties":false,"examples":[{"response":{"kind":"answer","text":"Use burgundy #6D1A36 for all Atlas Pro materials, including packaging and social media."}}]}}}},"responses":{"202":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"brandId":{"type":"string","format":"uuid"},"status":{"enum":["preparing","input_required","awaiting_approval","applied","discarded","stale","no_changes","failed"],"type":"string"},"baseSkillId":{"type":"string","format":"uuid"},"target":{"anyOf":[{"type":"object","properties":{"skillId":{"type":"string","format":"uuid"}},"required":["skillId"],"additionalProperties":false},{"type":"null"}]},"changeSet":{"anyOf":[{"type":"object","properties":{"schemaVersion":{"const":2},"baseSkillId":{"type":"string","format":"uuid","description":"Canonical identity of the complete base Brand revision."},"targetSkillId":{"type":"string","format":"uuid","description":"Canonical identity reserved for the complete candidate Brand revision."},"profileChanges":{"type":"array","items":{"type":"object","properties":{"kind":{"const":"field"},"path":{"type":"string","minLength":1},"operation":{"enum":["add","remove","replace"],"type":"string"},"previous":{"anyOf":[{"type":"string"},{"type":"null"}]},"next":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["kind","path","operation","previous","next"],"additionalProperties":false}},"markdownChanges":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","minLength":1},"operation":{"enum":["add","remove","modify"],"type":"string"},"additions":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"deletions":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"hunks":{"type":"array","items":{"type":"object","properties":{"oldStart":{"type":"integer","minimum":0,"maximum":9007199254740991},"oldLines":{"type":"integer","minimum":0,"maximum":9007199254740991},"newStart":{"type":"integer","minimum":0,"maximum":9007199254740991},"newLines":{"type":"integer","minimum":0,"maximum":9007199254740991},"lines":{"type":"array","items":{"type":"object","properties":{"kind":{"enum":["context","add","remove"],"type":"string"},"text":{"type":"string"},"noNewlineAtEndOfFile":{"const":true,"description":"This line has no terminating newline: in the original file for remove, the candidate for add, or both for context. This annotation does not count as a content line. Older receipts may omit this information."}},"required":["kind","text"],"additionalProperties":false}}},"required":["oldStart","oldLines","newStart","newLines","lines"],"additionalProperties":false}},"truncated":{"type":"boolean"}},"required":["path","operation","additions","deletions","hunks","truncated"],"additionalProperties":false}},"assetChanges":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"const":"asset"},"role":{"const":"primary_logo"},"operation":{"enum":["add","remove","replace"],"type":"string"},"previousAssetId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"nextAssetId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]}},"required":["kind","role","operation","previousAssetId","nextAssetId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"asset"},"role":{"const":"font"},"operation":{"enum":["add","remove"],"type":"string"},"path":{"type":"string","minLength":1},"family":{"type":"string","minLength":1},"weight":{"type":"integer","minimum":1,"maximum":1000},"format":{"enum":["woff","woff2","ttf","otf"],"type":"string"}},"required":["kind","role","operation","path","family","weight","format"],"additionalProperties":false}]}}},"required":["schemaVersion","baseSkillId","targetSkillId","profileChanges","markdownChanges","assetChanges"],"additionalProperties":false},{"type":"null"}]},"targetProfile":{"anyOf":[{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"colors":{"anyOf":[{"type":"array","minItems":1,"items":{"type":"object","properties":{"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Six-digit HEX color value, including the leading #."},"name":{"type":"string","minLength":1,"maxLength":80,"description":"The color's name, when established by the source."},"group":{"type":"string","minLength":1,"maxLength":80,"description":"The source's palette group label. Omit when the source does not group this color."},"usage":{"type":"string","minLength":1,"maxLength":500,"description":"Source-supported guidance on when and how to use this color."}},"required":["hex"],"additionalProperties":false}},{"type":"null"}]},"gradients":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"The gradient's name, as established by the source."},"angle":{"type":"number","minimum":0,"exclusiveMaximum":360,"description":"The linear gradient's angle in degrees, from 0 up to but not including 360."},"stops":{"type":"array","minItems":2,"items":{"type":"object","properties":{"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Six-digit HEX color value for this stop, including the leading #."},"position":{"type":"number","minimum":0,"maximum":100,"description":"The stop's position as a percentage from 0 to 100."}},"required":["hex","position"],"additionalProperties":false},"description":"At least two color stops in non-decreasing position order. Adjacent stops may share a position to create a hard transition."},"usage":{"type":"string","minLength":1,"maxLength":500,"description":"Source-supported guidance on when and how to use this gradient."}},"required":["name","angle","stops"],"additionalProperties":false},"description":"The Brand's evidenced linear gradients in source order, including exact angles, stops, and usage guidance."},"primaryLogo":{"anyOf":[{"type":"object","properties":{"imageId":{"type":"string","format":"uuid"}},"required":["imageId"],"additionalProperties":false},{"type":"null"}]},"typography":{"type":"object","properties":{"roles":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1},"weight":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"font":{"anyOf":[{"type":"object","properties":{"source":{"enum":["google","custom"],"type":"string"},"family":{"type":"string","minLength":1,"maxLength":120}},"required":["source","family"],"additionalProperties":false},{"type":"object","properties":{"family":{"type":"string","minLength":1},"status":{"const":"unavailable"},"reason":{"type":"string","minLength":1}},"required":["family","status","reason"],"additionalProperties":false}]}},"required":["name","weight","font"],"additionalProperties":false}},"heading":{"anyOf":[{"anyOf":[{"type":"object","properties":{"source":{"enum":["google","custom"],"type":"string"},"family":{"type":"string","minLength":1,"maxLength":120}},"required":["source","family"],"additionalProperties":false},{"type":"object","properties":{"family":{"type":"string","minLength":1},"status":{"const":"unavailable"},"reason":{"type":"string","minLength":1}},"required":["family","status","reason"],"additionalProperties":false}]},{"type":"null"}],"description":"Deprecated. Font of the role named Heading, if any."},"body":{"anyOf":[{"anyOf":[{"type":"object","properties":{"source":{"enum":["google","custom"],"type":"string"},"family":{"type":"string","minLength":1,"maxLength":120}},"required":["source","family"],"additionalProperties":false},{"type":"object","properties":{"family":{"type":"string","minLength":1},"status":{"const":"unavailable"},"reason":{"type":"string","minLength":1}},"required":["family","status","reason"],"additionalProperties":false}]},{"type":"null"}],"description":"Deprecated. Font of the role named Body, if any."}},"required":["roles","heading","body"],"additionalProperties":false}},"required":["name","primaryLogo"],"additionalProperties":false},{"type":"null"}]},"interaction":{"anyOf":[{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"subject":{"type":"string","minLength":1,"maxLength":200},"prompt":{"type":"string","minLength":1,"maxLength":1000},"kind":{"const":"clarification"},"accepts":{"type":"object","properties":{"text":{"type":"object","properties":{"required":{"type":"boolean","default":false},"minLength":{"type":"integer","minimum":0,"maximum":10000,"default":1},"maxLength":{"type":"integer","minimum":-9007199254740991,"maximum":10000,"exclusiveMinimum":0,"default":10000}},"additionalProperties":false},"images":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["max"],"additionalProperties":false},"sources":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["max"],"additionalProperties":false}},"additionalProperties":false}},"required":["id","subject","prompt","kind","accepts"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"subject":{"type":"string","minLength":1,"maxLength":200},"prompt":{"type":"string","minLength":1,"maxLength":1000},"kind":{"const":"choice"},"options":{"type":"array","minItems":2,"maxItems":6,"items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":80},"label":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":500},"imageIds":{"type":"array","maxItems":10,"items":{"type":"string","format":"uuid"}}},"required":["id","label"],"additionalProperties":false}},"alternate":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200},"accepts":{"type":"object","properties":{"text":{"type":"object","properties":{"required":{"type":"boolean","default":false},"minLength":{"type":"integer","minimum":0,"maximum":10000,"default":1},"maxLength":{"type":"integer","minimum":-9007199254740991,"maximum":10000,"exclusiveMinimum":0,"default":10000}},"additionalProperties":false},"images":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["max"],"additionalProperties":false},"sources":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["max"],"additionalProperties":false}},"additionalProperties":false}},"required":["accepts"],"additionalProperties":false}},"required":["id","subject","prompt","kind","options"],"additionalProperties":false}]},{"type":"null"}]},"replacement":{"anyOf":[{"type":"object","properties":{"replacesEditId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"replacedByEditId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"discardReason":{"anyOf":[{"enum":["explicit","replaced"],"type":"string"},{"type":"null"}]}},"required":["replacesEditId","replacedByEditId","discardReason"],"additionalProperties":false},{"type":"null"}]},"changeSummary":{"anyOf":[{"type":"string"},{"type":"null"}]},"statusMessage":{"type":"string"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","minLength":1},"message":{"type":"string","minLength":1},"retryable":{"type":"boolean"}},"required":["code","message","retryable"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"updatedAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["id","brandId","status","baseSkillId","target","changeSet","targetProfile","interaction","replacement","changeSummary","statusMessage","error","createdAt","updatedAt"],"additionalProperties":false}},"required":["data"]},"example":{"data":{"id":"22f07ed4-665a-46de-9843-b271e2e3d247","brandId":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","baseSkillId":"6590fb89-c177-45b3-85d4-74ab6b92dc2a","target":null,"changeSet":null,"targetProfile":null,"interaction":null,"replacement":null,"changeSummary":null,"statusMessage":"Preparing Acme Inc.'s brand update.","error":null,"createdAt":"2026-10-24T09:00:00.000Z","updatedAt":"2026-10-24T09:00:00.000Z","status":"preparing"}}}},"headers":{"Location":{"description":"Relative API path for reading this Brand Edit: `/api/v1/brands/{brandId}/edits/{editId}`.","schema":{"type":"string"}},"Retry-After":{"description":"Seconds to wait before reading the edit again. Present only when the returned status is `preparing`; currently 2.","schema":{"type":"integer","minimum":0}}}},"400":{"description":"400","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsContinueEdit400ErrorResponse"}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsContinueEdit401ErrorResponse"}}}},"402":{"description":"402","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsContinueEdit402ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsContinueEdit403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsContinueEdit404ErrorResponse"}}}},"409":{"description":"409","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsContinueEdit409ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsContinueEdit429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}},"500":{"description":"500","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsContinueEdit500ErrorResponse"}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request POST \\\n  --url 'https://www.rainbrand.com/api/v1/brands/e6220a5e-4a68-4d39-8bb9-5105e9a3a164/edits/22f07ed4-665a-46de-9843-b271e2e3d247/interactions/3c5ef412-8b9b-47a9-a317-c288d62c5ad8/responses' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\" \\\n  --header 'idempotency-key: acme-atlas-pro-color-answer' \\\n  --header \"Content-Type: application/json\" \\\n  --data '{\n  \"response\": {\n    \"kind\": \"answer\",\n    \"text\": \"Use burgundy #6D1A36 for all Atlas Pro materials, including packaging and social media.\"\n  }\n}'"}]}},"/brands/{id}/edits/{editId}/apply":{"post":{"operationId":"brands.applyEdit","summary":"Apply a Brand Edit","description":"Make the proposed guidance and profile active. A stale edit cannot be applied. [Create a new edit](/api-reference/brands/create-a-brand-edit) from the current brand version.","tags":["Brands"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Brand ID","example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},"example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},{"name":"editId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Brand Edit ID","example":"22f07ed4-665a-46de-9843-b271e2e3d247"},"example":"22f07ed4-665a-46de-9843-b271e2e3d247"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"brandId":{"type":"string","format":"uuid"},"status":{"enum":["preparing","input_required","awaiting_approval","applied","discarded","stale","no_changes","failed"],"type":"string"},"baseSkillId":{"type":"string","format":"uuid"},"target":{"anyOf":[{"type":"object","properties":{"skillId":{"type":"string","format":"uuid"}},"required":["skillId"],"additionalProperties":false},{"type":"null"}]},"changeSet":{"anyOf":[{"type":"object","properties":{"schemaVersion":{"const":2},"baseSkillId":{"type":"string","format":"uuid","description":"Canonical identity of the complete base Brand revision."},"targetSkillId":{"type":"string","format":"uuid","description":"Canonical identity reserved for the complete candidate Brand revision."},"profileChanges":{"type":"array","items":{"type":"object","properties":{"kind":{"const":"field"},"path":{"type":"string","minLength":1},"operation":{"enum":["add","remove","replace"],"type":"string"},"previous":{"anyOf":[{"type":"string"},{"type":"null"}]},"next":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["kind","path","operation","previous","next"],"additionalProperties":false}},"markdownChanges":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","minLength":1},"operation":{"enum":["add","remove","modify"],"type":"string"},"additions":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"deletions":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"hunks":{"type":"array","items":{"type":"object","properties":{"oldStart":{"type":"integer","minimum":0,"maximum":9007199254740991},"oldLines":{"type":"integer","minimum":0,"maximum":9007199254740991},"newStart":{"type":"integer","minimum":0,"maximum":9007199254740991},"newLines":{"type":"integer","minimum":0,"maximum":9007199254740991},"lines":{"type":"array","items":{"type":"object","properties":{"kind":{"enum":["context","add","remove"],"type":"string"},"text":{"type":"string"},"noNewlineAtEndOfFile":{"const":true,"description":"This line has no terminating newline: in the original file for remove, the candidate for add, or both for context. This annotation does not count as a content line. Older receipts may omit this information."}},"required":["kind","text"],"additionalProperties":false}}},"required":["oldStart","oldLines","newStart","newLines","lines"],"additionalProperties":false}},"truncated":{"type":"boolean"}},"required":["path","operation","additions","deletions","hunks","truncated"],"additionalProperties":false}},"assetChanges":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"const":"asset"},"role":{"const":"primary_logo"},"operation":{"enum":["add","remove","replace"],"type":"string"},"previousAssetId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"nextAssetId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]}},"required":["kind","role","operation","previousAssetId","nextAssetId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"asset"},"role":{"const":"font"},"operation":{"enum":["add","remove"],"type":"string"},"path":{"type":"string","minLength":1},"family":{"type":"string","minLength":1},"weight":{"type":"integer","minimum":1,"maximum":1000},"format":{"enum":["woff","woff2","ttf","otf"],"type":"string"}},"required":["kind","role","operation","path","family","weight","format"],"additionalProperties":false}]}}},"required":["schemaVersion","baseSkillId","targetSkillId","profileChanges","markdownChanges","assetChanges"],"additionalProperties":false},{"type":"null"}]},"targetProfile":{"anyOf":[{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"colors":{"anyOf":[{"type":"array","minItems":1,"items":{"type":"object","properties":{"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Six-digit HEX color value, including the leading #."},"name":{"type":"string","minLength":1,"maxLength":80,"description":"The color's name, when established by the source."},"group":{"type":"string","minLength":1,"maxLength":80,"description":"The source's palette group label. Omit when the source does not group this color."},"usage":{"type":"string","minLength":1,"maxLength":500,"description":"Source-supported guidance on when and how to use this color."}},"required":["hex"],"additionalProperties":false}},{"type":"null"}]},"gradients":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"The gradient's name, as established by the source."},"angle":{"type":"number","minimum":0,"exclusiveMaximum":360,"description":"The linear gradient's angle in degrees, from 0 up to but not including 360."},"stops":{"type":"array","minItems":2,"items":{"type":"object","properties":{"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Six-digit HEX color value for this stop, including the leading #."},"position":{"type":"number","minimum":0,"maximum":100,"description":"The stop's position as a percentage from 0 to 100."}},"required":["hex","position"],"additionalProperties":false},"description":"At least two color stops in non-decreasing position order. Adjacent stops may share a position to create a hard transition."},"usage":{"type":"string","minLength":1,"maxLength":500,"description":"Source-supported guidance on when and how to use this gradient."}},"required":["name","angle","stops"],"additionalProperties":false},"description":"The Brand's evidenced linear gradients in source order, including exact angles, stops, and usage guidance."},"primaryLogo":{"anyOf":[{"type":"object","properties":{"imageId":{"type":"string","format":"uuid"}},"required":["imageId"],"additionalProperties":false},{"type":"null"}]},"typography":{"type":"object","properties":{"roles":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1},"weight":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"font":{"anyOf":[{"type":"object","properties":{"source":{"enum":["google","custom"],"type":"string"},"family":{"type":"string","minLength":1,"maxLength":120}},"required":["source","family"],"additionalProperties":false},{"type":"object","properties":{"family":{"type":"string","minLength":1},"status":{"const":"unavailable"},"reason":{"type":"string","minLength":1}},"required":["family","status","reason"],"additionalProperties":false}]}},"required":["name","weight","font"],"additionalProperties":false}},"heading":{"anyOf":[{"anyOf":[{"type":"object","properties":{"source":{"enum":["google","custom"],"type":"string"},"family":{"type":"string","minLength":1,"maxLength":120}},"required":["source","family"],"additionalProperties":false},{"type":"object","properties":{"family":{"type":"string","minLength":1},"status":{"const":"unavailable"},"reason":{"type":"string","minLength":1}},"required":["family","status","reason"],"additionalProperties":false}]},{"type":"null"}],"description":"Deprecated. Font of the role named Heading, if any."},"body":{"anyOf":[{"anyOf":[{"type":"object","properties":{"source":{"enum":["google","custom"],"type":"string"},"family":{"type":"string","minLength":1,"maxLength":120}},"required":["source","family"],"additionalProperties":false},{"type":"object","properties":{"family":{"type":"string","minLength":1},"status":{"const":"unavailable"},"reason":{"type":"string","minLength":1}},"required":["family","status","reason"],"additionalProperties":false}]},{"type":"null"}],"description":"Deprecated. Font of the role named Body, if any."}},"required":["roles","heading","body"],"additionalProperties":false}},"required":["name","primaryLogo"],"additionalProperties":false},{"type":"null"}]},"interaction":{"anyOf":[{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"subject":{"type":"string","minLength":1,"maxLength":200},"prompt":{"type":"string","minLength":1,"maxLength":1000},"kind":{"const":"clarification"},"accepts":{"type":"object","properties":{"text":{"type":"object","properties":{"required":{"type":"boolean","default":false},"minLength":{"type":"integer","minimum":0,"maximum":10000,"default":1},"maxLength":{"type":"integer","minimum":-9007199254740991,"maximum":10000,"exclusiveMinimum":0,"default":10000}},"additionalProperties":false},"images":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["max"],"additionalProperties":false},"sources":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["max"],"additionalProperties":false}},"additionalProperties":false}},"required":["id","subject","prompt","kind","accepts"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"subject":{"type":"string","minLength":1,"maxLength":200},"prompt":{"type":"string","minLength":1,"maxLength":1000},"kind":{"const":"choice"},"options":{"type":"array","minItems":2,"maxItems":6,"items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":80},"label":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":500},"imageIds":{"type":"array","maxItems":10,"items":{"type":"string","format":"uuid"}}},"required":["id","label"],"additionalProperties":false}},"alternate":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200},"accepts":{"type":"object","properties":{"text":{"type":"object","properties":{"required":{"type":"boolean","default":false},"minLength":{"type":"integer","minimum":0,"maximum":10000,"default":1},"maxLength":{"type":"integer","minimum":-9007199254740991,"maximum":10000,"exclusiveMinimum":0,"default":10000}},"additionalProperties":false},"images":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["max"],"additionalProperties":false},"sources":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["max"],"additionalProperties":false}},"additionalProperties":false}},"required":["accepts"],"additionalProperties":false}},"required":["id","subject","prompt","kind","options"],"additionalProperties":false}]},{"type":"null"}]},"replacement":{"anyOf":[{"type":"object","properties":{"replacesEditId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"replacedByEditId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"discardReason":{"anyOf":[{"enum":["explicit","replaced"],"type":"string"},{"type":"null"}]}},"required":["replacesEditId","replacedByEditId","discardReason"],"additionalProperties":false},{"type":"null"}]},"changeSummary":{"anyOf":[{"type":"string"},{"type":"null"}]},"statusMessage":{"type":"string"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","minLength":1},"message":{"type":"string","minLength":1},"retryable":{"type":"boolean"}},"required":["code","message","retryable"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"updatedAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["id","brandId","status","baseSkillId","target","changeSet","targetProfile","interaction","replacement","changeSummary","statusMessage","error","createdAt","updatedAt"],"additionalProperties":false}},"required":["data"]},"example":{"data":{"id":"22f07ed4-665a-46de-9843-b271e2e3d247","brandId":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","baseSkillId":"6590fb89-c177-45b3-85d4-74ab6b92dc2a","target":{"skillId":"6a46ce07-8509-461d-bb64-46cb6cd996ea"},"changeSet":{"schemaVersion":2,"baseSkillId":"6590fb89-c177-45b3-85d4-74ab6b92dc2a","targetSkillId":"6a46ce07-8509-461d-bb64-46cb6cd996ea","profileChanges":[],"assetChanges":[],"markdownChanges":[{"path":"references/colors.md","operation":"modify","additions":1,"deletions":1,"hunks":[{"oldStart":3,"oldLines":1,"newStart":3,"newLines":1,"lines":[{"kind":"remove","text":"Atlas Pro uses yellow #FFD600."},{"kind":"add","text":"Atlas Pro uses burgundy #6D1A36."}]}],"truncated":false}]},"targetProfile":{"name":"Acme Inc.","primaryLogo":null},"interaction":null,"replacement":null,"changeSummary":"Use burgundy #6D1A36 for Atlas Pro materials.","statusMessage":"Acme Inc.'s brand update is active.","error":null,"createdAt":"2026-10-24T09:00:00.000Z","updatedAt":"2026-10-24T09:00:00.000Z","status":"applied"}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsApplyEdit401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsApplyEdit403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsApplyEdit404ErrorResponse"}}}},"409":{"description":"409","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsApplyEdit409ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsApplyEdit429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}},"500":{"description":"500","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsApplyEdit500ErrorResponse"}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request POST \\\n  --url 'https://www.rainbrand.com/api/v1/brands/e6220a5e-4a68-4d39-8bb9-5105e9a3a164/edits/22f07ed4-665a-46de-9843-b271e2e3d247/apply' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/brands/{id}/edits/{editId}/discard":{"post":{"operationId":"brands.discardEdit","summary":"Discard a Brand Edit","description":"Discard a Brand Edit without changing the active brand.","tags":["Brands"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Brand ID","example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},"example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},{"name":"editId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Brand Edit ID","example":"22f07ed4-665a-46de-9843-b271e2e3d247"},"example":"22f07ed4-665a-46de-9843-b271e2e3d247"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"brandId":{"type":"string","format":"uuid"},"status":{"enum":["preparing","input_required","awaiting_approval","applied","discarded","stale","no_changes","failed"],"type":"string"},"baseSkillId":{"type":"string","format":"uuid"},"target":{"anyOf":[{"type":"object","properties":{"skillId":{"type":"string","format":"uuid"}},"required":["skillId"],"additionalProperties":false},{"type":"null"}]},"changeSet":{"anyOf":[{"type":"object","properties":{"schemaVersion":{"const":2},"baseSkillId":{"type":"string","format":"uuid","description":"Canonical identity of the complete base Brand revision."},"targetSkillId":{"type":"string","format":"uuid","description":"Canonical identity reserved for the complete candidate Brand revision."},"profileChanges":{"type":"array","items":{"type":"object","properties":{"kind":{"const":"field"},"path":{"type":"string","minLength":1},"operation":{"enum":["add","remove","replace"],"type":"string"},"previous":{"anyOf":[{"type":"string"},{"type":"null"}]},"next":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["kind","path","operation","previous","next"],"additionalProperties":false}},"markdownChanges":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","minLength":1},"operation":{"enum":["add","remove","modify"],"type":"string"},"additions":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"deletions":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"hunks":{"type":"array","items":{"type":"object","properties":{"oldStart":{"type":"integer","minimum":0,"maximum":9007199254740991},"oldLines":{"type":"integer","minimum":0,"maximum":9007199254740991},"newStart":{"type":"integer","minimum":0,"maximum":9007199254740991},"newLines":{"type":"integer","minimum":0,"maximum":9007199254740991},"lines":{"type":"array","items":{"type":"object","properties":{"kind":{"enum":["context","add","remove"],"type":"string"},"text":{"type":"string"},"noNewlineAtEndOfFile":{"const":true,"description":"This line has no terminating newline: in the original file for remove, the candidate for add, or both for context. This annotation does not count as a content line. Older receipts may omit this information."}},"required":["kind","text"],"additionalProperties":false}}},"required":["oldStart","oldLines","newStart","newLines","lines"],"additionalProperties":false}},"truncated":{"type":"boolean"}},"required":["path","operation","additions","deletions","hunks","truncated"],"additionalProperties":false}},"assetChanges":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"const":"asset"},"role":{"const":"primary_logo"},"operation":{"enum":["add","remove","replace"],"type":"string"},"previousAssetId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"nextAssetId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]}},"required":["kind","role","operation","previousAssetId","nextAssetId"],"additionalProperties":false},{"type":"object","properties":{"kind":{"const":"asset"},"role":{"const":"font"},"operation":{"enum":["add","remove"],"type":"string"},"path":{"type":"string","minLength":1},"family":{"type":"string","minLength":1},"weight":{"type":"integer","minimum":1,"maximum":1000},"format":{"enum":["woff","woff2","ttf","otf"],"type":"string"}},"required":["kind","role","operation","path","family","weight","format"],"additionalProperties":false}]}}},"required":["schemaVersion","baseSkillId","targetSkillId","profileChanges","markdownChanges","assetChanges"],"additionalProperties":false},{"type":"null"}]},"targetProfile":{"anyOf":[{"type":"object","properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}]},"colors":{"anyOf":[{"type":"array","minItems":1,"items":{"type":"object","properties":{"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Six-digit HEX color value, including the leading #."},"name":{"type":"string","minLength":1,"maxLength":80,"description":"The color's name, when established by the source."},"group":{"type":"string","minLength":1,"maxLength":80,"description":"The source's palette group label. Omit when the source does not group this color."},"usage":{"type":"string","minLength":1,"maxLength":500,"description":"Source-supported guidance on when and how to use this color."}},"required":["hex"],"additionalProperties":false}},{"type":"null"}]},"gradients":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80,"description":"The gradient's name, as established by the source."},"angle":{"type":"number","minimum":0,"exclusiveMaximum":360,"description":"The linear gradient's angle in degrees, from 0 up to but not including 360."},"stops":{"type":"array","minItems":2,"items":{"type":"object","properties":{"hex":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$","description":"Six-digit HEX color value for this stop, including the leading #."},"position":{"type":"number","minimum":0,"maximum":100,"description":"The stop's position as a percentage from 0 to 100."}},"required":["hex","position"],"additionalProperties":false},"description":"At least two color stops in non-decreasing position order. Adjacent stops may share a position to create a hard transition."},"usage":{"type":"string","minLength":1,"maxLength":500,"description":"Source-supported guidance on when and how to use this gradient."}},"required":["name","angle","stops"],"additionalProperties":false},"description":"The Brand's evidenced linear gradients in source order, including exact angles, stops, and usage guidance."},"primaryLogo":{"anyOf":[{"type":"object","properties":{"imageId":{"type":"string","format":"uuid"}},"required":["imageId"],"additionalProperties":false},{"type":"null"}]},"typography":{"type":"object","properties":{"roles":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1},"weight":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"font":{"anyOf":[{"type":"object","properties":{"source":{"enum":["google","custom"],"type":"string"},"family":{"type":"string","minLength":1,"maxLength":120}},"required":["source","family"],"additionalProperties":false},{"type":"object","properties":{"family":{"type":"string","minLength":1},"status":{"const":"unavailable"},"reason":{"type":"string","minLength":1}},"required":["family","status","reason"],"additionalProperties":false}]}},"required":["name","weight","font"],"additionalProperties":false}},"heading":{"anyOf":[{"anyOf":[{"type":"object","properties":{"source":{"enum":["google","custom"],"type":"string"},"family":{"type":"string","minLength":1,"maxLength":120}},"required":["source","family"],"additionalProperties":false},{"type":"object","properties":{"family":{"type":"string","minLength":1},"status":{"const":"unavailable"},"reason":{"type":"string","minLength":1}},"required":["family","status","reason"],"additionalProperties":false}]},{"type":"null"}],"description":"Deprecated. Font of the role named Heading, if any."},"body":{"anyOf":[{"anyOf":[{"type":"object","properties":{"source":{"enum":["google","custom"],"type":"string"},"family":{"type":"string","minLength":1,"maxLength":120}},"required":["source","family"],"additionalProperties":false},{"type":"object","properties":{"family":{"type":"string","minLength":1},"status":{"const":"unavailable"},"reason":{"type":"string","minLength":1}},"required":["family","status","reason"],"additionalProperties":false}]},{"type":"null"}],"description":"Deprecated. Font of the role named Body, if any."}},"required":["roles","heading","body"],"additionalProperties":false}},"required":["name","primaryLogo"],"additionalProperties":false},{"type":"null"}]},"interaction":{"anyOf":[{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"subject":{"type":"string","minLength":1,"maxLength":200},"prompt":{"type":"string","minLength":1,"maxLength":1000},"kind":{"const":"clarification"},"accepts":{"type":"object","properties":{"text":{"type":"object","properties":{"required":{"type":"boolean","default":false},"minLength":{"type":"integer","minimum":0,"maximum":10000,"default":1},"maxLength":{"type":"integer","minimum":-9007199254740991,"maximum":10000,"exclusiveMinimum":0,"default":10000}},"additionalProperties":false},"images":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["max"],"additionalProperties":false},"sources":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["max"],"additionalProperties":false}},"additionalProperties":false}},"required":["id","subject","prompt","kind","accepts"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"subject":{"type":"string","minLength":1,"maxLength":200},"prompt":{"type":"string","minLength":1,"maxLength":1000},"kind":{"const":"choice"},"options":{"type":"array","minItems":2,"maxItems":6,"items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":80},"label":{"type":"string","minLength":1,"maxLength":200},"description":{"type":"string","minLength":1,"maxLength":500},"imageIds":{"type":"array","maxItems":10,"items":{"type":"string","format":"uuid"}}},"required":["id","label"],"additionalProperties":false}},"alternate":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":200},"accepts":{"type":"object","properties":{"text":{"type":"object","properties":{"required":{"type":"boolean","default":false},"minLength":{"type":"integer","minimum":0,"maximum":10000,"default":1},"maxLength":{"type":"integer","minimum":-9007199254740991,"maximum":10000,"exclusiveMinimum":0,"default":10000}},"additionalProperties":false},"images":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["max"],"additionalProperties":false},"sources":{"type":"object","properties":{"min":{"type":"integer","minimum":0,"maximum":9007199254740991,"default":0},"max":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0}},"required":["max"],"additionalProperties":false}},"additionalProperties":false}},"required":["accepts"],"additionalProperties":false}},"required":["id","subject","prompt","kind","options"],"additionalProperties":false}]},{"type":"null"}]},"replacement":{"anyOf":[{"type":"object","properties":{"replacesEditId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"replacedByEditId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"discardReason":{"anyOf":[{"enum":["explicit","replaced"],"type":"string"},{"type":"null"}]}},"required":["replacesEditId","replacedByEditId","discardReason"],"additionalProperties":false},{"type":"null"}]},"changeSummary":{"anyOf":[{"type":"string"},{"type":"null"}]},"statusMessage":{"type":"string"},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","minLength":1},"message":{"type":"string","minLength":1},"retryable":{"type":"boolean"}},"required":["code","message","retryable"],"additionalProperties":false},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"},"updatedAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["id","brandId","status","baseSkillId","target","changeSet","targetProfile","interaction","replacement","changeSummary","statusMessage","error","createdAt","updatedAt"],"additionalProperties":false}},"required":["data"]},"example":{"data":{"id":"22f07ed4-665a-46de-9843-b271e2e3d247","brandId":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","baseSkillId":"6590fb89-c177-45b3-85d4-74ab6b92dc2a","target":{"skillId":"6a46ce07-8509-461d-bb64-46cb6cd996ea"},"changeSet":{"schemaVersion":2,"baseSkillId":"6590fb89-c177-45b3-85d4-74ab6b92dc2a","targetSkillId":"6a46ce07-8509-461d-bb64-46cb6cd996ea","profileChanges":[],"assetChanges":[],"markdownChanges":[{"path":"references/colors.md","operation":"modify","additions":1,"deletions":1,"hunks":[{"oldStart":3,"oldLines":1,"newStart":3,"newLines":1,"lines":[{"kind":"remove","text":"Atlas Pro uses yellow #FFD600."},{"kind":"add","text":"Atlas Pro uses burgundy #6D1A36."}]}],"truncated":false}]},"targetProfile":{"name":"Acme Inc.","primaryLogo":null},"interaction":null,"replacement":null,"changeSummary":"Use burgundy #6D1A36 for Atlas Pro materials.","statusMessage":"Brand update discarded.","error":null,"createdAt":"2026-10-24T09:00:00.000Z","updatedAt":"2026-10-24T09:00:00.000Z","status":"discarded"}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsDiscardEdit401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsDiscardEdit403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsDiscardEdit404ErrorResponse"}}}},"409":{"description":"409","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsDiscardEdit409ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsDiscardEdit429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}},"500":{"description":"500","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandsDiscardEdit500ErrorResponse"}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request POST \\\n  --url 'https://www.rainbrand.com/api/v1/brands/e6220a5e-4a68-4d39-8bb9-5105e9a3a164/edits/22f07ed4-665a-46de-9843-b271e2e3d247/discard' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/brands/{id}/library":{"post":{"operationId":"library.add","summary":"Add to a Brand Library","description":"Save a file in the brand's asset collection. Identical file contents return the existing item. Images are up to 10 MiB; video and audio (beta) up to 100 MiB.","tags":["Library"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Brand ID","example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},"example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"source":{"anyOf":[{"type":"object","properties":{"type":{"const":"upload"},"uploadId":{"type":"string","format":"uuid","description":"Completed temporary upload from `POST /uploads`."}},"required":["type","uploadId"],"title":"Upload"},{"type":"object","properties":{"type":{"const":"media"},"mediaId":{"type":"string","format":"uuid","description":"Image, video, or audio ID, such as a generation output. Media from another brand is copied into this one."}},"required":["type","mediaId"],"title":"Existing media"},{"type":"object","properties":{"type":{"const":"url"},"url":{"type":"string","format":"uri","description":"Public HTTPS URL of the file. Rainbrand stores a copy."}},"required":["type","url"],"title":"URL"}],"description":"Where the file comes from."}},"required":["source"],"examples":[{"source":{"type":"upload","uploadId":"3f2b8c1e-9a4d-4e7b-8c2f-1d5e6a7b8c9d"}}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Media ID."},"type":{"type":"string","description":"Media family: image, video, or audio. More values may be added."},"source":{"type":"string","description":"How the file entered Rainbrand: uploaded, scraped (collected from a brand source), or generated. More values may be added."},"brandSessionId":{"type":"string","format":"uuid","description":"Brand that owns the file."},"workspaceId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace that owns the brand. Null for a personal workspace."},"mimeType":{"type":"string","description":"The file's MIME type."},"url":{"type":"string","format":"uri","description":"Stable link to the file. Stops working when the file is deleted."},"fileSize":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Size in bytes."},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Duration in milliseconds, when known."},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Width in pixels, when known."},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Height in pixels, when known."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Description of the file's contents, when Rainbrand has one."},"inLibrary":{"type":"boolean","description":"Whether the file is in its brand's Library."},"addedToLibraryAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"When the file was added to the Library, or null."},"generationId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Generation that produced the file, or null."},"createdAt":{"type":"string","format":"date-time","description":"When the file was stored."},"existing":{"type":"boolean","description":"True when the brand already held this file; no new copy was stored."}},"required":["id","type","source","brandSessionId","workspaceId","mimeType","url","fileSize","durationMs","width","height","description","inLibrary","addedToLibraryAt","generationId","createdAt","existing"]}},"required":["data"]},"example":{"data":{"id":"a8dd463a-09ab-4307-93e5-6e4cecd61ffd","type":"image","source":"uploaded","brandSessionId":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","workspaceId":null,"mimeType":"image/png","url":"https://www.rainbrand.com/img/a8dd463a-09ab-4307-93e5-6e4cecd61ffd","fileSize":1458200,"durationMs":null,"width":1536,"height":1024,"description":"Atlas Pro packaging on a white background.","inLibrary":true,"addedToLibraryAt":"2026-10-24T09:00:00.000Z","generationId":null,"createdAt":"2026-10-24T09:00:00.000Z","existing":false}}}}},"400":{"description":"400","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryAdd400ErrorResponse"}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryAdd401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryAdd403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryAdd404ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryAdd429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}},"503":{"description":"503","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryAdd503ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying, when supplied. Temporary billing unavailability includes this header.","schema":{"type":"integer","minimum":1}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request POST \\\n  --url 'https://www.rainbrand.com/api/v1/brands/e6220a5e-4a68-4d39-8bb9-5105e9a3a164/library' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\" \\\n  --header \"Content-Type: application/json\" \\\n  --data '{\n  \"source\": {\n    \"type\": \"upload\",\n    \"uploadId\": \"3f2b8c1e-9a4d-4e7b-8c2f-1d5e6a7b8c9d\"\n  }\n}'"}]},"get":{"operationId":"library.list","summary":"List a Brand Library","description":"List the images, video, and audio in a brand's Library, most recently added first. Briefs, Brand Edits, and Brand Skills can draw on Library images; video and audio stay stored for other workflows.","tags":["Library"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Brand ID","example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},"example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},{"name":"type","in":"query","schema":{"enum":["image","video","audio"],"type":"string","description":"Only files of this media family."},"allowEmptyValue":true,"allowReserved":true},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Results per page (1–100, default 50)"},"allowEmptyValue":true,"allowReserved":true},{"name":"cursor","in":"query","schema":{"type":"string","description":"Pagination cursor from a previous response's nextCursor"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Media ID."},"type":{"type":"string","description":"Media family: image, video, or audio. More values may be added."},"source":{"type":"string","description":"How the file entered Rainbrand: uploaded, scraped (collected from a brand source), or generated. More values may be added."},"brandSessionId":{"type":"string","format":"uuid","description":"Brand that owns the file."},"workspaceId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace that owns the brand. Null for a personal workspace."},"mimeType":{"type":"string","description":"The file's MIME type."},"url":{"type":"string","format":"uri","description":"Stable link to the file. Stops working when the file is deleted."},"fileSize":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Size in bytes."},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Duration in milliseconds, when known."},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Width in pixels, when known."},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Height in pixels, when known."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Description of the file's contents, when Rainbrand has one."},"inLibrary":{"type":"boolean","description":"Whether the file is in its brand's Library."},"addedToLibraryAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"When the file was added to the Library, or null."},"generationId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Generation that produced the file, or null."},"createdAt":{"type":"string","format":"date-time","description":"When the file was stored."}},"required":["id","type","source","brandSessionId","workspaceId","mimeType","url","fileSize","durationMs","width","height","description","inLibrary","addedToLibraryAt","generationId","createdAt"]}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"hasMore":{"type":"boolean"}},"required":["items","nextCursor","hasMore"]}},"required":["data"]},"example":{"data":{"items":[{"id":"a8dd463a-09ab-4307-93e5-6e4cecd61ffd","type":"image","source":"uploaded","brandSessionId":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","workspaceId":null,"mimeType":"image/png","url":"https://www.rainbrand.com/img/a8dd463a-09ab-4307-93e5-6e4cecd61ffd","fileSize":1458200,"durationMs":null,"width":1536,"height":1024,"description":"Atlas Pro packaging on a white background.","inLibrary":true,"addedToLibraryAt":"2026-10-24T09:00:00.000Z","generationId":null,"createdAt":"2026-10-24T09:00:00.000Z"}],"nextCursor":null,"hasMore":false}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryList401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryList403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryList404ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryList429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/brands/e6220a5e-4a68-4d39-8bb9-5105e9a3a164/library' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/brands/{id}/library/{mediaId}":{"delete":{"operationId":"library.remove","summary":"Remove from a Brand Library","description":"Take a file out of a brand's Library without deleting it. Future Briefs, Brand Edits, and Brand Skill versions stop using it; published Brand Skills keep working. To delete the file, use its media family's delete endpoint.","tags":["Library"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Brand ID","example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},"example":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"},{"name":"mediaId","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Media ID","example":"a8dd463a-09ab-4307-93e5-6e4cecd61ffd"},"example":"a8dd463a-09ab-4307-93e5-6e4cecd61ffd"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"inLibrary":{"const":false}},"required":["id","inLibrary"]}},"required":["data"]},"example":{"data":{"id":"a8dd463a-09ab-4307-93e5-6e4cecd61ffd","inLibrary":false}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryRemove401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryRemove403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryRemove404ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryRemove429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}},"503":{"description":"503","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LibraryRemove503ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying, when supplied. Temporary billing unavailability includes this header.","schema":{"type":"integer","minimum":1}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request DELETE \\\n  --url 'https://www.rainbrand.com/api/v1/brands/e6220a5e-4a68-4d39-8bb9-5105e9a3a164/library/a8dd463a-09ab-4307-93e5-6e4cecd61ffd' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/models":{"get":{"operationId":"models.list","summary":"List models","description":"Find a model for the type of file you want to create, then read its input schema before generating.","tags":["Models"],"parameters":[{"name":"type","in":"query","schema":{"enum":["image","video","audio","svg"],"type":"string","description":"Filter by the type of file the model generates."},"allowEmptyValue":true,"allowReserved":true},{"name":"query","in":"query","schema":{"type":"string","maxLength":200,"description":"Search available models."},"allowEmptyValue":true,"allowReserved":true},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20,"description":"Maximum number of models to return. Accepts 1–50; defaults to 20."},"allowEmptyValue":true,"allowReserved":true},{"name":"cursor","in":"query","schema":{"type":"string","description":"Cursor for the next page. Keep type and query unchanged when using a cursor."},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"models":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Exact model ID. Use this value when fetching model details or starting a generation."},"provider":{"type":"string","description":"Provider that offers the model."},"name":{"type":"string","description":"Display name of the model."},"type":{"enum":["image","video","audio","svg"],"type":"string","description":"Type of file the model generates."},"capabilities":{"type":"array","minItems":1,"items":{"enum":["text-to-image","image-to-image","text-to-video","image-to-video","audio-to-video","video-to-video","text-to-speech","music-generation","text-to-svg"],"type":"string"},"description":"Machine-readable tags identifying the model’s supported operations, such as `text-to-image` or `image-to-video`."},"description":{"type":"string","description":"Description of the model and its capabilities."}},"required":["id","provider","name","type","capabilities","description"]},"description":"Models matching the filters on this page."},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass this value as cursor to get the next page. Null when there are no more results."},"hasMore":{"type":"boolean","description":"Whether another page of models is available."}},"required":["models","nextCursor","hasMore"]}},"required":["data"]},"example":{"data":{"models":[{"id":"openai/gpt-image-2.5-sunburst","provider":"openai","name":"GPT Image 2.5 Sunburst","description":"OpenAI's image model for generation and precise editing when overall image quality is the priority.","type":"image","capabilities":["text-to-image","image-to-image"]}],"nextCursor":null,"hasMore":false}}}}},"400":{"description":"400","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelsList400ErrorResponse"}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelsList401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelsList403ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelsList429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}},"503":{"description":"503","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelsList503ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying, when supplied. Temporary billing unavailability includes this header.","schema":{"type":"integer","minimum":1}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/models' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/models/{provider}/{model}":{"get":{"operationId":"models.get","summary":"Get a model","description":"Read the input schema for a chosen model.","tags":["Models"],"parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"First segment of the model ID, before the first slash.","example":"openai"},"example":"openai"},{"name":"model","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Remaining model ID after the first slash, URL-encoded as one path segment, including any additional slashes.","example":"gpt-image-2.5-sunburst"},"example":"gpt-image-2.5-sunburst"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","description":"Exact model ID. Use this value when fetching model details or starting a generation."},"provider":{"type":"string","description":"Provider that offers the model."},"name":{"type":"string","description":"Display name of the model."},"type":{"enum":["image","video","audio","svg"],"type":"string","description":"Type of file the model generates."},"capabilities":{"type":"array","minItems":1,"items":{"enum":["text-to-image","image-to-image","text-to-video","image-to-video","audio-to-video","video-to-video","text-to-speech","music-generation","text-to-svg"],"type":"string"},"description":"Machine-readable tags identifying the model’s supported operations, such as `text-to-image` or `image-to-video`."},"description":{"type":"string","description":"Description of the model and its capabilities."},"inputSchema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"JSON Schema for the input sent to POST /generations. Where a reference field accepts HTTPS URLs, Rainbrand handles any conversion required by the provider."}},"required":["id","provider","name","type","capabilities","description","inputSchema"]}},"required":["data"]},"example":{"data":{"id":"openai/gpt-image-2.5-sunburst","provider":"openai","name":"GPT Image 2.5 Sunburst","description":"OpenAI's image model for generation and precise editing when overall image quality is the priority.","type":"image","capabilities":["text-to-image","image-to-image"],"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"prompt":{"description":"Text prompt describing the image to generate or edit.","type":"string","minLength":1,"maxLength":32000},"images":{"description":"Reference images as stable public HTTPS URLs or PNG, JPEG, or WebP data URIs. URL-based references are subject to limits of 16 MiB per image and 64 MiB combined per request.","type":"array","minItems":1,"maxItems":16,"items":{"type":"string"}},"quality":{"description":"Output quality.","type":"string","enum":["medium","high","xhigh","max"],"default":"high"},"size":{"description":"Output dimensions.","type":"string","enum":["auto","1024x1024","1536x1024","1024x1536","2048x2048","2048x1152"],"default":"auto"},"background":{"description":"Background behavior.","type":"string","enum":["transparent","opaque","auto"],"default":"auto"},"output_format":{"description":"Generated image format.","type":"string","enum":["png","webp","jpeg"],"default":"png"}},"required":["prompt"],"allOf":[{"if":{"properties":{"background":{"const":"transparent"}},"required":["background"]},"then":{"not":{"properties":{"output_format":{"const":"jpeg"}},"required":["output_format"]}}}],"additionalProperties":false}}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelsGet401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelsGet403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelsGet404ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelsGet429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}},"503":{"description":"503","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelsGet503ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying, when supplied. Temporary billing unavailability includes this header.","schema":{"type":"integer","minimum":1}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/models/openai/gpt-image-2.5-sunburst' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/generations":{"post":{"operationId":"generations.create","summary":"Start a generation","description":"Generate a file with a selected model. A Brand ID scopes the request; pass a completed Brief to a supported model to include brand guidance and assets. Retrieve outputs with [Get a generation](/api-reference/generations/get-a-generation).","tags":["Generations"],"parameters":[{"name":"idempotency-key","in":"header","schema":{"type":"string","minLength":1,"maxLength":255,"description":"Optional key for safely retrying this request. Reuse it only with the same body to get the original generation back; use a new key for a new generation."}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"brandSessionId":{"type":"string","format":"uuid","description":"Brand this generation belongs to."},"model":{"type":"string","minLength":1,"description":"Exact model ID returned by GET /models."},"input":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{},"description":"Input matching the model's inputSchema."},"briefId":{"type":"string","format":"uuid","description":"Completed Brief to use for image or video generation with a supported model. Rainbrand adds its guidance before your prompt and its visual assets after any references you provide."}},"required":["brandSessionId","model","input"],"additionalProperties":false,"examples":[{"brandSessionId":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","model":"openai/gpt-image-2.5-sunburst","input":{"prompt":"Create a landscape launch image for Acme Inc. Atlas Pro. Center the product and include the headline \"Meet Atlas Pro\" and the call to action \"Explore Atlas Pro\".","size":"1536x1024"},"briefId":"657bcf79-1f2f-47fa-90f8-9245142980ed"}]}}}},"responses":{"202":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Generation ID returned when the request started."},"status":{"enum":["pending","generating","completed","failed"],"type":"string","description":"Current generation status."}},"required":["id","status"]}},"required":["data"]},"example":{"data":{"id":"a1b2c3d4-140f-4491-8a24-b215616ed34a","status":"pending"}}}}},"400":{"description":"400","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationsCreate400ErrorResponse"}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationsCreate401ErrorResponse"}}}},"402":{"description":"402","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationsCreate402ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationsCreate403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationsCreate404ErrorResponse"}}}},"409":{"description":"409","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationsCreate409ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationsCreate429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}},"500":{"description":"500","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationsCreate500ErrorResponse"}}}},"503":{"description":"503","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationsCreate503ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds to wait before retrying, when supplied. Temporary billing unavailability includes this header.","schema":{"type":"integer","minimum":1}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request POST \\\n  --url 'https://www.rainbrand.com/api/v1/generations' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\" \\\n  --header \"Content-Type: application/json\" \\\n  --data '{\n  \"brandSessionId\": \"e6220a5e-4a68-4d39-8bb9-5105e9a3a164\",\n  \"model\": \"openai/gpt-image-2.5-sunburst\",\n  \"input\": {\n    \"prompt\": \"Create a landscape launch image for Acme Inc. Atlas Pro. Center the product and include the headline \\\"Meet Atlas Pro\\\" and the call to action \\\"Explore Atlas Pro\\\".\",\n    \"size\": \"1536x1024\"\n  },\n  \"briefId\": \"657bcf79-1f2f-47fa-90f8-9245142980ed\"\n}'"}]},"get":{"operationId":"generations.list","summary":"List generations","description":"List your generations, newest first. Outputs that were later deleted stay listed with available set to false.","tags":["Generations"],"parameters":[{"name":"brandSessionId","in":"query","schema":{"type":"string","format":"uuid","description":"Only list generations for this brand."},"allowEmptyValue":true,"allowReserved":true},{"name":"type","in":"query","schema":{"enum":["image","video","audio","svg"],"type":"string","description":"Only list generations of this type."},"allowEmptyValue":true,"allowReserved":true},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Results per page (1–100, default 50)"},"allowEmptyValue":true,"allowReserved":true},{"name":"cursor","in":"query","schema":{"type":"string","description":"Pagination cursor from a previous response's nextCursor"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"generations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Generation ID returned when the request started."},"status":{"enum":["pending","generating","completed","failed"],"type":"string","description":"Current generation status."},"type":{"type":"string","description":"Requested output type. Known values: image, video, audio, svg; more may be added."},"model":{"type":"string","description":"Exact model ID returned by GET /models."},"brandSessionId":{"type":"string","format":"uuid","description":"Brand the generation belongs to."},"outputs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string"},"url":{"type":"string","format":"uri"},"available":{"type":"boolean"},"mimeType":{"type":"string"},"durationMs":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"File duration in milliseconds, when known. Null for images."},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0},{"type":"null"}],"description":"Displayed width in pixels, when known. Null for audio."},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0},{"type":"null"}],"description":"Displayed height in pixels, when known. Null for audio."}},"required":["type","available","mimeType","durationMs","width","height"]},"description":"Output files in provider order. Empty until the generation completes."},"failure":{"anyOf":[{"type":"object","properties":{"code":{"const":"upstream_failed"},"message":{"type":"string"},"retryable":{"type":"boolean","description":"True when a new attempt with the same request may succeed; if you sent an Idempotency-Key, use a new key for it. False when the request must change first, or when a video may still be finishing and already billed."},"providerMessage":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The provider's explanation of why it rejected the request, with links and secrets removed. Null when the provider gave none, or when the failure concerns Rainbrand's own account or a provider-side error. Its wording can change."}},"required":["code","message","retryable","providerMessage"],"title":"upstream_failed"},{"type":"null"}],"description":"Failure details, or null when generation has not failed."},"createdAt":{"type":"string","format":"date-time","description":"Time the generation was created."}},"required":["id","status","type","model","brandSessionId","outputs","failure","createdAt"]}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"hasMore":{"type":"boolean"}},"required":["generations","nextCursor","hasMore"]}},"required":["data"]},"example":{"data":{"generations":[{"id":"a1b2c3d4-140f-4491-8a24-b215616ed34a","status":"completed","type":"image","model":"openai/gpt-image-2.5-sunburst","brandSessionId":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","outputs":[{"id":"b73f2048-38a5-4ea7-a6f7-5e1b4d06d990","type":"image","available":true,"url":"https://www.rainbrand.com/img/b73f2048-38a5-4ea7-a6f7-5e1b4d06d990","mimeType":"image/png","durationMs":null,"width":1536,"height":1024}],"failure":null,"createdAt":"2026-10-24T09:00:00.000Z"}],"nextCursor":null,"hasMore":false}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationsList401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationsList403ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationsList429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/generations' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/generations/{id}":{"get":{"operationId":"generations.get","summary":"Get a generation","description":"Retrieve a generation's status, outputs, or failure details.","tags":["Generations"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Generation ID returned when the request started.","example":"a1b2c3d4-140f-4491-8a24-b215616ed34a"},"example":"a1b2c3d4-140f-4491-8a24-b215616ed34a"},{"name":"wait","in":"query","schema":{"anyOf":[{"type":"boolean"},{"enum":["0","1","true","false"],"type":"string"}],"default":false,"description":"Wait for completion or failure. A timeout leaves generation running."},"allowEmptyValue":true,"allowReserved":true},{"name":"timeout","in":"query","schema":{"type":"integer","minimum":1,"maximum":295,"default":120,"description":"Maximum wait in seconds when wait is true."},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Generation ID returned when the request started."},"status":{"enum":["pending","generating","completed","failed"],"type":"string","description":"Current generation status."},"type":{"type":"string","description":"Requested output type. Known values: image, video, audio, svg; more may be added."},"model":{"type":"string","description":"Exact model ID returned by GET /models."},"brandSessionId":{"type":"string","format":"uuid","description":"Brand the generation belongs to."},"outputs":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string"},"url":{"type":"string","format":"uri"},"available":{"type":"boolean"},"mimeType":{"type":"string"},"durationMs":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}],"description":"File duration in milliseconds, when known. Null for images."},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0},{"type":"null"}],"description":"Displayed width in pixels, when known. Null for audio."},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0},{"type":"null"}],"description":"Displayed height in pixels, when known. Null for audio."}},"required":["type","available","mimeType","durationMs","width","height"]},"description":"Output files in provider order. Empty until the generation completes."},"failure":{"anyOf":[{"type":"object","properties":{"code":{"const":"upstream_failed"},"message":{"type":"string"},"retryable":{"type":"boolean","description":"True when a new attempt with the same request may succeed; if you sent an Idempotency-Key, use a new key for it. False when the request must change first, or when a video may still be finishing and already billed."},"providerMessage":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The provider's explanation of why it rejected the request, with links and secrets removed. Null when the provider gave none, or when the failure concerns Rainbrand's own account or a provider-side error. Its wording can change."}},"required":["code","message","retryable","providerMessage"],"title":"upstream_failed"},{"type":"null"}],"description":"Failure details, or null when generation has not failed."},"createdAt":{"type":"string","format":"date-time","description":"Time the generation was created."}},"required":["id","status","type","model","brandSessionId","outputs","failure","createdAt"]}},"required":["data"]},"example":{"data":{"id":"a1b2c3d4-140f-4491-8a24-b215616ed34a","status":"completed","type":"image","model":"openai/gpt-image-2.5-sunburst","brandSessionId":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","outputs":[{"id":"b73f2048-38a5-4ea7-a6f7-5e1b4d06d990","type":"image","available":true,"url":"https://www.rainbrand.com/img/b73f2048-38a5-4ea7-a6f7-5e1b4d06d990","mimeType":"image/png","durationMs":null,"width":1536,"height":1024}],"failure":null,"createdAt":"2026-10-24T09:00:00.000Z"}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationsGet401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationsGet403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationsGet404ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerationsGet429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/generations/a1b2c3d4-140f-4491-8a24-b215616ed34a' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/videos":{"get":{"operationId":"videos.list","summary":"List videos","description":"List videos across your brands, newest first.","tags":["Videos"],"parameters":[{"name":"brandSessionId","in":"query","schema":{"type":"string","format":"uuid","description":"Only this brand."},"allowEmptyValue":true,"allowReserved":true},{"name":"workspaceId","in":"query","schema":{"type":"string","description":"Only this workspace."},"allowEmptyValue":true,"allowReserved":true},{"name":"source","in":"query","schema":{"enum":["uploaded","scraped","generated"],"type":"string","description":"Only files from this source."},"allowEmptyValue":true,"allowReserved":true},{"name":"inLibrary","in":"query","schema":{"enum":["true","false"],"type":"string","description":"Only files in (true) or not in (false) the Library."},"allowEmptyValue":true,"allowReserved":true},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Results per page (1–100, default 50)"},"allowEmptyValue":true,"allowReserved":true},{"name":"cursor","in":"query","schema":{"type":"string","description":"Pagination cursor from a previous response's nextCursor"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Media ID."},"type":{"type":"string","description":"Media family: image, video, or audio. More values may be added."},"source":{"type":"string","description":"How the file entered Rainbrand: uploaded, scraped (collected from a brand source), or generated. More values may be added."},"brandSessionId":{"type":"string","format":"uuid","description":"Brand that owns the file."},"workspaceId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace that owns the brand. Null for a personal workspace."},"mimeType":{"type":"string","description":"The file's MIME type."},"url":{"type":"string","format":"uri","description":"Stable link to the file. Stops working when the file is deleted."},"fileSize":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Size in bytes."},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Duration in milliseconds, when known."},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Width in pixels, when known."},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Height in pixels, when known."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Description of the file's contents, when Rainbrand has one."},"inLibrary":{"type":"boolean","description":"Whether the file is in its brand's Library."},"addedToLibraryAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"When the file was added to the Library, or null."},"generationId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Generation that produced the file, or null."},"createdAt":{"type":"string","format":"date-time","description":"When the file was stored."}},"required":["id","type","source","brandSessionId","workspaceId","mimeType","url","fileSize","durationMs","width","height","description","inLibrary","addedToLibraryAt","generationId","createdAt"]}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"hasMore":{"type":"boolean"}},"required":["items","nextCursor","hasMore"]}},"required":["data"]},"example":{"data":{"items":[{"id":"4c880cf7-9297-482c-9b10-5e5a72cd6241","type":"video","source":"generated","brandSessionId":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","workspaceId":null,"mimeType":"video/mp4","url":"https://assets.acme.com/atlas-pro/launch.mp4","fileSize":4200000,"durationMs":8000,"width":1920,"height":1080,"description":"Atlas Pro launch film.","inLibrary":true,"addedToLibraryAt":"2026-10-24T09:00:00.000Z","generationId":null,"createdAt":"2026-10-24T09:00:00.000Z"}],"nextCursor":null,"hasMore":false}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideosList401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideosList403ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideosList429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/videos' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/videos/{id}":{"get":{"operationId":"videos.get","summary":"Get a video file","description":"Read one video file by media ID.","tags":["Videos"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Media ID.","example":"4c880cf7-9297-482c-9b10-5e5a72cd6241"},"example":"4c880cf7-9297-482c-9b10-5e5a72cd6241"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Media ID."},"type":{"type":"string","description":"Media family: image, video, or audio. More values may be added."},"source":{"type":"string","description":"How the file entered Rainbrand: uploaded, scraped (collected from a brand source), or generated. More values may be added."},"brandSessionId":{"type":"string","format":"uuid","description":"Brand that owns the file."},"workspaceId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace that owns the brand. Null for a personal workspace."},"mimeType":{"type":"string","description":"The file's MIME type."},"url":{"type":"string","format":"uri","description":"Stable link to the file. Stops working when the file is deleted."},"fileSize":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Size in bytes."},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Duration in milliseconds, when known."},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Width in pixels, when known."},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Height in pixels, when known."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Description of the file's contents, when Rainbrand has one."},"inLibrary":{"type":"boolean","description":"Whether the file is in its brand's Library."},"addedToLibraryAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"When the file was added to the Library, or null."},"generationId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Generation that produced the file, or null."},"createdAt":{"type":"string","format":"date-time","description":"When the file was stored."}},"required":["id","type","source","brandSessionId","workspaceId","mimeType","url","fileSize","durationMs","width","height","description","inLibrary","addedToLibraryAt","generationId","createdAt"]}},"required":["data"]},"example":{"data":{"id":"4c880cf7-9297-482c-9b10-5e5a72cd6241","type":"video","source":"generated","brandSessionId":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","workspaceId":null,"mimeType":"video/mp4","url":"https://assets.acme.com/atlas-pro/launch.mp4","fileSize":4200000,"durationMs":8000,"width":1920,"height":1080,"description":"Atlas Pro launch film.","inLibrary":true,"addedToLibraryAt":"2026-10-24T09:00:00.000Z","generationId":null,"createdAt":"2026-10-24T09:00:00.000Z"}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideosGet401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideosGet403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideosGet404ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideosGet429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/videos/4c880cf7-9297-482c-9b10-5e5a72cd6241' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]},"delete":{"operationId":"videos.delete","summary":"Delete a video file","description":"Permanently delete one video file. This cannot be undone.","tags":["Videos"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Media ID.","example":"4c880cf7-9297-482c-9b10-5e5a72cd6241"},"example":"4c880cf7-9297-482c-9b10-5e5a72cd6241"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"deleted":{"const":true}},"required":["id","deleted"]}},"required":["data"]},"example":{"data":{"id":"4c880cf7-9297-482c-9b10-5e5a72cd6241","deleted":true}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideosDelete401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideosDelete403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideosDelete404ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideosDelete429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request DELETE \\\n  --url 'https://www.rainbrand.com/api/v1/videos/4c880cf7-9297-482c-9b10-5e5a72cd6241' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/audio":{"get":{"operationId":"audio.list","summary":"List audio files","description":"List audio files across your brands, newest first.","tags":["Audio"],"parameters":[{"name":"brandSessionId","in":"query","schema":{"type":"string","format":"uuid","description":"Only this brand."},"allowEmptyValue":true,"allowReserved":true},{"name":"workspaceId","in":"query","schema":{"type":"string","description":"Only this workspace."},"allowEmptyValue":true,"allowReserved":true},{"name":"source","in":"query","schema":{"enum":["uploaded","scraped","generated"],"type":"string","description":"Only files from this source."},"allowEmptyValue":true,"allowReserved":true},{"name":"inLibrary","in":"query","schema":{"enum":["true","false"],"type":"string","description":"Only files in (true) or not in (false) the Library."},"allowEmptyValue":true,"allowReserved":true},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Results per page (1–100, default 50)"},"allowEmptyValue":true,"allowReserved":true},{"name":"cursor","in":"query","schema":{"type":"string","description":"Pagination cursor from a previous response's nextCursor"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Media ID."},"type":{"type":"string","description":"Media family: image, video, or audio. More values may be added."},"source":{"type":"string","description":"How the file entered Rainbrand: uploaded, scraped (collected from a brand source), or generated. More values may be added."},"brandSessionId":{"type":"string","format":"uuid","description":"Brand that owns the file."},"workspaceId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace that owns the brand. Null for a personal workspace."},"mimeType":{"type":"string","description":"The file's MIME type."},"url":{"type":"string","format":"uri","description":"Stable link to the file. Stops working when the file is deleted."},"fileSize":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Size in bytes."},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Duration in milliseconds, when known."},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Width in pixels, when known."},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Height in pixels, when known."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Description of the file's contents, when Rainbrand has one."},"inLibrary":{"type":"boolean","description":"Whether the file is in its brand's Library."},"addedToLibraryAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"When the file was added to the Library, or null."},"generationId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Generation that produced the file, or null."},"createdAt":{"type":"string","format":"date-time","description":"When the file was stored."}},"required":["id","type","source","brandSessionId","workspaceId","mimeType","url","fileSize","durationMs","width","height","description","inLibrary","addedToLibraryAt","generationId","createdAt"]}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"hasMore":{"type":"boolean"}},"required":["items","nextCursor","hasMore"]}},"required":["data"]},"example":{"data":{"items":[{"id":"ad118d28-e741-45a5-b942-b284fb653a77","type":"audio","source":"generated","brandSessionId":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","workspaceId":null,"mimeType":"audio/mpeg","url":"https://assets.acme.com/atlas-pro/voiceover.mp3","fileSize":128000,"durationMs":8000,"width":null,"height":null,"description":"Atlas Pro launch voiceover.","inLibrary":true,"addedToLibraryAt":"2026-10-24T09:00:00.000Z","generationId":null,"createdAt":"2026-10-24T09:00:00.000Z"}],"nextCursor":null,"hasMore":false}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioList401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioList403ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioList429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/audio' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/audio/{id}":{"get":{"operationId":"audio.get","summary":"Get an audio file","description":"Read one audio file by media ID.","tags":["Audio"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Media ID.","example":"ad118d28-e741-45a5-b942-b284fb653a77"},"example":"ad118d28-e741-45a5-b942-b284fb653a77"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Media ID."},"type":{"type":"string","description":"Media family: image, video, or audio. More values may be added."},"source":{"type":"string","description":"How the file entered Rainbrand: uploaded, scraped (collected from a brand source), or generated. More values may be added."},"brandSessionId":{"type":"string","format":"uuid","description":"Brand that owns the file."},"workspaceId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace that owns the brand. Null for a personal workspace."},"mimeType":{"type":"string","description":"The file's MIME type."},"url":{"type":"string","format":"uri","description":"Stable link to the file. Stops working when the file is deleted."},"fileSize":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Size in bytes."},"durationMs":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Duration in milliseconds, when known."},"width":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Width in pixels, when known."},"height":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Height in pixels, when known."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Description of the file's contents, when Rainbrand has one."},"inLibrary":{"type":"boolean","description":"Whether the file is in its brand's Library."},"addedToLibraryAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"When the file was added to the Library, or null."},"generationId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Generation that produced the file, or null."},"createdAt":{"type":"string","format":"date-time","description":"When the file was stored."}},"required":["id","type","source","brandSessionId","workspaceId","mimeType","url","fileSize","durationMs","width","height","description","inLibrary","addedToLibraryAt","generationId","createdAt"]}},"required":["data"]},"example":{"data":{"id":"ad118d28-e741-45a5-b942-b284fb653a77","type":"audio","source":"generated","brandSessionId":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","workspaceId":null,"mimeType":"audio/mpeg","url":"https://assets.acme.com/atlas-pro/voiceover.mp3","fileSize":128000,"durationMs":8000,"width":null,"height":null,"description":"Atlas Pro launch voiceover.","inLibrary":true,"addedToLibraryAt":"2026-10-24T09:00:00.000Z","generationId":null,"createdAt":"2026-10-24T09:00:00.000Z"}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioGet401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioGet403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioGet404ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioGet429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/audio/ad118d28-e741-45a5-b942-b284fb653a77' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]},"delete":{"operationId":"audio.delete","summary":"Delete an audio file","description":"Permanently delete one audio file. This cannot be undone.","tags":["Audio"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Media ID.","example":"ad118d28-e741-45a5-b942-b284fb653a77"},"example":"ad118d28-e741-45a5-b942-b284fb653a77"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"deleted":{"const":true}},"required":["id","deleted"]}},"required":["data"]},"example":{"data":{"id":"ad118d28-e741-45a5-b942-b284fb653a77","deleted":true}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioDelete401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioDelete403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioDelete404ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AudioDelete429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request DELETE \\\n  --url 'https://www.rainbrand.com/api/v1/audio/ad118d28-e741-45a5-b942-b284fb653a77' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/images":{"get":{"operationId":"images.list","summary":"List images","description":"Browse images from one brand or across your brands.","tags":["Images"],"parameters":[{"name":"ids","in":"query","schema":{"type":"string","description":"Comma-separated image IDs to filter by (max 50). Selected-model generation IDs are not supported."},"allowEmptyValue":true,"allowReserved":true},{"name":"workspaceId","in":"query","schema":{"type":"string","minLength":1,"description":"Team workspace ID. Scopes results to that workspace. Omit to list across every workspace the caller can see."},"allowEmptyValue":true,"allowReserved":true},{"name":"brandSessionId","in":"query","schema":{"type":"string","format":"uuid","description":"Brand ID (from GET /brands). Omit to list images across all brands."},"allowEmptyValue":true,"allowReserved":true},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50,"description":"Results per page (1–100, default 50)"},"allowEmptyValue":true,"allowReserved":true},{"name":"cursor","in":"query","schema":{"type":"string","description":"Pagination cursor from a previous response's nextCursor"},"allowEmptyValue":true,"allowReserved":true},{"name":"source","in":"query","schema":{"enum":["generated","uploaded","scraped"],"type":"string","description":"Filter by image source. \"generated\" = AI-created, \"uploaded\" = user uploads, \"scraped\" = website images from brand onboarding"},"allowEmptyValue":true,"allowReserved":true},{"name":"status","in":"query","schema":{"enum":["pending","generating","completed","failed"],"type":"string","description":"Filter by generation status (only applies to generated images — uploaded/scraped images are excluded when this filter is active)"},"allowEmptyValue":true,"allowReserved":true},{"name":"actionType","in":"query","schema":{"enum":["generation","edit","resize","variant","recreate","remove-background","vectorize"],"type":"string","description":"Filter by action type (only applies to generated images — uploaded/scraped images are excluded when this filter is active)"},"allowEmptyValue":true,"allowReserved":true},{"name":"includeUrls","in":"query","schema":{"anyOf":[{"type":"boolean"},{"enum":["0","1","true","false"],"type":"string"}],"description":"Include signed download URLs for completed images"},"allowEmptyValue":true,"allowReserved":true},{"name":"wait","in":"query","schema":{"anyOf":[{"type":"boolean"},{"enum":["0","1","true","false"],"type":"string"}],"default":false,"description":"Hold the connection until every image in ids reaches a terminal status. Selected-model generation IDs are not supported. No-op when ids is omitted."},"allowEmptyValue":true,"allowReserved":true},{"name":"timeout","in":"query","schema":{"type":"integer","minimum":1,"maximum":295,"default":120,"description":"Max seconds to wait (default 120, max 295)"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"images":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"source":{"enum":["generated","uploaded","scraped"],"type":"string"},"brandSessionId":{"type":"string","format":"uuid"},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"aspectRatio":{"anyOf":[{"enum":["1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"type":"string"},{"type":"null"}]},"width":{"anyOf":[{"type":"number"},{"type":"null"}]},"height":{"anyOf":[{"type":"number"},{"type":"null"}]},"actionType":{"anyOf":[{"enum":["generation","edit","resize","variant","recreate","remove-background","vectorize"],"type":"string"},{"type":"null"}]},"variantGroupId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"status":{"anyOf":[{"enum":["pending","generating","completed","failed"],"type":"string"},{"type":"null"}]},"failureReason":{"anyOf":[{"enum":["content_safety","rate_limited"],"type":"string"},{"type":"null"}]},"imageUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"workspaceId":{"anyOf":[{"type":"string"},{"type":"null"}]},"workspaceName":{"type":"string"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["id","source","prompt","description","aspectRatio","width","height","actionType","variantGroupId","status","failureReason","workspaceId","workspaceName","createdAt"]}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"hasMore":{"type":"boolean"}},"required":["images","nextCursor","hasMore"]}},"required":["data"]},"example":{"data":{"images":[{"id":"b73f2048-38a5-4ea7-a6f7-5e1b4d06d990","source":"generated","status":"completed","failureReason":null,"prompt":"Acme Inc. Atlas Pro launch image with the headline \"Meet Atlas Pro\".","description":"Atlas Pro centered on a yellow background.","imageUrl":"https://www.rainbrand.com/img/b73f2048-38a5-4ea7-a6f7-5e1b4d06d990","aspectRatio":"3:2","width":1536,"height":1024,"actionType":"generation","variantGroupId":null,"workspaceId":null,"workspaceName":"Personal","createdAt":"2026-10-24T09:00:00.000Z","brandSessionId":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164"}],"nextCursor":null,"hasMore":false}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImagesList401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImagesList403ErrorResponse"}}}},"422":{"description":"422","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImagesList422ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImagesList429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/images' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]},"delete":{"operationId":"images.deleteMany","summary":"Delete images","description":"Permanently delete the selected images. This cannot be undone.","tags":["Images"],"parameters":[{"name":"ids","in":"query","required":true,"schema":{"type":"string","description":"Comma-separated image IDs to delete (1–50). Selected-model generation IDs are not supported.","example":"b73f2048-38a5-4ea7-a6f7-5e1b4d06d990"},"allowEmptyValue":true,"allowReserved":true,"example":"b73f2048-38a5-4ea7-a6f7-5e1b4d06d990"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"deletedCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many images were deleted. May be lower than the number of ids passed — ids that aren't yours or were already deleted are skipped, not errored."}},"required":["deletedCount"]}},"required":["data"]},"example":{"data":{"deletedCount":1}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImagesDeleteMany401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImagesDeleteMany403ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImagesDeleteMany429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request DELETE \\\n  --url 'https://www.rainbrand.com/api/v1/images?ids=b73f2048-38a5-4ea7-a6f7-5e1b4d06d990' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/images/{id}":{"get":{"operationId":"images.get","summary":"Get an image","description":"Retrieve an image and its current status.","tags":["Images"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Image ID — works for generated, uploaded, and scraped images","example":"b73f2048-38a5-4ea7-a6f7-5e1b4d06d990"},"example":"b73f2048-38a5-4ea7-a6f7-5e1b4d06d990"},{"name":"wait","in":"query","schema":{"anyOf":[{"type":"boolean"},{"enum":["0","1","true","false"],"type":"string"}],"default":false,"description":"Hold the connection until the resource reaches a terminal status"},"allowEmptyValue":true,"allowReserved":true},{"name":"timeout","in":"query","schema":{"type":"integer","minimum":1,"maximum":295,"default":120,"description":"Max seconds to wait (default 120, max 295)"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"source":{"enum":["generated","uploaded","scraped"],"type":"string"},"status":{"anyOf":[{"enum":["pending","generating","completed","failed"],"type":"string"},{"type":"null"}]},"failureReason":{"anyOf":[{"enum":["content_safety","rate_limited"],"type":"string"},{"type":"null"}]},"failure":{"anyOf":[{"type":"object","properties":{"code":{"const":"upstream_failed"},"message":{"type":"string"},"retryable":{"type":"boolean","description":"True when a new attempt with the same request may succeed; if you sent an Idempotency-Key, use a new key for it. False when the request must change first, or when a video may still be finishing and already billed."},"providerMessage":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The provider's explanation of why it rejected the request, with links and secrets removed. Null when the provider gave none, or when the failure concerns Rainbrand's own account or a provider-side error. Its wording can change."}},"required":["code","message","retryable","providerMessage"],"title":"upstream_failed"},{"type":"null"}]},"prompt":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"imageUrl":{"anyOf":[{"type":"string"},{"type":"null"}]},"aspectRatio":{"anyOf":[{"enum":["1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"type":"string"},{"type":"null"}]},"width":{"anyOf":[{"type":"number"},{"type":"null"}]},"height":{"anyOf":[{"type":"number"},{"type":"null"}]},"actionType":{"anyOf":[{"enum":["generation","edit","resize","variant","recreate","remove-background","vectorize"],"type":"string"},{"type":"null"}]},"variantGroupId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"workspaceId":{"anyOf":[{"type":"string"},{"type":"null"}]},"workspaceName":{"type":"string"},"createdAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["id","source","status","failureReason","failure","prompt","description","imageUrl","aspectRatio","width","height","actionType","variantGroupId","workspaceId","workspaceName","createdAt"]}},"required":["data"]},"example":{"data":{"id":"b73f2048-38a5-4ea7-a6f7-5e1b4d06d990","source":"generated","status":"completed","failureReason":null,"prompt":"Acme Inc. Atlas Pro launch image with the headline \"Meet Atlas Pro\".","description":"Atlas Pro centered on a yellow background.","imageUrl":"https://www.rainbrand.com/img/b73f2048-38a5-4ea7-a6f7-5e1b4d06d990","aspectRatio":"3:2","width":1536,"height":1024,"actionType":"generation","variantGroupId":null,"workspaceId":null,"workspaceName":"Personal","createdAt":"2026-10-24T09:00:00.000Z","failure":null}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImagesGet401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImagesGet403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImagesGet404ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImagesGet429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/images/b73f2048-38a5-4ea7-a6f7-5e1b4d06d990' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]},"delete":{"operationId":"images.delete","summary":"Delete an image","description":"Permanently delete an image. This cannot be undone.","tags":["Images"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Image ID. Selected-model generation IDs are not supported.","example":"b73f2048-38a5-4ea7-a6f7-5e1b4d06d990"},"example":"b73f2048-38a5-4ea7-a6f7-5e1b4d06d990"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"source":{"enum":["generated","uploaded","scraped"],"type":"string"},"workspaceId":{"anyOf":[{"type":"string"},{"type":"null"}]},"workspaceName":{"type":"string"}},"required":["id","source","workspaceId","workspaceName"]}},"required":["data"]},"example":{"data":{"id":"b73f2048-38a5-4ea7-a6f7-5e1b4d06d990","source":"generated","workspaceId":null,"workspaceName":"Personal"}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImagesDelete401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImagesDelete403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImagesDelete404ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImagesDelete429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request DELETE \\\n  --url 'https://www.rainbrand.com/api/v1/images/b73f2048-38a5-4ea7-a6f7-5e1b4d06d990' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/images/search":{"post":{"operationId":"images.search","summary":"Search Library images","description":"Find Brand Library images by what they depict, such as product photos or packaging. Generated images are excluded.","tags":["Images"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"brandSessionId":{"type":"string","format":"uuid","description":"Brand ID to search within"},"query":{"type":"string","minLength":1,"maxLength":500,"description":"Visual concept to search for. Plain noun phrases work best — e.g., 'drone in flight', 'team working at desks', 'product on white background'."},"limit":{"type":"integer","minimum":1,"maximum":50,"default":10,"description":"Max results to return (default 10, max 50)"},"cursor":{"type":"string","description":"Pagination cursor from a previous response's nextCursor"},"maxDistance":{"type":"number","minimum":0,"maximum":2,"default":0.7,"description":"Cosine-distance cutoff (smaller = stricter). The default of 0.7 works well for most queries. Use a higher value for broader matching or a lower value for stricter results. Distances above this threshold are excluded."}},"required":["brandSessionId","query"],"examples":[{"brandSessionId":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","query":"Atlas Pro product packaging on a white background"}]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"query":{"type":"string"},"candidates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"url":{"type":"string"},"description":{"type":"string"},"width":{"anyOf":[{"type":"number"},{"type":"null"}]},"height":{"anyOf":[{"type":"number"},{"type":"null"}]},"aspectRatio":{"anyOf":[{"enum":["1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"type":"string"},{"type":"null"}]},"distance":{"type":"number","description":"Opaque relevance score; smaller = closer."}},"required":["id","url","description","width","height","aspectRatio","distance"]}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"hasMore":{"type":"boolean"}},"required":["query","candidates","nextCursor","hasMore"]}},"required":["data"]},"example":{"data":{"query":"Atlas Pro product packaging on a white background","candidates":[{"id":"a8dd463a-09ab-4307-93e5-6e4cecd61ffd","url":"https://www.rainbrand.com/img/a8dd463a-09ab-4307-93e5-6e4cecd61ffd","description":"Atlas Pro packaging on white.","width":1536,"height":1024,"aspectRatio":"3:2","distance":0.24}],"nextCursor":null,"hasMore":false}}}}},"400":{"description":"400","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImagesSearch400ErrorResponse"}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImagesSearch401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImagesSearch403ErrorResponse"}}}},"422":{"description":"422","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImagesSearch422ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImagesSearch429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request POST \\\n  --url 'https://www.rainbrand.com/api/v1/images/search' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\" \\\n  --header \"Content-Type: application/json\" \\\n  --data '{\n  \"brandSessionId\": \"e6220a5e-4a68-4d39-8bb9-5105e9a3a164\",\n  \"query\": \"Atlas Pro product packaging on a white background\"\n}'"}]}},"/briefs":{"post":{"operationId":"briefs.create","summary":"Request a Brief","description":"Prepare brand guidance and selected assets for a specific task. Retrieve the result with [Get a Brief](/api-reference/briefs/get-a-brief).","tags":["Briefs"],"parameters":[{"name":"idempotency-key","in":"header","schema":{"type":"string","minLength":1,"maxLength":255,"description":"Optional key for safely retrying this request. Reuse it only with the same body."}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"brandSessionId":{"type":"string","format":"uuid","description":"Brand to prepare the brief from."},"task":{"type":"string","minLength":1,"maxLength":4000,"description":"What you are about to make, in plain language. Include any context or instructions that would help select the right brand guidance and files."}},"required":["brandSessionId","task"],"additionalProperties":false,"examples":[{"brandSessionId":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","task":"A landscape launch image for Acme Inc. Atlas Pro. Center the product and include the headline \"Meet Atlas Pro\" and the call to action \"Explore Atlas Pro\"."}]}}}},"responses":{"202":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Brief ID."},"status":{"enum":["pending","processing","completed","failed"],"type":"string"}},"required":["id","status"]}},"required":["data"]},"example":{"data":{"id":"657bcf79-1f2f-47fa-90f8-9245142980ed","status":"pending"}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefsCreate401ErrorResponse"}}}},"402":{"description":"402","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefsCreate402ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefsCreate403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefsCreate404ErrorResponse"}}}},"409":{"description":"409","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefsCreate409ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefsCreate429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}},"500":{"description":"500","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefsCreate500ErrorResponse"}}}}},"x-mint":{"href":"/api-reference/briefs/request-a-brief"},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request POST \\\n  --url 'https://www.rainbrand.com/api/v1/briefs' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\" \\\n  --header \"Content-Type: application/json\" \\\n  --data '{\n  \"brandSessionId\": \"e6220a5e-4a68-4d39-8bb9-5105e9a3a164\",\n  \"task\": \"A landscape launch image for Acme Inc. Atlas Pro. Center the product and include the headline \\\"Meet Atlas Pro\\\" and the call to action \\\"Explore Atlas Pro\\\".\"\n}'"}]}},"/briefs/{id}":{"get":{"operationId":"briefs.get","summary":"Get a Brief","description":"Get a Brief's current status and, when complete, its Markdown guidance and selected assets.","tags":["Briefs"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Brief ID.","example":"657bcf79-1f2f-47fa-90f8-9245142980ed"},"example":"657bcf79-1f2f-47fa-90f8-9245142980ed"},{"name":"wait","in":"query","schema":{"anyOf":[{"type":"boolean"},{"enum":["0","1","true","false"],"type":"string"}],"default":false,"description":"Hold the connection until the resource reaches a terminal status"},"allowEmptyValue":true,"allowReserved":true},{"name":"timeout","in":"query","schema":{"type":"integer","minimum":1,"maximum":295,"default":120,"description":"Max seconds to wait (default 120, max 295)"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Brief ID."},"status":{"enum":["pending","processing","completed","failed"],"type":"string","description":"Current status of the brief."},"skillId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"description":"Brand Skill version used to prepare the brief, or null if that version was deleted."},"createdAt":{"type":"string","format":"date-time","description":"When the brief was requested."},"completedAt":{"type":"string","format":"date-time","description":"When the brief completed."},"guidance":{"type":"string","description":"Brand guidance for the task, in Markdown. Available when completed."},"assets":{"type":"array","items":{"type":"object","properties":{"kind":{"enum":["logo","image","font","font_render"],"type":"string","description":"Asset type. A font render is an image preview of a font."},"mediaType":{"enum":["image/avif","image/gif","image/jpeg","image/png","image/svg+xml","image/webp","image/x-icon","font/otf","font/ttf","font/woff","font/woff2"],"type":"string","description":"MIME type of the image or font file."},"url":{"type":"string","format":"uri","description":"Stable Rainbrand asset URL with no scheduled expiry. Redirects to fresh storage access while the completed brief, brand, saved Brand Skill version, and asset remain available. Anyone with this link can access the asset without signing in."},"mediaId":{"type":"string","format":"uuid","description":"Media ID when the asset is a Library file. Absent for files that live inside the Brand Skill, such as fonts."}},"required":["kind","mediaType","url"],"additionalProperties":false},"description":"Files selected for the task. Available when completed."},"error":{"type":"object","properties":{"code":{"type":"string","description":"Error code identifying the failure."},"message":{"type":"string","description":"Human-readable explanation of the failure."},"retryable":{"type":"boolean","description":"Whether you can retry by creating a new brief with a new idempotency key."}},"required":["code","message","retryable"],"description":"Failure details. Available when the brief failed."},"failedAt":{"type":"string","format":"date-time","description":"When the brief failed."}},"required":["id","status","skillId","createdAt"]}},"required":["data"]},"example":{"data":{"id":"657bcf79-1f2f-47fa-90f8-9245142980ed","status":"completed","skillId":"6590fb89-c177-45b3-85d4-74ab6b92dc2a","createdAt":"2026-10-24T09:00:00.000Z","completedAt":"2026-10-24T09:00:30.000Z","guidance":"# Atlas Pro launch image\n\nUse Acme Inc. yellow #FFD600. Center Atlas Pro with room for the headline \"Meet Atlas Pro\" and call to action \"Explore Atlas Pro\".","assets":[{"kind":"image","mediaType":"image/png","url":"https://assets.acme.com/atlas-pro/product.png"}]}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefsGet401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefsGet403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefsGet404ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefsGet429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/briefs/657bcf79-1f2f-47fa-90f8-9245142980ed' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/reviews":{"post":{"operationId":"reviews.create","summary":"Request a Review","description":"Check an asset against a brand's guidance. Retrieve the findings with [Get a Review](/api-reference/reviews/get-a-review).","tags":["Reviews"],"parameters":[{"name":"idempotency-key","in":"header","schema":{"type":"string","minLength":1,"maxLength":255,"description":"Optional key for safely retrying this request. Reuse it only with the same body."}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"brandSessionId":{"type":"string","format":"uuid","description":"Brand to review against."},"assets":{"type":"array","minItems":1,"maxItems":1,"items":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri","description":"Public HTTPS URL of the image. Downloaded when the Review is created."},"filename":{"type":"string","minLength":1,"maxLength":240,"description":"Filename for the linked image. Derived from the URL when omitted."}},"required":["url"],"additionalProperties":false,"title":"Public URL"},{"type":"object","properties":{"uploadId":{"type":"string","format":"uuid","description":"ID of a completed temporary upload from POST /uploads."}},"required":["uploadId"],"additionalProperties":false,"title":"Temporary upload"},{"type":"object","properties":{"imageId":{"type":"string","format":"uuid","description":"ID of a completed image in the same workspace."}},"required":["imageId"],"additionalProperties":false,"title":"Image ID"}]},"description":"Image to review. Supported formats: PNG, JPEG, WebP, GIF, and SVG."},"checks":{"type":"array","minItems":1,"items":{"enum":["color","typography","logo","copy"],"type":"string"},"description":"Choose which checks to run: color, typography, logo, or copy, without duplicates. Completed outcomes are returned under results."},"context":{"type":"object","properties":{"notes":{"type":"string","minLength":1,"maxLength":4000,"description":"What the image is for, exact expected text, or other review guidance."},"images":{"type":"array","maxItems":10,"items":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri","description":"Public HTTPS URL of the image. Downloaded when the Review is created."},"filename":{"type":"string","minLength":1,"maxLength":240,"description":"Filename for the linked image. Derived from the URL when omitted."}},"required":["url"],"additionalProperties":false,"title":"Public URL"},{"type":"object","properties":{"uploadId":{"type":"string","format":"uuid","description":"ID of a completed temporary upload from POST /uploads."}},"required":["uploadId"],"additionalProperties":false,"title":"Temporary upload"},{"type":"object","properties":{"imageId":{"type":"string","format":"uuid","description":"ID of a completed image in the same workspace."}},"required":["imageId"],"additionalProperties":false,"title":"Image ID"}]},"description":"Supporting images to compare against, such as a logo or product photo."}},"additionalProperties":false,"description":"Additional guidance or supporting images for the Review.","if":{"not":{"required":["notes"]}},"then":{"required":["images"],"properties":{"images":{"minItems":1}}}}},"required":["brandSessionId","assets","checks"],"additionalProperties":false,"examples":[{"brandSessionId":"e6220a5e-4a68-4d39-8bb9-5105e9a3a164","assets":[{"imageId":"b73f2048-38a5-4ea7-a6f7-5e1b4d06d990"}],"checks":["color","copy"],"context":{"notes":"Acme Inc. Atlas Pro launch image. Expected headline: \"Meet Atlas Pro\". Expected call to action: \"Explore Atlas Pro\"."}}]}}}},"responses":{"202":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Review ID."},"status":{"enum":["pending","processing","completed","failed"],"type":"string"}},"required":["id","status"]}},"required":["data"]},"example":{"data":{"id":"77be63b7-3c27-4b82-b023-af1f6f5a0d2b","status":"pending"}}}}},"400":{"description":"400","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewsCreate400ErrorResponse"}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewsCreate401ErrorResponse"}}}},"402":{"description":"402","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewsCreate402ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewsCreate403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewsCreate404ErrorResponse"}}}},"409":{"description":"409","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewsCreate409ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewsCreate429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}},"500":{"description":"500","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewsCreate500ErrorResponse"}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request POST \\\n  --url 'https://www.rainbrand.com/api/v1/reviews' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\" \\\n  --header \"Content-Type: application/json\" \\\n  --data '{\n  \"brandSessionId\": \"e6220a5e-4a68-4d39-8bb9-5105e9a3a164\",\n  \"assets\": [\n    {\n      \"imageId\": \"b73f2048-38a5-4ea7-a6f7-5e1b4d06d990\"\n    }\n  ],\n  \"checks\": [\n    \"color\",\n    \"copy\"\n  ],\n  \"context\": {\n    \"notes\": \"Acme Inc. Atlas Pro launch image. Expected headline: \\\"Meet Atlas Pro\\\". Expected call to action: \\\"Explore Atlas Pro\\\".\"\n  }\n}'"}]}},"/reviews/{id}":{"get":{"operationId":"reviews.get","summary":"Get a Review","description":"Read a Review's progress and completed findings.","tags":["Reviews"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid","description":"Review ID.","example":"77be63b7-3c27-4b82-b023-af1f6f5a0d2b"},"example":"77be63b7-3c27-4b82-b023-af1f6f5a0d2b"},{"name":"wait","in":"query","schema":{"anyOf":[{"type":"boolean"},{"enum":["0","1","true","false"],"type":"string"}],"default":false,"description":"Hold the connection until the resource reaches a terminal status"},"allowEmptyValue":true,"allowReserved":true},{"name":"timeout","in":"query","schema":{"type":"integer","minimum":1,"maximum":295,"default":120,"description":"Max seconds to wait (default 120, max 295)"},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","description":"Review ID."},"status":{"enum":["pending","processing","completed","failed"],"type":"string","description":"pending means queued; processing means running; completed has results; failed has error details."},"createdAt":{"type":"string","format":"date-time","description":"When the review was created."},"results":{"type":"object","properties":{"color":{"type":"object","properties":{"verdict":{"enum":["pass","fail","uncertain","not_applicable"],"type":"string","description":"Whether the asset meets the brand guidance: pass, fail, uncertain when evidence is insufficient, or not_applicable when the check does not apply."},"note":{"type":"string","description":"The reason for the verdict, in 25 words or fewer."},"evidence":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Signed PNG link, valid for seven days. Get the review again for a fresh link."},"expiresAt":{"type":"string","format":"date-time","description":"When the signed link expires, as an ISO date and time."}},"required":["url","expiresAt"]},"description":"Pictures supporting the verdict. Empty when the verdict is not_applicable."}},"required":["verdict","note","evidence"]},"typography":{"type":"object","properties":{"verdict":{"enum":["pass","fail","uncertain","not_applicable"],"type":"string","description":"Whether the asset meets the brand guidance: pass, fail, uncertain when evidence is insufficient, or not_applicable when the check does not apply."},"note":{"type":"string","description":"The reason for the verdict, in 25 words or fewer."},"evidence":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Signed PNG link, valid for seven days. Get the review again for a fresh link."},"expiresAt":{"type":"string","format":"date-time","description":"When the signed link expires, as an ISO date and time."}},"required":["url","expiresAt"]},"description":"Pictures supporting the verdict. Empty when the verdict is not_applicable."}},"required":["verdict","note","evidence"]},"logo":{"type":"object","properties":{"verdict":{"enum":["pass","fail","uncertain","not_applicable"],"type":"string","description":"Whether the asset meets the brand guidance: pass, fail, uncertain when evidence is insufficient, or not_applicable when the check does not apply."},"note":{"type":"string","description":"The reason for the verdict, in 25 words or fewer."},"evidence":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Signed PNG link, valid for seven days. Get the review again for a fresh link."},"expiresAt":{"type":"string","format":"date-time","description":"When the signed link expires, as an ISO date and time."}},"required":["url","expiresAt"]},"description":"Pictures supporting the verdict. Empty when the verdict is not_applicable."}},"required":["verdict","note","evidence"]},"copy":{"type":"object","properties":{"verdict":{"enum":["pass","fail","uncertain","not_applicable"],"type":"string","description":"Whether the asset meets the brand guidance: pass, fail, uncertain when evidence is insufficient, or not_applicable when the check does not apply."},"note":{"type":"string","description":"The reason for the verdict, in 25 words or fewer."},"evidence":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Signed PNG link, valid for seven days. Get the review again for a fresh link."},"expiresAt":{"type":"string","format":"date-time","description":"When the signed link expires, as an ISO date and time."}},"required":["url","expiresAt"]},"description":"Pictures supporting the verdict. Empty when the verdict is not_applicable."}},"required":["verdict","note","evidence"]}},"description":"Each result includes a verdict, a short reason, and evidence images showing what was measured or compared, where available. Results are present only when status is completed. Evidence can include multiple images and is empty when the verdict is not_applicable."},"completedAt":{"type":"string","format":"date-time","description":"When the review completed. Present only when status is completed."},"error":{"type":"object","properties":{"code":{"type":"string","description":"Failure code for handling the error in your application."},"message":{"type":"string","description":"A description of what went wrong."},"retryable":{"type":"boolean","description":"Whether creating a new review may succeed. Retry with a new POST without reusing the previous Idempotency-Key."}},"required":["code","message","retryable"],"description":"Failure details. Present only when status is failed."},"failedAt":{"type":"string","format":"date-time","description":"When the review failed. Present only when status is failed."}},"required":["id","status","createdAt"]}},"required":["data"],"examples":[{"data":{"id":"77be63b7-3c27-4b82-b023-af1f6f5a0d2b","status":"completed","createdAt":"2026-10-01T12:00:00.000Z","completedAt":"2026-10-01T12:00:45.000Z","results":{"color":{"verdict":"pass","note":"The yellow background matches Acme Inc.'s Atlas Pro palette.","evidence":[{"url":"https://assets.acme.com/reviews/atlas-pro-color.png?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJ1c2VyLWFzc2V0cy9yZXZpZXdzL2F0bGFzLXByby1jb2xvci5wbmciLCJpYXQiOjE3OTA4NTYwNDUsImV4cCI6MTc5MTQ2MDg0NX0.dXYfgXwcU0j289gMXVxqRAm1dPABegVAvaEAh4qiFx8","expiresAt":"2026-10-08T12:00:45.000Z"}]},"copy":{"verdict":"pass","note":"The headline reads \"Meet Atlas Pro\" and the call to action reads \"Explore Atlas Pro\".","evidence":[{"url":"https://assets.acme.com/reviews/atlas-pro-copy.png?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJ1c2VyLWFzc2V0cy9yZXZpZXdzL2F0bGFzLXByby1jb3B5LnBuZyIsImlhdCI6MTc5MDg1NjA0NSwiZXhwIjoxNzkxNDYwODQ1fQ.OJOV1zZ5Xwe9ovL-2KsJEjPsXw9gzO_F0Yc2nipfwno","expiresAt":"2026-10-08T12:00:45.000Z"}]}}}}]}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewsGet401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewsGet403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewsGet404ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewsGet429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/reviews/77be63b7-3c27-4b82-b023-af1f6f5a0d2b' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/uploads":{"post":{"operationId":"uploads.create","summary":"Upload files","description":"Make local files available to Rainbrand requests, such as Acme Inc.'s brand guide or an Atlas Pro product photo.\n\nThis endpoint reserves storage and returns an `uploadUrl` for each file. Send each file's raw bytes with `PUT` to its `uploadUrl`, using the returned `headers`.\n\nOnce the upload is complete, use `uploadId` to:\n\n- Supply file sources when you [add a brand](/api-reference/brands/create-a-brand) or [prepare a Brand Edit](/api-reference/brands/create-a-brand-edit).\n- [Save media in a Brand Library](/api-reference/library/add-to-a-brand-library) for reuse.\n- [Upload a custom brand font](/api-reference/brands/upload-a-brand-font).\n- [Request a Review](/api-reference/reviews/request-a-review) of an image or provide supporting images.\n\nFor [generation requests](/api-reference/generations/start-a-generation), pass the returned `url` where the model's input schema expects a file URL. Set `contentType` on this upload request to match the file. The `uploadUrl` is only for sending the bytes.\n\nUploads are temporary and expire at `expiresAt`. Uploading alone does not add the file to a brand or its Library.","tags":["Uploads"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"workspaceId":{"type":"string","minLength":1,"description":"Team ID from GET /workspaces. Omit for your personal account."},"files":{"type":"array","minItems":1,"maxItems":30,"items":{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":240,"description":"Original filename used when the upload is consumed"},"byteLength":{"type":"integer","minimum":-9007199254740991,"maximum":104857600,"exclusiveMinimum":0,"description":"Exact file size in bytes"},"contentType":{"type":"string","maxLength":255,"description":"The file's MIME type, such as image/png. Set it before passing the upload's url to a model, so the file is served with that type. Supported types are kept: PNG, JPEG, WebP, AVIF, GIF, SVG, MP4, WebM, MOV, MP3, WAV, OGG, FLAC, AAC, M4A, and PDF. Others, or none, are stored as application/octet-stream."}},"required":["filename","byteLength"],"additionalProperties":false},"description":"Local files to stage (1–30, at most 100 MiB each and 256 MiB combined)"}},"required":["files"],"additionalProperties":false,"examples":[{"files":[{"filename":"atlas-pro-front.png","byteLength":1458200,"contentType":"image/png"}]}]}}}},"responses":{"201":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"uploads":{"type":"array","items":{"type":"object","properties":{"uploadId":{"type":"string","format":"uuid"},"filename":{"type":"string"},"byteLength":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"exclusiveMinimum":0},"uploadUrl":{"type":"string","format":"uri"},"url":{"type":"string","format":"uri","description":"Temporary link to the uploaded file, valid until expiresAt once the PUT completes. Pass it where a model input expects a file URL in POST /generations, after reserving the upload with its contentType. Use uploadId everywhere else."},"method":{"const":"PUT"},"headers":{"type":"object","properties":{"content-type":{"type":"string","description":"The requested contentType when it is kept, otherwise application/octet-stream."},"cache-control":{"const":"max-age=3600"},"x-upsert":{"const":"false"}},"required":["content-type","cache-control","x-upsert"]},"expiresAt":{"type":"string","format":"date-time","x-native-type":"date"}},"required":["uploadId","filename","byteLength","uploadUrl","url","method","headers","expiresAt"]}}},"required":["uploads"]}},"required":["data"]},"example":{"data":{"uploads":[{"uploadId":"3f2b8c1e-9a4d-4e7b-8c2f-1d5e6a7b8c9d","filename":"atlas-pro-front.png","byteLength":1458200,"uploadUrl":"https://uploads.acme.com/atlas-pro-front.png","url":"https://assets.acme.com/atlas-pro-front.png","method":"PUT","headers":{"cache-control":"max-age=3600","x-upsert":"false","content-type":"image/png"},"expiresAt":"2026-10-25T09:00:00.000Z"}]}}}}},"400":{"description":"400","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadsCreate400ErrorResponse"}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadsCreate401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadsCreate403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadsCreate404ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadsCreate429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}},"500":{"description":"500","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadsCreate500ErrorResponse"}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request POST \\\n  --url 'https://www.rainbrand.com/api/v1/uploads' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\" \\\n  --header \"Content-Type: application/json\" \\\n  --data '{\n  \"files\": [\n    {\n      \"filename\": \"atlas-pro-front.png\",\n      \"byteLength\": 1458200,\n      \"contentType\": \"image/png\"\n    }\n  ]\n}'"}]}},"/account":{"get":{"operationId":"account.get","summary":"Get account","description":"Return basic profile information for the authenticated user. Use it as a `whoami` check to verify which account the credentials belong to.","tags":["Account"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"email":{"type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["email","name"]}},"required":["data"]},"example":{"data":{"email":"developer@acme.com","name":"Alex Morgan"}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountGet401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountGet403ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountGet429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/account' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/credits":{"get":{"operationId":"credits.get","summary":"Get credit balance","description":"Read the credit balance and action costs for your personal account or a team. See [Credits and limits](/api/usage-limits) for billing and recovery.","tags":["Account"],"parameters":[{"name":"workspaceId","in":"query","schema":{"type":"string","minLength":1,"description":"Team ID from GET /workspaces. Omit to check your personal account."},"allowEmptyValue":true,"allowReserved":true}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"balance":{"type":"number"},"unlimited":{"type":"boolean"},"pricing_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The workspace's pricing version. Credit amounts are comparable only within one version."},"credit_costs":{"type":"object","properties":{"brand_creation":{"type":"number"},"brand_edit":{"type":"number"},"brief":{"type":"number"},"review":{"type":"number"},"image_2k":{"type":"number","description":"Compatibility pricing field for 2K images; not a selected-model generation price."},"image_4k":{"type":"number","description":"Compatibility pricing field for 4K images; not a selected-model generation price."}},"required":["brand_creation","brand_edit","brief","review","image_2k","image_4k"],"description":"Credits each action costs this workspace. 0 means the action is free right now. Selected-model generations are priced per request and aren't listed."},"free_brand_creations":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Brand creations the workspace can still make without spending credits"}},"required":["balance","unlimited","pricing_version","credit_costs","free_brand_creations"]}},"required":["data"]},"example":{"data":{"balance":4200,"unlimited":false,"pricing_version":2,"free_brand_creations":0,"credit_costs":{"brand_creation":500,"brand_edit":300,"brief":100,"review":200,"image_2k":100,"image_4k":200}}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditsGet401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditsGet403ErrorResponse"}}}},"404":{"description":"404","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditsGet404ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditsGet429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}},"500":{"description":"500","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditsGet500ErrorResponse"}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/credits' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}},"/workspaces":{"get":{"operationId":"workspaces.list","summary":"List workspaces","description":"Find your personal account and teams. Use a team's ID as workspaceId when creating a brand, staging uploads, or reading its credit balance.","tags":["Account"],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"workspaces":{"type":"array","items":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"null"}]},"name":{"type":"string"},"is_personal":{"type":"boolean"},"pricing_version":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The workspace's pricing version. Credit amounts are comparable only within one version."}},"required":["id","name","is_personal","pricing_version"]}}},"required":["workspaces"]}},"required":["data"]},"example":{"data":{"workspaces":[{"id":"nY2c6wA9rK7bM4qV8jT3pL","name":"Personal","is_personal":true,"pricing_version":2},{"id":"Hq7n3kPz6cT4aY9mB2xV8","name":"Acme Inc.","is_personal":false,"pricing_version":2}]}}}}},"401":{"description":"401","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspacesList401ErrorResponse"}}}},"403":{"description":"403","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspacesList403ErrorResponse"}}}},"429":{"description":"429","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspacesList429ErrorResponse"}}},"headers":{"Retry-After":{"description":"Seconds until the applicable request or operation limit resets. Present when the limiter can calculate the delay.","schema":{"type":"integer","minimum":0}}}}},"x-codeSamples":[{"lang":"bash","label":"cURL","source":"curl --request GET \\\n  --url 'https://www.rainbrand.com/api/v1/workspaces' \\\n  --header \"x-api-key: $RAINBRAND_API_KEY\""}]}}}}