Skip to content

API reference

Sharing API

Publish a section or a whole project at a stable public link, read its sharing state, or revoke the link.

BetaUpdated

Base URL
https://lyricwinter.com/api/v1
Authentication
Authorization: Bearer lw_…
Contract
openapi.json

Get section sharing

GET/studio/sections/{sectionId}/share

Scope studio:read

Returns whether the section is public and its active public link, if any.

Path parameters

  • sectionIdstringrequireduuid

Response 200

Current section sharing state. Fields below are inside data.

  • schema_version1required
  • section_idstringrequireduuid
  • is_publicbooleanrequired
  • shareobject | nullrequired

    Active link; non-null exactly when is_public is true.

    3 child attributes
    • idstringrequireduuid
    • urlstringrequireduri

      Public section page URL of the form <origin>/s/<token>.

    • created_atstringrequireddate-time

Errors 400, 401, 403, 404, 500, 503 use the standard error envelope.

curl "https://lyricwinter.com/api/v1/studio/sections/$SECTION_ID/share" \
  -H "Authorization: Bearer $LYRICWINTER_API_KEY"
Response 200 (example)
{
  "data": {
    "schema_version": 1,
    "section_id": "8f14e45f-ceea-4e7a-9c2d-3b1a5f2e7c10",
    "is_public": true,
    "share": {
      "id": "c9f0f895-fb98-4b91-9e3f-1d2a6b7c8d20",
      "url": "https://lyricwinter.com/…",
      "created_at": "2026-09-30T17:00:00.000Z"
    }
  },
  "request_id": "req_01J9Z3K8QF4"
}

Share a section

POST/studio/sections/{sectionId}/share

Scope studio:write

Creates a stable public link for the section, or returns the existing one. The public page always plays the latest saved version. Send an empty JSON object, or name the source surface you shared from.

Path parameters

  • sectionIdstringrequireduuid

Request body application/json

  • sourcestring

    Studio surface the owner shared from.

    One oftoolbarplayback_menulibrarycompletion_prompt

Response 201

Section published with its active link (also returned when already public). Fields below are inside data.

  • schema_version1required
  • section_idstringrequireduuid
  • is_publicbooleanrequired
  • shareobject | nullrequired

    Active link; non-null exactly when is_public is true.

    3 child attributes
    • idstringrequireduuid
    • urlstringrequireduri

      Public section page URL of the form <origin>/s/<token>.

    • created_atstringrequireddate-time

Errors 400, 401, 403, 404, 409, 500, 503 use the standard error envelope.

curl -X POST "https://lyricwinter.com/api/v1/studio/sections/$SECTION_ID/share" \
  -H "Authorization: Bearer $LYRICWINTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Response 201 (example)
{
  "data": {
    "schema_version": 1,
    "section_id": "8f14e45f-ceea-4e7a-9c2d-3b1a5f2e7c10",
    "is_public": true,
    "share": {
      "id": "c9f0f895-fb98-4b91-9e3f-1d2a6b7c8d20",
      "url": "https://lyricwinter.com/…",
      "created_at": "2026-09-30T17:00:00.000Z"
    }
  },
  "request_id": "req_01J9Z3K8QF4"
}

Stop sharing a section

DELETE/studio/sections/{sectionId}/share

Scope studio:write

Revokes the section's public link and makes the section private.

Path parameters

  • sectionIdstringrequireduuid

Response 200

Section is private and the prior link is revoked. Fields below are inside data.

  • schema_version1required
  • section_idstringrequireduuid
  • is_publicbooleanrequired
  • shareobject | nullrequired

    Active link; non-null exactly when is_public is true.

    3 child attributes
    • idstringrequireduuid
    • urlstringrequireduri

      Public section page URL of the form <origin>/s/<token>.

    • created_atstringrequireddate-time

Errors 400, 401, 403, 404, 500, 503 use the standard error envelope.

curl -X DELETE "https://lyricwinter.com/api/v1/studio/sections/$SECTION_ID/share" \
  -H "Authorization: Bearer $LYRICWINTER_API_KEY"
Response 200 (example)
{
  "data": {
    "schema_version": 1,
    "section_id": "8f14e45f-ceea-4e7a-9c2d-3b1a5f2e7c10",
    "is_public": true,
    "share": {
      "id": "c9f0f895-fb98-4b91-9e3f-1d2a6b7c8d20",
      "url": "https://lyricwinter.com/…",
      "created_at": "2026-09-30T17:00:00.000Z"
    }
  },
  "request_id": "req_01J9Z3K8QF4"
}

