Documentación para desarrolladores

Listar objetivos de outreach

GET/sites/{siteId}/outreach
Permiso
search:read
Herramienta MCP
list_outreach_targets

Outreach targets, ranked, with why Pages and sites worth asking for a link or a mention: open ones by score, then contacted, added, declined; targets the source no longer lists last, when included. Spam-flagged, script-made and gone targets are left out unless include names them; counts and totals leave out what is hidden. MonoRanks says who and why; it does not send email or look up contacts.

Las descripciones vienen del documento OpenAPI y están en inglés.

Parámetros

NombreDóndeDetalles
siteIdObligatoriorutastringWebsite id, from GET /sites.
statusqueryto_contactcontactedaddeddeclinedOnly this status.
sourcequeryai_sourcebest_listlink_gaplost_linkmanualOnly this source.
tagquerystringat most 40 characters, pattern ^[a-z0-9]+(-[a-z0-9]+)*$Only targets with this tag (one label).
spamquery1trueInclude targets with a spam score above 60 (same as include=spam).
includequerystringHidden groups to list too, comma separated: spam, auto (pages a script made, link gap domains with no linking page, and AI-source pages nobody can be asked about: example addresses, competitors' own pages, home or product pages of much larger sites), gone (no longer listed by the source).
pagequeryintegerdefault 1, min 1Page number, from 1.
perqueryintegerdefault 50, min 1, max 200Rows per page, 1 to 200.

Respuesta

200 · application/json

CampoDetalles
filtersobject · required; The filters applied
filters.statusto_contact | contacted | added | declined | · required; Status filter
filters.sourceai_source | best_list | link_gap | lost_link | manual | · required; Source filter
filters.tagstring or null · required; Tag filter
filters.spamtrue or false · required; Spam-flagged targets included
filters.includelist of spam | auto | gone · required; Hidden groups included
countsobject · required; Counts
counts.allinteger · required; Targets shown, all statuses
counts.statusobject · required; Targets per status
counts.status.to_contactinteger · required; Targets to_contact
counts.status.contactedinteger · required; Targets contacted
counts.status.addedinteger · required; Targets added
counts.status.declinedinteger · required; Targets declined
counts.sourceobject · required; Targets per source
counts.source.ai_sourceinteger · required; Targets from ai_source
counts.source.best_listinteger · required; Targets from best_list
counts.source.link_gapinteger · required; Targets from link_gap
counts.source.lost_linkinteger · required; Targets from lost_link
counts.source.manualinteger · required; Targets from manual
counts.spamHiddeninteger · required; Spam-flagged targets left out (platform pages included)
counts.platformHiddeninteger · required; Platform pages of much larger sites left out
counts.autoHiddeninteger · required; Script-made pages and link gap domains without a page left out
counts.goneHiddeninteger · required; Targets the source no longer lists, left out
totalinteger · required; Rows that match, over all pages
pageinteger · required; This page, from 1
perinteger · required; Rows per page
hasMoretrue or false · required; More rows after this page
targetslist of values · required
targets[].idstring
targets[].sourcestring
targets[].urlstring
targets[].domainstring
targets[].titlestring
targets[].scorenumber
targets[].classstring
targets[].reasonobject
targets[].reason.competitorslist of strings
targets[].reason.domainRanknumber
targets[].reason.ourRanknumber
targets[].reason.spamScorenumber
targets[].reason.outOfnumber
targets[].reason.backlinksnumber
targets[].reason.pageslist of objects
targets[].reason.pages[].competitorstring
targets[].reason.pages[].urlstring
targets[].reason.pages[].anchorstring
targets[].reason.pages[].titlestring
targets[].reason.pageKindstring
targets[].reason.pageKindBystring
targets[].statusstring
targets[].statusAtstring
targets[].statusAutotrue or false
targets[].notestring
targets[].tagslist of strings
targets[].firstSeenstring
targets[].lastSeenstring
targets[].gonetrue or false
targets[].checkobject
targets[].check.atstring
targets[].check.oktrue or false
targets[].check.statusnumber
targets[].check.linksUstrue or false
targets[].check.mentionsUstrue or false
targets[].check.matchedlist of strings
targets[].linkstring
notestring · required; How to read the fields
linkaddress (URL) · required; The Outreach screen in the app

Notas

GET /sites/{siteId}/outreach lista páginas y sitios a los que vale la pena pedir un enlace o una mención, ordenados: primero los objetivos abiertos por score (de 0 a 100), luego los contactados, añadidos y rechazados. Los objetivos que su fuente ya no encuentra (gone) van al final. MonoRanks no envía correos ni busca datos de contacto: lista los objetivos, tú haces el outreach y registras lo que pasó.

Qué Detalles
source ai_source (las respuestas de IA a tus preguntas seguidas citan la página pero no te nombran), best_list (una lista de “los mejores X” que nombra a tus competidores pero no a ti), link_gap (un sitio que enlaza a dos o más de tus competidores, no a ti), lost_link (un sitio fuerte que dejó de enlazarte, donde la solución es pedirles que actualicen el enlace) o manual (añadido a mano).
reason dice por qué, con los campos que conoce su fuente: por ejemplo questions, models y timesCited; keyword y position; competitors, domainRank, spamScore y outOf; o lostAt.
status to_contact, contacted, added o declined. Filtra con status y source. counts tiene los totales por estado y por fuente.
Spam Los objetivos con una puntuación de spam superior a 60 se dejan fuera salvo que pases spam=1; counts.spamHidden dice cuántos.
Escritura POST /sites/{siteId}/outreach/{targetId} acepta status y/o note (como máximo 2.000 caracteres; una nota vacía la borra). El cambio queda registrado en la Activity del sitio web a nombre del dueño de la clave. El estado y la nota se mantienen cuando la fuente actualiza el objetivo.
Añadido por sí solo Una vez por semana MonoRanks vuelve a leer cada página objetivo abierta, gratis. Cuando la página ya enlaza al sitio web o lo nombra, el objetivo pasa a added y statusAuto es true.

Errores

EstadoSignificado
400Bad request. Codes: bad_status, bad_source, bad_include, bad_tag, bad_page, bad_per.
401Missing, unknown or revoked key. Codes: missing_key, invalid_key.
403The key lacks the scope, covers another website, or its owner lost access. Codes: missing_scope, other_site, owner_left, no_owner, forbidden.
404Not found. Codes: not_found.
429Too many requests this hour for this key. Codes: rate_limited.

Petición de ejemplo

curl \
  -H "Authorization: Bearer mr_ws_…" \
  "https://app.monoranks.com/api/v1/sites/SITE_ID/outreach"

Respuesta de ejemplo

{
  "filters": {
    "status": null,
    "source": null,
    "tag": null,
    "spam": false,
    "include": []
  },
  "counts": {
    "all": 64,
    "status": {
      "to_contact": 51,
      "contacted": 8,
      "added": 3,
      "declined": 2
    },
    "source": {
      "ai_source": 12,
      "best_list": 9,
      "link_gap": 38,
      "lost_link": 4,
      "manual": 1
    },
    "spamHidden": 5,
    "platformHidden": 2,
    "autoHidden": 11,
    "goneHidden": 3
  },
  "total": 64,
  "page": 1,
  "per": 50,
  "hasMore": true,
  "targets": [
    {
      "id": "0b2d4f6a-8c0e-4a2c-9e4a-8c0e2a4c6e8a",
      "source": "link_gap",
      "url": "https://rideguide.example/best-bike-shops/",
      "domain": "rideguide.example",
      "title": "The best online bike shops",
      "score": 82,
      "class": "editorial",
      "reason": {
        "competitors": [
          "bikeworld.example",
          "cyclehub.example"
        ],
        "domainRank": 47,
        "ourRank": 33,
        "spamScore": 4,
        "outOf": 2,
        "backlinks": 5,
        "pages": [
          {
            "competitor": "bikeworld.example",
            "url": "https://rideguide.example/best-bike-shops/",
            "anchor": "Bike World",
            "title": "The best online bike shops"
          }
        ],
        "pageKind": "review",
        "pageKindBy": "ai"
      },
      "status": "contacted",
      "statusAt": "2026-10-02T09:30:00.000Z",
      "statusAuto": false,
      "note": "Emailed the editor on Oct 2.",
      "tags": [
        "gear-review"
      ],
      "firstSeen": "2026-09-14T03:00:00.000Z",
      "lastSeen": "2026-10-05T03:00:00.000Z",
      "gone": false,
      "check": {
        "at": "2026-10-05T03:10:00.000Z",
        "ok": true,
        "status": 200,
        "linksUs": false,
        "mentionsUs": false,
        "matched": []
      },
      "link": "https://app.monoranks.com/sites/3f6c2a1e-8b4d-4c7a-9e21-5d0b7a6f4c13/outreach?open=0b2d4f6a-8c0e-4a2c-9e4a-8c0e2a4c6e8a"
    }
  ],
  "note": "Pages and sites worth asking for a link or a mention, with why (reason) and a score (0–100, higher first).",
  "link": "https://app.monoranks.com/sites/3f6c2a1e-8b4d-4c7a-9e21-5d0b7a6f4c13/outreach"
}

El servidor MCP hace lo mismo con la herramienta list_outreach_targets.