> ## Documentation Index
> Fetch the complete documentation index at: https://docs.postclean.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Gerar horários de postagem

> Substitui os horários de postagem do canal por `goal` horários por semana, nas horas que costumam funcionar melhor na rede dele (os minutos são sorteados), e grava `goal` como meta de posts. Sem `goal`, vale a meta atual do canal, ou 3 se não houver. O fuso horário não muda. Todos os dias ficam ativos. `mode` é obrigatório, mas hoje não tem efeito: os dois valores geram os mesmos horários. Os posts da fila mantêm seu horário. Uma mudança de horários move só os posts cujo horário deixou de existir, para os primeiros horários livres, em ordem. Um post da fila que fica sem horário vira um post com horário personalizado no horário em que já estava. Posts com horário personalizado nunca se movem. Exige ser administrador do workspace.



## OpenAPI

````yaml /openapi.json post /channels/{account}/posting-schedule/generate
openapi: 3.1.0
info:
  title: PostClean API
  version: 2.0.0
  description: >-
    API REST do PostClean. Autentique com uma chave de API do workspace, enviada
    como token Bearer no cabeçalho `Authorization`.
servers:
  - url: https://post.chatclean.com.br/api
    description: PostClean
security:
  - bearerAuth: []
tags:
  - name: Posts
    description: Criar, ler, atualizar, excluir e pré-visualizar posts.
  - name: Post notes
    description: Notas internas de um post, visíveis aos membros do workspace.
  - name: Approvals
    description: Aprovar ou rejeitar posts que aguardam aprovação.
  - name: Recurrence
    description: Fazer um post se repetir numa frequência.
  - name: Media and uploads
    description: Enviar arquivos e anexar mídia aos posts.
  - name: Social accounts
    description: Contas sociais conectadas e as opções de cada rede.
  - name: Channels
    description: Horários de postagem e fila de um canal.
  - name: Ideas
    description: Ideias do quadro Criar.
  - name: Idea stages
    description: As colunas (etapas) do quadro de ideias.
  - name: Analytics
    description: Métricas do workspace e dos canais.
  - name: Labels
    description: Etiquetas para organizar posts e ideias.
  - name: Signatures
    description: Textos reutilizáveis para adicionar aos posts.
  - name: Workspace
    description: O workspace ao qual a chave de API pertence.
  - name: API keys
    description: Chaves de API pessoais deste workspace.
  - name: Webhooks
    description: Webhooks de saída e os registros de entrega.
  - name: Repurposes
    description: Automações que republicam vídeos postados fora do PostClean.
  - name: Platform
    description: Recursos de cada plataforma e tipos de conteúdo.
paths:
  /channels/{account}/posting-schedule/generate:
    parameters:
      - $ref: '#/components/parameters/AccountId'
    post:
      tags:
        - Channels
      summary: Gerar horários de postagem
      description: >-
        Substitui os horários de postagem do canal por `goal` horários por
        semana, nas horas que costumam funcionar melhor na rede dele (os minutos
        são sorteados), e grava `goal` como meta de posts. Sem `goal`, vale a
        meta atual do canal, ou 3 se não houver. O fuso horário não muda. Todos
        os dias ficam ativos. `mode` é obrigatório, mas hoje não tem efeito: os
        dois valores geram os mesmos horários. Os posts da fila mantêm seu
        horário. Uma mudança de horários move só os posts cujo horário deixou de
        existir, para os primeiros horários livres, em ordem. Um post da fila
        que fica sem horário vira um post com horário personalizado no horário
        em que já estava. Posts com horário personalizado nunca se movem. Exige
        ser administrador do workspace.
      operationId: generatePostingSchedule
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - mode
              properties:
                mode:
                  type: string
                  enum:
                    - goal
                    - recommended
                  description: Obrigatório. Hoje é ignorado.
                goal:
                  type:
                    - integer
                    - 'null'
                  minimum: 1
                  maximum: 28
                  description: Posts por semana, de 1 a 28.
            example:
              mode: goal
              goal: 5
      responses:
        '200':
          description: Os horários de postagem gerados.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ChannelPostingSchedule'
              example:
                id: 9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54
                timezone: America/Sao_Paulo
                posting_goal: 5
                posting_schedule:
                  - day: 0
                    enabled: true
                    times: []
                  - day: 1
                    enabled: true
                    times:
                      - '18:51'
                  - day: 2
                    enabled: true
                    times:
                      - '09:14'
                  - day: 3
                    enabled: true
                    times:
                      - '12:37'
                  - day: 4
                    enabled: true
                    times:
                      - '15:02'
                  - day: 5
                    enabled: true
                    times:
                      - '09:40'
                  - day: 6
                    enabled: true
                    times: []
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '403':
          description: >-
            A chave de API não pode ser usada, ou o usuário não é administrador
            do workspace (só administradores mudam os horários de postagem).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorBody'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/ValidationError'
        '429':
          $ref: '#/components/responses/TooManyRequests'
