---
title: "Search document titles"
method: POST
path: "/documents.search_titles"
tags: ["Documents"]
---

# Search document titles

`POST /documents.search_titles`

## Request

- Base URL: `https://app.getoutline.com/api`
- URL: `https://app.getoutline.com/api/documents.search_titles`
- Auth: one of:
  - HTTP bearer
  - OAuth 2
    - Authorization code: `https://app.getoutline.com/oauth/authorize`
    - Token URL: `https://app.getoutline.com/oauth/token` scopes: `read`, `write`

This method allows you to search document titles with keywords. Unlike documents.search, this only searches titles and returns faster results.

## Request body

- object
  - `offset` number
  - `limit` number
  - `query` string, required: Search query to match against document titles
  - `filters` DocumentFilter[]: Structured filter expression, evaluated as an AND of top-level entries. Cannot be combined with the deprecated `collectionId`, `userId`, `documentId`, `dateFilter` or `statusFilter` parameters.
    - union: A single filter node, either a leaf condition matching a document field or a group combining nested filters with a logical operator.
      - object: A condition that compares a document field against a value.
        - `field` 'createdAt' | 'updatedAt' | 'publishedAt' | 'archivedAt' | 'title' | 'templateId' | 'collectionId' | 'createdById' | 'userId' | 'documentId' | 'parentDocumentId', required: Name of the document field to filter on.
        - `operator` 'eq' | 'neq' | 'lt' | 'lte' | 'gt' | 'gte' | 'contains' | 'startsWith' | 'endsWith' | 'containsStrict' | 'startsWithStrict' | 'endsWithStrict' | 'in' | 'notIn' | 'isNull' | 'isNotNull', required: Comparison operator to apply. Note that some fields only accept a subset of operators – for example `createdById`, `userId` and `documentId` only support `eq` and `in`.
        - `value` unknown
      - object: A logical group that combines nested filters with an `AND` or `OR` operator. Groups may themselves contain further groups.
        - `operator` 'AND' | 'OR', required
        - `filters` DocumentFilter[], required
  - `collectionId` string, uuid: Filter to a specific collection. Deprecated – prefer the `filters` parameter.
  - `userId` string, uuid: Filter results based on user. Deprecated – prefer the `filters` parameter.
  - `documentId` string, uuid: Filter results based on content within a document and its children. Deprecated – prefer the `filters` parameter.
  - `statusFilter` string[]: Document statuses to include in results. Deprecated – prefer the `filters` parameter.
  - `dateFilter` 'day' | 'week' | 'month' | 'year': Any documents that have not been updated within the specified period will be filtered out. Deprecated – prefer the `filters` parameter with a date field and an ISO 8601 duration value.
  - `shareId` string: Filter results for the collection or document referenced by the shareId
  - `sort` 'relevance' | 'createdAt' | 'updatedAt' | 'title': Specifies the attributes by which search results will be sorted
  - `direction` 'ASC' | 'DESC': Specifies the sort order with respect to sort field

## Response `200`

OK

