Outline Stars API
`Stars` represent a favorited document or collection in the application sidebar. Each user has their own collection of starred items.
`Stars` represent a favorited document or collection in the application sidebar. Each user has their own collection of starred items.
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-stars-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 Stars 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: Stars
description: '`Stars` represent a favorited document or collection in the application sidebar.
Each user has their own collection of starred items.'
paths:
/stars.create:
post:
tags:
- Stars
summary: Create a star
description: Stars a document or collection so it appears in the users sidebar. One of either `documentId` or `collectionId` must be provided.
requestBody:
content:
application/json:
schema:
type: object
properties:
documentId:
type: string
format: uuid
collectionId:
type: string
format: uuid
index:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Star'
policies:
type: array
items:
$ref: '#/components/schemas/Policy'
'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: starsCreate
/stars.list:
post:
tags:
- Stars
summary: List all stars
description: List all starred documents for the authenticated user. Stars allow users to bookmark important documents for quick access in the sidebar.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Pagination'
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
type: object
properties:
stars:
type: array
items:
$ref: '#/components/schemas/Star'
documents:
type: array
items:
$ref: '#/components/schemas/Document'
pagination:
$ref: '#/components/schemas/Pagination'
policies:
type: array
items:
$ref: '#/components/schemas/Policy'
'401':
$ref: '#/components/responses/Unauthenticated'
'403':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimited'
operationId: starsList
/stars.update:
post:
tags:
- Stars
summary: Update a stars order in the sidebar
description: Update the position of a starred document in the sidebar. The index parameter determines the display order relative to other starred documents.
requestBody:
content:
application/json:
schema:
type: object
properties:
id:
type: string
format: uuid
index:
type: string
required:
- id
- index
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/Star'
policies:
type: array
items:
$ref: '#/components/schemas/Policy'
'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: starsUpdate
/stars.delete:
post:
tags:
- Stars
summary: Delete a star
description: Remove a star from a document, removing it from the user's starred documents list in the sidebar.
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: starsDelete
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:
Ability:
description: A single permission granted by a policy
example: true
oneOf:
- type: array
items:
type: string
- type: boolean
Pagination:
type: object
properties:
offset:
type: number
example: 0
limit:
type: number
example: 25
Document:
type: object
properties:
id:
type: string
description: Unique identifier for the object.
readOnly: true
format: uuid
collectionId:
type:
- string
- 'null'
description: Identifier for the associated collection.
format: uuid
parentDocumentId:
type:
- string
- 'null'
description: Identifier for the document this is a child of, if any.
format: uuid
title:
type: string
description: The title of the document.
example: Welcome to Acme Inc
fullWidth:
type: boolean
description: Whether this document should be displayed in a full-width view.
icon:
type:
- string
- 'null'
description: An emoji or icon associated with the document.
example: 🎉
color:
type:
- string
- 'null'
description: The color of the document icon in hex format.
text:
type: string
description: The text content of the document, contains markdown formatting
example: …
data:
type:
- object
- 'null'
description: The body of the document as a Prosemirror document, returned in place of text when requested.
url:
type: string
description: A URL path to access the document.
readOnly: true
urlId:
type: string
description: A short unique ID that can be used to identify the document as an alternative to the UUID
example: hDYep1TPAM
collaboratorIds:
type: array
description: Identifiers of users who have edited the document.
items:
type: string
format: uuid
tasks:
type: object
description: Task completion counts for the document.
properties:
completed:
type: number
total:
type: number
templateId:
type: string
description: Unique identifier for the template this document was created from, if any
format: uuid
revision:
type: number
description: A number that is auto incrementing with every revision of the document that is saved
readOnly: true
createdAt:
type: string
description: The date and time that this object was created
readOnly: true
format: date-time
createdBy:
$ref: '#/components/schemas/User'
updatedAt:
type: string
description: The date and time that this object was last changed
readOnly: true
format: date-time
updatedBy:
$ref: '#/components/schemas/User'
publishedAt:
type:
- string
- 'null'
description: The date and time that this object was published
readOnly: true
format: date-time
dataAttributes:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/DocumentDataAttribute'
archivedAt:
type:
- string
- 'null'
description: The date and time that this object was archived
readOnly: true
format: date-time
deletedAt:
type:
- string
- 'null'
description: The date and time that this object was deleted
readOnly: true
format: date-time
UserRole:
type: string
enum:
- admin
- member
- viewer
- guest
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
Error:
type: object
properties:
ok:
type: boolean
example: false
error:
type: string
message:
type: string
status:
type: number
data:
type: object
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
DocumentDataAttribute:
type: object
properties:
dataAttributeId:
type: string
description: Unique identifier for the associated data attribute.
format: uuid
value:
description: The value of the data attribute for this document.
example: In Progress
oneOf:
- type: string
- type: boolean
- type: number
updatedAt:
type: string
description: The date and time that this object attribute was last changed
readOnly: true
format: date-time
Star:
type: object
properties:
id:
type: string
description: Unique identifier for the object.
readOnly: true
format: uuid
index:
type: string
description: Index of the star in the list of stars.
documentId:
type:
- string
- 'null'
description: Unique identifier for the starred document.
readOnly: true
format: uuid
collectionId:
type:
- string
- 'null'
description: Unique identifier for the starred collection.
readOnly: true
format: uuid
createdAt:
type: string
format: date-time
description: Date and time when this star was created
readOnly: true
updatedAt:
type: string
format: date-time
description: Date and time when this star was last changed
readOnly: true
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