Desenvolvedores de produtos

Adicione publicação ao seu produto.

Um app fictício de diário adiciona uma ação confirmada pelo usuário para agendar posts sociais e exibir resultados.

SEU PRODUTO + SOSOAPI

Fluxo de integração ilustrativo
  1. Seu produtoPrepare e confirme
  2. SosoAPIAgende um post confirmado
  3. Conta socialAcompanhe o resultado
Exemplo de fluxo de integração. Abra o guia para consultar as requisições de API no servidor e os campos de resposta.

Três etapas

  1. Prepare o conteúdo

    Reúna texto e imagens dentro do seu produto.

  2. Deixe os usuários confirmarem

    Mostre conta, conteúdo e horário antes de agendar.

  3. Traga os resultados de volta

    Exiba o progresso e o resultado final de publicação.

A publicação social passa a fazer parte do seu produto.

Ver o guia completo

Cenário

Adicione uma ação intencional e revisável de “agendar esta atualização” a um produto fictício de diário. Mantenha visíveis o Workspace do usuário e a conta conectada exata e exiba o estado retornado sem sugerir publicação pelo provedor.

Ilustração de um workspace de exemplo do SosoAPI para “Adicione publicação ao seu produto..”
O compositor compartilhado de Novo post com dados fictícios. Nenhum post foi enviado.

Antes de começar

  • Crie e verifique sua conta SosoAPI e selecione o Workspace desejado.
  • Crie uma API key em Configurações do app → Agentes e acesso à API. Armazene como SOSOAPI_API_KEY no ambiente do servidor; estes exemplos JavaScript usam Node.js 20+ e não exigem o repositório de código do SosoAPI.
  • Escolha um UUID real de Workspace e UUID de conta social do Threads apenas no escopo autorizado atual. A conta deve ser elegível para um post de texto no Threads.
  • O proprietário da API key precisa de acesso editor ou owner ao Workspace escolhido. Mantenha a chave no servidor, fora do código do navegador, JSON de requisições e logs.

Entradas de exemplo

Produto fictício
Harborlight Journal · conceito de app de diário privado; nenhuma integração real é alegada.
Intenção do usuário
Agendar uma nota revisada de produto para uma conta selecionada do Threads em um horário local futuro.
Texto de exemplo
“Uma pequena nota para depois: o Harborlight Journal está abrindo espaço para reflexões diárias mais curtas. Guarde um pensamento; deixe o resto para amanhã.”
Escopo exigido em execução
<workspace-uuid> e <threads-social-account-uuid> do escopo atualmente autorizado pelo usuário; nunca deduza IDs.
Agendar
<future ISO-8601 instant with offset>, com display_timezone definido como Asia/Hong_Kong.
Identidade para repetição
<unique stable idempotency key for this one user intent>; reutilize-a somente ao repetir com segurança a mesma requisição.

