Implementing the enterprise search API

ENT_Tag-Small.png 

The Enterprise search API provides programmatic access to search and retrieve documents belonging to your organization. It’s perfect for integrating Scribe’s powerful document search into your applications. 

Key features:

  • Document search: Find documents with advanced filtering
  • Team management: Access team information for filtering
  • Real-time results: Get up-to-date document information

The search API is available to Enterprise Grid and Global customers. Reach out to Sales if you’re interested in learning more.


💡 Working with Scribe in your AI tools? The Scribe MCP may be the better option. Learn more here

Implementation 

Authentication

All endpoints require a valid API key in the X-API-Key header.

Getting your API key

  1. Visit Scribe settings
  2. Generate a new API key
  3. Copy the key (starts with sc_), you will be only be able to see/copy it once.
  4. Keep it secure!

API reference

Base URL

<https://public-api.scribehow.com>

 

Authentication header

X-API-Key: sc_your_api_key_here

Search documents

Search for documents across your organization with powerful filtering options. Returns a maximum of 15 results per request.

Endpoint: POST /v1/search/

 

Request parameters

Parameter Type Required Description
search string Search terms (minimum 1 character)
type string Document type: page or scribe
team_ids array List of team IDs to filter by
sort_by string Sort order (default: relevance)
created_at__gte string Created after date (ISO-8601)
created_at__lte string Created before date (ISO-8601)
updated_at__gte string Updated after date (ISO-8601)
updated_at__lte string Updated before date (ISO-8601)

 

Sort options

  • relevanceMost relevant first (default)
  • created_atOldest first
  • created_atNewest first
  • updated_atLeast recently updated first
  • updated_atMost recently updated first

 

Document types

  • page Pages
  • scribeScribe documents

 

Examples

Basic search

# Python

import requests

response = requests.post(
    "<https://public-api.scribehow.com/v1/search/>",
    headers={"X-API-Key": "sc_your_api_key_here"},
    json={"search": "security protocols"},
)
documents = response.json()
// JavaScript

const response = await fetch('<https://public-api.scribehow.com/v1/search/>', {
	method: 'POST',
	headers: {
		'X-API-Key': 'sc_your_api_key_here',
		'Content-Type': 'application/json',
	},
	body: JSON.stringify({
		search: 'user authentication'
	}),
});
const documents = await response.json();
# curl

curl -X POST "<https://public-api.scribehow.com/v1/search/>" \\
-H "Content-Type: application/json" \\
-H "X-API-Key: sc_your_api_key_here" \\
-d '{  "search": "user authentication"}'

 

Advanced search with filters

# Python

import requests

response = requests.post(
    "<https://public-api.scribehow.com/v1/search/>",
    headers={"X-API-Key": "sc_your_api_key_here"},
    json={
        "search": "security protocols",
        "type": "page",
        "sort_by": "-updated_at",
        "created_at__gte": "2024-01-01T00:00:00Z",
    },
)
documents = response.json()
// JavaScript

const response = await fetch('<https://public-api.scribehow.com/v1/search/>', {
	method: 'POST',
	headers: {
		'X-API-Key': 'sc_your_api_key_here',
		'Content-Type': 'application/json',
	},
	body: JSON.stringify({
		search: 'security protocols',
		type: 'page',
		sort_by: '-updated_at',
		created_at__gte: '2024-01-01T00:00:00Z',
	}),
});
const documents = await response.json();
# curl

curl -X POST "<https://public-api.scribehow.com/v1/search/>" \\
  -H "Content-Type: application/json" \\
  -H "X-API-Key: sc_your_api_key_here" \\
  -d '{
    "search": "security protocols",
    "type": "page",
    "sort_by": "-updated_at",
    "created_at__gte": "2024-01-01T00:00:00Z"
  }'

 

Search by team

# Python

import requests

team_ids = ["550e8400-e29b-41d4-a716-446655440000"]
response = requests.post(
    "<https://public-api.scribehow.com/v1/search/>",
    headers={"X-API-Key": "sc_your_api_key_here"},
    json={"search": "security protocols", "team_ids": team_ids, "type": "scribe"},
)
documents = response.json()
// JavaScript

const teamIds = ['550e8400-e29b-41d4-a716-446655440000'];
const response = await fetch('<https://public-api.scribehow.com/v1/search/>', {
	method: 'POST',
	headers: {
		'X-API-Key': 'sc_your_api_key_here',
		'Content-Type': 'application/json',
	},
	body: JSON.stringify({
		search: 'security protocols',
		team_ids: teamIds,
		type: 'scribe',
	}),
});
const documents = await response.json();
# curl

curl -X POST "<https://public-api.scribehow.com/v1/search/>" \\
  -H "Content-Type: application/json" \\
  -H "X-API-Key: sc_your_api_key_here" \\
  -d '{
    "search": "security protocols",
    "team_ids": [
      "550e8400-e29b-41d4-a716-446655440000"
    ],
    "type": "scribe"
  }'

 

Response format (JSON)

[{
	"id": "550e8400-e29b-41d4-a716-446655440000",
	"name": "User Authentication Guide",
	"description": "Complete guide for implementing user authentication",
	"type": "page",
	"link": "<https://scribehow.com/shared/User_Authentication_Guide__abc123>",
	"team": {
		"id": "660e8400-e29b-41d4-a716-446655440001",
		"name": "Engineering Team"
	},
	"user_owner": {
		"id": "770e8400-e29b-41d4-a716-446655440002",
		"email": "john.doe@company.com",
		"name": "John Doe"
	},
	"actions": [{
		"id": "880e8400-e29b-41d4-a716-446655440003",
		"description": "Click the login button"
	}],
	"created_at": "2024-01-15T10:30:00Z",
	"updated_at": "2024-02-20T14:45:00Z"
}]

 


List teams

Get all teams associated with your API key. Use team IDs to filter search results.

Endpoint: GET /v1/teams/

 

Examples

# Python
import requests

response = requests.get(
    "<https://public-api.scribehow.com/v1/teams/>",
    headers={"X-API-Key": "sc_your_api_key_here"},
)
teams = response.json()
// JavaScript

const response = await fetch('<https://public-api.scribehow.com/v1/teams/>', {
	headers: {
		'X-API-Key': 'sc_your_api_key_here'
	},
});
const teams = await response.json();
# curl

curl -X GET "<https://public-api.scribehow.com/v1/teams/>" \\
  -H "X-API-Key: sc_your_api_key_here"

 

Response format (JSON)

[
  {
		"id": "550e8400-e29b-41d4-a716-446655440000",
		"name": "Engineering Team"
	},
	{
		"id": "660e8400-e29b-41d4-a716-446655440001",
		"name": "Product Team"
	}
]

 


Best practices

Search tips

  • Be specific: Use detailed search terms to get the most relevant results from the 15 returned
  • Use filters: Combine type and team filters to narrow down results
  • Sort strategically: Use updated_at to find recent content first
  • Note: Maximum 15 results returned per search

Security

  • Never expose API keys in client-side code
  • Monitor usage to detect unusual activity

Helpful resources

  • View this Scribe for help implementing the API with Slack bots:
  •  

     

    Was this article helpful?
    0 out of 0 found this helpful

    Articles in this section

    See more
    Compare Scribe Plans
    Find the right plan for you and your team.