Outline Shares API

`Shares` represent authorization to view a document without being a member of the workspace. Shares are created in order to give access to documents publicly. Each user that shares a document will have a unique share object.

Operations 5

POST /shares.info Retrieve a share object #
POST /shares.list List all shares #
POST /shares.create Create a share #
POST /shares.update Update a share #
POST /shares.revoke Revoke a share #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/outline-shares-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

outline-shares-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Outline Shares API
  description: '# Introduction


    The Outline API is structured in an RPC style.'
  version: 0.1.0
  contact:
    email: hello@getoutline.com
  license:
    name: BSD-3-Clause
    url: https://github.com/outline/openapi/blob/main/LICENSE
servers:
- url: https://app.getoutline.com/api
  description: Cloud hosted
- url: https://{domain}/api
  description: Self-hosted on your own server
  variables:
    domain:
      default: example.com
security:
- BearerAuth: []
- OAuth2:
  - read
  - write
tags:
- name: Shares
  description: '`Shares` represent authorization to view a document without being a member

    of the workspace. Shares are created in order to give access to documents publicly.

    Each user that shares a document will have a unique share object.'
paths:
  /shares.info:
    post:
      tags:
      - Shares
      summary: Retrieve a share object
      description: Retrieve the details of a share link by its unique identifier or by the associated document ID. Shares allow documents to be accessed publicly or by specific users.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: Unique identifier for the share.
                  format: uuid
                documentId:
                  type: string
                  description: Unique identifier for a document. One of id or documentId must be provided.
                  format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Share'
                  policies:
                    type: array
                    items:
                      $ref: '#/components/schemas/Policy'
        '401':
          $ref: '#/components/responses/Unauthenticated'
        '403':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
      operationId: sharesInfo
  /shares.list:
    post:
      tags:
      - Shares
      summary: List all shares
      description: List all share links in the workspace.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/Pagination'
              - $ref: '#/components/schemas/Sorting'
              - type: object
                properties:
                  query:
                    type: string
                    description: Filter to shared documents matching a search query
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Share'
                  policies:
                    type: array
                    items:
                      $ref: '#/components/schemas/Policy'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
        '401':
          $ref: '#/components/responses/Unauthenticated'
        '403':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      operationId: sharesList
  /shares.create:
    post:
      tags:
      - Shares
      summary: Create a share
      description: Creates a new share link that can be used by to access a document or collection. If you request multiple shares for the same resource with the same API key, the same share object will be returned. By default all shares are unpublished. Exactly one of `documentId` or `collectionId` must be provided.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                documentId:
                  type: string
                  format: uuid
                  description: Identifier for the document to share. Mutually exclusive with `collectionId`.
                collectionId:
                  type: string
                  format: uuid
                  description: Identifier for the collection to share. Mutually exclusive with `documentId`.
              oneOf:
              - required:
                - documentId
              - required:
                - collectionId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Share'
                  policies:
                    type: array
                    items:
                      $ref: '#/components/schemas/Policy'
        '400':
          $ref: '#/components/responses/Validation'
        '401':
          $ref: '#/components/responses/Unauthenticated'
        '403':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      operationId: sharesCreate
  /shares.update:
    post:
      tags:
      - Shares
      summary: Update a share
      description: Allows changing an existing share's published status, which removes authentication and makes it available to anyone with the link.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
                published:
                  type: boolean
                title:
                  type:
                  - string
                  - 'null'
                  maxLength: 255
                  description: Override title displayed on the publicly shared page. If not set the source document or collection title is used.
                iconUrl:
                  type:
                  - string
                  - 'null'
                  format: uri
                  maxLength: 4096
                  description: URL of an icon to display on the publicly shared page, overriding the workspace branding.
              required:
              - id
              - published
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Share'
                  policies:
                    type: array
                    items:
                      $ref: '#/components/schemas/Policy'
        '400':
          $ref: '#/components/responses/Validation'
        '401':
          $ref: '#/components/responses/Unauthenticated'
        '403':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
      operationId: sharesUpdate
  /shares.revoke:
    post:
      tags:
      - Shares
      summary: Revoke a share
      description: Makes the share link inactive so that it can no longer be used to access the document.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                  format: uuid
              required:
              - id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
        '400':
          $ref: '#/components/responses/Validation'
        '401':
          $ref: '#/components/responses/Unauthenticated'
        '403':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
      operationId: sharesRevoke