Guia passo a passo

  1. Projete a confirmação do produto antes da chamada de API

    Abra esta área no SosoAPI
    • No app SosoAPI, selecione o Workspace desejado e revise a conta conectada. No protótipo do seu produto, exiba esse mesmo Workspace e essa conta escolhidos pelo usuário em vez de selecioná-los silenciosamente.

    • Mostre legenda exata, conta, horário local e fuso em uma etapa de confirmação. Exija que a pessoa escolha Agendar; abrir o formulário não deve enviar nada.

    O que esperar

    Uma pessoa pode ver destino e horário antes da gravação. O protótipo do produto fictício é um exercício de design, não uma integração instalada em cliente.

  2. Consulte os Scheduled Posts atuais pelo servidor

    • Substitua <workspace-uuid> pelo ID do Workspace selecionado e execute esta requisição somente de leitura no servidor:

    • const apiKey = process.env.SOSOAPI_API_KEY;
      if (!apiKey) throw new Error("Configure a SosoAPI API key on your server");
      const response = await fetch(
        "https://gqeshlawtcexsapabaui.supabase.co/functions/v1/studio-api/scheduled-posts/list",
        {
          method: "POST",
          headers: {
            "Authorization": "Bearer " + apiKey,
            "Content-Type": "application/json"
          },
          body: JSON.stringify({"workspace_id":"<workspace-uuid>"})
        }
      );
      const result = await response.json();
      if (!response.ok) throw new Error("SosoAPI request failed: " + response.status);
      // Use result in your server response; never return or log the API key.
    • Use os dados retornados para atualizar a lista do seu produto. Mantenha a confirmação do usuário separada desta consulta.

    O que esperar

    Você recebe os posts atuais do Workspace ou um erro de autorização/validação. Esta requisição somente de leitura não cria posts.

  3. Envie somente após confirmação explícita do usuário

    • Abra o Calendar e escolha Novo post para comparar a etapa de revisão com a mesma ação no app.

    • Substitua todos os placeholders por seus IDs autorizados, um timestamp ISO futuro com deslocamento de fuso e uma chave de idempotência única. Revise conta, texto e horário antes de executar esta requisição no servidor.

    • const apiKey = process.env.SOSOAPI_API_KEY;
      if (!apiKey) throw new Error("Configure a SosoAPI API key on your server");
      const response = await fetch(
        "https://gqeshlawtcexsapabaui.supabase.co/functions/v1/studio-api/scheduled-posts/create",
        {
          method: "POST",
          headers: {
            "Authorization": "Bearer " + apiKey,
            "Content-Type": "application/json"
          },
          body: JSON.stringify({
        "workspace_id": "<workspace-uuid>",
        "social_account_id": "<threads-social-account-uuid>",
        "caption": "A small note for later: Harborlight Journal is making room for shorter daily reflections. Keep one thought; leave the rest for tomorrow.",
        "hashtags": [],
        "media": [],
        "provider_payload": {"platform": "threads", "publish_options": {"post_type": "TEXT"}},
        "scheduled_at": "<future ISO-8601 instant with offset>",
        "display_timezone": "Asia/Hong_Kong",
        "idempotency_key": "<unique-stable-key-for-this-intent>"
      })
        }
      );
      const result = await response.json();
      if (!response.ok) throw new Error("SosoAPI request failed: " + response.status);
      // Use result in your server response; never return or log the API key.
    • Executar esta requisição cria um agendamento real. Envie somente após a confirmação do usuário e nunca exponha a API key ao navegador.

    O que esperar

    Uma resposta aceita válida identifica o Scheduled Post resultante; não comprova que um provedor o publicou. Capacidade negada, escopo/conta inválidos, payload incompatível ou agendamento rejeitado devem ser exibidos como erro, sem informar sucesso.

  4. Exiba o estado retornado e ofereça um acompanhamento seguro ao usuário

    Abra esta área no SosoAPI
    • Armazene o ID retornado do Scheduled Post e exiba seu estado atual, destino e agendamento no produto.

    • Direcione o usuário ao detalhe do Scheduled Post correspondente. Se a entrega exigir uma pessoa, vincule o item de Atenção necessária em vez de reenviar silenciosamente.

    • Não classifique a requisição como publicada até o status final confirmado pelo provedor estar registrado.

    O que esperar

    O produto distingue um comprovante de requisição das observações agendado, publicando, publicado, falhou e desconhecido. Resultados desconhecidos são reconciliados com o post existente antes de uma nova gravação.

Um comprovante de requisição. Depois, um resultado de publicação.

Os exemplos abaixo mostram campos selecionados de respostas da API com valores fictícios. Após criar um agendamento, salve post.id e use-o para conferir o resultado desse post.

1. Resposta de criação

{
  "post": {
    "id": "10000000-0000-4000-8000-000000000001",
    "status": "scheduled",
    "scheduled_at": "2100-01-05T10:00:00+08:00",
    "published_at": null,
    "permalink": null
  },
  "deduped": false
}

2. Consulte o mesmo post

POST /studio-api/scheduled-posts/get
{
  "id": "10000000-0000-4000-8000-000000000001"
}

Após a confirmação do provedor, a resposta de detalhes pode incluir:

{
  "post": {
    "id": "10000000-0000-4000-8000-000000000001",
    "status": "published",
    "published_at": "2100-01-05T02:00:08Z",
    "permalink": "https://www.threads.net/@example/post/EXAMPLE"
  },
  "delivery": {
    "stage": "terminal",
    "message": "Published on Threads."
  }
}
post.status
Use o estado real, como scheduled, publishing, published ou failed. Se a conexão cair, consulte o mesmo post antes de decidir o que aconteceu.
post.permalink
O link do post no provedor quando disponível; pode ser null. A URL acima é um exemplo.
delivery / outcomes
A resposta de detalhes mostra o progresso de publicação e os resultados disponíveis da plataforma para o post. Se falhar, confira esses detalhes e Atenção necessária antes de escolher o próximo passo.

Estes são exemplos de campos, não um comprovante real de publicação. Esta página não faz chamadas de API.

O que cada status significa

SubmittedResposta da requisição
Sua solicitação foi recebida. Confira o estado atual do post antes de considerá-lo agendado ou publicado.
ScheduledDetalhes do post
O Scheduled Post foi aceito para um horário futuro. Mantenha destino e horário agendado visíveis enquanto ele aguarda.
PublishingDetalhes do post
A entrega está em andamento. Aguarde um resultado terminal; um estado em andamento não é sucesso.
PublishedDetalhes do post
Use isto somente após o SosoAPI registrar a confirmação terminal do provedor para o Scheduled Post.
FailedDetalhes do post
Uma falha terminal exige revisão. Consulte os detalhes do post e a ação disponível antes de decidir o que alterar ou tentar novamente.
UnknownO que o app mostra
Se a conexão cair e o resultado não estiver claro, confira Scheduled Posts e Atenção necessária antes de enviar novamente.

Guias relacionados

O guia inclui exemplos de API no servidor. Configure seus IDs autorizados e sua API key antes de executá-los; a própria página não envia requisições.

Experimente seu primeiro fluxo.

Crie sua conta e comece com Free.

Comece com Free