Get project sharing

GET/studio/projects/{projectId}/share

Scope studio:read

Returns whether the project has a public link and the active link, if any.

Path parameters

  • projectIdstringrequireduuid

Response 200

Current project public-link state. Fields below are inside data.

  • schema_version1required
  • project_idstringrequireduuid
  • is_publicbooleanrequired
  • shareobject | nullrequired

    Active link; non-null exactly when is_public is true.

    3 child attributes
    • idstringrequireduuid
    • urlstringrequireduri

      Public project page URL of the form <origin>/p/<token>.

    • created_atstringrequireddate-time

Errors 400, 401, 403, 404, 500, 503 use the standard error envelope.

curl "https://lyricwinter.com/api/v1/studio/projects/$PROJECT_ID/share" \
  -H "Authorization: Bearer $LYRICWINTER_API_KEY"
Response 200 (example)
{
  "data": {
    "schema_version": 1,
    "project_id": "8f14e45f-ceea-4e7a-9c2d-3b1a5f2e7c10",
    "is_public": true,
    "share": {
      "id": "c9f0f895-fb98-4b91-9e3f-1d2a6b7c8d20",
      "url": "https://lyricwinter.com/…",
      "created_at": "2026-09-30T17:00:00.000Z"
    }
  },
  "request_id": "req_01J9Z3K8QF4"
}

Share a project

POST/studio/projects/{projectId}/share

Scope studio:write

Creates a stable public link for the whole project, or returns the existing one. Send an empty JSON object, or name the source surface you shared from.

Path parameters

  • projectIdstringrequireduuid

Request body application/json

  • sourcestring

    Studio surface the owner shared from.

    One oftoolbarplayback_menulibrarycompletion_prompt

Response 201

Stable project public link. Fields below are inside data.

  • schema_version1required
  • project_idstringrequireduuid
  • is_publicbooleanrequired
  • shareobject | nullrequired

    Active link; non-null exactly when is_public is true.

    3 child attributes
    • idstringrequireduuid
    • urlstringrequireduri

      Public project page URL of the form <origin>/p/<token>.

    • created_atstringrequireddate-time

Errors 400, 401, 403, 404, 409, 500, 503 use the standard error envelope.

curl -X POST "https://lyricwinter.com/api/v1/studio/projects/$PROJECT_ID/share" \
  -H "Authorization: Bearer $LYRICWINTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
Response 201 (example)
{
  "data": {
    "schema_version": 1,
    "project_id": "8f14e45f-ceea-4e7a-9c2d-3b1a5f2e7c10",
    "is_public": true,
    "share": {
      "id": "c9f0f895-fb98-4b91-9e3f-1d2a6b7c8d20",
      "url": "https://lyricwinter.com/…",
      "created_at": "2026-09-30T17:00:00.000Z"
    }
  },
  "request_id": "req_01J9Z3K8QF4"
}

Stop sharing a project

DELETE/studio/projects/{projectId}/share

Scope studio:write

Revokes the project's public link. Send no request body.

Path parameters

  • projectIdstringrequireduuid

Response 200

Project sharing is revoked. Fields below are inside data.

  • schema_version1required
  • project_idstringrequireduuid
  • is_publicbooleanrequired
  • shareobject | nullrequired

    Active link; non-null exactly when is_public is true.

    3 child attributes
    • idstringrequireduuid
    • urlstringrequireduri

      Public project page URL of the form <origin>/p/<token>.

    • created_atstringrequireddate-time

Errors 400, 401, 403, 404, 500, 503 use the standard error envelope.

curl -X DELETE "https://lyricwinter.com/api/v1/studio/projects/$PROJECT_ID/share" \
  -H "Authorization: Bearer $LYRICWINTER_API_KEY"
Response 200 (example)
{
  "data": {
    "schema_version": 1,
    "project_id": "8f14e45f-ceea-4e7a-9c2d-3b1a5f2e7c10",
    "is_public": true,
    "share": {
      "id": "c9f0f895-fb98-4b91-9e3f-1d2a6b7c8d20",
      "url": "https://lyricwinter.com/…",
      "created_at": "2026-09-30T17:00:00.000Z"
    }
  },
  "request_id": "req_01J9Z3K8QF4"
}