Class PublicationsResource

Hierarchy

  • Resource
    • PublicationsResource

Constructors

Methods

  • Crea una publicación en una cuenta.

    Sin publish_date se envía en esta misma petición y la respuesta ya dice si salió (state: "sended") o si falló y por qué. Con fecha futura queda ready.

    const publication = await pv.publications.create(orgId, accountId, {
    social_network: "instagram",
    text: "Nuevo horno, nuevas hogazas",
    files: [upload._id],
    publish_date: new Date("2026-09-01T10:00:00Z"),
    });

    En Pinterest el tablero es OBLIGATORIO, y no da error aquí: sin destination, la publicación se crea en withErrors con el 987 y nadie la intenta. Los tableros se leen con accounts.destinations(), y el enlace del pin va en link, no dentro del texto. Pinterest no tiene comentarios que leer por la API, así que sus pins nunca llegan a pv.comments.

    const [board] = await pv.accounts.destinations(orgId, pinterestId);
    await pv.publications.create(orgId, pinterestId, {
    social_network: "pinterest",
    title: "Hogaza de centeno",
    text: "La receta, paso a paso",
    files: [upload._id],
    destination: { id: board.id, name: board.name },
    link: "https://panaderia.example/centeno",
    });

    Parameters

    Returns Promise<Publication>

  • Pide las métricas A LA RED, en vivo, y devuelve su desglose crudo.

    En X esto cuesta un crédito por lectura. Para pintar una gráfica usa stats, que lee lo ya medido y no cuesta nada.

    Parameters

    • idOrganization: string
    • idPublication: string
    • options: RequestOptions = {}

    Returns Promise<
        {
            angers?: number;
            bookmarks?: number;
            clicks?: number;
            comments?: number;
            engagement?: number;
            follows?: number;
            hahas?: number;
            impressions?: number;
            likes?: number;
            loves?: number;
            negative_feedback?: number;
            outbound_clicks?: number;
            page_likes?: number;
            pin_clicks?: number;
            playback_0_count?: number;
            playback_100_count?: number;
            playback_25_count?: number;
            playback_50_count?: number;
            playback_75_count?: number;
            profile_activity?: number;
            profile_visits?: number;
            quotes?: number;
            reach?: number;
            reactions?: number;
            reactions_by_emoji?: { [key: string]: number };
            replys?: number;
            retwets?: number;
            saved?: number;
            saves?: number;
            share?: number;
            shareMentions?: number;
            shares?: number;
            sorrys?: number;
            url_link_clicks?: number;
            user_profile_clicks?: number;
            video_views?: number;
            views?: number;
            wows?: number;
        },
    >

  • Borra una publicación y también el post en la red social.

    En X borrar cuesta créditos: sin ellos devuelve un 940 en vez de un error genérico.

    En Telegram hay una ventana de 48 horas. Pasada, la Bot API se niega a borrar el mensaje sea cual sea el papel del bot, y la respuesta es un 966 con published_date y max_hours en data — así que lo sensato es apagar el botón en vez de ofrecerlo y fallar. El 969 es el otro caso: al bot ya no le dejan borrar ahí. Y un álbum son varios mensajes: se borran todos, o el post quedaría medio publicado en el canal.

    Después deja de leerse por id: get contesta 917, y por tanto un segundo remove() también.

    Parameters

    • idOrganization: string
    • idPublication: string
    • options: RequestOptions = {}

    Returns Promise<void>

  • Vuelve a intentar una publicación que falló, sin tocar su contenido.

    Se reintenta EN LA PETICIÓN, así que la respuesta ya dice si esta vez salió. Cada llamada gasta un reintento aunque vuelva a fallar por el contenido; sólo los créditos de X cortan antes de gastarlo. Una publicación que no está en withErrors devuelve un 949, y agotar el tope, un 950.

    Parameters

    • idOrganization: string
    • idPublication: string
    • options: RequestOptions = {}

    Returns Promise<PublicationRetryResult>

  • La evolución medida de una publicación: una fila por día, más su última medición.

    Es lectura pura de lo guardado: mirar la gráfica no llama a la red y no cuesta créditos. Una series vacía es una respuesta válida —recién enviada, o una red sin estadísticas—, no un error. Cada metrics es el ACUMULADO a esa fecha, no el incremento del día.

    Parameters

    • idOrganization: string
    • idPublication: string
    • options: RequestOptions = {}

    Returns Promise<PublicationStatsHistory>

  • Cambia una publicación que todavía no ha salido. Una sended devuelve el error 921.

    Editar PONE EL CONTADOR DE REINTENTOS A CERO: el contador cuenta intentos de publicar ese contenido, y acabas de cambiarlo. Es además la salida cuando se agotan los tres.

    Parameters

    Returns Promise<Publication>

  • Lo mismo que update, por la ruta que además nombra la cuenta.

    La API tiene las dos y las sirve el mismo handler: da igual cuál se llame, y idAccount sólo se usa para comprobar que la cuenta existe y es de esa organización. Existe aquí porque es una ruta pública y quien venga leyendo la documentación la va a buscar; para escribir código nuevo, update.

    Parameters

    Returns Promise<Publication>