components:
  parameters:
    AccountId:
      name: account
      in: path
      required: true
      description: Id da conta social (canal). Uma conta de outro workspace devolve `404`.
      schema:
        type: string
        format: uuid
      example: 9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54
  schemas:
    ChannelPostingSchedule:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Id da conta social.
        timezone:
          type: string
          description: >-
            Fuso horário IANA do canal. Os horários de postagem e da fila ficam
            nesse fuso.
        posting_goal:
          type:
            - integer
            - 'null'
          minimum: 1
          maximum: 28
          description: Meta de posts por semana do canal.
        posting_schedule:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/PostingDay'
          description: >-
            Sete dias, começando no domingo. `null` quando o canal não tem
            horários de postagem (os posts não podem usar `queue`).
    ErrorBody:
      type: object
      properties:
        message:
          type: string
      description: Corpo de erro com uma mensagem.
    PostingDay:
      type: object
      required:
        - day
        - enabled
        - times
      properties:
        day:
          type: integer
          minimum: 0
          maximum: 6
          description: >-
            Dia da semana: `0` é domingo, `6` é sábado. Envie um inteiro JSON,
            não um texto.
        enabled:
          type: boolean
          description: >-
            Um dia desativado guarda seus horários, mas não oferece horários na
            fila.
        times:
          type: array
          maxItems: 4
          items:
            type: string
            pattern: ^\d{2}:\d{2}$
            examples:
              - '09:00'
          description: >-
            Horários de postagem, `H:i` no fuso do canal, no máximo 4 por dia,
            sem repetição. São gravados em ordem.
    ValidationErrorBody:
      type: object
      properties:
        message:
          type: string
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
      description: Corpo de erro de validação. `errors` traz as mensagens por campo.
    RateLimitErrorBody:
      type: object
      properties:
        name:
          type: string
          const: rate_limit_exceeded
        message:
          type: string
          examples:
            - Rate limit exceeded. Please retry after 30 seconds.
      description: Corpo devolvido quando o limite de requisições é excedido.
  responses:
    Unauthorized:
      description: >-
        Chave de API ausente, inválida, revogada ou expirada. Corpos possíveis:
        `Unauthenticated.` (sem chave, ou chave inválida ou revogada), `Token
        expired.` (passou do `expires_at`), `Token not found.` e `No workspace
        selected.` (a chave não está mais ligada a um workspace).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
          example:
            message: Unauthenticated.
    PaymentRequired:
      description: >-
        A conta do workspace não tem assinatura ativa nem período de teste.
        Corpo: `{"message": "Active subscription required."}`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
          example:
            message: Active subscription required.
    NotFound:
      description: O recurso não existe neste workspace.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
    Conflict:
      description: >-
        Outra alteração neste post ou na fila do canal está em andamento. Tente
        de novo.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorBody'
    ValidationError:
      description: A validação falhou. Cada campo com erro aparece em `errors`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ValidationErrorBody'
    TooManyRequests:
      description: 'Limite de requisições excedido: 60 por minuto por workspace.'
      headers:
        Retry-After:
          description: Segundos de espera antes de tentar de novo.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RateLimitErrorBody'
          example:
            name: rate_limit_exceeded
            message: Rate limit exceeded. Please retry after 30 seconds.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Chave de API do workspace, criada em Configurações > Chaves de API.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.