Skip to content
Power301/API
Sign inGet API key
Links · links.history
GET/links/{id}/historylinks.history

History

GET /links/{id}/history is part of the Links group. Its parameters and response shape below are generated from the live OpenAPI document. The payload comes back inside a data array.

Base URL
https://api.power301.com/v1
Auth
Bearer token
Idempotent
Yes
Returns
application/json

The request

Call GET /links/{id}/history with your bearer token. The id path segment identifies the record.

# History
curl "https://api.power301.com/v1/links/9f2a7c31-4b8e-4a02-9d1f-0c6b7e5a1d44/history" \
  -H "Authorization: Bearer $POWER301_TOKEN"

Path parameters

ParameterDescription
idRequiredstring

The response

A 200 carries the payload inside a data array — the same shape the list endpoints return, so one parser handles both.

{
  "data": [
    {
      "id": "9f2a7c31-4b8e-4a02-9d1f-0c6b7e5a1d44",
      "old": {
        "destination": [
          "https://acme.com/campaigns/spring"
        ],
        "utm": {
          "field": "string"
        },
        "type": "link",
        "status": "301",
        "password": true
      },
      "new": {
        "destination": [
          "https://acme.com/campaigns/spring"
        ],
        "utm": {
          "field": "string"
        },
        "type": "link",
        "status": "301",
        "password": true
      },
      "actor": {
        "id": "9f2a7c31-4b8e-4a02-9d1f-0c6b7e5a1d44",
        "name": "Acme"
      },
      "source": "string",
      "created_at": "2026-08-01T09:14:22Z"
    }
  ],
  "meta": {
    "cursor": {
      "current": null,
      "prev": "string",
      "next": "string",
      "count": 1,
      "total": 1
    }
  }
}

Status codes

200
SuccessThe changes made to the record after it was created, newest first, one entry per change. old and new hold only the fields that changed, keyed by field: destination (every destination, the primary one first; null while the record serves HTML), utm, type and status (active / paused). actor.name is who made the change as it read then: the user's name, or the API token's name when source is api. meta.cursor.total counts every change of the record. Reading the changes is the plan's audit log, from Pro up (feature security.audit); without it data is empty while meta.cursor.total still counts the changes, so the dashboard can show how many there are next to an upgrade prompt. Follow meta.cursor.next for the next page.
401
UnauthenticatedUnauthenticated
429
Too many requestsToo many requests