{"openapi":"3.1.0","info":{"title":"ReelDrop API","version":"0.1.0"},"paths":{"/auth/me":{"get":{"tags":["auth"],"summary":"Me","description":"Returns the current user + their personal workspace.\nJIT-provisions both if this is their very first API call.\nFrontend calls this immediately after Clerk sign-in/sign-up.","operationId":"me_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeOut"}}}}},"security":[{"HTTPBearer":[]}]},"delete":{"tags":["auth"],"summary":"Delete Account Endpoint","description":"Permanently delete the signed-in account — the Settings danger-zone action.\n\nOrder matters. The cascade runs first and the Clerk user is deleted second,\nso a failure in the middle leaves the account still signed-in-able and\nretryable rather than orphaned: a live Clerk user with no data is\nrecoverable, a deleted Clerk user with live Instagram tokens is not.","operationId":"delete_account_endpoint_auth_me_delete","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteAccountRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]},"patch":{"tags":["auth"],"summary":"Update Me","description":"Update the user's onboarding profile (name, role, niches, referral source).\n\nName is also written to Clerk by the client before this call — Clerk is the\nsource of truth for display name everywhere else, and the `user.updated`\nwebhook copies Clerk → Mongo unconditionally. Writing both keeps the two\nstores holding the same value, so that echoing webhook is a harmless no-op\ninstead of a silent revert.","operationId":"update_me_auth_me_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/auth/attribution":{"post":{"tags":["auth"],"summary":"Set Attribution","description":"Persist the referral token captured pre-signup (localStorage / rd_ref or\nrd_uref cookie, pushed by ReferralAttribution after sign-in).\n\nFirst-touch wins and is server-enforced across both programs: once either\n`referred_by_creator` or `referred_by_user_id` is set, neither is ever\noverwritten. Replays and later clicks on other links are harmless no-ops\n(204 either way — idempotent by design).","operationId":"set_attribution_auth_attribution_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttributionRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/ai/reel/upload-url":{"post":{"tags":["ai"],"summary":"Get Video Upload Url","description":"Return a presigned S3 PUT URL for direct browser-to-S3 upload (small files / images).","operationId":"get_video_upload_url_ai_reel_upload_url_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_get_video_upload_url_ai_reel_upload_url_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoUploadUrlResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/ai/thumbnail-upload-url":{"post":{"tags":["ai"],"summary":"Get Thumbnail Upload Url","description":"Presigned PUT URL for replacing a scheduled post's cover/thumbnail.\n\nStored under a durable, meaningful prefix (not tmp/) so it survives until publish.","operationId":"get_thumbnail_upload_url_ai_thumbnail_upload_url_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_get_thumbnail_upload_url_ai_thumbnail_upload_url_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThumbnailUploadUrlResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/ai/attachment-upload-url":{"post":{"tags":["ai"],"summary":"Get Attachment Upload Url","description":"Presigned PUT URL for a DM attachment (a PDF a creator hands out from an\nautomation). Stored under a durable prefix so the link keeps working long\nafter the automation is built.\n\nUnlike the video route this one has a strict allow-list — a DM button can\nonly ever carry a PDF today, and an unbounded mime lets a caller stash\nanything under our CDN.","operationId":"get_attachment_upload_url_ai_attachment_upload_url_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_get_attachment_upload_url_ai_attachment_upload_url_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachmentUploadUrlResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/ai/reel/upload/init":{"post":{"tags":["ai"],"summary":"Init Multipart Upload","description":"Initiate an S3 multipart upload. Returns upload_id + s3_key.","operationId":"init_multipart_upload_ai_reel_upload_init_post","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_init_multipart_upload_ai_reel_upload_init_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartInitResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/ai/reel/upload/part-url":{"post":{"tags":["ai"],"summary":"Get Part Url","description":"Return a presigned URL for uploading one part. part_number is 1-indexed.","operationId":"get_part_url_ai_reel_upload_part_url_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartPartRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartPartResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/ai/reel/upload/complete":{"post":{"tags":["ai"],"summary":"Complete Upload","description":"Complete the S3 multipart upload after all parts have been PUT.","operationId":"complete_upload_ai_reel_upload_complete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartCompleteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartCompleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/ai/reel/upload/abort":{"post":{"tags":["ai"],"summary":"Abort Upload","description":"Abort an in-progress multipart upload (called when part uploads fail client-side).","operationId":"abort_upload_ai_reel_upload_abort_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MultipartAbortRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/ai/reel/generate":{"post":{"tags":["ai"],"summary":"Generate Reel","description":"Generate reel metadata using Gemini with video understanding.\nPass s3_key (from /reel/upload-url) to reference an already-uploaded video.\n`niche` is an optional override; \"general\" (the default) means auto-classify.","operationId":"generate_reel_ai_reel_generate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_generate_reel_ai_reel_generate_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelGenerateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ai/post/generate":{"post":{"tags":["ai"],"summary":"Generate Post","description":"Generate Post-mode (image carousel) caption/hashtag metadata using Gemini\nvision over the actual uploaded photos — the image equivalent of /reel/generate.","operationId":"generate_post_ai_post_generate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_generate_post_ai_post_generate_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelGenerateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ai/carousel/captions":{"post":{"tags":["ai"],"summary":"Generate Carousel Captions","operationId":"generate_carousel_captions_ai_carousel_captions_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CarouselCaptionsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReelGenerateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ai/carousel/outline":{"post":{"tags":["ai"],"summary":"Generate Outline","operationId":"generate_outline_ai_carousel_outline_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutlineRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/ai/carousel/themes":{"post":{"tags":["ai"],"summary":"Generate Themes","operationId":"generate_themes_ai_carousel_themes_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThemesRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/ai/carousel/theme-expand":{"post":{"tags":["ai"],"summary":"Expand Theme","operationId":"expand_theme_ai_carousel_theme_expand_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpandThemeRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/ai/carousel/analyze-reference":{"post":{"tags":["ai"],"summary":"Analyze Reference","operationId":"analyze_reference_ai_carousel_analyze_reference_post","requestBody":{"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/Body_analyze_reference_ai_carousel_analyze_reference_post"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/ai/carousel/image-gen-usage":{"get":{"tags":["ai"],"summary":"Image Gen Usage","operationId":"image_gen_usage_ai_carousel_image_gen_usage_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ai/carousel/generate-slide":{"post":{"tags":["ai"],"summary":"Generate Slide","operationId":"generate_slide_ai_carousel_generate_slide_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateSlideRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ai/carousel/generate-hook":{"post":{"tags":["ai"],"summary":"Generate Hook","description":"Generate the Slide-0 cover/hook image (the scroll-stopping thumbnail).","operationId":"generate_hook_ai_carousel_generate_hook_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateHookRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ai/reel/cover-text":{"post":{"tags":["ai"],"summary":"Reel Cover Text","description":"Write cover text from a topic, without watching the video.\n\nNo quota, deliberately: this is a small text call, `/ai/carousel/outline` already sets the\nprecedent that text generation isn't charged, and the whole point of this route is to be\nthe path that doesn't cost a video analysis. The caption credit stays on\n/ai/reel/generate, which is where the expensive part actually happens.","operationId":"reel_cover_text_ai_reel_cover_text_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoverTextRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/ai/reel/generate-thumbnail":{"post":{"tags":["ai"],"summary":"Generate Reel Thumbnail","description":"Generate a themed 9:16 reel cover. The cover TEXT comes from the video analysis already\nperformed by /ai/reel/generate (see cover_texts), so this route never touches the video —\nit only charges an image generation.","operationId":"generate_reel_thumbnail_ai_reel_generate_thumbnail_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateReelThumbnailRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ai/carousel/inpaint-slide":{"post":{"tags":["ai"],"summary":"Inpaint Slide","operationId":"inpaint_slide_ai_carousel_inpaint_slide_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InpaintSlideRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ai/carousel/free-edit-slide":{"post":{"tags":["ai"],"summary":"Free Edit Slide","operationId":"free_edit_slide_ai_carousel_free_edit_slide_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreeEditSlideRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ai/reel/inpaint-cover":{"post":{"tags":["ai"],"summary":"Inpaint Reel Cover","operationId":"inpaint_reel_cover_ai_reel_inpaint_cover_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InpaintSlideRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ai/reel/edit-cover":{"post":{"tags":["ai"],"summary":"Free Edit Reel Cover","operationId":"free_edit_reel_cover_ai_reel_edit_cover_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FreeEditSlideRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ai/youtube-thumbnail":{"get":{"tags":["ai"],"summary":"Youtube Thumbnail","operationId":"youtube_thumbnail_ai_youtube_thumbnail_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","title":"Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ai/opengraph":{"get":{"tags":["ai"],"summary":"Opengraph Preview","operationId":"opengraph_preview_ai_opengraph_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string","title":"Url"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ai/media-kit/images":{"post":{"tags":["ai"],"summary":"Media Kit Images","operationId":"media_kit_images_ai_media_kit_images_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaKitImagesRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/ai/media-kit/writeup":{"post":{"tags":["ai"],"summary":"Media Kit Writeup","description":"Draft the kit's About + audience copy in the creator's voice.\n\nFree like the other small text routes (/carousel/outline, /reel/cover-text):\nthe deliberate cost center stays on media analysis, not on a paragraph.","operationId":"media_kit_writeup_ai_media_kit_writeup_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaKitWriteupRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/ai/media-kit/infer-niche":{"post":{"tags":["ai"],"summary":"Media Kit Infer Niche","description":"Classify the account into a media kit niche from its bio + captions.\n\nUsed only when the user skipped picking niches during onboarding; the tab\ncaches the answer client-side so this runs once per session at most.","operationId":"media_kit_infer_niche_ai_media_kit_infer_niche_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaKitNicheRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/billing/plans":{"get":{"tags":["billing"],"summary":"List Available Plans","description":"Returns the plan_type keys currently sellable (i.e. their price ID is\nconfigured). The frontend can use this to know what's actually purchasable\nwithout hardcoding plan_type strings.","operationId":"list_available_plans_billing_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AvailablePlansResponse"}}}}}}},"/billing/checkout":{"post":{"tags":["billing"],"summary":"Create Checkout","description":"Create a Stripe Checkout Session for the Creator plan.\n`plan_type` picks an entry from stripe_service.PRICING_CATALOG — currently\n\"month\" ($29/mo recurring), \"year\" ($149/yr recurring, founding deal), or\n\"lifetime\" ($249 one-time, founding deal, permanent access).\nReturns the hosted Stripe checkout URL to redirect the user to.","operationId":"create_checkout_billing_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/billing/portal":{"post":{"tags":["billing"],"summary":"Create Portal","description":"Create a Stripe Customer Portal session.\nReturns the URL where the user can manage their subscription, invoices,\nand payment method — all handled by Stripe's hosted portal.","operationId":"create_portal_billing_portal_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PortalResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/billing/change-plan":{"post":{"tags":["billing"],"summary":"Change Plan","description":"Switch an existing subscription between recurring plans.\n\nDirection decides the mechanics, not the caller:\n  upgrade   → applied now, prorated, card charged the difference immediately\n  downgrade → scheduled to the end of the paid period, reversible until then\n\nBoth keep the customer on exactly one Stripe Subscription, which is the whole\nreason this exists instead of a second Checkout.","operationId":"change_plan_billing_change_plan_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePlanRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePlanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/billing/change-plan/cancel":{"post":{"tags":["billing"],"summary":"Cancel Pending Plan Change","description":"Call off a scheduled downgrade, keeping the current plan indefinitely.","operationId":"cancel_pending_plan_change_billing_change_plan_cancel_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePlanResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/billing/status":{"get":{"tags":["billing"],"summary":"Billing Status","description":"Return the caller's current plan and subscription state.","operationId":"billing_status_billing_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingStatusResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/billing/confirm-subscription":{"post":{"tags":["billing"],"summary":"Confirm Subscription","description":"Success-page fallback that applies a completed subscription checkout without\nwaiting on the Stripe webhook.\n\nIdempotent with the webhook — both go through sync_subscription. It exists\nbecause the webhook claims its dedup row before processing, so a handler that\ndied partway through left a paying customer on Starter with nothing that\nwould ever retry.","operationId":"confirm_subscription_billing_confirm_subscription_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmSubscriptionRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingStatusResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/billing/confirm-credits":{"post":{"tags":["billing"],"summary":"Confirm Credits","description":"Success-page fallback that applies a credit purchase server-side without waiting\non the Stripe webhook (idempotent — safe even when the webhook also runs).","operationId":"confirm_credits_billing_confirm_credits_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmCreditsRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmCreditsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/billing/credit-packs":{"get":{"tags":["billing"],"summary":"List Credit Packs","description":"Sellable image-credit packs (only those whose Stripe price ID is configured).","operationId":"list_credit_packs_billing_credit_packs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditPacksResponse"}}}}},"security":[{"HTTPBearer":[]}]}},"/instagram/connection":{"get":{"tags":["instagram"],"summary":"Get Connection","operationId":"get_connection_instagram_connection_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IgConnectionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["instagram"],"summary":"Disconnect","operationId":"disconnect_instagram_connection_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instagram/profile-stats":{"get":{"tags":["instagram"],"summary":"Get Profile Stats","description":"The connected account's public profile fields and follower/post counts.\n\nDeliberately separate from GET /connection, which several screens call on\nevery load and must stay cheap — this one hits the Graph API. Counts drift and\naccounts connected before they were stored have none, so it fetches live and\nrefreshes the row; when the call fails (revoked token, Meta outage) it degrades\nto whatever was stored rather than erroring, and the caller renders no counts.","operationId":"get_profile_stats_instagram_profile_stats_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IgProfileStatsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instagram/latest-reel":{"get":{"tags":["instagram"],"summary":"Get Latest Reel","operationId":"get_latest_reel_instagram_latest_reel_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LatestReelResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instagram/media":{"get":{"tags":["instagram"],"summary":"List Media","description":"Recent posts/reels for the connected account — used to target automations to a specific post.","operationId":"list_media_instagram_media_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instagram/media/check":{"post":{"tags":["instagram"],"summary":"Check Media","description":"Which of these media ids no longer exist on Instagram.\n\nThe media picker lists the newest 200 posts only, so \"not in the list\" also describes a\nlive post that is simply older. The automation builder asks this about the selected ids\nit cannot find in the list before telling anyone a post is gone.","operationId":"check_media_instagram_media_check_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaCheckRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaCheckResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instagram/stories":{"get":{"tags":["instagram"],"summary":"List Stories","description":"Currently-live stories (the ~24h active window) for the connected account.\n\nUsed to scope a story_reply automation to one specific live story: the id\nreturned here is the same media id that arrives on the reply webhook\n(message.reply_to.story.id), so selecting one and storing it in the\nautomation's post_ids makes the engine fire only on replies to that story.","operationId":"list_stories_instagram_stories_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaListResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instagram/subscribe-webhooks":{"post":{"tags":["instagram"],"summary":"Subscribe Webhooks","description":"(Re)subscribe the connected account to comment/message webhooks.\n\nUseful for accounts connected before automatic subscription was added,\nor if Meta drops the subscription.","operationId":"subscribe_webhooks_instagram_subscribe_webhooks_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instagram/publish-reel":{"post":{"tags":["instagram"],"summary":"Publish Reel Endpoint","operationId":"publish_reel_endpoint_instagram_publish_reel_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_publish_reel_endpoint_instagram_publish_reel_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instagram/trial-reels/usage":{"get":{"tags":["instagram"],"summary":"Get Trial Reel Usage","description":"{used, limit, remaining} for the composer's trial-reel toggle (limit None = unlimited).","operationId":"get_trial_reel_usage_instagram_trial_reels_usage_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instagram/publish-story":{"post":{"tags":["instagram"],"summary":"Publish Story Endpoint","description":"Publish a single photo or video to Instagram Stories.\n\nMirrors /publish-reel's enqueue-only pattern (same SQS → Publisher → Finisher\npipeline), but stories take no caption/share_to_feed/comments — only the media\n(media_type=STORIES accepts nothing else).","operationId":"publish_story_endpoint_instagram_publish_story_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_publish_story_endpoint_instagram_publish_story_post"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/oauth/instagram/start":{"post":{"tags":["oauth"],"summary":"Instagram Oauth Start","description":"Return the Instagram Login OAuth URL.\n\nAccepts the caller's usual optional `?workspace_id=` — connecting an\naccount always targets a specific workspace (defaulting to personal),\nnever \"the user\" in the abstract, since each workspace holds at most one\nconnected Instagram account.","operationId":"instagram_oauth_start_oauth_instagram_start_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"return_to","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Native-app deep link (reeldrop:// or exp://) for the callback to redirect back to. Omit for the web flow.","title":"Return To"},"description":"Native-app deep link (reeldrop:// or exp://) for the callback to redirect back to. Omit for the web flow."},{"name":"switch_account","in":"query","required":false,"schema":{"type":"boolean","description":"Ask Instagram to prompt for credentials even on a first connect, so the user can sign in to a different Instagram account than the one the browser is logged into. The frontend sends this on the retry after an `ig_account_linked_elsewhere` refusal.","default":false,"title":"Switch Account"},"description":"Ask Instagram to prompt for credentials even on a first connect, so the user can sign in to a different Instagram account than the one the browser is logged into. The frontend sends this on the retry after an `ig_account_linked_elsewhere` refusal."},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthStartResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/oauth/instagram/authorize":{"get":{"tags":["oauth"],"summary":"Instagram Oauth Authorize","description":"302 the browser from our own origin to Instagram's Business Login dialog.\n\nDeliberately public and deliberately a redirect — see AUTHORIZE HOP at the\ntop of this module before changing either. The state row is READ here and\nleft exactly as it is: the callback is still the only consumer, so a hop\nthat is followed twice (a phone restoring a tab, a prefetch) costs nothing.","operationId":"instagram_oauth_authorize_oauth_instagram_authorize_get","parameters":[{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/oauth/instagram/callback":{"get":{"tags":["oauth"],"summary":"Instagram Oauth Callback","description":"Instagram redirects here after user grants/denies permission.\n\nDenials and malformed returns go straight to the error page. Everything\nelse is handed to the frontend's /oauth/instagram/complete page (or the\nnative app's `return_to` with status=complete), which finishes the connect\nthrough the authenticated POST /oauth/instagram/complete below. This route\nexchanges nothing and consumes nothing — see the hand-off comment at the\nend for why.","operationId":"instagram_oauth_callback_oauth_instagram_callback_get","parameters":[{"name":"code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"}},{"name":"state","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"State"}},{"name":"error","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/oauth/instagram/complete":{"post":{"tags":["oauth"],"summary":"Instagram Oauth Complete","description":"Finish an Instagram connect: consume the state, exchange the code,\nsave the account.\n\nAuthenticated, and bound to the initiator: the state row names the Clerk\nuser who called /start, and only that user may complete it. A victim who\nwas sent somebody else's connect link is either signed out (the frontend\nsends them to sign in and they arrive here as themselves) or signed in as\nsomeone else — either way the identity check fails before the code is\nexchanged, so their Instagram account is never linked anywhere.\n\nAnswers 200 with `status` for every flow outcome, including the refusals,\nbecause the completion page turns the answer straight into the success or\nerror page and needs the blocked-by details a 4xx would lose.","operationId":"instagram_oauth_complete_oauth_instagram_complete_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthCompleteBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OAuthCompleteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/oauth/instagram/webhook":{"get":{"tags":["oauth"],"summary":"Instagram Webhook Verify","description":"Meta calls this GET to verify the webhook endpoint ownership.\n\nThe challenge is an opaque string that has to be echoed back verbatim as plain\ntext. Parsing it as an int assumed it was always numeric — a non-numeric challenge\nraised ValueError and a missing one raised TypeError, both escaping as a 500 that\nmade verification look like an outage on our side.","operationId":"instagram_webhook_verify_oauth_instagram_webhook_get","parameters":[{"name":"hub.mode","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Mode"}},{"name":"hub.verify_token","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Verify Token"}},{"name":"hub.challenge","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hub.Challenge"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["oauth"],"summary":"Instagram Webhook Receive","description":"Receive real-time webhook events from Meta (comments, DMs, story replies).\n\nMeta requires HTTP 200 within 5 seconds, so the engine cannot run inline here —\nbut it must not run *after* the response either. On Vercel the process is frozen\nthe instant the response is written (same reason main.py flushes Sentry\nper-request), so a FastAPI BackgroundTask can be killed mid-flight; because we\nalready returned 200, Meta never redelivers and the event is gone for good.\n\nSo: verify the signature, put the event on a durable queue *before* ACKing, and\nlet the automation-worker Lambda drive it back through /webhook/process. If the\nenqueue fails we 5xx, which is what makes Meta retry.","operationId":"instagram_webhook_receive_oauth_instagram_webhook_post","parameters":[{"name":"x-hub-signature-256","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Hub-Signature-256"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/oauth/instagram/webhook/process":{"post":{"tags":["oauth"],"summary":"Instagram Webhook Process","description":"Internal endpoint — the automation-worker Lambda calls this while draining the\nintake queue. It runs the engine INLINE in the request, never as a background\ntask, so there is no window in which Vercel can freeze the work; whatever the\nLambda gets back is the true outcome, and a non-2xx puts the message back on the\nqueue.\n\nTwo independent checks, both required. The shared secret proves the caller is\nour Lambda; re-verifying Meta's HMAC over the same bytes means the route stays\nunforgeable even if that secret leaks.","operationId":"instagram_webhook_process_oauth_instagram_webhook_process_post","parameters":[{"name":"x-reeldrop-internal","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Reeldrop-Internal"}},{"name":"x-hub-signature-256","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Hub-Signature-256"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/oauth/instagram/deauthorize":{"post":{"tags":["oauth"],"summary":"Instagram Deauthorize","operationId":"instagram_deauthorize_oauth_instagram_deauthorize_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/oauth/instagram/data-deletion":{"get":{"tags":["oauth"],"summary":"Instagram Data Deletion","operationId":"instagram_data_deletion_oauth_instagram_data_deletion_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}},"post":{"tags":["oauth"],"summary":"Instagram Data Deletion","operationId":"instagram_data_deletion_oauth_instagram_data_deletion_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/webhooks/clerk":{"post":{"tags":["webhooks"],"summary":"Clerk Webhook","operationId":"clerk_webhook_webhooks_clerk_post","parameters":[{"name":"svix-id","in":"header","required":false,"schema":{"type":"string","title":"Svix-Id"}},{"name":"svix-timestamp","in":"header","required":false,"schema":{"type":"string","title":"Svix-Timestamp"}},{"name":"svix-signature","in":"header","required":false,"schema":{"type":"string","title":"Svix-Signature"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/webhooks/stripe":{"post":{"tags":["webhooks"],"summary":"Stripe Webhook","description":"Stripe sends the raw body with a Stripe-Signature header for HMAC verification.\nMust read raw bytes BEFORE any JSON parsing — signature check fails on parsed body.","operationId":"stripe_webhook_webhooks_stripe_post","parameters":[{"name":"stripe-signature","in":"header","required":false,"schema":{"type":"string","title":"Stripe-Signature"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces":{"get":{"tags":["workspaces"],"summary":"List Workspaces","description":"Return all workspaces the caller belongs to.","operationId":"list_workspaces_workspaces_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/routers__workspaces__WorkspaceOut"},"type":"array","title":"Response List Workspaces Workspaces Get"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["workspaces"],"summary":"Create Workspace","operationId":"create_workspace_workspaces_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__workspaces__WorkspaceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/workspaces/{workspace_id}":{"patch":{"tags":["workspaces"],"summary":"Rename Workspace","operationId":"rename_workspace_workspaces__workspace_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__workspaces__WorkspaceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["workspaces"],"summary":"Delete Workspace","description":"Permanently delete a workspace and everything scoped to it.\n\nOwner-only, and the personal workspace can never be deleted this way — it's\nthe account's home base, not a brand workspace someone spun up and can walk\naway from. `_get_workspace_or_404` runs first so a bad id 404s before the\nconfirm-name check, rather than leaking whether the id exists via a 422.","operationId":"delete_workspace_workspaces__workspace_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceDeleteConfirm"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/default":{"post":{"tags":["workspaces"],"summary":"Set Default Workspace","description":"Set the workspace the switcher opens to on login.\n\nAny member can, not only the owner: this writes the caller's *own*\n`User.default_workspace_id` and touches nothing shared, so someone who\nspends their day in a team workspace can land straight in it.","operationId":"set_default_workspace_workspaces__workspace_id__default_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/transfer-ownership":{"post":{"tags":["workspaces"],"summary":"Transfer Ownership","description":"Hand this workspace to another member. Owner-only, and the outgoing\nowner becomes an admin rather than being dropped from the workspace —\nsame pattern Figma and Slack use, and it's reversible (the new owner can\ntransfer it right back).\n\nNot available on the personal workspace: its `owner_id` is the account's\nown identity, not a role inside a shared workspace, and billing hangs off\nit directly (see Workspace's docstring).\n\n`Workspace.plan` follows the owner: it is rebound to the new owner's own\nplan here, not left for `_heal_plan_drift` to fix on the new owner's next\nGET /workspaces. Every reconciler is keyed on owner_id, so a workspace\nleft on the outgoing owner's plan kept that plan's limits after they\ncancelled — for as long as the new owner never loaded the list. Anything\nthe new plan doesn't include is paused the same way a downgrade does it.","operationId":"transfer_ownership_workspaces__workspace_id__transfer_ownership_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferOwnership"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/routers__workspaces__WorkspaceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/members":{"get":{"tags":["workspaces"],"summary":"List Members","operationId":"list_members_workspaces__workspace_id__members_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/MemberOut"},"title":"Response List Members Workspaces  Workspace Id  Members Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["workspaces"],"summary":"Invite Member","description":"Invite someone into the workspace by email. Requires admin or owner role.\n\nAlways a pending WorkspaceInvite plus an emailed accept link — including\nfor an email that already has a ReelDrop account. Adding existing accounts\noutright put a workspace in someone's switcher with no notice and no say,\nand answering 201 for \"has an account\" vs 202 for \"doesn't\" let any admin\nprobe which emails are registered. See routers/invites.py for the accept\nside (and the switcher's Invitations list, for people already signed in).\n\nSeats are checked against members plus invites that can still be accepted,\nso a workspace can't oversell seats by sending more invites than it holds.","operationId":"invite_member_workspaces__workspace_id__members_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberInvite"}}}},"responses":{"202":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/invites":{"get":{"tags":["workspaces"],"summary":"List Invites","description":"Pending invites, owner/admin only — unlike the member list, an invite\ncarries an outsider's email address, so a plain member shouldn't see it.","operationId":"list_invites_workspaces__workspace_id__invites_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/InviteOut"},"title":"Response List Invites Workspaces  Workspace Id  Invites Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/invites/{invite_id}":{"delete":{"tags":["workspaces"],"summary":"Revoke Invite","operationId":"revoke_invite_workspaces__workspace_id__invites__invite_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"invite_id","in":"path","required":true,"schema":{"type":"string","title":"Invite Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/invites/{invite_id}/resend":{"post":{"tags":["workspaces"],"summary":"Resend Invite","operationId":"resend_invite_workspaces__workspace_id__invites__invite_id__resend_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"invite_id","in":"path","required":true,"schema":{"type":"string","title":"Invite Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/members/{user_id}":{"delete":{"tags":["workspaces"],"summary":"Remove Member","operationId":"remove_member_workspaces__workspace_id__members__user_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["workspaces"],"summary":"Change Member Role","description":"Promote a member to admin, or demote an admin to member. Owner/admin only.\n\nNever changes: the owner's role (ownership isn't transferable yet), anyone's\nrole *to* owner, or the caller's own role — leaving is the explicit way to\nstep back, and a self-demotion from this screen is almost always a misclick.","operationId":"change_member_role_workspaces__workspace_id__members__user_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberRoleUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MemberOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/leave":{"post":{"tags":["workspaces"],"summary":"Leave Workspace","description":"Leave a workspace you were invited into.\n\nNot open to the owner: ownership isn't transferable yet, so an owner's way\nout is deleting the workspace — or deleting their account, which hands a\nworkspace with other members to its longest-tenured admin.","operationId":"leave_workspace_workspaces__workspace_id__leave_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/settings":{"get":{"tags":["workspaces"],"summary":"Get Scheduling Settings","operationId":"get_scheduling_settings_workspaces__workspace_id__settings_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchedulingSettings"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["workspaces"],"summary":"Update Scheduling Settings","operationId":"update_scheduling_settings_workspaces__workspace_id__settings_patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchedulingSettingsUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchedulingSettings"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/brand-kit":{"get":{"tags":["workspaces"],"summary":"Get Brand Kit","operationId":"get_brand_kit_workspaces__workspace_id__brand_kit_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandKit"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["workspaces"],"summary":"Put Brand Kit","operationId":"put_brand_kit_workspaces__workspace_id__brand_kit_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandKitBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandKit"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/brand-kit/logo":{"put":{"tags":["workspaces"],"summary":"Put Brand Logo","operationId":"put_brand_logo_workspaces__workspace_id__brand_kit_logo_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogoUploadBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandKit"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["workspaces"],"summary":"Delete Brand Logo","operationId":"delete_brand_logo_workspaces__workspace_id__brand_kit_logo_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandKit"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/brand-kit/logo/from-site":{"post":{"tags":["workspaces"],"summary":"Fetch Brand Logo From Site","description":"Look the logo up from the product's website (its declared icon) and save it.","operationId":"fetch_brand_logo_from_site_workspaces__workspace_id__brand_kit_logo_from_site_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogoFromSiteBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandKit"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/photo":{"put":{"tags":["workspaces"],"summary":"Set Hook Photo","operationId":"set_hook_photo_workspaces__workspace_id__photo_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HookPhotoRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HookPhotoOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["workspaces"],"summary":"Delete Hook Photo","operationId":"delete_hook_photo_workspaces__workspace_id__photo_delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HookPhotoOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/palettes":{"get":{"tags":["workspaces"],"summary":"Get Saved Palettes","operationId":"get_saved_palettes_workspaces__workspace_id__palettes_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PalettesOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["workspaces"],"summary":"Put Saved Palettes","operationId":"put_saved_palettes_workspaces__workspace_id__palettes_put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PalettesBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PalettesOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/invites":{"get":{"tags":["invites"],"summary":"List My Invites","description":"Open invites addressed to the caller's own email — the switcher's\nInvitations list, so someone who already has an account can join without\ndigging out the email.\n\nEach row carries its token: that's the credential already emailed to this\nexact address, and accept/decline re-check the email match regardless.\nInvites to workspaces the caller has since joined some other way are left\nout — there's nothing left for them to decide.","operationId":"list_my_invites_invites_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/MyInvite"},"type":"array","title":"Response List My Invites Invites Get"}}}}},"security":[{"HTTPBearer":[]}]}},"/invites/{token}":{"get":{"tags":["invites"],"summary":"Preview Invite","description":"Public, unauthenticated — the accept page uses this to show who's\ninviting whom before the visitor has signed in at all.","operationId":"preview_invite_invites__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvitePreview"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/invites/{token}/accept":{"post":{"tags":["invites"],"summary":"Accept Invite","description":"Signed-in only, and only by the account the invite was addressed to.","operationId":"accept_invite_invites__token__accept_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptResult"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/invites/{token}/decline":{"post":{"tags":["invites"],"summary":"Decline Invite","description":"Say no. Frees the seat the invite was holding straight away, rather\nthan leaving it tied up until the invite expires.","operationId":"decline_invite_invites__token__decline_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/posts":{"get":{"tags":["posts"],"summary":"List Posts","operationId":"list_posts_workspaces__workspace_id__posts_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"mode","in":"query","required":false,"schema":{"anyOf":[{"$ref":"#/components/schemas/PostMode"},{"type":"null"}],"title":"Mode"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"array","items":{"$ref":"#/components/schemas/PostStatus"}},{"type":"null"}],"title":"Status"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Since"}},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Until"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PostOut"},"title":"Response List Posts Workspaces  Workspace Id  Posts Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["posts"],"summary":"Create Post","operationId":"create_post_workspaces__workspace_id__posts_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/posts/{post_id}":{"get":{"tags":["posts"],"summary":"Get Post","operationId":"get_post_workspaces__workspace_id__posts__post_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"post_id","in":"path","required":true,"schema":{"type":"string","title":"Post Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["posts"],"summary":"Update Post","operationId":"update_post_workspaces__workspace_id__posts__post_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"post_id","in":"path","required":true,"schema":{"type":"string","title":"Post Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["posts"],"summary":"Delete Post","operationId":"delete_post_workspaces__workspace_id__posts__post_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"post_id","in":"path","required":true,"schema":{"type":"string","title":"Post Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/posts/{post_id}/retry":{"post":{"tags":["posts"],"summary":"Retry Post","description":"Reset a failed post and publish it again — immediately or at a new time.","operationId":"retry_post_workspaces__workspace_id__posts__post_id__retry_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"post_id","in":"path","required":true,"schema":{"type":"string","title":"Post Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostRetry"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/notifications":{"get":{"tags":["notifications"],"summary":"List Notifications","operationId":"list_notifications_workspaces__workspace_id__notifications_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/notifications/read-all":{"post":{"tags":["notifications"],"summary":"Mark All Read","operationId":"mark_all_read_workspaces__workspace_id__notifications_read_all_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/notifications/{notification_id}/read":{"post":{"tags":["notifications"],"summary":"Mark Read","operationId":"mark_read_workspaces__workspace_id__notifications__notification_id__read_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"notification_id","in":"path","required":true,"schema":{"type":"string","title":"Notification Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/carousels":{"post":{"tags":["carousels"],"summary":"Create Carousel","operationId":"create_carousel_workspaces__workspace_id__carousels_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CarouselCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CarouselOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["carousels"],"summary":"List Carousels","operationId":"list_carousels_workspaces__workspace_id__carousels_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CarouselOut"},"title":"Response List Carousels Workspaces  Workspace Id  Carousels Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/carousels/{carousel_id}/upload-slide":{"post":{"tags":["carousels"],"summary":"Upload Slide","operationId":"upload_slide_workspaces__workspace_id__carousels__carousel_id__upload_slide_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"carousel_id","in":"path","required":true,"schema":{"type":"string","title":"Carousel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadSlideRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadSlideResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/carousels/{carousel_id}/slide-version":{"post":{"tags":["carousels"],"summary":"Add Slide Version","description":"Upload a new edited image as a fresh S3 object (never overwriting prior\nversions) and append it to the slide's version list, so undo/redo can return\nto any earlier image even after a page reload.","operationId":"add_slide_version_workspaces__workspace_id__carousels__carousel_id__slide_version_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"carousel_id","in":"path","required":true,"schema":{"type":"string","title":"Carousel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddSlideVersionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlideVersionResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/carousels/{carousel_id}/slide-version/select":{"post":{"tags":["carousels"],"summary":"Select Slide Version","description":"Repoint a slide to an existing stored version (undo/redo). No re-upload —\nevery version already lives at its own S3 key.","operationId":"select_slide_version_workspaces__workspace_id__carousels__carousel_id__slide_version_select_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"carousel_id","in":"path","required":true,"schema":{"type":"string","title":"Carousel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SelectSlideVersionRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlideVersionSelectResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/carousels/{carousel_id}":{"get":{"tags":["carousels"],"summary":"Get Carousel","operationId":"get_carousel_workspaces__workspace_id__carousels__carousel_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"carousel_id","in":"path","required":true,"schema":{"type":"string","title":"Carousel Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CarouselOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["carousels"],"summary":"Update Carousel","operationId":"update_carousel_workspaces__workspace_id__carousels__carousel_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"carousel_id","in":"path","required":true,"schema":{"type":"string","title":"Carousel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CarouselUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CarouselOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["carousels"],"summary":"Delete Carousel","operationId":"delete_carousel_workspaces__workspace_id__carousels__carousel_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"carousel_id","in":"path","required":true,"schema":{"type":"string","title":"Carousel Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/carousels/{carousel_id}/download":{"get":{"tags":["carousels"],"summary":"Download Carousel","description":"Stream all generated slides of a carousel as a single ZIP of JPEGs.\n\nBuilt server-side (boto3) so the browser never has to fetch S3 objects\nitself (no CORS / Buffer concerns).","operationId":"download_carousel_workspaces__workspace_id__carousels__carousel_id__download_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"carousel_id","in":"path","required":true,"schema":{"type":"string","title":"Carousel Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/automations":{"get":{"tags":["automations"],"summary":"List Automations","operationId":"list_automations_automations_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AutomationOut"},"title":"Response List Automations Automations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["automations"],"summary":"Create Automation","operationId":"create_automation_automations_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAutomationIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutomationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/automations/comment-reply-variants":{"post":{"tags":["automations"],"summary":"Sample Comment Reply Variants","description":"Randomly sample reply variants for the builder's \"Generate 10\" / \"+10 more\"\nbuttons — see automation_service.sample_comment_reply_variants.","operationId":"sample_comment_reply_variants_automations_comment_reply_variants_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentReplyVariantsIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommentReplyVariantsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/automations/dm-message-variants":{"post":{"tags":["automations"],"summary":"Sample Dm Message Variants","description":"Randomly sample DM-message variants for the builder's \"+10\" / \"+50\" / \"+100\"\nbuttons — see automation_service.sample_dm_message_variants.","operationId":"sample_dm_message_variants_automations_dm_message_variants_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DmMessageVariantsIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DmMessageVariantsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/automations/ai-dm/preview":{"post":{"tags":["automations"],"summary":"Preview Ai Dm Reply","description":"Run an ai_dm brief against Gemini without touching Instagram. This is what\nthe builder's Review step talks to; the logic is shared with the MCP\npreview_ai_dm tool — see automation_service.preview_ai_dm_reply.","operationId":"preview_ai_dm_reply_automations_ai_dm_preview_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiDmPreviewIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AiDmPreviewOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/automations/stats-summary":{"get":{"tags":["automations"],"summary":"Get Automation Stats Summary","description":"Workspace-wide engagement totals for the dashboard tile.\n\nThe per-automation counters already ride along on every AutomationOut in\nthe list, but nothing summed them across the workspace, so the dashboard\nhad to fetch the whole automations list — builder config and all — just to\nadd up two integers. One covered aggregation instead; see\nservices/automation_service.workspace_automation_totals.","operationId":"get_automation_stats_summary_automations_stats_summary_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutomationStatsSummary"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/automations/{automation_id}":{"get":{"tags":["automations"],"summary":"Get Automation","operationId":"get_automation_automations__automation_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"automation_id","in":"path","required":true,"schema":{"type":"string","title":"Automation Id"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutomationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["automations"],"summary":"Update Automation","operationId":"update_automation_automations__automation_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"automation_id","in":"path","required":true,"schema":{"type":"string","title":"Automation Id"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAutomationIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutomationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["automations"],"summary":"Delete Automation","operationId":"delete_automation_automations__automation_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"automation_id","in":"path","required":true,"schema":{"type":"string","title":"Automation Id"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/automations/bulk-delete":{"post":{"tags":["automations"],"summary":"Bulk Delete Automations","description":"Delete several automations (and their logs) in one call.\n\nIds that don't resolve to something this workspace owns are skipped rather\nthan failing the batch — a stale id in the selection shouldn't strand the\nrest. `deleted` reports what actually went.","operationId":"bulk_delete_automations_automations_bulk_delete_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkDeleteOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/automations/{automation_id}/duplicate":{"post":{"tags":["automations"],"summary":"Duplicate Automation","description":"Clone an automation, config and all, as a new paused one — see\nautomation_service.duplicate_automation.","operationId":"duplicate_automation_automations__automation_id__duplicate_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"automation_id","in":"path","required":true,"schema":{"type":"string","title":"Automation Id"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutomationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/automations/{automation_id}/retrigger":{"post":{"tags":["automations"],"summary":"Retrigger Automation","description":"Queue existing comments through an active comment automation — see\nservices/automation_retrigger.py.","operationId":"retrigger_automation_automations__automation_id__retrigger_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"automation_id","in":"path","required":true,"schema":{"type":"string","title":"Automation Id"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/automations/{automation_id}/logs":{"get":{"tags":["automations"],"summary":"Get Automation Logs","operationId":"get_automation_logs_automations__automation_id__logs_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"automation_id","in":"path","required":true,"schema":{"type":"string","title":"Automation Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":200,"default":50,"title":"Limit"}},{"name":"skip","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Skip"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AutomationLogOut"},"title":"Response Get Automation Logs Automations  Automation Id  Logs Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/stats":{"get":{"tags":["stats"],"summary":"Get Stats","description":"Public, unauthenticated landing-page stats, computed from the DB and cached for a day.","operationId":"get_stats_stats_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatsResponse"}}}}}}},"/stats/growth":{"get":{"tags":["stats"],"summary":"Get Growth","description":"Public day-by-day running totals (sign-ups, scheduled Reels, DMs sent), cached for a day.","operationId":"get_growth_stats_growth_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GrowthResponse"}}}}}}},"/workspaces/{workspace_id}/analytics/summary":{"get":{"tags":["analytics"],"summary":"Get Summary","operationId":"get_summary_workspaces__workspace_id__analytics_summary_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"tz_offset_minutes","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tz Offset Minutes"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Since"}},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Until"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SummaryResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/analytics/posts":{"get":{"tags":["analytics"],"summary":"Get Posts Analytics","operationId":"get_posts_analytics_workspaces__workspace_id__analytics_posts_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"tz_offset_minutes","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tz Offset Minutes"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Since"}},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Until"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostsAnalyticsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/analytics/account":{"get":{"tags":["analytics"],"summary":"Get Account Analytics","operationId":"get_account_analytics_workspaces__workspace_id__analytics_account_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"tz_offset_minutes","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tz Offset Minutes"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Since"}},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Until"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"const":"totals","type":"string"},{"type":"null"}],"title":"Fields"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountAnalyticsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/analytics/stories":{"get":{"tags":["analytics"],"summary":"Get Stories Analytics","description":"Captured story insights for the selected window.\n\nStory metrics only exist for ~24 hours, so this can only ever return\nstories posted *after* capture was switched on for the workspace. There is\nno backfill and there never can be.","operationId":"get_stories_analytics_workspaces__workspace_id__analytics_stories_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"tz_offset_minutes","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tz Offset Minutes"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Since"}},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Until"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StoriesAnalyticsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/analytics/trial-reels":{"get":{"tags":["analytics"],"summary":"Get Trial Reels Analytics","description":"Published trial reels in the window, each with its stored snapshot series.\n\nEverything here is ReelDrop's own sampling (see the Poller's trial sweep):\nInstagram's API has no trial-specific insights and does not report whether a\ntrial has graduated, so the series and the surge heuristic are the product.","operationId":"get_trial_reels_analytics_workspaces__workspace_id__analytics_trial_reels_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"tz_offset_minutes","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tz Offset Minutes"}},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Since"}},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Until"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrialReelsResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/analytics/plan":{"get":{"tags":["content-plan"],"summary":"Get Content Plan","operationId":"get_content_plan_workspaces__workspace_id__analytics_plan_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"refresh","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Refresh"}},{"name":"tz_offset_minutes","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tz Offset Minutes"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentPlanResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/analytics/recap":{"get":{"tags":["content-plan"],"summary":"Get Recap Scorecard","description":"Last complete week vs the saved plan's cadence and vs the week before.\n\nReads the plan the user has already seen (never regenerates it) and the\nposts' cached insights, so it costs two Mongo reads and no Graph calls.","operationId":"get_recap_scorecard_workspaces__workspace_id__analytics_recap_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"tz_offset_minutes","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tz Offset Minutes"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecapScorecardResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/analytics/badges":{"get":{"tags":["content-plan"],"summary":"Get Badges","description":"The badge catalogue with this workspace's progress, persisting any badge\nthe history has newly earned. Safe to call repeatedly: the unique index\nturns a second award of the same badge into a no-op.","operationId":"get_badges_workspaces__workspace_id__analytics_badges_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"tz_offset_minutes","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Tz Offset Minutes"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadgesResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/analytics/badges/seen":{"post":{"tags":["content-plan"],"summary":"Mark Badges Seen","description":"Stamp seen_at so the \"badge earned\" toast shows once per badge.","operationId":"mark_badges_seen_workspaces__workspace_id__analytics_badges_seen_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadgesSeenRequest"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/grid":{"get":{"tags":["grid"],"summary":"Get Grid","operationId":"get_grid_workspaces__workspace_id__grid_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"published_limit","in":"query","required":false,"schema":{"type":"integer","maximum":60,"minimum":3,"default":18,"title":"Published Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GridResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/grid/placeholders":{"post":{"tags":["grid"],"summary":"Create Placeholder","operationId":"create_placeholder_workspaces__workspace_id__grid_placeholders_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaceholderCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GridPlaceholderItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/grid/placeholders/{placeholder_id}":{"patch":{"tags":["grid"],"summary":"Update Placeholder","operationId":"update_placeholder_workspaces__workspace_id__grid_placeholders__placeholder_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"placeholder_id","in":"path","required":true,"schema":{"type":"string","title":"Placeholder Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaceholderUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GridPlaceholderItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["grid"],"summary":"Delete Placeholder","operationId":"delete_placeholder_workspaces__workspace_id__grid_placeholders__placeholder_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"placeholder_id","in":"path","required":true,"schema":{"type":"string","title":"Placeholder Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/grid/placeholders/{placeholder_id}/convert":{"post":{"tags":["grid"],"summary":"Convert Placeholder","operationId":"convert_placeholder_workspaces__workspace_id__grid_placeholders__placeholder_id__convert_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"placeholder_id","in":"path","required":true,"schema":{"type":"string","title":"Placeholder Id"}}],"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/grid/collabs":{"post":{"tags":["grid"],"summary":"Add Collab","operationId":"add_collab_workspaces__workspace_id__grid_collabs_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollabCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GridPublishedItem"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/grid/collabs/{collab_id}":{"delete":{"tags":["grid"],"summary":"Delete Collab","operationId":"delete_collab_workspaces__workspace_id__grid_collabs__collab_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}},{"name":"collab_id","in":"path","required":true,"schema":{"type":"string","title":"Collab Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/workspaces/{workspace_id}/grid/reorder":{"post":{"tags":["grid"],"summary":"Reorder","operationId":"reorder_workspaces__workspace_id__grid_reorder_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"string","title":"Workspace Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReorderRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GridResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/waitlist/referral":{"post":{"tags":["waitlist"],"summary":"Record Referral","description":"Record who referred a waitlist signup. Always 204 — attribution is\nbest-effort and must never surface an error into the signup flow.","operationId":"record_referral_waitlist_referral_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferralIn"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/support/contact":{"post":{"tags":["support"],"summary":"Contact","description":"Deliver a support request to the support inbox.\n\nReply-To is the submitter, so hitting Reply in the support inbox answers the\nuser directly — the From stays info@reeldrop.io because that is the verified\nSES identity and spoofing the user's domain would fail DMARC.","operationId":"contact_support_contact_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactRequest"}}},"required":true},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/support/unsubscribe":{"get":{"tags":["support"],"summary":"Unsubscribe","description":"One-click unsubscribe from a single email type.\n\nA GET that mutates, deliberately: RFC 8058 one-click and every mail client's\nunsubscribe affordance land here without a session, and the token is the\ncapability. Scoped to one `type` so unsubscribing from the weekly digest\nnever silences a publish-failure alert.","operationId":"unsubscribe_support_unsubscribe_get","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Type"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["support"],"summary":"Unsubscribe Post","description":"RFC 8058 List-Unsubscribe-Post target. Gmail POSTs here rather than\nfollowing the link, so it must accept POST with identical semantics.","operationId":"unsubscribe_post_support_unsubscribe_post","parameters":[{"name":"token","in":"query","required":false,"schema":{"type":"string","default":"","title":"Token"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","default":"","title":"Type"}}],"responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/referrals/me":{"get":{"tags":["referrals"],"summary":"Get My Referrals","description":"This user's referral link, funnel counts and reward history.\n\nMints the code on first call rather than at signup, so the accounts that\npredate the program need no backfill. Returns `enabled: false` with no code\nwhile the flag is off — minting links people can't be rewarded for would\nstrand anyone who shared one early.\n\n`enabled: false` is also the answer for a lifetime holder, decided in\nreferral_summary: there is no recurring invoice for a free month to mean\nanything on, so every surface that keys off this flag — the sidebar card,\nthis section and its nav row, the referral email preference, the promo modal —\nhides itself rather than advertising an offer they cannot take.","operationId":"get_my_referrals_referrals_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferralsMeOut"}}}}},"security":[{"HTTPBearer":[]}]}},"/referrals/promo-seen":{"post":{"tags":["referrals"],"summary":"Mark Promo Seen","description":"Record that the referral promo was shown for this session.\n\nCalled once per session by the client, not once per mount — \"shown twice\"\nhas to mean two sittings, and a per-render increment would burn both views\non a single page navigation.\n\n`$inc` scoped to the one field rather than user.save(): this fires on app\nload, concurrently with the provisioning and /auth/me writes that happen at\nexactly the same moment, and a whole-document replace loses whichever of\nthem landed first. Clamped in the filter so a client that calls it in a loop\ncannot run the count away from the cap.","operationId":"mark_promo_seen_referrals_promo_seen_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromoSeenOut"}}}}},"security":[{"HTTPBearer":[]}]}},"/mcp/keys":{"get":{"tags":["mcp"],"summary":"List Mcp Keys","operationId":"list_mcp_keys_mcp_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpKeyList"}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["mcp"],"summary":"Create Mcp Key","operationId":"create_mcp_key_mcp_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpKeyCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpKeyCreated"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/mcp/keys/{key_id}":{"delete":{"tags":["mcp"],"summary":"Revoke Mcp Key","operationId":"revoke_mcp_key_mcp_keys__key_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpKeyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/campaigns":{"get":{"tags":["rewards"],"summary":"List Campaigns","operationId":"list_campaigns_campaigns_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/campaigns/{campaign_id}":{"get":{"tags":["rewards"],"summary":"Get Campaign","operationId":"get_campaign_campaigns__campaign_id__get","parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/campaigns/{campaign_id}/eligibility":{"get":{"tags":["rewards"],"summary":"Campaign Eligibility","operationId":"campaign_eligibility_campaigns__campaign_id__eligibility_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/campaigns/{campaign_id}/apply":{"post":{"tags":["rewards"],"summary":"Apply","operationId":"apply_campaigns__campaign_id__apply_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApplyIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/me/campaigns":{"get":{"tags":["rewards"],"summary":"My Campaigns","operationId":"my_campaigns_me_campaigns_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/me/reels":{"get":{"tags":["rewards"],"summary":"My Reels","operationId":"my_reels_me_reels_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/me/payouts":{"get":{"tags":["rewards"],"summary":"My Payouts","operationId":"my_payouts_me_payouts_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/reels/{reel_id}/dispute":{"post":{"tags":["rewards"],"summary":"Dispute","operationId":"dispute_reels__reel_id__dispute_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"reel_id","in":"path","required":true,"schema":{"type":"string","title":"Reel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisputeIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/me/payout-profile":{"get":{"tags":["rewards"],"summary":"Get Payout Profile","operationId":"get_payout_profile_me_payout_profile_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"put":{"tags":["rewards"],"summary":"Put Payout Profile","operationId":"put_payout_profile_me_payout_profile_put","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayoutIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/me/applications/{app_id}/messages":{"get":{"tags":["rewards"],"summary":"My Thread","operationId":"my_thread_me_applications__app_id__messages_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["rewards"],"summary":"Post My Message","operationId":"post_my_message_me_applications__app_id__messages_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThreadMessageIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/me/applications/{app_id}/messages/upload-url":{"post":{"tags":["rewards"],"summary":"My Message Upload Url","operationId":"my_message_upload_url_me_applications__app_id__messages_upload_url_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadUrlIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/me/applications/{app_id}/messages/read":{"post":{"tags":["rewards"],"summary":"Read My Thread","operationId":"read_my_thread_me_applications__app_id__messages_read_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/me":{"get":{"tags":["rewards-admin"],"summary":"My Role","description":"The caller's rewards role (or null). Never 403: the UI uses it to decide\nwhether to show the admin area at all.","operationId":"my_role_admin_rewards_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/admin/rewards/campaigns":{"get":{"tags":["rewards-admin"],"summary":"List Campaigns","operationId":"list_campaigns_admin_rewards_campaigns_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]},"post":{"tags":["rewards-admin"],"summary":"Create Campaign","operationId":"create_campaign_admin_rewards_campaigns_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/admin/rewards/campaigns/{campaign_id}":{"get":{"tags":["rewards-admin"],"summary":"Get Campaign","operationId":"get_campaign_admin_rewards_campaigns__campaign_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["rewards-admin"],"summary":"Update Campaign","operationId":"update_campaign_admin_rewards_campaigns__campaign_id__put","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/campaigns/{campaign_id}/publish":{"post":{"tags":["rewards-admin"],"summary":"Publish Campaign","operationId":"publish_campaign_admin_rewards_campaigns__campaign_id__publish_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/campaigns/{campaign_id}/close":{"post":{"tags":["rewards-admin"],"summary":"Close Campaign","operationId":"close_campaign_admin_rewards_campaigns__campaign_id__close_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/campaigns/{campaign_id}/add-creator":{"post":{"tags":["rewards-admin"],"summary":"Add Creator","description":"Approve an existing creator without an application (TASKS 7.5).","operationId":"add_creator_admin_rewards_campaigns__campaign_id__add_creator_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"campaign_id","in":"path","required":true,"schema":{"type":"string","title":"Campaign Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddCreatorIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/applications":{"get":{"tags":["rewards-admin"],"summary":"List Applications","operationId":"list_applications_admin_rewards_applications_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"default":"pending","title":"Status"}},{"name":"campaign_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/applications/{app_id}/approve":{"post":{"tags":["rewards-admin"],"summary":"Approve Application","operationId":"approve_application_admin_rewards_applications__app_id__approve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApproveIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/applications/{app_id}/reject":{"post":{"tags":["rewards-admin"],"summary":"Reject Application","operationId":"reject_application_admin_rewards_applications__app_id__reject_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReasonIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/applications/{app_id}/ask":{"post":{"tags":["rewards-admin"],"summary":"Ask Application","operationId":"ask_application_admin_rewards_applications__app_id__ask_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/inbox":{"get":{"tags":["rewards-admin"],"summary":"Inbox","operationId":"inbox_admin_rewards_inbox_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"filter","in":"query","required":false,"schema":{"enum":["all","unread"],"type":"string","default":"all","title":"Filter"}},{"name":"campaign_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/applications/{app_id}/messages":{"get":{"tags":["rewards-admin"],"summary":"Admin Thread","operationId":"admin_thread_admin_rewards_applications__app_id__messages_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["rewards-admin"],"summary":"Post Admin Message","operationId":"post_admin_message_admin_rewards_applications__app_id__messages_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThreadMessageIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/applications/{app_id}/messages/upload-url":{"post":{"tags":["rewards-admin"],"summary":"Admin Message Upload Url","operationId":"admin_message_upload_url_admin_rewards_applications__app_id__messages_upload_url_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadUrlIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/applications/{app_id}/messages/read":{"post":{"tags":["rewards-admin"],"summary":"Read Admin Thread","operationId":"read_admin_thread_admin_rewards_applications__app_id__messages_read_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/applications/{app_id}/messages/export":{"get":{"tags":["rewards-admin"],"summary":"Export Thread","operationId":"export_thread_admin_rewards_applications__app_id__messages_export_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"app_id","in":"path","required":true,"schema":{"type":"string","title":"App Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/reels":{"get":{"tags":["rewards-admin"],"summary":"List Reels","operationId":"list_reels_admin_rewards_reels_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"campaign_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Campaign Id"}},{"name":"disputed","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Disputed"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/reels/{reel_id}/approve":{"post":{"tags":["rewards-admin"],"summary":"Approve Reel","operationId":"approve_reel_admin_rewards_reels__reel_id__approve_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"reel_id","in":"path","required":true,"schema":{"type":"string","title":"Reel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NoteIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/reels/{reel_id}/reject":{"post":{"tags":["rewards-admin"],"summary":"Reject Reel","operationId":"reject_reel_admin_rewards_reels__reel_id__reject_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"reel_id","in":"path","required":true,"schema":{"type":"string","title":"Reel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReasonIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/reels/{reel_id}/flag":{"post":{"tags":["rewards-admin"],"summary":"Flag Reel","operationId":"flag_reel_admin_rewards_reels__reel_id__flag_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"reel_id","in":"path","required":true,"schema":{"type":"string","title":"Reel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlagIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/reels/{reel_id}/clear":{"post":{"tags":["rewards-admin"],"summary":"Clear Reel","operationId":"clear_reel_admin_rewards_reels__reel_id__clear_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"reel_id","in":"path","required":true,"schema":{"type":"string","title":"Reel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClearIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/reels/{reel_id}/remove-creator":{"post":{"tags":["rewards-admin"],"summary":"Remove Creator","description":"Confirmed fraud: the creator leaves every campaign and becomes ineligible.\nOnly flagged Reels are forfeited; clean ones still pay (PRD, \"Removal\").","operationId":"remove_creator_admin_rewards_reels__reel_id__remove_creator_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"reel_id","in":"path","required":true,"schema":{"type":"string","title":"Reel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/reels/{reel_id}/resolve-dispute":{"post":{"tags":["rewards-admin"],"summary":"Resolve Dispute","operationId":"resolve_dispute_admin_rewards_reels__reel_id__resolve_dispute_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"reel_id","in":"path","required":true,"schema":{"type":"string","title":"Reel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/batches":{"get":{"tags":["rewards-admin"],"summary":"List Batches","operationId":"list_batches_admin_rewards_batches_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"HTTPBearer":[]}]}},"/admin/rewards/batches/{batch_id}":{"get":{"tags":["rewards-admin"],"summary":"Get Batch","operationId":"get_batch_admin_rewards_batches__batch_id__get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/batches/{batch_id}/export.csv":{"get":{"tags":["rewards-admin"],"summary":"Export Batch","operationId":"export_batch_admin_rewards_batches__batch_id__export_csv_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"batch_id","in":"path","required":true,"schema":{"type":"string","title":"Batch Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/lines/{line_id}/mark-paid":{"post":{"tags":["rewards-admin"],"summary":"Mark Paid","operationId":"mark_paid_admin_rewards_lines__line_id__mark_paid_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"line_id","in":"path","required":true,"schema":{"type":"string","title":"Line Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarkPaidIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/payout-profiles/{user_id}/confirm":{"post":{"tags":["rewards-admin"],"summary":"Confirm Profile","operationId":"confirm_profile_admin_rewards_payout_profiles__user_id__confirm_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/admin/rewards/dev/fake-snapshot":{"post":{"tags":["rewards-admin"],"summary":"Dev Fake Snapshot","operationId":"dev_fake_snapshot_admin_rewards_dev_fake_snapshot_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FakeSnapshotIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/admin/rewards/dev/time-travel":{"post":{"tags":["rewards-admin"],"summary":"Dev Time Travel","operationId":"dev_time_travel_admin_rewards_dev_time_travel_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeTravelIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/admin/rewards/dev/run-sweep":{"post":{"tags":["rewards-admin"],"summary":"Dev Run Sweep","description":"A sweep with no Instagram calls: snapshots come only from fake-snapshot.","operationId":"dev_run_sweep_admin_rewards_dev_run_sweep_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevSweepIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/admin/rewards/dev/organic-reel":{"post":{"tags":["rewards-admin"],"summary":"Dev Organic Reel","description":"Insert a Post row the way the organic sync would after a creator posts\nfrom the Instagram app, so detection can be exercised without Instagram.","operationId":"dev_organic_reel_admin_rewards_dev_organic_reel_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DevReelIn"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"HTTPBearer":[]}]}},"/milestones/{token}":{"get":{"tags":["milestones"],"summary":"Get Milestone","operationId":"get_milestone_milestones__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","title":"Token"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inbox/conversations":{"get":{"tags":["inbox"],"summary":"List Conversations","operationId":"list_conversations_inbox_conversations_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"tab","in":"query","required":false,"schema":{"enum":["chats","outreach","archived","snoozed"],"type":"string","default":"chats","title":"Tab"}},{"name":"filter","in":"query","required":false,"schema":{"enum":["all","unread","hot"],"type":"string","default":"all","title":"Filter"}},{"name":"status","in":"query","required":false,"schema":{"enum":["open","closed","all"],"type":"string","default":"all","title":"Status"}},{"name":"q","in":"query","required":false,"schema":{"type":"string","maxLength":100,"default":"","title":"Q"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":30,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cursor"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationListOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inbox/pipeline":{"get":{"tags":["inbox"],"summary":"Pipeline","description":"Every lead (hot-lead tag or a pipeline stage), for the board. Grouped into stages by the client.","operationId":"pipeline_inbox_pipeline_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inbox/analytics":{"get":{"tags":["inbox"],"summary":"Analytics","description":"Median response time, replies sent and lead conversion, for the inbox insights view.","operationId":"analytics_inbox_analytics_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"days","in":"query","required":false,"schema":{"type":"integer","maximum":90,"minimum":1,"default":30,"title":"Days"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyticsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inbox/stream":{"get":{"tags":["inbox"],"summary":"Stream","description":"Server-sent events telling an open inbox when something changed, so it refetches at once instead\nof waiting for its next poll. The stream is short-lived on purpose (see inbox_service.STREAM_MAX_S):\nthe client reconnects, passing the last token it saw as `since`.","operationId":"stream_inbox_stream_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Since"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inbox/unread-count":{"get":{"tags":["inbox"],"summary":"Unread Count","description":"Conversations with something new, for the nav badge. Archived, snoozed and muted ones do not count.","operationId":"unread_count_inbox_unread_count_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnreadOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inbox/conversations/{conversation_id}/messages":{"get":{"tags":["inbox"],"summary":"Get Thread","operationId":"get_thread_inbox_conversations__conversation_id__messages_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":40,"title":"Limit"}},{"name":"before","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Before"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ThreadOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["inbox"],"summary":"Send Reply","operationId":"send_reply_inbox_conversations__conversation_id__messages_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReplyIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inbox/conversations/{conversation_id}/read":{"post":{"tags":["inbox"],"summary":"Mark Read","operationId":"mark_read_inbox_conversations__conversation_id__read_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inbox/conversations/bulk":{"post":{"tags":["inbox"],"summary":"Bulk Update","description":"One change to many conversations: archive, read, mute, tag. Scoped to the caller's workspace.","operationId":"bulk_update_inbox_conversations_bulk_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkIn"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inbox/conversations/{conversation_id}/context":{"get":{"tags":["inbox"],"summary":"Conversation Context","description":"First-contact date and the automations that triggered on this person, for the details panel.","operationId":"conversation_context_inbox_conversations__conversation_id__context_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContextOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inbox/conversations/{conversation_id}/unread":{"post":{"tags":["inbox"],"summary":"Mark Unread","operationId":"mark_unread_inbox_conversations__conversation_id__unread_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inbox/conversations/{conversation_id}":{"patch":{"tags":["inbox"],"summary":"Update Conversation","operationId":"update_conversation_inbox_conversations__conversation_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversationOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inbox/conversations/{conversation_id}/exclude":{"post":{"tags":["inbox"],"summary":"Exclude Conversation","description":"Stop keeping and/or answering this person, and delete what the switches say we must\nnot hold. With no body, everything is kept away except comment automations.\n\nDeletes ReelDrop's copy only: nothing is removed from Instagram, and the person is not told.\nThe deletion is permanent. Restoring them later keeps new messages, not these.","operationId":"exclude_conversation_inbox_conversations__conversation_id__exclude_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/ExclusionSwitches"},{"type":"null"}],"title":"Body"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExclusionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inbox/exclusions":{"get":{"tags":["inbox"],"summary":"List Exclusions","operationId":"list_exclusions_inbox_exclusions_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExclusionOut"},"title":"Response List Exclusions Inbox Exclusions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["inbox"],"summary":"Exclude By Username","description":"Exclude someone by username, before or after they have written. A thread they already\nhave is matched now; otherwise it applies from their first message.","operationId":"exclude_by_username_inbox_exclusions_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExclusionByUsernameIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExclusionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inbox/exclusions/{exclusion_id}":{"patch":{"tags":["inbox"],"summary":"Update Exclusion","description":"Change what is kept away from someone. Turning on \"hide from inbox\" deletes their thread.","operationId":"update_exclusion_inbox_exclusions__exclusion_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"exclusion_id","in":"path","required":true,"schema":{"type":"string","title":"Exclusion Id"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExclusionSwitches"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExclusionOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["inbox"],"summary":"Restore Exclusion","description":"Stop leaving this person alone. Their earlier messages are not recovered.","operationId":"restore_exclusion_inbox_exclusions__exclusion_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"exclusion_id","in":"path","required":true,"schema":{"type":"string","title":"Exclusion Id"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inbox/conversations/{conversation_id}/suggestions":{"post":{"tags":["inbox"],"summary":"Suggest Replies","description":"Two or three draft replies in the owner's voice. Nothing is sent: the person edits and sends one.","operationId":"suggest_replies_inbox_conversations__conversation_id__suggestions_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"conversation_id","in":"path","required":true,"schema":{"type":"string","title":"Conversation Id"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuggestionsOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inbox/saved-replies":{"get":{"tags":["inbox"],"summary":"List Saved Replies","operationId":"list_saved_replies_inbox_saved_replies_get","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SavedReplyOut"},"title":"Response List Saved Replies Inbox Saved Replies Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["inbox"],"summary":"Create Saved Reply","operationId":"create_saved_reply_inbox_saved_replies_post","security":[{"HTTPBearer":[]}],"parameters":[{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedReplyIn"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedReplyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/inbox/saved-replies/{reply_id}":{"patch":{"tags":["inbox"],"summary":"Update Saved Reply","operationId":"update_saved_reply_inbox_saved_replies__reply_id__patch","security":[{"HTTPBearer":[]}],"parameters":[{"name":"reply_id","in":"path","required":true,"schema":{"type":"string","title":"Reply Id"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedReplyPatch"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedReplyOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["inbox"],"summary":"Delete Saved Reply","operationId":"delete_saved_reply_inbox_saved_replies__reply_id__delete","security":[{"HTTPBearer":[]}],"parameters":[{"name":"reply_id","in":"path","required":true,"schema":{"type":"string","title":"Reply Id"}},{"name":"workspace_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to.","title":"Workspace Id"},"description":"Workspace this request applies to. Defaults to the caller's personal workspace. Must be one the caller belongs to."}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AcceptResult":{"properties":{"workspace_id":{"type":"string","title":"Workspace Id"},"workspace_slug":{"type":"string","title":"Workspace Slug"}},"type":"object","required":["workspace_id","workspace_slug"],"title":"AcceptResult"},"AccountAnalyticsResponse":{"properties":{"followers_total":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Followers Total"},"follows":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Follows"},"unfollows":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Unfollows"},"reach":{"items":{"$ref":"#/components/schemas/DailyValue"},"type":"array","title":"Reach"},"follower_count":{"items":{"$ref":"#/components/schemas/DailyValue"},"type":"array","title":"Follower Count"},"totals_28d":{"$ref":"#/components/schemas/AccountTotals"},"this_week":{"$ref":"#/components/schemas/AccountTotals"},"last_week":{"$ref":"#/components/schemas/AccountTotals"},"age_gender":{"items":{"$ref":"#/components/schemas/DemoResult"},"type":"array","title":"Age Gender"},"cities":{"items":{"$ref":"#/components/schemas/DemoResult"},"type":"array","title":"Cities"},"countries":{"items":{"$ref":"#/components/schemas/DemoResult"},"type":"array","title":"Countries"},"range":{"$ref":"#/components/schemas/RangeEcho"},"clamped":{"type":"boolean","title":"Clamped","default":false},"out_of_retention":{"type":"boolean","title":"Out Of Retention","default":false}},"type":"object","required":["followers_total","follows","unfollows","reach","follower_count","totals_28d","this_week","last_week","age_gender","cities","countries","range"],"title":"AccountAnalyticsResponse"},"AccountTotals":{"properties":{"views":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Views"},"reach":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reach"},"accounts_engaged":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Accounts Engaged"},"total_interactions":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Interactions"},"profile_links_taps":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Profile Links Taps"}},"type":"object","title":"AccountTotals"},"ActionFailureOut":{"properties":{"action":{"type":"string","title":"Action"},"code":{"type":"string","title":"Code"},"message":{"type":"string","title":"Message"}},"type":"object","required":["action","code","message"],"title":"ActionFailureOut","description":"A send that did not go out, in words the creator can act on. Instagram's\nown error text and codes are deliberately absent — they stay in our logs."},"AddCreatorIn":{"properties":{"ig_account_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ig Account Id"},"ig_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ig Username"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","title":"AddCreatorIn"},"AddSlideVersionRequest":{"properties":{"slide_num":{"type":"integer","title":"Slide Num"},"image_b64":{"type":"string","title":"Image B64"}},"type":"object","required":["slide_num","image_b64"],"title":"AddSlideVersionRequest"},"AiDmConfig":{"properties":{"goal":{"type":"string","title":"Goal","default":""},"context":{"type":"string","title":"Context","default":""},"exit_condition":{"type":"string","title":"Exit Condition","default":""},"max_turns":{"type":"integer","title":"Max Turns","default":6},"inquiries_only":{"type":"boolean","title":"Inquiries Only","default":true},"first_message_enabled":{"type":"boolean","title":"First Message Enabled","default":false},"first_message":{"type":"string","title":"First Message","default":""},"handoff_message":{"type":"string","title":"Handoff Message","default":""},"fallback_message":{"type":"string","title":"Fallback Message","default":""},"tone":{"type":"string","enum":["friendly","professional","playful","concise"],"title":"Tone","default":"friendly"},"link":{"type":"string","title":"Link","default":""}},"type":"object","title":"AiDmConfig","description":"The brief for an ai_dm automation: what the AI is trying to do, what it\nis allowed to know, and where it has to stop.\n\nOnly read when trigger.type == \"ai_dm\". It is stored on every automation\nregardless so that toggling the trigger type in the builder never destroys a\nparagraph of typed context."},"AiDmPreviewIn":{"properties":{"ai":{"$ref":"#/components/schemas/AiDmConfig"},"transcript":{"items":{"$ref":"#/components/schemas/AiDmPreviewTurn"},"type":"array","title":"Transcript"}},"type":"object","required":["ai"],"title":"AiDmPreviewIn"},"AiDmPreviewOut":{"properties":{"reply":{"type":"string","title":"Reply"},"done":{"type":"boolean","title":"Done"},"respond":{"type":"boolean","title":"Respond","default":true}},"type":"object","required":["reply","done"],"title":"AiDmPreviewOut"},"AiDmPreviewTurn":{"properties":{"role":{"type":"string","enum":["user","assistant"],"title":"Role"},"text":{"type":"string","maxLength":2000,"title":"Text"}},"type":"object","required":["role","text"],"title":"AiDmPreviewTurn"},"AnalyticsOut":{"properties":{"days":{"type":"integer","title":"Days"},"replies_sent":{"type":"integer","title":"Replies Sent"},"messages_received":{"type":"integer","title":"Messages Received"},"median_response_seconds":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Median Response Seconds"},"responses_measured":{"type":"integer","title":"Responses Measured"},"daily":{"items":{"$ref":"#/components/schemas/DailyOut"},"type":"array","title":"Daily"},"leads_total":{"type":"integer","title":"Leads Total"},"leads_by_stage":{"additionalProperties":{"type":"integer"},"type":"object","title":"Leads By Stage"},"won_in_period":{"type":"integer","title":"Won In Period"},"conversion_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Conversion Rate"},"truncated":{"type":"boolean","title":"Truncated"}},"type":"object","required":["days","replies_sent","messages_received","median_response_seconds","responses_measured","daily","leads_total","leads_by_stage","won_in_period","conversion_rate","truncated"],"title":"AnalyticsOut"},"ApplyIn":{"properties":{"sample_reel_url":{"type":"string","maxLength":500,"minLength":1,"title":"Sample Reel Url"},"why":{"type":"string","maxLength":500,"minLength":1,"title":"Why"},"payout":{"$ref":"#/components/schemas/PayoutIn"},"accepted_terms":{"type":"boolean","title":"Accepted Terms"},"terms_version":{"type":"string","title":"Terms Version","default":"2026-09-22"}},"type":"object","required":["sample_reel_url","why","payout","accepted_terms"],"title":"ApplyIn"},"ApproveIn":{"properties":{"cap_override_cents":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Cap Override Cents"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","title":"ApproveIn"},"AttachmentIn":{"properties":{"key":{"type":"string","maxLength":300,"minLength":1,"title":"Key"},"name":{"type":"string","maxLength":200,"title":"Name","default":""}},"type":"object","required":["key"],"title":"AttachmentIn"},"AttachmentOut":{"properties":{"type":{"type":"string","title":"Type"},"kind":{"type":"string","title":"Kind"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Url"},"link_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link Url"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"mime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mime"},"size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Size"},"stored":{"type":"boolean","title":"Stored","default":false},"expired":{"type":"boolean","title":"Expired","default":false},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["type","kind"],"title":"AttachmentOut"},"AttachmentUploadUrlResponse":{"properties":{"upload_url":{"type":"string","title":"Upload Url"},"s3_key":{"type":"string","title":"S3 Key"},"public_url":{"type":"string","title":"Public Url"}},"type":"object","required":["upload_url","s3_key","public_url"],"title":"AttachmentUploadUrlResponse"},"AttributionRequest":{"properties":{"ref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ref"},"uref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Uref"},"utm":{"additionalProperties":{"type":"string"},"type":"object","title":"Utm","default":{}}},"type":"object","title":"AttributionRequest"},"AutomationAction-Input":{"properties":{"type":{"type":"string","enum":["public_reply","private_dm"],"title":"Type"},"messages":{"items":{"type":"string"},"type":"array","title":"Messages"},"buttons":{"items":{"$ref":"#/components/schemas/MessageButton"},"type":"array","title":"Buttons"},"reply_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reply Limit"}},"type":"object","required":["type"],"title":"AutomationAction"},"AutomationAction-Output":{"properties":{"type":{"type":"string","enum":["public_reply","private_dm"],"title":"Type"},"messages":{"items":{"type":"string"},"type":"array","title":"Messages"},"buttons":{"items":{"$ref":"#/components/schemas/MessageButton"},"type":"array","title":"Buttons"},"reply_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reply Limit"}},"type":"object","required":["type"],"title":"AutomationAction"},"AutomationFollowUp":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":false},"delay_seconds":{"type":"integer","title":"Delay Seconds","default":3600},"message":{"type":"string","title":"Message","default":""}},"type":"object","title":"AutomationFollowUp"},"AutomationLogOut":{"properties":{"id":{"type":"string","title":"Id"},"automation_id":{"type":"string","title":"Automation Id"},"from_ig_user_id":{"type":"string","title":"From Ig User Id"},"trigger_type":{"type":"string","title":"Trigger Type"},"event_id":{"type":"string","title":"Event Id"},"actions_executed":{"items":{"type":"string"},"type":"array","title":"Actions Executed"},"triggered_at":{"type":"string","format":"date-time","title":"Triggered At"},"follow_up_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Follow Up Error"},"failures":{"items":{"$ref":"#/components/schemas/ActionFailureOut"},"type":"array","title":"Failures"}},"type":"object","required":["id","automation_id","from_ig_user_id","trigger_type","event_id","actions_executed","triggered_at"],"title":"AutomationLogOut"},"AutomationOut":{"properties":{"id":{"type":"string","title":"Id"},"workspace_id":{"type":"string","title":"Workspace Id"},"ig_user_id":{"type":"string","title":"Ig User Id"},"name":{"type":"string","title":"Name"},"status":{"type":"string","title":"Status"},"trigger":{"$ref":"#/components/schemas/AutomationTrigger-Output"},"actions":{"items":{"$ref":"#/components/schemas/AutomationAction-Output"},"type":"array","title":"Actions"},"opening_message":{"$ref":"#/components/schemas/OpeningMessage"},"ask_for_follow":{"type":"boolean","title":"Ask For Follow"},"follow_gate_message":{"type":"string","title":"Follow Gate Message"},"follow_gate_button_label":{"type":"string","title":"Follow Gate Button Label"},"follow_up":{"$ref":"#/components/schemas/AutomationFollowUp"},"ai":{"$ref":"#/components/schemas/AiDmConfig"},"stats":{"$ref":"#/components/schemas/AutomationStats"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"},"public_reply_usage":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Public Reply Usage"},"ice_breakers_synced_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ice Breakers Synced At"},"ice_breakers_sync_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ice Breakers Sync Error"},"stalled":{"anyOf":[{"$ref":"#/components/schemas/AutomationStall"},{"type":"null"}]},"paused_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Paused Reason"},"deleted_post_ids":{"items":{"type":"string"},"type":"array","title":"Deleted Post Ids"}},"type":"object","required":["id","workspace_id","ig_user_id","name","status","trigger","actions","opening_message","ask_for_follow","follow_gate_message","follow_gate_button_label","follow_up","ai","stats","created_at","updated_at"],"title":"AutomationOut"},"AutomationStall":{"properties":{"reason":{"type":"string","title":"Reason"},"skips":{"type":"integer","title":"Skips"},"last_media_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Media Id"},"last_at":{"type":"string","format":"date-time","title":"Last At"}},"type":"object","required":["reason","skips","last_at"],"title":"AutomationStall","description":"Why an active automation is not firing, for the automations list.\n\nWritten by the engine (services/automation_engine._record_skip) and reset\nthe moment the automation matches again, so `skips` reads as \"since this\nlast worked\" rather than as a lifetime total."},"AutomationStats":{"properties":{"dms_sent":{"type":"integer","title":"Dms Sent","default":0},"dms_failed":{"type":"integer","title":"Dms Failed","default":0},"public_replies_sent":{"type":"integer","title":"Public Replies Sent","default":0},"events_received":{"type":"integer","title":"Events Received","default":0},"button_taps":{"type":"integer","title":"Button Taps","default":0},"replies_received":{"type":"integer","title":"Replies Received","default":0},"follow_ups_sent":{"type":"integer","title":"Follow Ups Sent","default":0},"follow_ups_missed_window":{"type":"integer","title":"Follow Ups Missed Window","default":0},"ai_replies_sent":{"type":"integer","title":"Ai Replies Sent","default":0},"ai_conversations":{"type":"integer","title":"Ai Conversations","default":0},"ai_handoffs":{"type":"integer","title":"Ai Handoffs","default":0},"ai_failures":{"type":"integer","title":"Ai Failures","default":0},"ai_replies_skipped":{"type":"integer","title":"Ai Replies Skipped","default":0},"ai_quota_blocks":{"type":"integer","title":"Ai Quota Blocks","default":0},"ai_link_violations":{"type":"integer","title":"Ai Link Violations","default":0}},"type":"object","title":"AutomationStats"},"AutomationStatsSummary":{"properties":{"dms_sent":{"type":"integer","title":"Dms Sent"},"public_replies_sent":{"type":"integer","title":"Public Replies Sent"},"active_automations":{"type":"integer","title":"Active Automations"}},"type":"object","required":["dms_sent","public_replies_sent","active_automations"],"title":"AutomationStatsSummary","description":"The workspace's automation counters, summed. Exactly three numbers — the\ndashboard tile renders them and nothing else, and anything extra here would\nbe another field nobody reads."},"AutomationTrigger-Input":{"properties":{"type":{"type":"string","enum":["comment","dm","story_reply","ai_dm","ice_breaker"],"title":"Type"},"post_target":{"type":"string","enum":["all","specific","scheduled","attach_later"],"title":"Post Target","default":"all"},"post_ids":{"items":{"type":"string"},"type":"array","title":"Post Ids"},"keywords":{"items":{"type":"string"},"type":"array","title":"Keywords"},"keyword_match":{"type":"string","enum":["exact","contains","any"],"title":"Keyword Match","default":"contains"},"ice_breakers":{"items":{"type":"string"},"type":"array","title":"Ice Breakers"},"ice_breaker_replies":{"items":{"$ref":"#/components/schemas/IceBreakerReply-Input"},"type":"array","title":"Ice Breaker Replies"}},"type":"object","required":["type"],"title":"AutomationTrigger"},"AutomationTrigger-Output":{"properties":{"type":{"type":"string","enum":["comment","dm","story_reply","ai_dm","ice_breaker"],"title":"Type"},"post_target":{"type":"string","enum":["all","specific","scheduled","attach_later"],"title":"Post Target","default":"all"},"post_ids":{"items":{"type":"string"},"type":"array","title":"Post Ids"},"keywords":{"items":{"type":"string"},"type":"array","title":"Keywords"},"keyword_match":{"type":"string","enum":["exact","contains","any"],"title":"Keyword Match","default":"contains"},"ice_breakers":{"items":{"type":"string"},"type":"array","title":"Ice Breakers"},"ice_breaker_replies":{"items":{"$ref":"#/components/schemas/IceBreakerReply-Output"},"type":"array","title":"Ice Breaker Replies"}},"type":"object","required":["type"],"title":"AutomationTrigger"},"AvailablePlansResponse":{"properties":{"plan_types":{"items":{"type":"string"},"type":"array","title":"Plan Types"}},"type":"object","required":["plan_types"],"title":"AvailablePlansResponse"},"BadgeItem":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"unit":{"type":"string","title":"Unit"},"earned":{"type":"boolean","title":"Earned"},"earned_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Earned At"},"seen":{"type":"boolean","title":"Seen","default":false},"current":{"type":"integer","title":"Current"},"target":{"type":"integer","title":"Target"},"progress":{"type":"number","title":"Progress"}},"type":"object","required":["id","name","description","unit","earned","current","target","progress"],"title":"BadgeItem"},"BadgesResponse":{"properties":{"badges":{"items":{"$ref":"#/components/schemas/BadgeItem"},"type":"array","title":"Badges"}},"type":"object","required":["badges"],"title":"BadgesResponse"},"BadgesSeenRequest":{"properties":{"ids":{"items":{"type":"string"},"type":"array","maxItems":8,"title":"Ids"}},"type":"object","title":"BadgesSeenRequest"},"BillingStatusResponse":{"properties":{"plan":{"$ref":"#/components/schemas/WorkspacePlan"},"billing_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Billing Type"},"subscription_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subscription Status"},"subscription_current_period_end":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subscription Current Period End"},"subscription_interval":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Subscription Interval"},"cancel_at_period_end":{"type":"boolean","title":"Cancel At Period End"},"is_active":{"type":"boolean","title":"Is Active"},"stripe_publishable_key":{"type":"string","title":"Stripe Publishable Key"},"image_gen_used":{"type":"integer","title":"Image Gen Used"},"image_gen_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Image Gen Limit"},"image_credits":{"type":"integer","title":"Image Credits"},"referral_credit_months":{"type":"integer","title":"Referral Credit Months","default":0},"referral_credit_cents":{"type":"integer","title":"Referral Credit Cents","default":0},"referral_credit_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referral Credit Currency"},"referral_comp_plan":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referral Comp Plan"},"referral_comp_ends_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referral Comp Ends At"},"referral_half_off_months":{"type":"integer","title":"Referral Half Off Months","default":0},"referral_half_off_ends":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referral Half Off Ends"},"pending_plan":{"anyOf":[{"$ref":"#/components/schemas/WorkspacePlan"},{"type":"null"}]},"pending_plan_effective_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pending Plan Effective At"}},"type":"object","required":["plan","billing_type","subscription_status","subscription_current_period_end","subscription_interval","cancel_at_period_end","is_active","stripe_publishable_key","image_gen_used","image_gen_limit","image_credits"],"title":"BillingStatusResponse"},"Body_analyze_reference_ai_carousel_analyze_reference_post":{"properties":{"images":{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array","title":"Images"}},"type":"object","required":["images"],"title":"Body_analyze_reference_ai_carousel_analyze_reference_post"},"Body_generate_post_ai_post_generate_post":{"properties":{"topic":{"type":"string","title":"Topic","default":""},"niche":{"type":"string","title":"Niche","default":"general"},"tone_preference":{"type":"string","title":"Tone Preference","default":"any"},"images":{"items":{"type":"string","contentMediaType":"application/octet-stream"},"type":"array","title":"Images","default":[]}},"type":"object","title":"Body_generate_post_ai_post_generate_post"},"Body_generate_reel_ai_reel_generate_post":{"properties":{"topic":{"type":"string","title":"Topic","default":""},"niche":{"type":"string","title":"Niche","default":"general"},"tone_preference":{"type":"string","title":"Tone Preference","default":"any"},"s3_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"S3 Key"},"video_mime":{"type":"string","title":"Video Mime","default":"video/mp4"}},"type":"object","title":"Body_generate_reel_ai_reel_generate_post"},"Body_get_attachment_upload_url_ai_attachment_upload_url_post":{"properties":{"mime_type":{"type":"string","title":"Mime Type","default":"application/pdf"}},"type":"object","title":"Body_get_attachment_upload_url_ai_attachment_upload_url_post"},"Body_get_thumbnail_upload_url_ai_thumbnail_upload_url_post":{"properties":{"mime_type":{"type":"string","title":"Mime Type","default":"image/jpeg"}},"type":"object","title":"Body_get_thumbnail_upload_url_ai_thumbnail_upload_url_post"},"Body_get_video_upload_url_ai_reel_upload_url_post":{"properties":{"mime_type":{"type":"string","title":"Mime Type","default":"video/mp4"}},"type":"object","title":"Body_get_video_upload_url_ai_reel_upload_url_post"},"Body_init_multipart_upload_ai_reel_upload_init_post":{"properties":{"mime_type":{"type":"string","title":"Mime Type","default":"video/mp4"},"file_size":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"File Size"}},"type":"object","title":"Body_init_multipart_upload_ai_reel_upload_init_post"},"Body_publish_reel_endpoint_instagram_publish_reel_post":{"properties":{"s3_key":{"type":"string","title":"S3 Key"},"video_mime":{"type":"string","title":"Video Mime","default":"video/mp4"},"caption":{"type":"string","title":"Caption","default":""},"share_to_feed":{"type":"boolean","title":"Share To Feed","default":true},"thumbnail_s3_key":{"type":"string","title":"Thumbnail S3 Key","default":""},"allow_comments":{"type":"boolean","title":"Allow Comments","default":true},"ai_caption_used":{"type":"boolean","title":"Ai Caption Used","default":false},"ai_hashtags_used":{"type":"boolean","title":"Ai Hashtags Used","default":false},"automation_id":{"type":"string","title":"Automation Id","default":""},"is_trial":{"type":"boolean","title":"Is Trial","default":false},"trial_graduation":{"type":"string","title":"Trial Graduation","default":"MANUAL"},"first_comment":{"type":"string","title":"First Comment","default":""},"collaborators":{"type":"string","title":"Collaborators","default":""}},"type":"object","required":["s3_key"],"title":"Body_publish_reel_endpoint_instagram_publish_reel_post"},"Body_publish_story_endpoint_instagram_publish_story_post":{"properties":{"s3_key":{"type":"string","title":"S3 Key"},"is_video":{"type":"boolean","title":"Is Video","default":false},"automation_id":{"type":"string","title":"Automation Id","default":""}},"type":"object","required":["s3_key"],"title":"Body_publish_story_endpoint_instagram_publish_story_post"},"BrandKit":{"properties":{"colors":{"items":{"type":"string"},"type":"array","title":"Colors","default":[]},"fonts":{"items":{"type":"string"},"type":"array","title":"Fonts","default":[]},"source_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Name"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"},"updated_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Updated At"}},"type":"object","title":"BrandKit","description":"The workspace's saved visual identity: the colours (and typography) every new\ncarousel starts from. Seeded by hand in the builder, or extracted client-side\nfrom an uploaded design-system PDF/image."},"BrandKitBody":{"properties":{"colors":{"items":{"type":"string"},"type":"array","title":"Colors","default":[]},"fonts":{"items":{"type":"string"},"type":"array","title":"Fonts","default":[]},"source_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Name"}},"type":"object","title":"BrandKitBody"},"BulkDeleteIn":{"properties":{"ids":{"items":{"type":"string"},"type":"array","title":"Ids"}},"type":"object","title":"BulkDeleteIn"},"BulkDeleteOut":{"properties":{"deleted":{"type":"integer","title":"Deleted"},"deleted_ids":{"items":{"type":"string"},"type":"array","title":"Deleted Ids"}},"type":"object","required":["deleted"],"title":"BulkDeleteOut"},"BulkIn":{"properties":{"ids":{"items":{"type":"string"},"type":"array","maxItems":100,"minItems":1,"title":"Ids"},"action":{"type":"string","enum":["archive","unarchive","read","unread","mute","unmute","add_tag","remove_tag"],"title":"Action"},"tag":{"anyOf":[{"type":"string","maxLength":24},{"type":"null"}],"title":"Tag"}},"type":"object","required":["ids","action"],"title":"BulkIn"},"BulkOut":{"properties":{"updated":{"type":"integer","title":"Updated"}},"type":"object","required":["updated"],"title":"BulkOut"},"CadenceSlotItem":{"properties":{"weekday":{"type":"integer","title":"Weekday"},"hour":{"type":"integer","title":"Hour"},"soft":{"type":"boolean","title":"Soft"}},"type":"object","required":["weekday","hour","soft"],"title":"CadenceSlotItem"},"CampaignIn":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"type":{"type":"string","enum":["ugc","influencer"],"title":"Type"},"hashtag":{"type":"string","maxLength":60,"title":"Hashtag","default":""},"mention":{"type":"string","maxLength":60,"title":"Mention","default":""},"budget_cents":{"type":"integer","minimum":0.0,"title":"Budget Cents"},"brief_md":{"type":"string","title":"Brief Md","default":""},"product_url":{"type":"string","title":"Product Url","default":"https://reeldrop.io"},"allowed_countries":{"items":{"type":"string"},"type":"array","title":"Allowed Countries","default":[]},"min_followers":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Followers"},"min_account_age_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Min Account Age Days"},"cpm_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cpm Cents"},"threshold_views":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Threshold Views"},"cap_reel_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cap Reel Cents"},"cap_creator_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cap Creator Cents"},"max_paid_reels_per_creator":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Paid Reels Per Creator"},"fixed_fee_reel_cents":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Fixed Fee Reel Cents"},"window_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Window Days"},"hold_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Hold Days"},"spot_check_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spot Check Rate"},"accepts_reels_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Accepts Reels Until"},"max_creators":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Creators"}},"type":"object","required":["name","type","budget_cents"],"title":"CampaignIn"},"CaptionItem":{"properties":{"tone":{"type":"string","title":"Tone"},"text":{"type":"string","title":"Text"},"chars":{"type":"integer","title":"Chars"},"match_pct":{"type":"integer","title":"Match Pct"},"cta_position":{"type":"string","title":"Cta Position","default":"end"}},"type":"object","required":["tone","text","chars","match_pct"],"title":"CaptionItem"},"CarouselCaptionsRequest":{"properties":{"topic":{"type":"string","title":"Topic"},"theme_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Label"},"slides":{"items":{"type":"object"},"type":"array","title":"Slides","default":[]},"user_context":{"type":"string","title":"User Context","default":""}},"type":"object","required":["topic"],"title":"CarouselCaptionsRequest"},"CarouselContentType":{"type":"string","enum":["general","curation"],"title":"CarouselContentType"},"CarouselCreate":{"properties":{"topic":{"type":"string","title":"Topic"},"slide_count":{"type":"integer","title":"Slide Count"},"content_type":{"$ref":"#/components/schemas/CarouselContentType","default":"general"}},"type":"object","required":["topic","slide_count"],"title":"CarouselCreate"},"CarouselMeta":{"properties":{"carousel_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Carousel Id"},"slide_count":{"type":"integer","title":"Slide Count","default":0}},"type":"object","title":"CarouselMeta","description":"Carousel-specific metadata fields."},"CarouselOut":{"properties":{"id":{"type":"string","title":"Id"},"workspace_id":{"type":"string","title":"Workspace Id"},"created_by":{"type":"string","title":"Created By"},"topic":{"type":"string","title":"Topic"},"slide_count":{"type":"integer","title":"Slide Count"},"content_type":{"$ref":"#/components/schemas/CarouselContentType"},"slides":{"items":{"$ref":"#/components/schemas/SlideOut"},"type":"array","title":"Slides"},"theme_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Label"},"theme_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Prompt"},"color_palette":{"items":{"type":"string"},"type":"array","title":"Color Palette","default":[]},"fonts":{"items":{"type":"string"},"type":"array","title":"Fonts","default":[]},"status":{"$ref":"#/components/schemas/CarouselStatus"},"s3_prefix":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"S3 Prefix"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","workspace_id","created_by","topic","slide_count","content_type","slides","theme_label","theme_prompt","status","s3_prefix","created_at","updated_at"],"title":"CarouselOut"},"CarouselStatus":{"type":"string","enum":["draft","generating","ready"],"title":"CarouselStatus"},"CarouselUpdate":{"properties":{"slides":{"anyOf":[{"items":{"$ref":"#/components/schemas/SlideIn"},"type":"array"},{"type":"null"}],"title":"Slides"},"theme_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Label"},"theme_prompt":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Theme Prompt"},"color_palette":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Color Palette"},"fonts":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Fonts"},"status":{"anyOf":[{"$ref":"#/components/schemas/CarouselStatus"},{"type":"null"}]}},"type":"object","title":"CarouselUpdate"},"ChangePlanRequest":{"properties":{"plan_type":{"type":"string","title":"Plan Type"}},"type":"object","required":["plan_type"],"title":"ChangePlanRequest"},"ChangePlanResponse":{"properties":{"direction":{"type":"string","title":"Direction"},"plan_type":{"type":"string","title":"Plan Type"},"effective_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Effective At"},"message":{"type":"string","title":"Message"}},"type":"object","required":["direction","plan_type","message"],"title":"ChangePlanResponse"},"CheckoutRequest":{"properties":{"plan_type":{"type":"string","title":"Plan Type","default":"year"}},"type":"object","title":"CheckoutRequest"},"CheckoutResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"CheckoutResponse"},"ClearIn":{"properties":{"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"clear_signals":{"type":"boolean","title":"Clear Signals","default":false}},"type":"object","title":"ClearIn"},"CollabCreate":{"properties":{"url":{"type":"string","title":"Url"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"}},"type":"object","required":["url"],"title":"CollabCreate"},"CommentReplyVariantsIn":{"properties":{"count":{"type":"integer","title":"Count","default":10},"exclude":{"items":{"type":"string"},"type":"array","title":"Exclude"}},"type":"object","title":"CommentReplyVariantsIn"},"CommentReplyVariantsOut":{"properties":{"variants":{"items":{"type":"string"},"type":"array","title":"Variants"}},"type":"object","required":["variants"],"title":"CommentReplyVariantsOut"},"ConfirmCreditsRequest":{"properties":{"session_id":{"type":"string","title":"Session Id"}},"type":"object","required":["session_id"],"title":"ConfirmCreditsRequest"},"ConfirmCreditsResponse":{"properties":{"image_credits":{"type":"integer","title":"Image Credits"}},"type":"object","required":["image_credits"],"title":"ConfirmCreditsResponse"},"ConfirmSubscriptionRequest":{"properties":{"session_id":{"type":"string","title":"Session Id"}},"type":"object","required":["session_id"],"title":"ConfirmSubscriptionRequest"},"ContactRequest":{"properties":{"name":{"type":"string","maxLength":100,"minLength":1,"title":"Name"},"email":{"type":"string","format":"email","title":"Email"},"issue_type":{"type":"string","enum":["billing","instagram","publishing","bug","feature","account","other"],"title":"Issue Type"},"message":{"type":"string","maxLength":4000,"minLength":10,"title":"Message"},"image_b64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image B64"},"image_name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Image Name"},"image_mime":{"anyOf":[{"type":"string","enum":["image/png","image/jpeg","image/webp","image/gif"]},{"type":"null"}],"title":"Image Mime"},"company":{"type":"string","title":"Company","default":""}},"type":"object","required":["name","email","issue_type","message"],"title":"ContactRequest"},"ContentEvidence":{"properties":{"spoken":{"items":{"type":"string"},"type":"array","title":"Spoken","default":[]},"overlay_text":{"items":{"type":"string"},"type":"array","title":"Overlay Text","default":[]},"hook_text":{"type":"string","title":"Hook Text","default":""},"content_cta":{"$ref":"#/components/schemas/DetectedCta","default":{"present":false,"verbatim":"","trigger_word":"","channel":""}}},"type":"object","title":"ContentEvidence","description":"What the model transcribed from the media before writing captions — the grounding\nblock from EVIDENCE_BLOCKS in services/gemini.py. Diagnostic surface: a bad caption is\nnow attributable to either bad evidence or a caption that ignored it."},"ContentPlanResponse":{"properties":{"summary":{"type":"string","title":"Summary"},"format_verdicts":{"items":{"$ref":"#/components/schemas/FormatVerdictItem"},"type":"array","title":"Format Verdicts"},"cadence":{"items":{"$ref":"#/components/schemas/FormatCadenceItem"},"type":"array","title":"Cadence"},"cadence_rationale":{"type":"string","title":"Cadence Rationale"},"recap":{"anyOf":[{"$ref":"#/components/schemas/RecapItem"},{"type":"null"}]},"total_posts":{"type":"integer","title":"Total Posts"},"generated_at":{"type":"string","title":"Generated At"}},"type":"object","required":["summary","format_verdicts","cadence","cadence_rationale","total_posts","generated_at"],"title":"ContentPlanResponse"},"ContextAutomationOut":{"properties":{"automation_id":{"type":"string","title":"Automation Id"},"name":{"type":"string","title":"Name"},"trigger_type":{"type":"string","title":"Trigger Type"},"triggered_at":{"type":"string","format":"date-time","title":"Triggered At"}},"type":"object","required":["automation_id","name","trigger_type","triggered_at"],"title":"ContextAutomationOut"},"ContextOriginOut":{"properties":{"automation_id":{"type":"string","title":"Automation Id"},"name":{"type":"string","title":"Name"},"trigger_type":{"type":"string","title":"Trigger Type"},"triggered_at":{"type":"string","format":"date-time","title":"Triggered At"},"keywords":{"items":{"type":"string"},"type":"array","title":"Keywords","default":[]},"post_count":{"type":"integer","title":"Post Count","default":0}},"type":"object","required":["automation_id","name","trigger_type","triggered_at"],"title":"ContextOriginOut"},"ContextOut":{"properties":{"origin":{"anyOf":[{"$ref":"#/components/schemas/ContextOriginOut"},{"type":"null"}]},"first_contact_at":{"type":"string","format":"date-time","title":"First Contact At"},"automations":{"items":{"$ref":"#/components/schemas/ContextAutomationOut"},"type":"array","title":"Automations"}},"type":"object","required":["first_contact_at","automations"],"title":"ContextOut"},"ConversationListOut":{"properties":{"pinned":{"items":{"$ref":"#/components/schemas/ConversationOut"},"type":"array","title":"Pinned"},"items":{"items":{"$ref":"#/components/schemas/ConversationOut"},"type":"array","title":"Items"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"counts":{"$ref":"#/components/schemas/TabCounts"},"status_counts":{"$ref":"#/components/schemas/StatusCounts"},"tab_unread":{"$ref":"#/components/schemas/TabUnread"},"tab_counts":{"$ref":"#/components/schemas/TabTotals"}},"type":"object","required":["pinned","items","next_cursor","counts","status_counts","tab_unread","tab_counts"],"title":"ConversationListOut"},"ConversationOut":{"properties":{"id":{"type":"string","title":"Id"},"igsid":{"type":"string","title":"Igsid"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"last_message_at":{"type":"string","format":"date-time","title":"Last Message At"},"last_message_preview":{"type":"string","title":"Last Message Preview"},"last_message_direction":{"type":"string","enum":["in","out"],"title":"Last Message Direction"},"unread_count":{"type":"integer","title":"Unread Count"},"pinned":{"type":"boolean","title":"Pinned"},"archived":{"type":"boolean","title":"Archived"},"muted":{"type":"boolean","title":"Muted"},"note":{"type":"string","title":"Note"},"snoozed_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Snoozed Until"},"stage":{"anyOf":[{"type":"string","enum":["new","interested","won","lost"]},{"type":"null"}],"title":"Stage"},"resurfaced":{"type":"boolean","title":"Resurfaced","default":false},"match_snippet":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Match Snippet"},"status":{"anyOf":[{"type":"string","enum":["open","closed"]},{"type":"null"}],"title":"Status"},"closed_manually":{"type":"boolean","title":"Closed Manually","default":false},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"},"tab":{"type":"string","enum":["chats","outreach","archived","snoozed"],"title":"Tab"},"can_reply":{"type":"boolean","title":"Can Reply"},"reply_window_ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Reply Window Ends At"}},"type":"object","required":["id","igsid","name","username","avatar_url","last_message_at","last_message_preview","last_message_direction","unread_count","pinned","archived","muted","note","tags","tab","can_reply","reply_window_ends_at"],"title":"ConversationOut"},"ConversationPatch":{"properties":{"pinned":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Pinned"},"archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Archived"},"muted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Muted"},"note":{"anyOf":[{"type":"string","maxLength":1000},{"type":"null"}],"title":"Note"},"tags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Tags"},"closed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Closed"},"snoozed_until":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Snoozed Until"},"stage":{"anyOf":[{"type":"string","enum":["new","interested","won","lost"]},{"type":"null"}],"title":"Stage"}},"type":"object","title":"ConversationPatch"},"CoverTextKit":{"properties":{"headline":{"type":"string","title":"Headline"},"punch_word":{"type":"string","title":"Punch Word"},"accent_word":{"type":"string","title":"Accent Word"},"eyebrow":{"type":"string","title":"Eyebrow","default":""},"kicker":{"type":"string","title":"Kicker","default":""},"question":{"type":"string","title":"Question","default":""},"annotations":{"items":{"type":"string"},"type":"array","title":"Annotations","default":[]},"logo_subject":{"type":"string","title":"Logo Subject","default":""}},"type":"object","required":["headline","punch_word","accent_word"],"title":"CoverTextKit","description":"One angle's worth of cover text, in slots every thumbnail theme maps onto. Produced by\nthe same video analysis that writes the captions, so a themed cover costs no extra video\ncall — see COVER_TEXT_BLOCKS in services/gemini.py."},"CoverTextRequest":{"properties":{"topic":{"type":"string","maxLength":2000,"minLength":1,"title":"Topic"}},"type":"object","required":["topic"],"title":"CoverTextRequest"},"CreateAutomationIn":{"properties":{"name":{"type":"string","title":"Name"},"ig_user_id":{"type":"string","title":"Ig User Id"},"trigger":{"$ref":"#/components/schemas/AutomationTrigger-Input"},"actions":{"items":{"$ref":"#/components/schemas/AutomationAction-Input"},"type":"array","title":"Actions"},"opening_message":{"$ref":"#/components/schemas/OpeningMessage"},"ask_for_follow":{"type":"boolean","title":"Ask For Follow","default":false},"follow_gate_message":{"type":"string","title":"Follow Gate Message","default":"Hey! Follow us first and I'll send you the link 🙌"},"follow_gate_button_label":{"type":"string","maxLength":20,"title":"Follow Gate Button Label","default":"I followed!"},"follow_up":{"$ref":"#/components/schemas/AutomationFollowUp"},"ai":{"$ref":"#/components/schemas/AiDmConfig"}},"type":"object","required":["name","ig_user_id","trigger"],"title":"CreateAutomationIn"},"CreditPackOut":{"properties":{"key":{"type":"string","title":"Key"},"credits":{"type":"integer","title":"Credits"}},"type":"object","required":["key","credits"],"title":"CreditPackOut"},"CreditPacksResponse":{"properties":{"packs":{"items":{"$ref":"#/components/schemas/CreditPackOut"},"type":"array","title":"Packs"}},"type":"object","required":["packs"],"title":"CreditPacksResponse"},"DailyOut":{"properties":{"date":{"type":"string","title":"Date"},"received":{"type":"integer","title":"Received"},"sent":{"type":"integer","title":"Sent"}},"type":"object","required":["date","received","sent"],"title":"DailyOut"},"DailyValue":{"properties":{"date":{"type":"string","title":"Date"},"value":{"type":"integer","title":"Value"}},"type":"object","required":["date","value"],"title":"DailyValue"},"DayCount":{"properties":{"date":{"type":"string","title":"Date"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["date","count"],"title":"DayCount"},"DeleteAccountRequest":{"properties":{"confirmation":{"type":"string","title":"Confirmation"}},"type":"object","required":["confirmation"],"title":"DeleteAccountRequest","description":"Typed confirmation, echoed from the danger-zone modal.\n\nChecked server-side as well as in the UI so that neither a stray client\ncall nor a hand-rolled request can delete an account without the user\nhaving spelled out what they were doing."},"DemoResult":{"properties":{"dimension_values":{"items":{"type":"string"},"type":"array","title":"Dimension Values"},"value":{"type":"integer","title":"Value"}},"type":"object","required":["dimension_values","value"],"title":"DemoResult"},"DetectedCta":{"properties":{"present":{"type":"boolean","title":"Present","default":false},"verbatim":{"type":"string","title":"Verbatim","default":""},"trigger_word":{"type":"string","title":"Trigger Word","default":""},"channel":{"type":"string","title":"Channel","default":""}},"type":"object","title":"DetectedCta","description":"The CTA the model found in the content itself (spoken, overlaid, or on a slide)."},"DevReelIn":{"properties":{"ig_account_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ig Account Id"},"caption":{"type":"string","title":"Caption"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"permalink":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Permalink"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"}},"type":"object","required":["caption"],"title":"DevReelIn"},"DevSweepIn":{"properties":{"steps":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Steps"},"now":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Now"},"seed":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seed"},"force_batch_period":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Force Batch Period"}},"type":"object","title":"DevSweepIn"},"DisputeIn":{"properties":{"message":{"type":"string","maxLength":2000,"minLength":1,"title":"Message"}},"type":"object","required":["message"],"title":"DisputeIn"},"DmMessageVariantsIn":{"properties":{"count":{"type":"integer","title":"Count","default":10},"exclude":{"items":{"type":"string"},"type":"array","title":"Exclude"}},"type":"object","title":"DmMessageVariantsIn"},"DmMessageVariantsOut":{"properties":{"variants":{"items":{"type":"string"},"type":"array","title":"Variants"}},"type":"object","required":["variants"],"title":"DmMessageVariantsOut"},"ExclusionByUsernameIn":{"properties":{"hide_from_inbox":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Hide From Inbox"},"block_dm_automations":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Block Dm Automations"},"block_ai_replies":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Block Ai Replies"},"block_comment_automations":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Block Comment Automations"},"username":{"type":"string","maxLength":200,"minLength":1,"title":"Username"}},"type":"object","required":["username"],"title":"ExclusionByUsernameIn"},"ExclusionOut":{"properties":{"id":{"type":"string","title":"Id"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"pending":{"type":"boolean","title":"Pending","default":false},"hide_from_inbox":{"type":"boolean","title":"Hide From Inbox","default":true},"block_dm_automations":{"type":"boolean","title":"Block Dm Automations","default":true},"block_ai_replies":{"type":"boolean","title":"Block Ai Replies","default":true},"block_comment_automations":{"type":"boolean","title":"Block Comment Automations","default":false},"threads_deleted":{"type":"integer","title":"Threads Deleted","default":0}},"type":"object","required":["id","created_at"],"title":"ExclusionOut"},"ExclusionSwitches":{"properties":{"hide_from_inbox":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Hide From Inbox"},"block_dm_automations":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Block Dm Automations"},"block_ai_replies":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Block Ai Replies"},"block_comment_automations":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Block Comment Automations"}},"type":"object","title":"ExclusionSwitches","description":"What to keep away from them (models/inbox.InboxExclusion). An omitted switch keeps\nits current value, or the default on a new exclusion."},"ExpandThemeRequest":{"properties":{"theme_label":{"type":"string","maxLength":200,"minLength":1,"title":"Theme Label"},"topic":{"type":"string","maxLength":2000,"minLength":1,"title":"Topic"},"slides":{"items":{"type":"object"},"type":"array","maxItems":10,"title":"Slides","default":[]}},"type":"object","required":["theme_label","topic"],"title":"ExpandThemeRequest"},"FakeSnapshotIn":{"properties":{"reel_id":{"type":"string","title":"Reel Id"},"views":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Views"},"reach":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reach"},"likes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Likes"},"comments":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Comments"},"is_public":{"type":"boolean","title":"Is Public","default":true},"hours_since_publish":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hours Since Publish"}},"type":"object","required":["reel_id"],"title":"FakeSnapshotIn"},"FlagIn":{"properties":{"reason":{"type":"string","enum":["bought_views","deleted","missing_disclosure","off_brand","duplicate"],"title":"Reason"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["reason"],"title":"FlagIn"},"FormatAdherenceItem":{"properties":{"fmt":{"type":"string","title":"Fmt"},"label":{"type":"string","title":"Label"},"actual":{"type":"integer","title":"Actual"},"planned":{"type":"integer","title":"Planned"},"is_nudge":{"type":"boolean","title":"Is Nudge"}},"type":"object","required":["fmt","label","actual","planned","is_nudge"],"title":"FormatAdherenceItem"},"FormatCadenceItem":{"properties":{"fmt":{"type":"string","title":"Fmt"},"label":{"type":"string","title":"Label"},"per_week":{"type":"integer","title":"Per Week"},"slots":{"items":{"$ref":"#/components/schemas/CadenceSlotItem"},"type":"array","title":"Slots"},"change":{"type":"string","title":"Change"},"is_new":{"type":"boolean","title":"Is New"}},"type":"object","required":["fmt","label","per_week","slots","change","is_new"],"title":"FormatCadenceItem"},"FormatVerdictItem":{"properties":{"fmt":{"type":"string","title":"Fmt"},"label":{"type":"string","title":"Label"},"verdict":{"type":"string","title":"Verdict"},"count":{"type":"integer","title":"Count"},"er":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Er"},"er_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Er Ratio"},"freq_share":{"type":"number","title":"Freq Share"},"reason":{"type":"string","title":"Reason"}},"type":"object","required":["fmt","label","verdict","count","freq_share","reason"],"title":"FormatVerdictItem"},"FreeEditSlideRequest":{"properties":{"image_b64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image B64"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"edit_prompt":{"type":"string","title":"Edit Prompt"},"context":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Context"}},"type":"object","required":["edit_prompt"],"title":"FreeEditSlideRequest"},"GenerateHookRequest":{"properties":{"hook_text":{"type":"string","title":"Hook Text"},"theme_prompt":{"type":"string","title":"Theme Prompt"},"photo_b64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo B64"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"list_style":{"type":"boolean","title":"List Style","default":false},"scenic_subject":{"type":"boolean","title":"Scenic Subject","default":false},"preserve_hook_pose":{"type":"boolean","title":"Preserve Hook Pose","default":false},"photo_backdrop":{"type":"boolean","title":"Photo Backdrop","default":false},"chrome_labels":{"items":{"type":"string"},"type":"array","maxItems":6,"title":"Chrome Labels"},"content_overview":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Content Overview"},"profile_avatar_b64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Avatar B64"},"profile_avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Avatar Url"},"logo_b64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo B64"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"}},"type":"object","required":["hook_text","theme_prompt"],"title":"GenerateHookRequest"},"GenerateReelThumbnailRequest":{"properties":{"theme_prompt":{"type":"string","title":"Theme Prompt"},"text_manifest":{"items":{"type":"string"},"type":"array","title":"Text Manifest","default":[]},"theme_key":{"type":"string","title":"Theme Key","default":""},"photo_b64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo B64"},"photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Photo Url"},"logo_subject":{"type":"string","maxLength":100,"title":"Logo Subject","default":""},"wide_type":{"type":"boolean","title":"Wide Type","default":false}},"type":"object","required":["theme_prompt"],"title":"GenerateReelThumbnailRequest"},"GenerateSlideRequest":{"properties":{"slide_prompt":{"type":"string","title":"Slide Prompt"},"thumbnail_b64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail B64"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"},"slide_num":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Slide Num"},"total_slides":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Slides"},"list_style":{"type":"boolean","title":"List Style","default":false},"is_cta":{"type":"boolean","title":"Is Cta","default":false},"profile_avatar_b64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Avatar B64"},"profile_avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Avatar Url"},"no_bullets":{"type":"boolean","title":"No Bullets","default":false},"section_numbers":{"type":"boolean","title":"Section Numbers","default":false},"chrome_labels":{"items":{"type":"string"},"type":"array","maxItems":6,"title":"Chrome Labels"},"logo_b64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo B64"},"logo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Url"}},"type":"object","required":["slide_prompt"],"title":"GenerateSlideRequest"},"GridMeta":{"properties":{"showing_last_n":{"type":"integer","title":"Showing Last N"},"total_published":{"type":"integer","title":"Total Published"},"has_more":{"type":"boolean","title":"Has More"},"generated_at":{"type":"string","title":"Generated At"},"pinned_caveat":{"type":"string","title":"Pinned Caveat","default":"Instagram lets you pin up to 3 posts to the top of your profile. Meta's API doesn't report which posts are pinned, so a pinned post shows here in date order rather than at the top."}},"type":"object","required":["showing_last_n","total_published","has_more","generated_at"],"title":"GridMeta"},"GridPlaceholderItem":{"properties":{"id":{"type":"string","title":"Id"},"slot_at":{"type":"string","title":"Slot At"},"note":{"type":"string","title":"Note"},"color":{"type":"string","title":"Color"},"created_by":{"type":"string","title":"Created By"},"created_at":{"type":"string","title":"Created At"},"updated_at":{"type":"string","title":"Updated At"}},"type":"object","required":["id","slot_at","note","color","created_by","created_at","updated_at"],"title":"GridPlaceholderItem"},"GridPlannedItem":{"properties":{"id":{"type":"string","title":"Id"},"mode":{"type":"string","title":"Mode"},"status":{"type":"string","title":"Status"},"caption":{"type":"string","title":"Caption"},"scheduled_at":{"type":"string","title":"Scheduled At"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"},"has_media":{"type":"boolean","title":"Has Media"}},"type":"object","required":["id","mode","status","caption","scheduled_at","thumbnail_url","has_media"],"title":"GridPlannedItem"},"GridProfile":{"properties":{"ig_account_id":{"type":"string","title":"Ig Account Id"},"username":{"type":"string","title":"Username"},"display_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Display Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"followers_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Followers Count"},"follows_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Follows Count"},"media_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Media Count"},"profile_refreshed_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Profile Refreshed At"}},"type":"object","required":["ig_account_id","username","display_name","avatar_url","followers_count","follows_count","media_count","profile_refreshed_at"],"title":"GridProfile"},"GridPublishedItem":{"properties":{"id":{"type":"string","title":"Id"},"mode":{"type":"string","title":"Mode"},"source":{"type":"string","title":"Source"},"caption":{"type":"string","title":"Caption"},"published_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published At"},"ig_permalink":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ig Permalink"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"},"collab_username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Collab Username"}},"type":"object","required":["id","mode","source","caption","published_at","ig_permalink","thumbnail_url"],"title":"GridPublishedItem"},"GridResponse":{"properties":{"profile":{"anyOf":[{"$ref":"#/components/schemas/GridProfile"},{"type":"null"}]},"published":{"items":{"$ref":"#/components/schemas/GridPublishedItem"},"type":"array","title":"Published"},"planned":{"items":{"$ref":"#/components/schemas/GridPlannedItem"},"type":"array","title":"Planned"},"placeholders":{"items":{"$ref":"#/components/schemas/GridPlaceholderItem"},"type":"array","title":"Placeholders"},"meta":{"$ref":"#/components/schemas/GridMeta"}},"type":"object","required":["profile","published","planned","placeholders","meta"],"title":"GridResponse"},"GrowthPoint":{"properties":{"day":{"type":"string","title":"Day"},"total":{"type":"integer","title":"Total"}},"type":"object","required":["day","total"],"title":"GrowthPoint"},"GrowthResponse":{"properties":{"signups":{"items":{"$ref":"#/components/schemas/GrowthPoint"},"type":"array","title":"Signups","default":[]},"reels_scheduled":{"items":{"$ref":"#/components/schemas/GrowthPoint"},"type":"array","title":"Reels Scheduled","default":[]},"dms_sent":{"items":{"$ref":"#/components/schemas/GrowthPoint"},"type":"array","title":"Dms Sent","default":[]}},"type":"object","title":"GrowthResponse"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HashtagItem":{"properties":{"tag":{"type":"string","title":"Tag"},"tier":{"type":"string","title":"Tier"}},"type":"object","required":["tag","tier"],"title":"HashtagItem"},"HookPhotoOut":{"properties":{"hook_photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hook Photo Url"}},"type":"object","required":["hook_photo_url"],"title":"HookPhotoOut"},"HookPhotoRequest":{"properties":{"image_b64":{"type":"string","title":"Image B64"}},"type":"object","required":["image_b64"],"title":"HookPhotoRequest"},"HourSlot":{"properties":{"day":{"type":"integer","title":"Day"},"hour":{"type":"integer","title":"Hour"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["day","hour","count"],"title":"HourSlot"},"IceBreakerReply-Input":{"properties":{"messages":{"items":{"type":"string"},"type":"array","title":"Messages"},"buttons":{"items":{"$ref":"#/components/schemas/MessageButton"},"type":"array","title":"Buttons"}},"type":"object","title":"IceBreakerReply","description":"The DM one ice breaker question sends when tapped — the same text +\nbuttons shape as a private_dm action, scoped to a single question."},"IceBreakerReply-Output":{"properties":{"messages":{"items":{"type":"string"},"type":"array","title":"Messages"},"buttons":{"items":{"$ref":"#/components/schemas/MessageButton"},"type":"array","title":"Buttons"}},"type":"object","title":"IceBreakerReply","description":"The DM one ice breaker question sends when tapped — the same text +\nbuttons shape as a private_dm action, scoped to a single question."},"IgConnectionResponse":{"properties":{"connected":{"type":"boolean","title":"Connected"},"user_owned":{"type":"boolean","title":"User Owned","default":false},"username":{"type":"string","title":"Username","default":""},"avatar_url":{"type":"string","title":"Avatar Url","default":""},"expires_at":{"type":"string","title":"Expires At","default":""},"ig_user_id":{"type":"string","title":"Ig User Id","default":""},"ig_account_id":{"type":"string","title":"Ig Account Id","default":""},"needs_reauth":{"type":"boolean","title":"Needs Reauth","default":false},"reauth_reason":{"type":"string","title":"Reauth Reason","default":""}},"type":"object","required":["connected"],"title":"IgConnectionResponse"},"IgProfileStatsResponse":{"properties":{"connected":{"type":"boolean","title":"Connected"},"username":{"type":"string","title":"Username","default":""},"display_name":{"type":"string","title":"Display Name","default":""},"avatar_url":{"type":"string","title":"Avatar Url","default":""},"followers_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Followers Count"},"follows_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Follows Count"},"media_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Media Count"}},"type":"object","required":["connected"],"title":"IgProfileStatsResponse"},"InpaintSlideRequest":{"properties":{"image_b64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image B64"},"image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Image Url"},"region_b64":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region B64"},"edit_prompt":{"type":"string","title":"Edit Prompt"},"region_coords":{"type":"object","title":"Region Coords"}},"type":"object","required":["edit_prompt","region_coords"],"title":"InpaintSlideRequest"},"InviteOut":{"properties":{"id":{"type":"string","title":"Id"},"email":{"type":"string","title":"Email"},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"status":{"$ref":"#/components/schemas/WorkspaceInviteStatus"},"invited_by":{"type":"string","title":"Invited By"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"},"expired":{"type":"boolean","title":"Expired"}},"type":"object","required":["id","email","role","status","invited_by","created_at","expires_at","expired"],"title":"InviteOut"},"InvitePreview":{"properties":{"workspace_name":{"type":"string","title":"Workspace Name"},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"invited_by_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invited By Name"},"email":{"type":"string","title":"Email"},"expired":{"type":"boolean","title":"Expired"}},"type":"object","required":["workspace_name","role","invited_by_name","email","expired"],"title":"InvitePreview"},"LatestReelResponse":{"properties":{"thumbnail_url":{"type":"string","title":"Thumbnail Url","default":""}},"type":"object","title":"LatestReelResponse"},"LogoFromSiteBody":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"LogoFromSiteBody"},"LogoUploadBody":{"properties":{"image_b64":{"type":"string","title":"Image B64"}},"type":"object","required":["image_b64"],"title":"LogoUploadBody"},"MarkPaidIn":{"properties":{"reference":{"type":"string","maxLength":200,"minLength":1,"title":"Reference"},"paid_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Paid At"}},"type":"object","required":["reference"],"title":"MarkPaidIn"},"McpKeyCreate":{"properties":{"name":{"type":"string","title":"Name"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes","default":[]}},"type":"object","required":["name"],"title":"McpKeyCreate"},"McpKeyCreated":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"key_prefix":{"type":"string","title":"Key Prefix"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"},"key":{"type":"string","title":"Key"}},"type":"object","required":["id","name","key_prefix","scopes","created_at","last_used_at","revoked_at","key"],"title":"McpKeyCreated"},"McpKeyList":{"properties":{"keys":{"items":{"$ref":"#/components/schemas/McpKeyOut"},"type":"array","title":"Keys"},"available_scopes":{"items":{"type":"string"},"type":"array","title":"Available Scopes"},"max_active":{"type":"integer","title":"Max Active"}},"type":"object","required":["keys","available_scopes","max_active"],"title":"McpKeyList"},"McpKeyOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"key_prefix":{"type":"string","title":"Key Prefix"},"scopes":{"items":{"type":"string"},"type":"array","title":"Scopes"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_used_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Used At"},"revoked_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Revoked At"}},"type":"object","required":["id","name","key_prefix","scopes","created_at","last_used_at","revoked_at"],"title":"McpKeyOut"},"MeOut":{"properties":{"clerk_id":{"type":"string","title":"Clerk Id"},"email":{"type":"string","title":"Email"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"role":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Role"},"niches":{"items":{"type":"string"},"type":"array","title":"Niches","default":[]},"referral_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Referral Source"},"onboarding_completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Onboarding Completed At"},"email_ig_disconnected":{"type":"boolean","title":"Email Ig Disconnected","default":true},"email_publish_failed":{"type":"boolean","title":"Email Publish Failed","default":true},"email_weekly_digest":{"type":"boolean","title":"Email Weekly Digest","default":true},"email_monthly_digest":{"type":"boolean","title":"Email Monthly Digest","default":true},"email_product_updates":{"type":"boolean","title":"Email Product Updates","default":true},"email_referral_updates":{"type":"boolean","title":"Email Referral Updates","default":true},"email_plan_nudges":{"type":"boolean","title":"Email Plan Nudges","default":true},"email_milestones":{"type":"boolean","title":"Email Milestones","default":true},"referral_promo_seen":{"type":"integer","title":"Referral Promo Seen","default":0},"personal_workspace":{"$ref":"#/components/schemas/routers__auth__WorkspaceOut"},"default_workspace_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Default Workspace Id"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["clerk_id","email","name","avatar_url","personal_workspace","created_at"],"title":"MeOut"},"MeUpdate":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"role":{"anyOf":[{"$ref":"#/components/schemas/OnboardingRole"},{"type":"null"}]},"niches":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Niches"},"referral_source":{"anyOf":[{"$ref":"#/components/schemas/ReferralSource"},{"type":"null"}]},"email_ig_disconnected":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Ig Disconnected"},"email_publish_failed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Publish Failed"},"email_weekly_digest":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Weekly Digest"},"email_monthly_digest":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Monthly Digest"},"email_product_updates":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Product Updates"},"email_referral_updates":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Referral Updates"},"email_plan_nudges":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Plan Nudges"},"email_milestones":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Email Milestones"},"complete_onboarding":{"type":"boolean","title":"Complete Onboarding","default":false}},"type":"object","title":"MeUpdate","description":"Partial profile update. Used by both the onboarding modal and the\n\"About you\" section of Settings — the only difference is that Settings\nomits `complete_onboarding`."},"MediaCheckRequest":{"properties":{"ids":{"items":{"type":"string"},"type":"array","maxItems":20,"title":"Ids"}},"type":"object","title":"MediaCheckRequest"},"MediaCheckResponse":{"properties":{"gone":{"items":{"type":"string"},"type":"array","title":"Gone","default":[]},"unknown":{"items":{"type":"string"},"type":"array","title":"Unknown","default":[]}},"type":"object","title":"MediaCheckResponse"},"MediaItemOut":{"properties":{"id":{"type":"string","title":"Id"},"caption":{"type":"string","title":"Caption","default":""},"media_type":{"type":"string","title":"Media Type","default":""},"media_product_type":{"type":"string","title":"Media Product Type","default":""},"thumbnail_url":{"type":"string","title":"Thumbnail Url","default":""},"permalink":{"type":"string","title":"Permalink","default":""},"timestamp":{"type":"string","title":"Timestamp","default":""}},"type":"object","required":["id"],"title":"MediaItemOut"},"MediaKitImagesRequest":{"properties":{"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"thumbnail_urls":{"items":{"type":"string"},"type":"array","title":"Thumbnail Urls","default":[]}},"type":"object","title":"MediaKitImagesRequest","description":"URLs the browser cannot read itself (Instagram's CDN sends no CORS\nheaders), fetched server-side and returned as base64 JPEGs for the\nclient-rendered PDF."},"MediaKitNicheRequest":{"properties":{"bio":{"type":"string","maxLength":2000,"title":"Bio","default":""},"captions":{"items":{"type":"string"},"type":"array","maxItems":20,"title":"Captions","default":[]}},"type":"object","title":"MediaKitNicheRequest"},"MediaKitWriteupRequest":{"properties":{"handle":{"type":"string","maxLength":100,"title":"Handle"},"niche_label":{"type":"string","maxLength":100,"title":"Niche Label","default":""},"followers":{"type":"integer","title":"Followers","default":0},"avg_reel_views":{"type":"number","title":"Avg Reel Views","default":0},"er_pct":{"type":"number","title":"Er Pct","default":0},"posts_per_week":{"type":"number","title":"Posts Per Week","default":0},"audience":{"type":"string","maxLength":500,"title":"Audience","default":""},"formats":{"type":"string","maxLength":500,"title":"Formats","default":""},"collabs":{"type":"string","maxLength":500,"title":"Collabs","default":""},"notes":{"type":"string","maxLength":2000,"title":"Notes","default":""},"location":{"type":"string","maxLength":100,"title":"Location","default":""}},"type":"object","required":["handle"],"title":"MediaKitWriteupRequest"},"MediaListResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/MediaItemOut"},"type":"array","title":"Items"}},"type":"object","required":["items"],"title":"MediaListResponse"},"MemberInvite":{"properties":{"email":{"type":"string","title":"Email"},"role":{"$ref":"#/components/schemas/WorkspaceRole","default":"member"}},"type":"object","required":["email"],"title":"MemberInvite"},"MemberOut":{"properties":{"user_id":{"type":"string","title":"User Id"},"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"joined_at":{"type":"string","format":"date-time","title":"Joined At"}},"type":"object","required":["user_id","email","name","avatar_url","role","joined_at"],"title":"MemberOut"},"MemberRoleUpdate":{"properties":{"role":{"$ref":"#/components/schemas/WorkspaceRole"}},"type":"object","required":["role"],"title":"MemberRoleUpdate"},"MessageButton":{"properties":{"type":{"type":"string","enum":["web_url","postback"],"title":"Type","default":"web_url"},"title":{"type":"string","title":"Title"},"url":{"type":"string","title":"Url","default":""},"payload":{"type":"string","title":"Payload","default":""},"kind":{"type":"string","enum":["link","pdf","cards"],"title":"Kind","default":"link"},"asset_key":{"type":"string","title":"Asset Key","default":""},"asset_name":{"type":"string","title":"Asset Name","default":""},"cards":{"items":{"$ref":"#/components/schemas/MessageCard"},"type":"array","title":"Cards"}},"type":"object","required":["title"],"title":"MessageButton"},"MessageCard":{"properties":{"title":{"type":"string","title":"Title"},"subtitle":{"type":"string","title":"Subtitle","default":""},"image_url":{"type":"string","title":"Image Url","default":""},"button_title":{"type":"string","title":"Button Title","default":"Link"},"url":{"type":"string","title":"Url","default":""}},"type":"object","required":["title"],"title":"MessageCard","description":"One element of a generic-template carousel — an image, a title, and one\nlink button. Delivered when the user taps a `kind=\"cards\"` button on the DM\ncard (a postback), never pushed unprompted."},"MessageIn":{"properties":{"message":{"type":"string","maxLength":2000,"minLength":1,"title":"Message"}},"type":"object","required":["message"],"title":"MessageIn"},"MessageOut":{"properties":{"id":{"type":"string","title":"Id"},"direction":{"type":"string","enum":["in","out"],"title":"Direction"},"text":{"type":"string","title":"Text"},"attachments":{"items":{"$ref":"#/components/schemas/AttachmentOut"},"type":"array","title":"Attachments"},"reply_to_story":{"type":"boolean","title":"Reply To Story"},"sent_via":{"anyOf":[{"type":"string","const":"inbox"},{"type":"null"}],"title":"Sent Via"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","direction","text","attachments","reply_to_story","sent_via","created_at"],"title":"MessageOut"},"MultipartAbortRequest":{"properties":{"s3_key":{"type":"string","title":"S3 Key"},"upload_id":{"type":"string","title":"Upload Id"}},"type":"object","required":["s3_key","upload_id"],"title":"MultipartAbortRequest"},"MultipartCompleteRequest":{"properties":{"s3_key":{"type":"string","title":"S3 Key"},"upload_id":{"type":"string","title":"Upload Id"},"parts":{"items":{"$ref":"#/components/schemas/MultipartPart"},"type":"array","title":"Parts"}},"type":"object","required":["s3_key","upload_id","parts"],"title":"MultipartCompleteRequest"},"MultipartCompleteResponse":{"properties":{"s3_key":{"type":"string","title":"S3 Key"},"url":{"type":"string","title":"Url"}},"type":"object","required":["s3_key","url"],"title":"MultipartCompleteResponse"},"MultipartInitResponse":{"properties":{"upload_id":{"type":"string","title":"Upload Id"},"s3_key":{"type":"string","title":"S3 Key"}},"type":"object","required":["upload_id","s3_key"],"title":"MultipartInitResponse"},"MultipartPart":{"properties":{"part_number":{"type":"integer","title":"Part Number"},"etag":{"type":"string","title":"Etag"}},"type":"object","required":["part_number","etag"],"title":"MultipartPart"},"MultipartPartRequest":{"properties":{"s3_key":{"type":"string","title":"S3 Key"},"upload_id":{"type":"string","title":"Upload Id"},"part_number":{"type":"integer","title":"Part Number"}},"type":"object","required":["s3_key","upload_id","part_number"],"title":"MultipartPartRequest"},"MultipartPartResponse":{"properties":{"presigned_url":{"type":"string","title":"Presigned Url"}},"type":"object","required":["presigned_url"],"title":"MultipartPartResponse"},"MyInvite":{"properties":{"token":{"type":"string","title":"Token"},"workspace_id":{"type":"string","title":"Workspace Id"},"workspace_name":{"type":"string","title":"Workspace Name"},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"invited_by_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Invited By Name"},"expires_at":{"type":"string","format":"date-time","title":"Expires At"}},"type":"object","required":["token","workspace_id","workspace_name","role","invited_by_name","expires_at"],"title":"MyInvite"},"NoteIn":{"properties":{"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","title":"NoteIn"},"NotificationKind":{"type":"string","enum":["published","failed","delayed","nudge","rewards","milestone"],"title":"NotificationKind"},"NotificationList":{"properties":{"notifications":{"items":{"$ref":"#/components/schemas/NotificationOut"},"type":"array","title":"Notifications"},"unread_count":{"type":"integer","title":"Unread Count"}},"type":"object","required":["notifications","unread_count"],"title":"NotificationList"},"NotificationOut":{"properties":{"id":{"type":"string","title":"Id"},"kind":{"$ref":"#/components/schemas/NotificationKind"},"mode":{"type":"string","title":"Mode"},"title":{"type":"string","title":"Title"},"message":{"type":"string","title":"Message"},"ig_permalink":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ig Permalink"},"link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link"},"post_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Post Id"},"read":{"type":"boolean","title":"Read"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","kind","mode","title","message","ig_permalink","post_id","read","created_at"],"title":"NotificationOut"},"OAuthCompleteBody":{"properties":{"code":{"type":"string","title":"Code"},"state":{"type":"string","title":"State"}},"type":"object","required":["code","state"],"title":"OAuthCompleteBody"},"OAuthCompleteResponse":{"properties":{"status":{"type":"string","title":"Status"},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Username"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reason"},"ig_account":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ig Account"},"ig_workspace":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ig Workspace"},"ig_login":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ig Login"}},"type":"object","required":["status"],"title":"OAuthCompleteResponse"},"OAuthStartResponse":{"properties":{"oauth_url":{"type":"string","title":"Oauth Url"},"instagram_url":{"type":"string","title":"Instagram Url"}},"type":"object","required":["oauth_url","instagram_url"],"title":"OAuthStartResponse"},"OnboardingRole":{"type":"string","enum":["creator","influencer","founder","marketer","agency","coach","business_owner","student","freelancer","other"],"title":"OnboardingRole","description":"What the user does. Single-select."},"OpeningMessage":{"properties":{"enabled":{"type":"boolean","title":"Enabled","default":false},"text":{"type":"string","title":"Text","default":""},"button_label":{"type":"string","title":"Button Label","default":"Send me the link"}},"type":"object","title":"OpeningMessage","description":"Gated flow: send this card with a tappable button; deliver the private_dm only on tap."},"OutlineRequest":{"properties":{"topic":{"type":"string","maxLength":2000,"minLength":1,"title":"Topic"},"slide_count":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Slide Count"},"content_type":{"type":"string","title":"Content Type","default":"general"},"resources":{"items":{"$ref":"#/components/schemas/Resource"},"type":"array","maxItems":10,"title":"Resources","default":[]},"slide_num":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Slide Num"},"total_slides":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Slides"},"include_cta":{"type":"boolean","title":"Include Cta","default":true},"include_hook":{"type":"boolean","title":"Include Hook","default":true},"existing_slides":{"items":{"$ref":"#/components/schemas/OutlineSlide"},"type":"array","maxItems":10,"title":"Existing Slides","default":[]},"current_hook":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Hook"},"current_bullets":{"items":{"type":"string"},"type":"array","maxItems":10,"title":"Current Bullets","default":[]},"tone":{"type":"string","title":"Tone","default":"default"},"bullets_per_slide":{"type":"integer","maximum":6.0,"minimum":0.0,"title":"Bullets Per Slide","default":3},"custom_instructions":{"type":"string","maxLength":500,"title":"Custom Instructions","default":""},"slide_instruction":{"type":"string","maxLength":500,"title":"Slide Instruction","default":""},"keep_hooks":{"type":"boolean","title":"Keep Hooks","default":false}},"type":"object","required":["topic","slide_count"],"title":"OutlineRequest"},"OutlineSlide":{"properties":{"num":{"type":"integer","title":"Num"},"hook":{"type":"string","title":"Hook","default":""},"bullets":{"items":{"type":"string"},"type":"array","title":"Bullets","default":[]}},"type":"object","required":["num"],"title":"OutlineSlide"},"PalettesBody":{"properties":{"palettes":{"items":{"$ref":"#/components/schemas/SavedPaletteBody"},"type":"array","title":"Palettes","default":[]}},"type":"object","title":"PalettesBody"},"PalettesOut":{"properties":{"palettes":{"items":{"$ref":"#/components/schemas/SavedPalette"},"type":"array","title":"Palettes","default":[]}},"type":"object","title":"PalettesOut"},"PayoutIn":{"properties":{"method":{"type":"string","enum":["upi","wise","paypal","credit"],"title":"Method"},"account":{"type":"string","maxLength":200,"title":"Account","default":""},"legal_name":{"type":"string","maxLength":200,"minLength":1,"title":"Legal Name"},"country":{"type":"string","maxLength":2,"minLength":2,"title":"Country"}},"type":"object","required":["method","legal_name","country"],"title":"PayoutIn"},"PipelineOut":{"properties":{"items":{"items":{"$ref":"#/components/schemas/ConversationOut"},"type":"array","title":"Items"},"counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Counts"}},"type":"object","required":["items","counts"],"title":"PipelineOut"},"PlaceholderCreate":{"properties":{"slot_at":{"type":"string","format":"date-time","title":"Slot At"},"note":{"type":"string","title":"Note","default":""},"color":{"type":"string","title":"Color","default":"#f6d365"}},"type":"object","required":["slot_at"],"title":"PlaceholderCreate"},"PlaceholderUpdate":{"properties":{"slot_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Slot At"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"},"color":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Color"}},"type":"object","title":"PlaceholderUpdate"},"PortalResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"PortalResponse"},"PostCreate":{"properties":{"ig_account_id":{"type":"string","title":"Ig Account Id"},"mode":{"$ref":"#/components/schemas/PostMode"},"caption":{"type":"string","title":"Caption","default":""},"hashtags":{"items":{"type":"string"},"type":"array","title":"Hashtags","default":[]},"media_urls":{"items":{"type":"string"},"type":"array","title":"Media Urls","default":[]},"media_kinds":{"items":{"type":"string"},"type":"array","title":"Media Kinds","default":[]},"video_s3_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Video S3 Key"},"thumbnail_s3_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail S3 Key"},"reel_meta":{"anyOf":[{"$ref":"#/components/schemas/ReelMeta"},{"type":"null"}]},"carousel_meta":{"anyOf":[{"$ref":"#/components/schemas/CarouselMeta"},{"type":"null"}]},"story_meta":{"anyOf":[{"$ref":"#/components/schemas/StoryMeta"},{"type":"null"}]},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At"},"publish_now":{"type":"boolean","title":"Publish Now","default":false},"automation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Automation Id"},"first_comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Comment"},"ai_caption_used":{"type":"boolean","title":"Ai Caption Used","default":false},"ai_hashtags_used":{"type":"boolean","title":"Ai Hashtags Used","default":false},"client_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Client Token"}},"type":"object","required":["ig_account_id","mode"],"title":"PostCreate"},"PostInsightItem":{"properties":{"id":{"type":"string","title":"Id"},"mode":{"type":"string","title":"Mode"},"source":{"type":"string","title":"Source"},"caption":{"type":"string","title":"Caption"},"published_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published At"},"ig_permalink":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ig Permalink"},"ig_media_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ig Media Id"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"},"views":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Views"},"reach":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reach"},"likes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Likes"},"comments":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Comments"},"saves":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Saves"},"shares":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shares"},"avg_watch_time_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Avg Watch Time Ms"},"ai_caption_used":{"type":"boolean","title":"Ai Caption Used"},"ai_hashtags_used":{"type":"boolean","title":"Ai Hashtags Used"},"is_trial":{"type":"boolean","title":"Is Trial","default":false}},"type":"object","required":["id","mode","source","caption","published_at","ig_permalink","thumbnail_url","views","reach","likes","comments","saves","shares","avg_watch_time_ms","ai_caption_used","ai_hashtags_used"],"title":"PostInsightItem"},"PostMode":{"type":"string","enum":["post","reel","story","carousel"],"title":"PostMode"},"PostOut":{"properties":{"id":{"type":"string","title":"Id"},"workspace_id":{"type":"string","title":"Workspace Id"},"ig_account_id":{"type":"string","title":"Ig Account Id"},"created_by":{"type":"string","title":"Created By"},"mode":{"$ref":"#/components/schemas/PostMode"},"status":{"$ref":"#/components/schemas/PostStatus"},"caption":{"type":"string","title":"Caption"},"hashtags":{"items":{"type":"string"},"type":"array","title":"Hashtags"},"media_urls":{"items":{"type":"string"},"type":"array","title":"Media Urls"},"media_kinds":{"items":{"type":"string"},"type":"array","title":"Media Kinds"},"reel_meta":{"anyOf":[{"$ref":"#/components/schemas/ReelMeta"},{"type":"null"}]},"carousel_meta":{"anyOf":[{"$ref":"#/components/schemas/CarouselMeta"},{"type":"null"}]},"story_meta":{"anyOf":[{"$ref":"#/components/schemas/StoryMeta"},{"type":"null"}]},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"schedule_arn":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Schedule Arn"},"ig_container_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ig Container Id"},"ig_permalink":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ig Permalink"},"publish_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Publish Error"},"automation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Automation Id"},"first_comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Comment"},"first_comment_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Comment Error"},"ai_caption_used":{"type":"boolean","title":"Ai Caption Used"},"ai_hashtags_used":{"type":"boolean","title":"Ai Hashtags Used"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","workspace_id","ig_account_id","created_by","mode","status","caption","hashtags","media_urls","media_kinds","reel_meta","carousel_meta","story_meta","scheduled_at","published_at","schedule_arn","ig_container_id","ig_permalink","publish_error","automation_id","first_comment","first_comment_error","ai_caption_used","ai_hashtags_used","created_at","updated_at"],"title":"PostOut"},"PostRetry":{"properties":{"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At"},"publish_now":{"type":"boolean","title":"Publish Now","default":false}},"type":"object","title":"PostRetry"},"PostStatus":{"type":"string","enum":["draft","scheduled","publishing","published","failed"],"title":"PostStatus"},"PostUpdate":{"properties":{"caption":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Caption"},"hashtags":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Hashtags"},"media_urls":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Media Urls"},"media_kinds":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Media Kinds"},"reel_meta":{"anyOf":[{"$ref":"#/components/schemas/ReelMeta"},{"type":"null"}]},"carousel_meta":{"anyOf":[{"$ref":"#/components/schemas/CarouselMeta"},{"type":"null"}]},"scheduled_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Scheduled At"},"status":{"anyOf":[{"$ref":"#/components/schemas/PostStatus"},{"type":"null"}]},"automation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Automation Id"},"first_comment":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"First Comment"}},"type":"object","title":"PostUpdate"},"PostsAnalyticsResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/PostInsightItem"},"type":"array","title":"Items"},"range":{"$ref":"#/components/schemas/RangeEcho"}},"type":"object","required":["items","range"],"title":"PostsAnalyticsResponse"},"PromoSeenOut":{"properties":{"referral_promo_seen":{"type":"integer","title":"Referral Promo Seen"}},"type":"object","required":["referral_promo_seen"],"title":"PromoSeenOut"},"RangeEcho":{"properties":{"since":{"type":"string","title":"Since"},"until":{"type":"string","title":"Until"}},"type":"object","required":["since","until"],"title":"RangeEcho","description":"The window a response was actually built for.\n\nAlways echoed so a caller labels the numbers from what came back, not\nfrom request state — the 90-day clamp and the cache can both make those\ndiffer."},"ReasonIn":{"properties":{"reason":{"type":"string","maxLength":1000,"minLength":1,"title":"Reason"}},"type":"object","required":["reason"],"title":"ReasonIn"},"RecapItem":{"properties":{"week_start":{"type":"string","title":"Week Start"},"week_end":{"type":"string","title":"Week End"},"published":{"type":"integer","title":"Published"},"planned":{"type":"integer","title":"Planned"},"per_format":{"items":{"$ref":"#/components/schemas/FormatAdherenceItem"},"type":"array","title":"Per Format"},"note":{"type":"string","title":"Note"}},"type":"object","required":["week_start","week_end","published","planned","per_format","note"],"title":"RecapItem"},"RecapScorecardResponse":{"properties":{"week_start":{"type":"string","title":"Week Start"},"week_end":{"type":"string","title":"Week End"},"prior_start":{"type":"string","title":"Prior Start"},"prior_end":{"type":"string","title":"Prior End"},"plan_available":{"type":"boolean","title":"Plan Available"},"published":{"type":"integer","title":"Published"},"planned":{"type":"integer","title":"Planned"},"per_format":{"items":{"$ref":"#/components/schemas/ScorecardFormatItem"},"type":"array","title":"Per Format"},"metrics":{"items":{"$ref":"#/components/schemas/ScorecardMetric"},"type":"array","title":"Metrics"},"note":{"type":"string","title":"Note"}},"type":"object","required":["week_start","week_end","prior_start","prior_end","plan_available","published","planned","per_format","metrics","note"],"title":"RecapScorecardResponse"},"ReelGenerateResponse":{"properties":{"reel_title":{"type":"string","title":"Reel Title"},"captions":{"items":{"$ref":"#/components/schemas/CaptionItem"},"type":"array","title":"Captions"},"hashtags":{"items":{"$ref":"#/components/schemas/HashtagItem"},"type":"array","title":"Hashtags"},"keywords":{"items":{"type":"string"},"type":"array","title":"Keywords","default":[]},"hook":{"type":"string","title":"Hook"},"cta":{"type":"string","title":"Cta"},"cover_texts":{"items":{"$ref":"#/components/schemas/CoverTextKit"},"type":"array","title":"Cover Texts","default":[]},"niche":{"type":"string","title":"Niche","default":""},"comment_keyword":{"type":"string","title":"Comment Keyword","default":""},"content_evidence":{"$ref":"#/components/schemas/ContentEvidence","default":{"spoken":[],"overlay_text":[],"hook_text":"","content_cta":{"channel":"","present":false,"trigger_word":"","verbatim":""}}}},"type":"object","required":["reel_title","captions","hashtags","hook","cta"],"title":"ReelGenerateResponse"},"ReelMeta":{"properties":{"audio_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Name"},"audio_artist":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Audio Artist"},"audio_start_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Audio Start Ms"},"cover_frame_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cover Frame Ms"},"duration_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Duration Ms"},"share_to_feed":{"type":"boolean","title":"Share To Feed","default":true},"collaborators":{"items":{"type":"string"},"type":"array","title":"Collaborators"},"allow_comments":{"type":"boolean","title":"Allow Comments","default":true},"allow_remixing":{"type":"boolean","title":"Allow Remixing","default":true},"is_trial":{"type":"boolean","title":"Is Trial","default":false},"trial_graduation":{"anyOf":[{"$ref":"#/components/schemas/TrialGraduation"},{"type":"null"}]}},"type":"object","title":"ReelMeta","description":"Reel-specific metadata fields."},"ReferralIn":{"properties":{"email":{"type":"string","format":"email","title":"Email"},"ref":{"type":"string","title":"Ref"}},"type":"object","required":["email","ref"],"title":"ReferralIn"},"ReferralRewardOut":{"properties":{"status":{"type":"string","title":"Status"},"mechanism":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mechanism"},"apply_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Apply State"},"denial_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Denial Reason"},"plan_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Type"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"}},"type":"object","required":["status"],"title":"ReferralRewardOut"},"ReferralRewardStateOut":{"properties":{"kind":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Kind"},"state":{"type":"string","title":"State","default":"none"},"months_available":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Months Available"},"plan_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plan Label"},"ends_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ends At"},"credit_cents":{"type":"integer","title":"Credit Cents","default":0},"credit_currency":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Credit Currency"}},"type":"object","title":"ReferralRewardStateOut","description":"The referrer's OWN reward, right now — what the sidebar badge and the\nSettings status panel render."},"ReferralSource":{"type":"string","enum":["instagram","youtube","tiktok","linkedin","x","reddit","google","friend","newsletter","podcast","ad","other"],"title":"ReferralSource","description":"How the user found ReelDrop. Optional."},"ReferralStats":{"properties":{"signups":{"type":"integer","title":"Signups","default":0},"awaiting_payment":{"type":"integer","title":"Awaiting Payment","default":0},"paid":{"type":"integer","title":"Paid","default":0},"months_earned":{"type":"integer","title":"Months Earned","default":0},"months_used":{"type":"integer","title":"Months Used","default":0},"cap_remaining":{"type":"integer","title":"Cap Remaining","default":0},"cap_months":{"type":"integer","title":"Cap Months","default":0}},"type":"object","title":"ReferralStats"},"ReferralsMeOut":{"properties":{"enabled":{"type":"boolean","title":"Enabled"},"code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Code"},"link":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Link"},"reward_preview":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reward Preview"},"reward":{"anyOf":[{"$ref":"#/components/schemas/ReferralRewardStateOut"},{"type":"null"}]},"stats":{"$ref":"#/components/schemas/ReferralStats","default":{"signups":0,"awaiting_payment":0,"paid":0,"months_earned":0,"months_used":0,"cap_remaining":0,"cap_months":0}},"rewards":{"items":{"$ref":"#/components/schemas/ReferralRewardOut"},"type":"array","title":"Rewards","default":[]}},"type":"object","required":["enabled"],"title":"ReferralsMeOut"},"RemoveIn":{"properties":{"note":{"type":"string","maxLength":1000,"minLength":1,"title":"Note"}},"type":"object","required":["note"],"title":"RemoveIn"},"ReorderRef":{"properties":{"kind":{"type":"string","enum":["post","placeholder"],"title":"Kind"},"id":{"type":"string","title":"Id"}},"type":"object","required":["kind","id"],"title":"ReorderRef"},"ReorderRequest":{"properties":{"a":{"$ref":"#/components/schemas/ReorderRef"},"b":{"$ref":"#/components/schemas/ReorderRef"}},"type":"object","required":["a","b"],"title":"ReorderRequest"},"ReplyIn":{"properties":{"text":{"type":"string","maxLength":1000,"minLength":1,"title":"Text"}},"type":"object","required":["text"],"title":"ReplyIn"},"ResolveIn":{"properties":{"outcome":{"type":"string","enum":["upheld","rejected"],"title":"Outcome"},"note":{"type":"string","title":"Note","default":""},"clear_signals":{"type":"boolean","title":"Clear Signals","default":false}},"type":"object","required":["outcome"],"title":"ResolveIn"},"Resource":{"properties":{"url":{"type":"string","title":"Url"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"}},"type":"object","required":["url"],"title":"Resource"},"SavedPalette":{"properties":{"name":{"type":"string","title":"Name"},"colors":{"items":{"type":"string"},"type":"array","title":"Colors","default":[]}},"type":"object","required":["name"],"title":"SavedPalette","description":"A palette the user chose to keep — shows up alongside the built-in presets."},"SavedPaletteBody":{"properties":{"name":{"type":"string","title":"Name"},"colors":{"items":{"type":"string"},"type":"array","title":"Colors","default":[]}},"type":"object","required":["name"],"title":"SavedPaletteBody"},"SavedReplyIn":{"properties":{"title":{"type":"string","maxLength":40,"minLength":1,"title":"Title"},"text":{"type":"string","maxLength":1000,"minLength":1,"title":"Text"}},"type":"object","required":["title","text"],"title":"SavedReplyIn"},"SavedReplyOut":{"properties":{"id":{"type":"string","title":"Id"},"title":{"type":"string","title":"Title"},"text":{"type":"string","title":"Text"}},"type":"object","required":["id","title","text"],"title":"SavedReplyOut"},"SavedReplyPatch":{"properties":{"title":{"anyOf":[{"type":"string","maxLength":40,"minLength":1},{"type":"null"}],"title":"Title"},"text":{"anyOf":[{"type":"string","maxLength":1000,"minLength":1},{"type":"null"}],"title":"Text"}},"type":"object","title":"SavedReplyPatch"},"SchedulingSettings":{"properties":{"timezone":{"type":"string","title":"Timezone"},"posting_days":{"items":{"type":"integer"},"type":"array","title":"Posting Days"},"posting_slots":{"items":{"type":"string"},"type":"array","title":"Posting Slots"}},"type":"object","required":["timezone","posting_days","posting_slots"],"title":"SchedulingSettings"},"SchedulingSettingsUpdate":{"properties":{"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone"},"posting_days":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Posting Days"},"posting_slots":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Posting Slots"}},"type":"object","title":"SchedulingSettingsUpdate"},"ScorecardFormatItem":{"properties":{"fmt":{"type":"string","title":"Fmt"},"label":{"type":"string","title":"Label"},"actual":{"type":"integer","title":"Actual"},"planned":{"type":"integer","title":"Planned"},"prior_actual":{"type":"integer","title":"Prior Actual"},"hit":{"type":"boolean","title":"Hit"},"is_nudge":{"type":"boolean","title":"Is Nudge"}},"type":"object","required":["fmt","label","actual","planned","prior_actual","hit","is_nudge"],"title":"ScorecardFormatItem"},"ScorecardMetric":{"properties":{"key":{"type":"string","title":"Key"},"label":{"type":"string","title":"Label"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"prior":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Prior"},"delta_pct":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Delta Pct"}},"type":"object","required":["key","label"],"title":"ScorecardMetric"},"SelectSlideVersionRequest":{"properties":{"slide_num":{"type":"integer","title":"Slide Num"},"idx":{"type":"integer","title":"Idx"}},"type":"object","required":["slide_num","idx"],"title":"SelectSlideVersionRequest"},"SlideIn":{"properties":{"num":{"type":"integer","title":"Num"},"hook":{"type":"string","title":"Hook"},"bullets":{"items":{"type":"string"},"type":"array","title":"Bullets","default":[]},"resource_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource Url"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"},"generated_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generated Image Url"},"image_versions":{"items":{"type":"string"},"type":"array","title":"Image Versions","default":[]},"image_version_idx":{"type":"integer","title":"Image Version Idx","default":0},"alt_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alt Text"},"user_tags":{"items":{"$ref":"#/components/schemas/UserTag"},"type":"array","title":"User Tags","default":[]}},"type":"object","required":["num","hook"],"title":"SlideIn"},"SlideOut":{"properties":{"num":{"type":"integer","title":"Num"},"hook":{"type":"string","title":"Hook"},"bullets":{"items":{"type":"string"},"type":"array","title":"Bullets"},"resource_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Resource Url"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"},"generated_image_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Generated Image Url"},"image_versions":{"items":{"type":"string"},"type":"array","title":"Image Versions","default":[]},"image_version_idx":{"type":"integer","title":"Image Version Idx","default":0},"alt_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Alt Text"},"user_tags":{"items":{"$ref":"#/components/schemas/UserTag"},"type":"array","title":"User Tags","default":[]}},"type":"object","required":["num","hook","bullets","resource_url","thumbnail_url","generated_image_url"],"title":"SlideOut"},"SlideVersionResponse":{"properties":{"url":{"type":"string","title":"Url"},"versions":{"items":{"type":"string"},"type":"array","title":"Versions"},"idx":{"type":"integer","title":"Idx"}},"type":"object","required":["url","versions","idx"],"title":"SlideVersionResponse"},"SlideVersionSelectResponse":{"properties":{"url":{"type":"string","title":"Url"},"idx":{"type":"integer","title":"Idx"}},"type":"object","required":["url","idx"],"title":"SlideVersionSelectResponse"},"StatsResponse":{"properties":{"creators_count":{"type":"integer","title":"Creators Count","default":0},"reels_posted_count":{"type":"integer","title":"Reels Posted Count","default":0},"captions_generated_count":{"type":"integer","title":"Captions Generated Count","default":0},"dms_sent_count":{"type":"integer","title":"Dms Sent Count","default":0},"reels_scheduled_count":{"type":"integer","title":"Reels Scheduled Count","default":0}},"type":"object","title":"StatsResponse"},"StatusCounts":{"properties":{"open":{"type":"integer","title":"Open"},"closed":{"type":"integer","title":"Closed"},"all":{"type":"integer","title":"All"}},"type":"object","required":["open","closed","all"],"title":"StatusCounts"},"StoriesAnalyticsResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/StoryInsightItem"},"type":"array","title":"Items"},"range":{"$ref":"#/components/schemas/RangeEcho"},"capture_started_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Capture Started At"}},"type":"object","required":["items","range"],"title":"StoriesAnalyticsResponse"},"StoryInsightItem":{"properties":{"id":{"type":"string","title":"Id"},"permalink":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Permalink"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"},"media_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Media Type"},"timestamp":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timestamp"},"views":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Views"},"reach":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reach"},"replies":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Replies"},"shares":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shares"},"profile_visits":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Profile Visits"},"follows":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Follows"},"total_interactions":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Interactions"},"taps_forward":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Taps Forward"},"taps_back":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Taps Back"},"exits":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Exits"},"swipe_forward":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Swipe Forward"},"engagement_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Engagement Rate"}},"type":"object","required":["id","permalink","thumbnail_url","media_type","timestamp","views","reach","replies","shares","profile_visits","follows","total_interactions","taps_forward","taps_back","exits","engagement_rate"],"title":"StoryInsightItem"},"StoryMeta":{"properties":{"is_video":{"type":"boolean","title":"Is Video","default":false}},"type":"object","title":"StoryMeta","description":"Story-specific metadata fields.\n\nDeliberately minimal — Instagram's Content Publishing API only accepts\nimage_url/video_url for media_type=STORIES; caption, share_to_feed,\nlocation_id, and comment settings are all invalid for stories and\nrejected by the container-create call. user_tags was dropped: IG only\nresolves tags for Business/Creator accounts, so most tags failed the\nwhole story with a terminal \"Invalid user id\" error."},"SuggestionsOut":{"properties":{"suggestions":{"items":{"type":"string"},"type":"array","title":"Suggestions"}},"type":"object","required":["suggestions"],"title":"SuggestionsOut"},"SummaryResponse":{"properties":{"total_published":{"type":"integer","title":"Total Published"},"total_scheduled":{"type":"integer","title":"Total Scheduled"},"total_failed":{"type":"integer","title":"Total Failed"},"ai_caption_rate":{"type":"number","title":"Ai Caption Rate"},"ai_hashtag_rate":{"type":"number","title":"Ai Hashtag Rate"},"posts_in_range":{"type":"integer","title":"Posts In Range"},"posts_by_day":{"items":{"$ref":"#/components/schemas/DayCount"},"type":"array","title":"Posts By Day"},"best_hours":{"items":{"$ref":"#/components/schemas/HourSlot"},"type":"array","title":"Best Hours"},"range":{"$ref":"#/components/schemas/RangeEcho"}},"type":"object","required":["total_published","total_scheduled","total_failed","ai_caption_rate","ai_hashtag_rate","posts_in_range","posts_by_day","best_hours","range"],"title":"SummaryResponse"},"TabCounts":{"properties":{"all":{"type":"integer","title":"All"},"unread":{"type":"integer","title":"Unread"},"hot":{"type":"integer","title":"Hot"}},"type":"object","required":["all","unread","hot"],"title":"TabCounts"},"TabTotals":{"properties":{"chats":{"type":"integer","title":"Chats"},"outreach":{"type":"integer","title":"Outreach"},"archived":{"type":"integer","title":"Archived"},"snoozed":{"type":"integer","title":"Snoozed","default":0}},"type":"object","required":["chats","outreach","archived"],"title":"TabTotals"},"TabUnread":{"properties":{"chats":{"type":"integer","title":"Chats"},"outreach":{"type":"integer","title":"Outreach"}},"type":"object","required":["chats","outreach"],"title":"TabUnread"},"ThemesRequest":{"properties":{"topic":{"type":"string","maxLength":2000,"minLength":1,"title":"Topic"},"slides":{"items":{"type":"object"},"type":"array","maxItems":10,"title":"Slides","default":[]}},"type":"object","required":["topic"],"title":"ThemesRequest"},"ThreadMessageIn":{"properties":{"body":{"type":"string","maxLength":4000,"title":"Body","default":""},"reel_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reel Id"},"attachments":{"items":{"$ref":"#/components/schemas/AttachmentIn"},"type":"array","title":"Attachments","default":[]}},"type":"object","title":"ThreadMessageIn"},"ThreadOut":{"properties":{"conversation":{"$ref":"#/components/schemas/ConversationOut"},"items":{"items":{"$ref":"#/components/schemas/MessageOut"},"type":"array","title":"Items"},"has_more":{"type":"boolean","title":"Has More"}},"type":"object","required":["conversation","items","has_more"],"title":"ThreadOut"},"ThumbnailUploadUrlResponse":{"properties":{"upload_url":{"type":"string","title":"Upload Url"},"s3_key":{"type":"string","title":"S3 Key"},"public_url":{"type":"string","title":"Public Url"}},"type":"object","required":["upload_url","s3_key","public_url"],"title":"ThumbnailUploadUrlResponse"},"TimeTravelIn":{"properties":{"reel_id":{"type":"string","title":"Reel Id"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"window_ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Window Ends At"},"hold_ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Hold Ends At"}},"type":"object","required":["reel_id"],"title":"TimeTravelIn"},"TransferOwnership":{"properties":{"new_owner_id":{"type":"string","title":"New Owner Id"}},"type":"object","required":["new_owner_id"],"title":"TransferOwnership"},"TrialGraduation":{"type":"string","enum":["MANUAL","SS_PERFORMANCE"],"title":"TrialGraduation","description":"Instagram's `trial_params.graduation_strategy` values, verbatim.\n\nMANUAL — the creator graduates (shares to followers) from the Instagram app.\nSS_PERFORMANCE — Instagram auto-graduates the reel if it performs well, by\nits own undisclosed threshold. These are the ONLY two options the Content\nPublishing API exposes: there is no endpoint to graduate a trial reel from\noutside the app, and no media field that reports whether it has graduated."},"TrialReelItem":{"properties":{"id":{"type":"string","title":"Id"},"caption":{"type":"string","title":"Caption"},"published_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published At"},"ig_permalink":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ig Permalink"},"thumbnail_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thumbnail Url"},"graduation_strategy":{"type":"string","title":"Graduation Strategy"},"tracking_until":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tracking Until"},"tracking_active":{"type":"boolean","title":"Tracking Active"},"snapshot_count":{"type":"integer","title":"Snapshot Count"},"views":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Views"},"reach":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reach"},"likes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Likes"},"comments":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Comments"},"shares":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shares"},"saved":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Saved"},"engagement_rate":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Engagement Rate"},"views_24h":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Views 24H"},"views_72h":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Views 72H"},"reach_surge_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Reach Surge Pct"},"reach_surge_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reach Surge At"},"series":{"items":{"$ref":"#/components/schemas/TrialSnapshotPoint"},"type":"array","title":"Series"}},"type":"object","required":["id","caption","published_at","ig_permalink","thumbnail_url","graduation_strategy","tracking_until","tracking_active","snapshot_count","views","reach","likes","comments","shares","saved","engagement_rate","views_24h","views_72h","reach_surge_pct","reach_surge_at","series"],"title":"TrialReelItem"},"TrialReelsResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/TrialReelItem"},"type":"array","title":"Items"},"range":{"$ref":"#/components/schemas/RangeEcho"}},"type":"object","required":["items","range"],"title":"TrialReelsResponse"},"TrialSnapshotPoint":{"properties":{"captured_at":{"type":"string","title":"Captured At"},"hours_since_publish":{"type":"number","title":"Hours Since Publish"},"views":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Views"},"reach":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Reach"},"likes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Likes"},"comments":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Comments"},"shares":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Shares"},"saved":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Saved"},"total_interactions":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Interactions"},"follower_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Follower Count"}},"type":"object","required":["captured_at","hours_since_publish","views","reach","likes","comments","shares","saved","total_interactions","follower_count"],"title":"TrialSnapshotPoint"},"UnreadOut":{"properties":{"unread":{"type":"integer","title":"Unread"}},"type":"object","required":["unread"],"title":"UnreadOut"},"UpdateAutomationIn":{"properties":{"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"status":{"anyOf":[{"type":"string","enum":["active","paused"]},{"type":"null"}],"title":"Status"},"trigger":{"anyOf":[{"$ref":"#/components/schemas/AutomationTrigger-Input"},{"type":"null"}]},"actions":{"anyOf":[{"items":{"$ref":"#/components/schemas/AutomationAction-Input"},"type":"array"},{"type":"null"}],"title":"Actions"},"opening_message":{"anyOf":[{"$ref":"#/components/schemas/OpeningMessage"},{"type":"null"}]},"ask_for_follow":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Ask For Follow"},"follow_gate_message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Follow Gate Message"},"follow_gate_button_label":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Follow Gate Button Label"},"follow_up":{"anyOf":[{"$ref":"#/components/schemas/AutomationFollowUp"},{"type":"null"}]},"ai":{"anyOf":[{"$ref":"#/components/schemas/AiDmConfig"},{"type":"null"}]}},"type":"object","title":"UpdateAutomationIn"},"UploadSlideRequest":{"properties":{"slide_num":{"type":"integer","title":"Slide Num"},"image_b64":{"type":"string","title":"Image B64"}},"type":"object","required":["slide_num","image_b64"],"title":"UploadSlideRequest"},"UploadSlideResponse":{"properties":{"url":{"type":"string","title":"Url"}},"type":"object","required":["url"],"title":"UploadSlideResponse"},"UploadUrlIn":{"properties":{"mime_type":{"type":"string","title":"Mime Type"}},"type":"object","required":["mime_type"],"title":"UploadUrlIn"},"UserTag":{"properties":{"username":{"type":"string","title":"Username"},"x":{"type":"number","title":"X"},"y":{"type":"number","title":"Y"}},"type":"object","required":["username","x","y"],"title":"UserTag"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VideoUploadUrlResponse":{"properties":{"upload_url":{"type":"string","title":"Upload Url"},"s3_key":{"type":"string","title":"S3 Key"}},"type":"object","required":["upload_url","s3_key"],"title":"VideoUploadUrlResponse"},"WorkspaceCreate":{"properties":{"name":{"type":"string","title":"Name"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"}},"type":"object","required":["name"],"title":"WorkspaceCreate"},"WorkspaceDeleteConfirm":{"properties":{"confirm_name":{"type":"string","title":"Confirm Name"}},"type":"object","required":["confirm_name"],"title":"WorkspaceDeleteConfirm"},"WorkspaceInviteStatus":{"type":"string","enum":["pending","accepted","revoked","declined"],"title":"WorkspaceInviteStatus"},"WorkspacePlan":{"type":"string","enum":["starter","influencer","creator"],"title":"WorkspacePlan"},"WorkspaceRole":{"type":"string","enum":["owner","admin","member"],"title":"WorkspaceRole"},"WorkspaceUpdate":{"properties":{"name":{"type":"string","title":"Name"}},"type":"object","required":["name"],"title":"WorkspaceUpdate"},"routers__auth__WorkspaceOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"plan":{"$ref":"#/components/schemas/WorkspacePlan"},"personal":{"type":"boolean","title":"Personal"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"hook_photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hook Photo Url"}},"type":"object","required":["id","name","slug","plan","personal","avatar_url"],"title":"WorkspaceOut"},"routers__workspaces__WorkspaceOut":{"properties":{"id":{"type":"string","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"owner_id":{"type":"string","title":"Owner Id"},"plan":{"$ref":"#/components/schemas/WorkspacePlan"},"personal":{"type":"boolean","title":"Personal"},"name_is_custom":{"type":"boolean","title":"Name Is Custom"},"avatar_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Avatar Url"},"hook_photo_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Hook Photo Url"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"role":{"$ref":"#/components/schemas/WorkspaceRole"},"teams_enabled":{"type":"boolean","title":"Teams Enabled"}},"type":"object","required":["id","name","slug","owner_id","plan","personal","name_is_custom","avatar_url","hook_photo_url","created_at","role","teams_enabled"],"title":"WorkspaceOut"}},"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}}}}