# CreatePostInput

CreatePostInput

Create post's request input.

Note: `metadata.{service}.linkAttachment` is mutually exclusive with a non-empty `assets`
array. Input providing both is rejected.

**Fields:**
- `aiAssisted`: `Boolean` - If this post was created with the help of AI
- `assets`: `[AssetInput!]!` (default: []) - Ordered list of assets on this post.
- `channelId`: `ChannelId!` - Channel's Id for which we want to create the post
- `draftId`: `DraftId` - Is set when the Post is generated from a Draft
- `dueAt`: `DateTime` - Date when the post is scheduled to be published
- `ideaId`: `IdeaId` - Is set when the Post is generated from an Idea
- `metadata`: `PostInputMetaData` - Metadata of the post which differs based on the social network/service
- `mode`: `ShareMode!` - How the post is being scheduled.
- `needsApproval`: `Boolean!` (default: false) - Submit the post for approval instead of scheduling it. A post submitted for
approval is always a draft, so this conflicts with turning `saveToDraft` off.

Only valid when your posting policy on the target channel requires approval.
- `saveToDraft`: `Boolean` - If true, saves the post as a draft instead of scheduling it.
When saving as draft:
- Post status will be 'draft' instead of 'buffer'
- Posting limits are not checked
- The post will not be published until explicitly scheduled
- `schedulingType`: `SchedulingType!` - Scheduling type to indicate notification publishing or automatic publishing
- `source`: `String` - source where the composer was initiated from, used for tracking.
- `tagIds`: `[TagId!]` - List of tag IDs
- `text`: `String` - Text content of the Post.

Note: for threaded posts, this needs to match the first item in the `thread` array.