# Look again

Source: https://musicnerd-docs.vercel.app/api-reference/artists/research-refresh

Look again

## POST /api/artist/{id}/research/refresh

Full OpenAPI specification: https://musicnerd-docs.vercel.app/spec/research.json

## Authentication

This operation requires one of the security alternatives in the specification below. Security scheme definitions are included where present in the published specification.

[Authentication guide](https://musicnerd-docs.vercel.app/authentication)

## Operation and referenced schemas

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Music Nerd API: research",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://musicnerd-api.vercel.app",
      "description": "Production"
    },
    {
      "url": "https://musicnerd-api-staging.vercel.app",
      "description": "Staging (staging database)"
    }
  ],
  "paths": {
    "/api/artist/{id}/research/refresh": {
      "post": {
        "summary": "Look again",
        "operationId": "refreshArtistResearch",
        "security": [
          {
            "privyBearer": []
          }
        ],
        "description": "The \"Look again\" button normally rebuilds the artist's Lore from current stored sources and re-reads recent posts. Omit the body for that existing behavior. To recover Lore from already stored sources without a social scrape or caption re-extraction, send `{ \"mode\": \"lore-only\" }`. Both modes require the approved claimant or an admin. The Lore request is claim-checked and deduplicated while live; repeated manual requests within 30 minutes do not queue another rebuild. The normal social mode retains its separate 30-minute cooldown and waits while Update Latest checks Instagram. A response says what was queued, not that a rebuild has already completed.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "The artist's ID (a UUID). Staging and production IDs differ.",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "aab92f80-f9e1-4299-aa33-7dd85c8de5d3"
          }
        ],
        "responses": {
          "200": {
            "description": "What was started, in words for the artist.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "message"
                  ],
                  "properties": {
                    "status": {
                      "type": "string",
                      "enum": [
                        "ok"
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                },
                "example": {
                  "status": "ok",
                  "message": "Rebuilding Lore from your current documents. Checking recent posts. Your bio will stay unchanged."
                }
              }
            }
          },
          "400": {
            "description": "The artist ID is not a UUID, or the optional JSON body/mode is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "status": "error",
                  "error": "artistId must be a UUID"
                }
              }
            }
          },
          "401": {
            "description": "No token, an invalid or expired token, or no Music Nerd user for it.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "status": "error",
                  "error": "Not signed in"
                }
              }
            }
          },
          "403": {
            "description": "The user is neither the artist's claimant nor an admin.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "status": "error",
                  "error": "Not your artist"
                }
              }
            }
          },
          "500": {
            "description": "The refresh could not be started.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "example": {
                  "status": "error",
                  "error": "Couldn't start that"
                }
              }
            }
          }
        },
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "mode": {
                    "type": "string",
                    "enum": [
                      "lore-only"
                    ],
                    "description": "Optional stored-source-only recovery. Omit for the existing Lore plus social refresh."
                  }
                }
              },
              "example": {
                "mode": "lore-only"
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Error": {
        "type": "object",
        "required": [
          "status",
          "error"
        ],
        "properties": {
          "status": {
            "type": "string",
            "enum": [
              "error"
            ]
          },
          "error": {
            "type": "string"
          }
        }
      }
    },
    "securitySchemes": {
      "privyBearer": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "Access token",
        "description": "The signed-in user's access token. Copy it at https://musicnerd.net/access after signing in. The user must be the artist's approved claimant or a Music Nerd admin."
      }
    }
  }
}
```
