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.
`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.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/outline-shares-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 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