SDK Reference
SDK Reference
Official client libraries for integrating SearchJet Engine into your application. Each SDK handles authentication, request signing, error handling, and retries automatically.
JavaScript / TypeScript SDK
Installation
npm install searchjet-connect
Initialization
import SearchJet from 'searchjet-connect';
const client = new SearchJet({
apiKey: 'sj_prv_xxxxxxxxxxxxxxxx'
});
Configuration Options
| Option | Type | Required | Description |
|---|---|---|---|
apiKey |
string | Yes | Your SearchJet API key |
baseUrl |
string | No | Custom base URL (default: https://app.searchjetengine.com) |
timeout |
number | No | Request timeout in ms (default: 10000) |
retries |
number | No | Auto-retry count on failure (default: 3) |
Search
const results = await client.search('react tutorial', {
limit: 20,
sort: 'relevance'
});
console.log(results.results.hits); // Array of matching documents
console.log(results.results.estimatedTotalHits); // Total number of matches
Indexing
// Bulk index multiple documents
await client.indexBulk([
{ id: 'doc_001', title: 'Getting Started', content: '...', url: '/blog/start' },
{ id: 'doc_002', title: 'Advanced Topics', content: '...', url: '/blog/advanced' }
]);
// Delete a document
await client.indexDestroy('doc_001');
Client Info
const info = await client.getClientInfo();
console.log(info.meilisearch_host);
console.log(info.plan);
Error Handling
try {
const results = await client.search('test');
} catch (error) {
console.error(error.code); // 'validation_failed'
console.error(error.message); // 'The q parameter is required.'
console.error(error.status); // 400
}
Python SDK
Installation
pip install searchjet-python
Client Setup
from searchjet import SearchJetClient
client = SearchJetClient(
api_key="sj_prv_xxxxxxxxxxxxxxxx"
)
Configuration Options
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
api_key |
str | Yes | — | Your API key |
base_url |
str | No | https://app.searchjetengine.com |
API base URL |
timeout |
float | No | 10.0 | Request timeout in seconds |
max_retries |
int | No | 3 | Retry attempts on failure |
Search
results = client.search(
query="react tutorial",
limit=20
)
print(results["results"]["hits"]) # List of matching documents
print(results["results"]["estimatedTotalHits"]) # Total matches
Indexing
# Bulk index
client.index_bulk([
{"id": "doc_001", "title": "Getting Started", "content": "...", "url": "/blog/start"},
{"id": "doc_002", "title": "Advanced Topics", "content": "...", "url": "/blog/advanced"}
])
# Delete a document
client.index_destroy("doc_001")
Client Info
info = client.get_client_info()
print(info["meilisearch_host"])
print(info["plan"])
Error Handling
from searchjet.exceptions import (
SearchJetError,
ValidationError,
UnauthorizedError,
RateLimitedError
)
try:
results = client.search("test")
except ValidationError as e:
print(f"Invalid request: {e.message}")
except UnauthorizedError:
print("Check your API key")
except RateLimitedError as e:
print(f"Rate limited, retry after {e.retry_after}s")
except SearchJetError as e:
print(f"SearchJet error: {e}")
Using with httpx Directly
import httpx
# The SDK uses httpx internally, but you can also make raw requests
response = httpx.get(
"https://app.searchjetengine.com/v1/search",
params={"q": "react", "limit": 10},
headers={"Authorization": "Bearer sj_prv_xxxxxxxxxxxxxxxx"}
)
data = response.json()
PHP / Laravel SDK
Installation
composer require searchjet/laravel
Service Provider (Auto-registered)
The package auto-discovers the service provider. Publish the config:
php artisan vendor:publish --provider="SearchJet\SearchJetServiceProvider" --tag="config"
Configuration
// config/searchjet.php
return [
'api_key' => env('SEARCHJET_API_KEY'),
'base_url' => env('SEARCHJET_BASE_URL', 'https://app.searchjetengine.com'),
'timeout' => env('SEARCHJET_TIMEOUT', 10),
];
Set in .env:
SEARCHJET_API_KEY=sj_prv_xxxxxxxxxxxxxxxx
Facade Usage
use SearchJet\Facades\SearchJet;
// Search
$results = SearchJet::search('react tutorial', [
'limit' => 20
]);
// Bulk index
SearchJet::indexBulk([
['id' => 'doc_001', 'title' => 'Getting Started', 'content' => '...', 'url' => '/blog/start'],
['id' => 'doc_002', 'title' => 'Advanced Topics', 'content' => '...', 'url' => '/blog/advanced']
]);
// Delete a document
SearchJet::indexDestroy('doc_001');
Error Handling
use SearchJet\Facades\SearchJet;
use SearchJet\Exceptions\SearchJetException;
use SearchJet\Exceptions\ValidationException;
use SearchJet\Exceptions\RateLimitedException;
try {
$results = SearchJet::search('test');
} catch (ValidationException $e) {
Log::warning('SearchJet validation: ' . $e->getMessage());
} catch (RateLimitedException $e) {
$retryAfter = $e->getRetryAfter();
Log::info("Rate limited, retry after {$retryAfter}s");
} catch (SearchJetException $e) {
Log::error('SearchJet error: ' . $e->getMessage());
}
HTTP Client (Guzzle)
The Laravel SDK uses Guzzle under the hood. You can also use it directly:
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://app.searchjetengine.com',
'headers' => [
'Authorization' => 'Bearer ' . config('searchjet.api_key'),
'Accept' => 'application/json'
]
]);
$response = $client->get('/v1/search', [
'query' => ['q' => 'react', 'limit' => 10]
]);
$data = json_decode($response->getBody(), true);
WordPress Plugin
Installation
- Download the SearchJet plugin from the WordPress plugin directory
- Upload via Plugins > Add New > Upload Plugin
- Activate the plugin
- Navigate to Settings > SearchJet and enter your API key
Configuration
| Setting | Description |
|---|---|
| API Key | Your SearchJet API key (public key for client-side search) |
| Search Page | Page containing the search shortcode |
| Results Per Page | Default results per page |
| Enable Autocomplete | Show suggestions as users type |
Using the Shortcode
// Basic search box
[searchjet_search]
// With placeholder text
[searchjet_search placeholder="Search articles..."]
// Search results page
[searchjet_results]
Using in Theme
'Search...',
'theme' => 'dark'
]); ?>
Quick Start Comparison
| Platform | Install | Initialize | Search |
|---|---|---|---|
| JavaScript | npm i searchjet-connect |
new SearchJet({...}) |
client.search('query') |
| Python | pip install searchjet-python |
SearchJetClient(...) |
client.search("query") |
| PHP/Laravel | composer require searchjet/laravel |
config('searchjet.php') |
SearchJet::search('query') |
| WordPress | Plugin upload | Settings page | [searchjet_search] |
See Also
- API Documentation — Full API reference
- API Key Setup — Platform-specific authentication
- Error Handling — Error codes and handling