Documentación para desarrolladores

Actualizar un objetivo de outreach

POST/sites/{siteId}/outreach/{targetId}
Permiso
actions:apply
Herramienta MCP
update_outreach_target

Set an outreach target's status, note or tags The status date moves when the status changes; status and note stay through later refreshes. Send status, note, tags or a mix; an empty or null note clears it, and tags replaces the target's tags ([] clears them). Recorded in Activity as the key owner.

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

Parámetros

NombreDóndeDetalles
siteIdObligatoriorutastringWebsite id, from GET /sites.
targetIdObligatoriorutastringOutreach target id, from GET /outreach.

Cuerpo de la petición

CampoDetalles
statusto_contact | contacted | added | declined · New status
notestring or null · at most 2000 characters; Your note, at most 2,000 characters; empty or null clears it
tagslist of string · at most 10 items; Replaces the target's tags; [] clears them
{
  "status": "contacted",
  "note": "Emailed the editor on Oct 2.",
  "tags": [
    "gear-review"
  ]
}

Respuesta

200 · application/json

CampoDetalles
targetobject · required
target.idstring
target.sourcestring
target.urlstring
target.domainstring
target.titlestring
target.scorenumber
target.classstring
target.reasonobject
target.reason.competitorslist of strings
target.reason.domainRanknumber
target.reason.ourRanknumber
target.reason.spamScorenumber
target.reason.outOfnumber
target.reason.backlinksnumber
target.reason.pageslist of objects
target.reason.pages[].competitorstring
target.reason.pages[].urlstring
target.reason.pages[].anchorstring
target.reason.pages[].titlestring
target.reason.pageKindstring
target.reason.pageKindBystring
target.statusstring
target.statusAtstring
target.statusAutotrue or false
target.notestring
target.tagslist of strings
target.firstSeenstring
target.lastSeenstring
target.gonetrue or false
target.checkobject
target.check.atstring
target.check.oktrue or false
target.check.statusnumber
target.check.linksUstrue or false
target.check.mentionsUstrue or false
target.check.matchedlist of strings
target.linkstring

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: nothing_to_change, bad_status, bad_note, note_too_long, bad_tags.
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 -X POST \
  -H "Authorization: Bearer mr_ws_…" \
  -H "Content-Type: application/json" \
  -d '{"status":"contacted","note":"Emailed the editor on Oct 2.","tags":["gear-review"]}' \
  "https://app.monoranks.com/api/v1/sites/SITE_ID/outreach/TARGET_ID"

Respuesta de ejemplo

{
  "target": {
    "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"
  }
}

El servidor MCP hace lo mismo con la herramienta update_outreach_target.