- object
  - `data` Document[]
    - `id` string, uuid: Unique identifier for the object.
    - `collectionId` string, uuid, nullable: Identifier for the associated collection.
    - `parentDocumentId` string, uuid, nullable: Identifier for the document this is a child of, if any.
    - `title` string: The title of the document.
    - `fullWidth` boolean: Whether this document should be displayed in a full-width view.
    - `icon` string, nullable: An emoji or icon associated with the document.
    - `color` string, nullable: The color of the document icon in hex format.
    - `text` string: The text content of the document, contains markdown formatting
    - `data` object, nullable: The body of the document as a Prosemirror document, returned in place of text when requested.
    - `url` string: A URL path to access the document. Deprecated – prefer the `path` field.
    - `path` string: A URL path to access the document.
    - `urlId` string: A short unique ID that can be used to identify the document as an alternative to the UUID
    - `collaboratorIds` string[]: Identifiers of users who have edited the document.
    - `tasks` object: Task completion counts for the document.
      - `completed` number
      - `total` number
    - `templateId` string, uuid: Unique identifier for the template this document was created from, if any
    - `revision` number: A number that is auto incrementing with every revision of the document that is saved
    - `createdAt` string, date-time: The date and time that this object was created
    - `createdBy` User
      - `id` string, uuid: Unique identifier for the object.
      - `name` string: 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.
      - `avatarUrl` string, uri: The URL for the image associated with this user, it will be displayed in the application UI and email notifications.
      - `color` string: A color representing the user, used in the UI for avatars without an image.
      - `email` string, email: 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.
      - `role` 'admin' | 'member' | 'viewer' | 'guest'
      - `isSuspended` boolean: Whether this user has been suspended.
      - `lastActiveAt` string, date-time, nullable: The last time this user made an API request, this value is updated at most every 5 minutes.
      - `timezone` string, nullable: The timezone this user has registered.
      - `createdAt` string, date-time: The date and time that this user first signed in or was invited as a guest.
      - `updatedAt` string, date-time: The date and time that this user was last updated.
      - `deletedAt` string, date-time, nullable: The date and time that this user was deleted, if applicable.
      - `invitedBy` User (recursive)
    - `updatedAt` string, date-time: The date and time that this object was last changed
    - `updatedBy` User
      - `id` string, uuid: Unique identifier for the object.
      - `name` string: 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.
      - `avatarUrl` string, uri: The URL for the image associated with this user, it will be displayed in the application UI and email notifications.
      - `color` string: A color representing the user, used in the UI for avatars without an image.
      - `email` string, email: 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.
      - `role` 'admin' | 'member' | 'viewer' | 'guest'
      - `isSuspended` boolean: Whether this user has been suspended.
      - `lastActiveAt` string, date-time, nullable: The last time this user made an API request, this value is updated at most every 5 minutes.
      - `timezone` string, nullable: The timezone this user has registered.
      - `createdAt` string, date-time: The date and time that this user first signed in or was invited as a guest.
      - `updatedAt` string, date-time: The date and time that this user was last updated.
      - `deletedAt` string, date-time, nullable: The date and time that this user was deleted, if applicable.
      - `invitedBy` User (recursive)
    - `publishedAt` string, date-time, nullable: The date and time that this object was published
    - `dataAttributes` DocumentDataAttribute[], nullable
      - `dataAttributeId` string, uuid: Unique identifier for the associated data attribute.
      - `value` union: The value of the data attribute for this document.
        - string
        - boolean
        - number
      - `updatedAt` string, date-time: The date and time that this object attribute was last changed
    - `archivedAt` string, date-time, nullable: The date and time that this object was archived
    - `deletedAt` string, date-time, nullable: The date and time that this object was deleted
    - `deletedBy` User
      - `id` string, uuid: Unique identifier for the object.
      - `name` string: 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.
      - `avatarUrl` string, uri: The URL for the image associated with this user, it will be displayed in the application UI and email notifications.
      - `color` string: A color representing the user, used in the UI for avatars without an image.
      - `email` string, email: 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.
      - `role` 'admin' | 'member' | 'viewer' | 'guest'
      - `isSuspended` boolean: Whether this user has been suspended.
      - `lastActiveAt` string, date-time, nullable: The last time this user made an API request, this value is updated at most every 5 minutes.
      - `timezone` string, nullable: The timezone this user has registered.
      - `createdAt` string, date-time: The date and time that this user first signed in or was invited as a guest.
      - `updatedAt` string, date-time: The date and time that this user was last updated.
      - `deletedAt` string, date-time, nullable: The date and time that this user was deleted, if applicable.
      - `invitedBy` User (recursive)
    - `deprecatedReason` string, nullable: The reason the document was archived or deleted, if one was provided.
    - `preferences` object, nullable: Document-level display preferences.
      - `headingPrefix` 'none' | 'numeric' | 'alphanumeric' | 'outline': Numbering style applied to the document's headings when rendered.
  - `policies` Policy[]
    - `id` string, uuid: Unique identifier for the object this policy references.
    - `abilities` object: 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.
  - `pagination` Pagination
    - `offset` number
    - `limit` number

## Other responses

- `401`: The API key is missing or otherwise invalid.
- `403`: The current API key is not authorized to perform this action.
- `429`: The request was rate limited.

## Changes

- **2026-11-02** `5ddf01ffba84`: 2 info
  - added the optional property `data/items/path` to the response with the `200` status
  - response property `data/items/url` deprecated
- **2026-10-08** `73984ccdae0f`: 1 info
  - added the new `createdById` enum value to the request property `allOf[subschema #2]/filters/items/oneOf[subschema #1]/field`
- **2026-09-20** `a75820943fbb`: 1 info
  - added the optional property `data/items/deprecatedReason` to the response with the `200` status
- **2026-08-24** `dff00215628f`: 2 info
  - added the optional property `data/items/deletedBy` to the response with the `200` status
  - added the optional property `data/items/preferences` to the response with the `200` status
- **2026-08-15** `eda6fe87e973`: 6 info
  - added the new optional request property `allOf[subschema #2]/filters`
  - request property `allOf[subschema #2]/collectionId` deprecated
  - request property `allOf[subschema #2]/dateFilter` deprecated
  - request property `allOf[subschema #2]/documentId` deprecated
  - …2 more

[Operation history](https://skmtc.dev/defaulr/apis/outline-api/changes/documents.search_titles/post.md)

---

[API](https://skmtc.dev/defaulr/apis/outline-api.md) - [All operations](https://skmtc.dev/defaulr/apis/outline-api/llms.txt) - [OpenAPI document](https://skmtc.dev/defaulr/apis/outline-api/revisions/5ddf01ffba84?raw)
