Documentation Index
Fetch the complete documentation index at: https://developers.ambersearch.de/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The amberSearch Public API uses OAuth 2.0 Authorization Code Grant and a PKCE safety measure to authenticate third-party applications. This flow allows users to authorize external applications to access amberSearch on their behalf without sharing their credentials. The provider abides by the specifications defined in the RFC 6749 and RFC 7636 protocols, implementing a seamless and secure interface for authorizing users.This is a beta version of our OAuth 2.0 implementation. Features may evolve as we continue to improve the API.
Base URL
All OAuth endpoints are available under:OAuth 2.0 Flow
The OAuth 2.0 Authorization Code Grant flow consists of the following steps:Client Redirects User to Authorization Endpoint
Your application redirects the user to
/api/oauth/authorize with your client credentials and desired scopes.User Authentication
The user authenticates with amberSearch (if not already logged in) and authorizes your application.
Authorization Code Issued
amberSearch redirects back to your application’s redirect URI with an authorization code.
Exchange Code for Access Token
Your application exchanges the authorization code for an access token by calling
/api/oauth/token.Getting Started
To use OAuth 2.0 with the amberSearch API, you need OAuth client credentialsclient_id, client_secret or simply client_id if PKCE is required.
Discovery Endpoints
To make integration easier, amberSearch exposes OAuth discovery endpoints so clients can automatically learn: • the authorization endpoint (/authorize) • the token endpoint (/token) • supported PKCE methods • supported scopesAuthorization Endpoint
Step 1: Redirect User to Authorization
Direct users to the authorization endpoint to begin the OAuth flow:| Parameter | Type | Required | Description |
|---|---|---|---|
response_type | string | Yes | Must be code |
client_id | string | Yes | Your OAuth client ID |
redirect_uri | string | Yes | Must match one of the registered redirect URIs |
scope | string | No | Space-separated list of requested scopes |
state | string | Recommended | Opaque value for CSRF protection |
code_challenge | string | Yes | Encoded version of the code verifier |
code_challenge_method | string | Yes | Encoding algorithm that transforms code_verifier into a code_challenge, only 2 methods are supported, S256 and plain |
Step 2: User Authentication
If the user is not logged into amberSearch, they will be redirected to the login page. After successful authentication, they are redirected back to continue the OAuth flow.Step 3: Authorization Response
Upon successful authorization, the user is redirected to yourredirect_uri with:
| Parameter | Description |
|---|---|
code | The authorization code (valid for 10 minutes) |
state | The state parameter you provided (verify this matches!) |
Token Endpoint
Step 4: Exchange Authorization Code for Access Token
| Parameter | Type | Required | Description |
|---|---|---|---|
grant_type | string | Yes | authorization_code |
code | string | Yes | The authorization code received |
redirect_uri | string | Yes | Must match the authorization request |
client_id | string | Yes | Your OAuth client ID |
code_verifier | string | Yes | A randomly generated string used to verify the client request on the server |
| Field | Description |
|---|---|
access_token | JWT access token for API requests |
refresh_token | JWT access token for generating access tokens |
token_type | Always Bearer |
expires_in | Token lifetime in seconds (3600 = 1 hour, null = permanent) |
scope | Granted scopes |
Using the Access Token
Once you have an access token, include it in theAuthorization header for all API requests:
Step 5: Exchanging the refresh token for an access token
In case of the access token expiring or for rotating the tokens you can pass the refresh token in order to retrieve a new access and refresh token| Parameter | Type | Required | Description |
|---|---|---|---|
client_id | string | Yes | Your OAuth client ID |
client_secret | string | Yes | Your OAuth client secret |
grant_type | string | Yes | refresh_token |
refresh_token | string | Yes | A jwt used for authentication and access token generation |
-H “Content-Type: application/x-www-form-urlencoded”
-d “client_id=client_id”
-d “client_secret”=“client_secret”
-d “grant_type=refresh_token”
-d “refresh_token=your-refresh-token” Success Response:
Scopes
| Scope | Description |
|---|---|
offline_access | Request a permanent access token (never expires) |
- Standard tokens: Expire after 1 hour (
expires_in: 3600) - Offline access tokens: Never expire (
expires_in: null)
Error Handling
Common OAuth errors:| Error | Description |
|---|---|
invalid_request | The request is missing a required parameter or is malformed |
unauthorized_client | The client is not authorized to use this flow |
access_denied | The user denied the authorization request |
invalid_grant | The authorization code is invalid or expired |
invalid_client | Client authentication failed |