components:
  headers:
    RateLimit-Remaining:
      schema:
        type: integer
      description: How many requests are left in the current duration.
    RateLimit-Limit:
      schema:
        type: integer
      description: The maximum requests available in the current duration.
    Retry-After:
      schema:
        type: integer
      description: Seconds in the future to retry the request, if rate limited.
    RateLimit-Reset:
      schema:
        type: string
      description: Timestamp in the future the duration will reset.
  schemas:
    UserRole:
      type: string
      enum:
      - admin
      - member
      - viewer
      - guest
    Pagination:
      type: object
      properties:
        offset:
          type: number
          example: 0
        limit:
          type: number
          example: 25
    Policy:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the object this policy references.
          format: uuid
          readOnly: true
        abilities:
          type: object
          description: The abilities that are allowed by this policy, if an array is returned then the individual ID's in the array represent the memberships that grant the ability.
          additionalProperties:
            $ref: '#/components/schemas/Ability'
          example:
            read: true
            update: true
            delete: false
    Sorting:
      type: object
      properties:
        sort:
          type: string
          example: updatedAt
        direction:
          type: string
          example: DESC
          enum:
          - ASC
          - DESC
    Error:
      type: object
      properties:
        ok:
          type: boolean
          example: false
        error:
          type: string
        message:
          type: string
        status:
          type: number
        data:
          type: object
    Share:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the object.
          readOnly: true
          format: uuid
        documentTitle:
          type: string
          description: Title of the shared document.
          example: React best practices
          readOnly: true
        documentUrl:
          type: string
          format: uri
          description: URL of the original document.
          readOnly: true
        sourceTitle:
          type: string
          description: Title of the shared document or collection.
          readOnly: true
        sourcePath:
          type: string
          description: Path of the shared document or collection.
          readOnly: true
        documentId:
          type:
          - string
          - 'null'
          format: uuid
          description: Identifier of the shared document, if any.
          readOnly: true
        collectionId:
          type:
          - string
          - 'null'
          format: uuid
          description: Identifier of the shared collection, if any.
          readOnly: true
        urlId:
          type:
          - string
          - 'null'
          description: Short URL identifier for the share, if set.
          readOnly: true
        url:
          type: string
          format: uri
          description: URL of the publicly shared document.
          readOnly: true
        domain:
          type:
          - string
          - 'null'
          description: Custom domain the share is served on, if any.
        title:
          type:
          - string
          - 'null'
          maxLength: 255
          description: Override title displayed on the publicly shared page. If not set the source document or collection title is used.
        iconUrl:
          type:
          - string
          - 'null'
          format: uri
          maxLength: 4096
          description: URL of an icon displayed on the publicly shared page, overriding the workspace branding.
        published:
          type: boolean
          example: false
          description: If true the share can be loaded without a user account.
        includeChildDocuments:
          type: boolean
          example: true
          description: If to also give permission to view documents nested beneath this one.
        allowSubscriptions:
          type: boolean
          example: true
          description: Whether visitors to the public share can subscribe to receive email notifications when the document is updated. Requires SMTP to be configured on the workspace.
        allowIndexing:
          type: boolean
          description: Whether the shared page may be indexed by search engines.
        showLastUpdated:
          type: boolean
          description: Whether to show the last-updated time on the shared page.
        showTOC:
          type: boolean
          description: Whether to show a table of contents on the shared page.
        views:
          type: number
          description: The number of times the shared page has been viewed.
          readOnly: true
        createdAt:
          type: string
          format: date-time
          description: Date and time when this share was created
          readOnly: true
        createdBy:
          $ref: '#/components/schemas/User'
        updatedAt:
          type: string
          format: date-time
          description: Date and time when this share was edited
          readOnly: true
        lastAccessedAt:
          type:
          - string
          - 'null'
          format: date-time
          description: Date and time when this share was last viewed. Only returned to workspace admins.
          readOnly: true
    User:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier for the object.
          readOnly: true
          format: uuid
        name:
          type: string
          description: The name of this user, it is migrated from Slack or Google Workspace when the SSO connection is made but can be changed if necessary.
          example: Jane Doe
        avatarUrl:
          type: string
          format: uri
          description: The URL for the image associated with this user, it will be displayed in the application UI and email notifications.
        color:
          type: string
          description: A color representing the user, used in the UI for avatars without an image.
          readOnly: true
        email:
          type: string
          description: The email associated with this user, it is migrated from Slack or Google Workspace when the SSO connection is made but can be changed if necessary.
          format: email
          readOnly: true
        role:
          $ref: '#/components/schemas/UserRole'
        isSuspended:
          type: boolean
          description: Whether this user has been suspended.
          readOnly: true
        lastActiveAt:
          type:
          - string
          - 'null'
          description: The last time this user made an API request, this value is updated at most every 5 minutes.
          readOnly: true
          format: date-time
        timezone:
          type:
          - string
          - 'null'
          description: The timezone this user has registered.
        createdAt:
          type: string
          description: The date and time that this user first signed in or was invited as a guest.
          readOnly: true
          format: date-time
        updatedAt:
          type: string
          description: The date and time that this user was last updated.
          readOnly: true
          format: date-time
        deletedAt:
          type:
          - string
          - 'null'
          description: The date and time that this user was deleted, if applicable.
          readOnly: true
          format: date-time
    Ability:
      description: A single permission granted by a policy
      example: true
      oneOf:
      - type: array
        items:
          type: string
      - type: boolean
  responses:
    Validation:
      description: The request failed one or more validations.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The specified resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: The request was rate limited.
      headers:
        Retry-After:
          $ref: '#/components/headers/Retry-After'
        RateLimit-Limit:
          $ref: '#/components/headers/RateLimit-Limit'
        RateLimit-Remaining:
          $ref: '#/components/headers/RateLimit-Remaining'
        RateLimit-Reset:
          $ref: '#/components/headers/RateLimit-Reset'
      content:
        application/json:
          schema:
            type: object
            properties:
              ok:
                type: boolean
                example: false
              error:
                type: string
                example: rate_limit_exceeded
              status:
                type: number
                example: 429
    Unauthorized:
      description: The current API key is not authorized to perform this action.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthenticated:
      description: The API key is missing or otherwise invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
    OAuth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://app.getoutline.com/oauth/authorize
          tokenUrl: https://app.getoutline.com/oauth/token
          refreshUrl: https://app.getoutline.com/oauth/token
          scopes:
            read: Read access
            write: Write access