### Pagination Source: https://leexi.readme.io/reference/index Details on how to paginate through API results using optional query parameters. ```APIDOC ## Pagination All routes have as optional query parameters: * **page** : page number * **items** : number of items per page (1-100, default to 10) ``` -------------------------------- ### GET /v1/users Source: https://leexi.readme.io/reference/index Retrieves a list of users. This endpoint utilizes authentication and supports pagination. ```APIDOC ## GET /v1/users ### Description Retrieves a list of users from the company account. ### Method GET ### Endpoint `https://public-api.leexi.ai/v1/users` ### Parameters #### Query Parameters - **page** (integer) - Optional - The page number to retrieve. - **items** (integer) - Optional - The number of items per page (1-100, default to 10). ### Request Example ```bash curl --header "Authorization: Basic S0VZX0lEOktFWV9TRUNSRVQ=" \ --location "https://public-api.leexi.ai/v1/users?page=1&items=20" ``` ### Response #### Success Response (200) *(Response structure not detailed in the provided text, but would typically include a list of user objects)* #### Response Example *(Example response not provided in the source text)* ``` -------------------------------- ### Rate Limiting Source: https://leexi.readme.io/reference/index Information about the API's rate limits for general requests and call creation. ```APIDOC ## Rate Limiting The rate limit for this API is 50 requests/minute. For call creation, the rate limit is 10 requests/minute. ``` -------------------------------- ### Authentication Source: https://leexi.readme.io/reference/index This section explains how to authenticate your API requests using API Key ID and Key Secret via HTTP Basic Authentication. ```APIDOC ## Authentication This is an HTTPS-only API. Authentication is based on `API Key ID` and `Key Secret`. The `API Key ID` and `Key Secret` is passed via HTTP Basic Authentication. This means Leexi expects to find an Authorization header with "Basic " and then `KEY_ID:KEY_SECRET` encoded in base 64. ### Shell Example ```bash # Key ID: KEY_ID # Key Secret: KEY_SECRET # KEY_ID:KEY_SECRET base64 encoded: S0VZX0lEOktFWV9TRUNSRVQ= curl --header "Authorization: Basic S0VZX0lEOktFWV9TRUNSRVQ=" \ --location "https://public-api.leexi.ai/v1/users" ``` You can generate an API key/secret pair by going to Leexi → Settings → Company Settings → API Keys, and clicking on _add_ (requires a Leexi admin account). > ## 💡 > API keys are not subject to access rules and give access to all calls in the related company account ``` -------------------------------- ### Error Codes Source: https://leexi.readme.io/reference/index A list of common error codes returned by the API and their meanings. ```APIDOC ## Error Codes * **400** : Invalid request (invalid parameter values) * **401** : Unauthorized (API key is invalid) * **403** : Forbidden (API key doesn't have the right access) * **404** : Resource not found ``` -------------------------------- ### POST /websites/leexi_readme_io_reference/meeting_events Source: https://leexi.readme.io/reference/create-a-meeting-event Creates a new meeting event. This endpoint allows the creation of meeting events with various details including participants, meeting URLs, start and end times, and more. ```APIDOC ## POST /websites/leexi_readme_io_reference/meeting_events ### Description Creates a new meeting event. This endpoint allows the creation of meeting events with various details including participants, meeting URLs, start and end times, and more. ### Method POST ### Endpoint /websites/leexi_readme_io_reference/meeting_events ### Parameters #### Request Body - **participants** (array) - Optional - List of participants for the meeting. - **meeting_url** (string) - Optional - The URL for the meeting. - **meeting_provider** (object) - Optional - Information about the meeting provider. - **internal** (boolean) - Optional - Indicates if the meeting is internal. Defaults to true. - **direction** (object) - Optional - Direction of the meeting. - **start_time** (string) - Optional - The start time of the meeting in ISO format. - **end_time** (string) - Optional - The end time of the meeting in ISO format. - **description** (object) - Optional - Description of the meeting. - **owned** (boolean) - Optional - Indicates if the meeting is owned. Defaults to true. - **to_record** (boolean) - Optional - Indicates if the meeting should be recorded. Defaults to true. - **bot_scheduled** (boolean) - Optional - Indicates if the bot has scheduled the meeting. Defaults to true. - **bot_running** (boolean) - Optional - Indicates if the bot is running for the meeting. Defaults to true. - **bot_runs** (array) - Optional - Details about bot runs for the meeting. - **origin** (string) - Optional - The origin of the meeting event. - **recording_notified** (boolean) - Optional - Indicates if a recording notification has been sent. Defaults to true. - **active** (boolean) - Optional - Indicates if the meeting event is active. Defaults to true. - **integration_user** (object) - Optional - Information about the integration user. ### Request Example ```json { "participants": [ { "type": "object", "properties": {} } ], "meeting_url": "https://meet.google.com/abc-dsfs-mar", "meeting_provider": {}, "internal": false, "direction": {}, "start_time": "2024-06-13T11:00:00.000Z", "end_time": "2024-06-13T11:30:00.000Z", "description": {}, "owned": false, "to_record": false, "bot_scheduled": false, "bot_running": false, "bot_runs": [ { "type": "object", "properties": {} } ], "origin": "api", "recording_notified": false, "active": true, "integration_user": {} } ``` ### Response #### Success Response (200) - **success** (boolean) - Indicates if the operation was successful. - **message** (string) - A message confirming the meeting event creation. - **data** (object) - Contains the details of the created meeting event. - **participants** (array) - List of participants for the meeting. - **meeting_url** (string) - The URL for the meeting. - **meeting_provider** (object) - Information about the meeting provider. - **internal** (boolean) - Indicates if the meeting is internal. - **direction** (object) - Direction of the meeting. - **start_time** (string) - The start time of the meeting. - **end_time** (string) - The end time of the meeting. - **description** (object) - Description of the meeting. - **owned** (boolean) - Indicates if the meeting is owned. - **to_record** (boolean) - Indicates if the meeting should be recorded. - **bot_scheduled** (boolean) - Indicates if the bot has scheduled the meeting. - **bot_running** (boolean) - Indicates if the bot is running for the meeting. - **bot_runs** (array) - Details about bot runs for the meeting. - **origin** (string) - The origin of the meeting event. - **created_at** (string) - The timestamp when the event was created. - **updated_at** (string) - The timestamp when the event was last updated. - **recording_notified** (boolean) - Indicates if a recording notification has been sent. - **active** (boolean) - Indicates if the meeting event is active. - **integration_user** (object) - Information about the integration user. #### Response Example ```json { "success": true, "message": "Meeting event successfully created", "data": { "participants": [ { "type": "object", "properties": {} } ], "meeting_url": "https://meet.google.com/abc-dsfs-mar", "meeting_provider": {}, "internal": false, "direction": {}, "start_time": "2024-06-13T11:00:00.000Z", "end_time": "2024-06-13T11:30:00.000Z", "description": {}, "owned": false, "to_record": false, "bot_scheduled": false, "bot_running": false, "bot_runs": [ { "type": "object", "properties": {} } ], "origin": "api", "created_at": "2024-07-02T15:58:58.494+02:00", "updated_at": "2024-07-02T15:58:58.494+02:00", "recording_notified": false, "active": true, "integration_user": {} } } ``` #### Error Response (403) - **success** (boolean) - Indicates if the operation was successful. - **message** (string) - An error message indicating the lack of a transcription license. #### Error Response Example (403) ```json { "success": false, "message": "This user does not have a transcription license" } ``` #### Error Response (409) - **success** (boolean) - Indicates if the operation was successful. - **message** (string) - An error message indicating a duplicate meeting event. #### Error Response Example (409) ```json { "success": false, "message": "A meeting event with this URL and start time already exists" } ``` ``` -------------------------------- ### API Authentication using cURL Source: https://leexi.readme.io/reference/index Demonstrates how to authenticate API requests using API Key ID and Key Secret via HTTP Basic Authentication with cURL. The API key and secret are base64 encoded and passed in the Authorization header. ```shell # Key ID: KEY_ID # Key Secret: KEY_SECRET # KEY_ID:KEY_SECRET base64 encoded: S0VZX0lEOktFWV9TRUNSRVQ= curl --header "Authorization: Basic S0VZX0lEOktFWV9TRUNSRVQ=" \ --location "https://public-api.leexi.ai/v1/users" ``` -------------------------------- ### Pagination Source: https://leexi.readme.io/reference/public-api All Leexi API routes support optional pagination parameters to control the number of items returned per request. ```APIDOC ## Pagination ### Description All Leexi API routes support optional pagination parameters to control the number of items returned per request. ### Method GET, POST, PUT, DELETE (for all endpoints) ### Endpoint All Leexi API endpoints ### Parameters #### Query Parameters - **page** (integer) - Optional - The page number to retrieve. - **items** (integer) - Optional - The number of items to return per page. Accepts values between 1 and 100 (default is 10). ``` -------------------------------- ### POST /meeting_events Source: https://leexi.readme.io/reference/create-a-meeting-event Allows you to create a new meeting event in Leexi. You need to provide essential details such as the meeting URL, user UUID, start and end times, organizer, and whether to record the meeting. ```APIDOC ## POST /meeting_events ### Description This endpoint allows for the creation of a new meeting event within the Leexi platform. It requires specific details about the meeting, including its URL, associated Leexi user, timing, organizer, and recording preference. ### Method POST ### Endpoint /meeting_events ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body - **meeting_url** (string) - Required - The URL of the meeting (e.g., Zoom, Teams, Google Meet). - **user_uuid** (string) - Required - The UUID of the Leexi user associated with the meeting. - **start_time** (string) - Required - The start time of the meeting in 'YYYY-MM-DDTHH:MM:SS.000Z' format. - **end_time** (string) - Required - The end time of the meeting in 'YYYY-MM-DDTHH:MM:SS.000Z' format. - **organizer** (string) - Required - The email address of the meeting organizer. - **to_record** (boolean) - Required - Indicates whether the meeting should be recorded. - **attendees** (array) - Optional - A list of attendee email addresses. - **title** (string) - Optional - The title of the meeting. - **description** (string) - Optional - A description for the meeting. - **owned** (boolean) - Optional - Defaults to false. Indicates if the meeting is owned. - **internal** (boolean) - Optional - Defaults to false. Indicates if the meeting is internal. - **direction** (string) - Optional - Enum: ['inbound', 'outbound']. The direction of the meeting. ### Request Example ```json { "meeting_url": "https://meet.google.com/abc-dsfs-mar", "user_uuid": "a1b2c3d4-e5f6-7890-1234-567890abcdef", "start_time": "2024-06-13T11:00:00.000Z", "end_time": "2024-06-13T11:30:00.000Z", "organizer": "foo@bar.com", "to_record": true, "attendees": ["alice@test.com", "bob@test.com"], "title": "Project Sync", "description": "Weekly project synchronization meeting.", "owned": true, "internal": false, "direction": "inbound" } ``` ### Response #### Success Response (200) - **success** (boolean) - Indicates if the operation was successful. - **data** (object) - Contains the details of the created meeting event. - **uuid** (string) - The unique identifier for the meeting event. - **title** (string|null) - The title of the meeting. - **organizer** (string|null) - The organizer's email. - **attendees** (array) - A list of attendees. - **meeting_url** (string) - The URL of the meeting. - **meeting_provider** (string|null) - The provider of the meeting (e.g., Zoom, Google Meet). - **internal** (boolean) - Indicates if the meeting is internal. - **direction** (string|null) - The direction of the meeting. - **start_time** (string) - The start time of the meeting. - **end_time** (string) - The end time of the meeting. - **description** (string|null) - The description of the meeting. - **owned** (boolean) - Indicates if the meeting is owned. - **to_record** (boolean) - Indicates if the meeting is to be recorded. - **bot_scheduled** (boolean) - Indicates if the bot is scheduled. - **bot_running** (boolean) - Indicates if the bot is running. - **bot_runs** (array) - A list of bot runs. - **origin** (string) - The origin of the event creation. - **created_at** (string) - The timestamp when the event was created. - **updated_at** (string) - The timestamp when the event was last updated. - **recording_notified** (boolean) - Indicates if a recording notification was sent. - **active** (boolean) - Indicates if the event is active. - **integration_user** (string|null) - The integration user associated with the event. - **message** (string) - A message indicating the result of the operation. #### Response Example ```json { "success": true, "data": { "uuid": "b980db78-sdsd-dfdf-8c97-fb3a0c3d4e49", "title": null, "organizer": null, "attendees": [], "meeting_url": "https://meet.google.com/abc-dsfs-mar", "meeting_provider": null, "internal": false, "direction": null, "start_time": "2024-06-13T11:00:00.000Z", "end_time": "2024-06-13T11:30:00.000Z", "description": null, "owned": false, "to_record": false, "bot_scheduled": false, "bot_running": false, "bot_runs": [], "origin": "api", "created_at": "2024-07-02T15:58:58.494+02:00", "updated_at": "2024-07-02T15:58:58.494+02:00", "recording_notified": false, "active": true, "integration_user": null }, "message": "Meeting event successfully created" } ``` ``` -------------------------------- ### GET /websites/leexi_readme_io_reference Source: https://leexi.readme.io/reference/get-call Retrieves reference data for leexi_readme_io, likely containing website analysis results or metadata. ```APIDOC ## GET /websites/leexi_readme_io_reference ### Description Retrieves reference data for leexi_readme_io, likely containing website analysis results or metadata. ### Method GET ### Endpoint /websites/leexi_readme_io_reference ### Parameters No path or query parameters are specified. ### Request Body Not applicable for GET requests. ### Request Example Not applicable for GET requests. ### Response #### Success Response (200) - **uuid** (string) - Unique identifier for the reference data. - **performed_at** (string) - Timestamp when the data was performed or generated. - **prompts** (array) - An array of prompt objects, each containing category, completions, title, and uuid. - **recording_url** (string) - URL to the recording associated with this reference. - **scorecards** (array) - An array of scorecard objects. - **simple_transcript** (string) - A simplified transcript of the recording. - **source** (string) - The source of the data (e.g., 'aircall'). - **source_id** (string) - The ID of the source data. - **speakers** (array) - An array of speaker objects, each containing email_address, index, is_user, name, phone_number, uuid, duration, and longest_monologue. - **tasks** (array) - An array of task objects. #### Response Example ```json { "uuid": "a4ce7181-07f3-451c-8593-c067209efe4c", "performed_at": "2024-06-13T10:49:47.000Z", "prompts": [ { "category": "summary", "completions": ["Modi sint ea aliquam."], "title": "summary", "uuid": "5e7f2976-3da1-4bd9-ac61-1109f175a28f" } ], "recording_url": "...", "scorecards": [], "simple_transcript": "Bob (00:00 - 00:10)\nHi, how are you?\nAlice (00:10 - 00:20)\nI'm good, how are you?", "source": "aircall", "source_id": "4231481288", "speakers": [ { "email_address": "philippe@leexi.ai", "index": 0, "is_user": true, "name": "Philippe", "phone_number": {}, "uuid": "22cd0302-e459-468d-9e03-54532d996552", "duration": 100.3, "longest_monologue": 10.2 } ], "tasks": [] } ``` ``` -------------------------------- ### Authenticate API Request using cURL Source: https://leexi.readme.io/reference/public-api Demonstrates how to authenticate an API request to Leexi using cURL. It shows how to construct the Authorization header with base64 encoded API Key ID and Key Secret. ```shell # Key ID: KEY_ID # Key Secret: KEY_SECRET # KEY_ID:KEY_SECRET base64 encoded: S0VZX0lEOktFWV9TRUNSRVQ= curl --header "Authorization: Basic S0VZX0lEOktFWV9TRUNSRVQ=" \ --location "https://public-api.leexi.ai/v1/users" ``` -------------------------------- ### GET /users Source: https://leexi.readme.io/reference/list-users Retrieves a list of all users in your workspace. Supports pagination and item count filtering. ```APIDOC ## GET /users ### Description List all users in your workspace. This endpoint allows for pagination and specifying the number of items per page. ### Method GET ### Endpoint https://public-api.leexi.ai/v1/users ### Parameters #### Query Parameters - **page** (integer) - Optional - The page number to retrieve. Defaults to 1. - **items** (integer) - Optional - The number of items to return per page. Minimum: 1, Maximum: 100. Defaults to 10. ### Request Example ```bash curl -X GET "https://public-api.leexi.ai/v1/users?page=1&items=10" \ -H "Authorization: Basic " ``` ### Response #### Success Response (200) - **data** (array) - An array of user objects. - **uuid** (string) - Unique identifier for the user. - **name** (string) - The name of the user. - **email** (string) - The email address of the user. - **created_at** (string) - Timestamp when the user was created. - **updated_at** (string) - Timestamp when the user was last updated. - **team** (object) - Information about the user's team. - **uuid** (string) - Unique identifier for the team. - **name** (string) - The name of the team. - **active** (boolean) - Indicates if the team is active. - **pagination** (object) - Pagination details. - **page** (integer) - The current page number. - **items** (integer) - The number of items per page. - **count** (integer) - The total count of users. #### Response Example ```json { "data": [ { "uuid": "befb9860-8661-442a-9496-8743de9e17cd", "name": "John Smith", "email": "john.smith@acme.com", "created_at": "2024-06-14T11:00:33.534Z", "updated_at": "2024-06-14T11:00:33.534Z", "team": { "uuid": "5290728d-b3c4-4330-918d-d8f153e9500d", "name": "Sales Team", "active": true } } ], "pagination": { "page": 1, "items": 1, "count": 1 } } ``` #### Error Response (400) - **sucess** (boolean) - Indicates if the request was successful. - **message** (string) - A message describing the error. #### Error Response Example ```json { "sucess": false, "message": "An error occured" } ``` ``` -------------------------------- ### GET /v1/users Source: https://leexi.readme.io/reference/users Retrieves a list of all users in your workspace. Supports pagination and filtering. ```APIDOC ## GET /v1/users ### Description Retrieves a list of all users in your workspace. Supports pagination and filtering. ### Method GET ### Endpoint https://public-api.leexi.ai/v1/users ### Parameters #### Query Parameters - **page** (int32) - Optional - Defaults to 1. Specifies the page number for pagination. - **items** (int32) - Optional - Defaults to 10. Specifies the number of items per page. Minimum: 1, Maximum: 100. #### Headers - **Authorization** (string) - Required - Basic authentication token. ### Request Example ```bash curl --request GET \ --url https://public-api.leexi.ai/v1/users \ --header 'accept: application/json' ``` ### Response #### Success Response (200) - **data** (array) - An array of user objects. - **uuid** (string) - The unique identifier for the user. - **name** (string) - The name of the user. - **email** (string) - The email address of the user. - **created_at** (string) - The timestamp when the user was created. - **updated_at** (string) - The timestamp when the user was last updated. - **team** (object) - Information about the user's team. - **uuid** (string) - The unique identifier for the team. - **name** (string) - The name of the team. - **active** (boolean) - Indicates if the team is active. - **pagination** (object) - Pagination details for the response. - **page** (integer) - The current page number. - **items** (integer) - The number of items per page. - **count** (integer) - The total number of items. #### Response Example ```json { "data": [ { "uuid": "befb9860-8661-442a-9496-8743de9e17cd", "name": "John Smith", "email": "john.smith@acme.com", "created_at": "2024-06-14T11:00:33.534Z", "updated_at": "2024-06-14T11:00:33.534Z", "team": { "uuid": "5290728d-b3c4-4330-918d-d8f153e9500d", "name": "Sales Team", "active": true } } ], "pagination": { "page": 1, "items": 1, "count": 1 } } ``` #### Error Response (400) - **success** (boolean) - Indicates if the request was successful. - **message** (string) - A message describing the error. ``` -------------------------------- ### Make GET Request to Leexi API (cURL) Source: https://leexi.readme.io/reference/calls This snippet demonstrates how to make a GET request to the Leexi public API to retrieve call data. It requires an 'accept' header set to 'application/json'. The response will be a JSON object containing call data. ```shell curl --request GET \ --url https://public-api.leexi.ai/v1/calls \ --header 'accept: application/json' ``` -------------------------------- ### GET /websites/leexi_readme_io_reference Source: https://leexi.readme.io/reference/list-calls Retrieves a list of websites with detailed information, including metadata, transcript details, and pagination controls. Supports error responses for invalid requests. ```APIDOC ## GET /websites/leexi_readme_io_reference ### Description Retrieves a list of websites with detailed information, including metadata, transcript details, and pagination controls. Supports error responses for invalid requests. ### Method GET ### Endpoint /websites/leexi_readme_io_reference ### Parameters #### Query Parameters - **page** (integer) - Optional - The page number to retrieve. - **items** (integer) - Optional - The number of items per page. #### Request Body None ### Request Example ``` GET /websites/leexi_readme_io_reference?page=1&items=10 ``` ### Response #### Success Response (200) - **data** (object) - Contains the website data and pagination information. - **data.results** (array) - A list of website objects. - **uuid** (string) - Unique identifier for the website. - **title** (string) - The title of the website. - **created_at** (string) - Timestamp when the website was created. - **updated_at** (string) - Timestamp when the website was last updated. - **visible** (boolean) - Indicates if the website is visible. - **transcript_url** (string) - URL to the transcript. - **transcript_archived_at** (string) - Timestamp when the transcript was archived. - **video_archived_at** (string) - Timestamp when the video was archived. - **data.pagination** (object) - Pagination details. - **count** (integer) - Total number of items available. - **items** (integer) - Number of items per page. - **page** (integer) - Current page number. #### Response Example (Success) ```json { "data": { "results": [ { "uuid": "422dda3c-6e1b-4868-b96e-acd12fdf9139", "title": "Aliquam pretium ut arcu id", "created_at": "2024-06-13T10:49:47.000Z", "updated_at": "2024-06-13T11:00:33.534Z", "visible": true, "transcript_url": "...", "transcript_archived_at": null, "video_archived_at": "2024-06-14T11:00:33.534Z" } ], "pagination": { "count": 42, "items": 10, "page": 1 } } } ``` #### Error Response (400) - **sucess** (boolean) - Indicates if the request was successful. - **message** (string) - Description of the error. #### Response Example (Error) ```json { "sucess": false, "message": "An error occured" } ``` ``` -------------------------------- ### POST /calls Source: https://leexi.readme.io/reference/create-a-call Creates a call or meeting asynchronously. The creation process typically takes a few minutes. Before using this endpoint, ensure the call recording has been uploaded using a presigned recording URL obtained from a previous endpoint. Utilize the 'LIST users' endpoint to find the `user_uuid` required for this request. ```APIDOC ## POST /calls ### Description Creates a call or meeting asynchronously. The creation process typically takes a few minutes. Before using this endpoint, ensure the call recording has been uploaded using a presigned recording URL obtained from a previous endpoint. Utilize the 'LIST users' endpoint to find the `user_uuid` required for this request. ### Method POST ### Endpoint https://public-api.leexi.ai/v1/calls ### Parameters #### Request Body - **recording_s3_key** (string) - Required - The key returned by the presign_recording_url endpoint. - **external_id** (string) - Required - The ID of the call in your system. - **direction** (string) - Required - 'inbound' or 'outbound'. - **performed_at** (string) - Required - ISO8601 format. - **user_uuid** (string) - Required - The UUID of the user associated with the call; must have an active license. - **title** (string) - Optional - The title of the call or meeting. - **description** (string) - Optional - Description of the call. - **locale** (string) - Optional - Locale for the call (e.g., 'en-US', 'fr-FR'). - **tags** (array of strings) - Optional - An array of tag names. - **emails** (array of strings) - Optional - A list of emails of other participants in the call. - **raw_phone_number** (string) - Optional - A string representation of the customer's phone number. ### Request Example ```json { "recording_s3_key": "leexi/recordings/upload/b969bec6-c572-466b-99cd-37b4bb7d8b4f.mp3", "external_id": "123", "direction": "outbound", "performed_at": "2024-10-18T16:19:22+02:00", "user_uuid": "ee4c0057-5c1f-45a6-a0ba-8e2356fa137a", "title": "Meeting XYZ", "description": "", "locale": "en-US", "tags": ["sales", "follow-up"], "emails": ["participant@example.com"], "raw_phone_number": "+1234567890" } ``` ### Response #### Success Response (200) - **(object)** - An empty JSON object indicating successful creation. #### Response Example ```json { } ``` #### Error Response (400) - **(object)** - An empty JSON object indicating a bad request. #### Response Example ```json { } ``` ``` -------------------------------- ### Error Codes Source: https://leexi.readme.io/reference/public-api Reference for common HTTP status codes returned by the Leexi API and their meanings. ```APIDOC ## Error Codes ### Description Reference for common HTTP status codes returned by the Leexi API and their meanings. ### Errors - **400** : Invalid request (e.g., invalid parameter values). - **401** : Unauthorized (e.g., invalid API key). - **403** : Forbidden (e.g., API key lacks necessary permissions). - **404** : Resource not found. ``` -------------------------------- ### Rate Limiting Source: https://leexi.readme.io/reference/public-api Understand the request rate limits for the Leexi API to avoid exceeding them and encountering errors. ```APIDOC ## Rate Limiting ### Description Understand the request rate limits for the Leexi API to avoid exceeding them and encountering errors. ### Details - **General Rate Limit**: 50 requests per minute. - **Call Creation Rate Limit**: 10 requests per minute. ``` -------------------------------- ### GET /websites/leexi_readme_io_reference Source: https://leexi.readme.io/reference/list-meeting-events Retrieves a list of meetings associated with the leexi_readme_io_reference project. This endpoint returns detailed information about each meeting, including participants, URLs, and recording status. ```APIDOC ## GET /websites/leexi_readme_io_reference ### Description Retrieves a list of meetings associated with the leexi_readme_io_reference project. This endpoint returns detailed information about each meeting, including participants, URLs, and recording status. ### Method GET ### Endpoint /websites/leexi_readme_io_reference ### Parameters #### Query Parameters - **limit** (integer) - Optional - The maximum number of meetings to return. - **offset** (integer) - Optional - The number of meetings to skip before returning results. ### Response #### Success Response (200) - **data** (array) - An array of meeting objects. - **uuid** (string) - The unique identifier for the meeting. - **title** (string) - The title of the meeting. - **organizer** (object) - Information about the meeting organizer. - **email** (string) - The email address of the organizer. - **attendees** (array) - A list of attendees. - **email** (string) - The email address of an attendee. - **meeting_url** (string) - The URL to join the meeting. - **meeting_provider** (string) - The provider of the meeting (e.g., 'teams_meeting'). - **internal** (boolean) - Indicates if the meeting is internal (default: true). - **direction** (string) - The direction of the meeting (e.g., 'outbound'). - **start_time** (string) - The scheduled start time of the meeting (ISO 8601 format). - **end_time** (string) - The scheduled end time of the meeting (ISO 8601 format). - **description** (string) - A description of the meeting. - **owned** (boolean) - Indicates if the meeting is owned by the authenticated user (default: true). - **to_record** (boolean) - Indicates if the meeting is set to be recorded (default: true). - **bot_scheduled** (boolean) - Indicates if the bot is scheduled for the meeting (default: true). - **bot_running** (boolean) - Indicates if the bot is currently running for the meeting (default: true). - **bot_runs** (array) - Information about bot runs for the meeting. - **uuid** (string) - The unique identifier for the bot run. - **start_time** (string) - The start time of the bot run. - **end_time** (string) - The end time of the bot run. - **recording_start_time** (string) - The time recording started. - **end_reason** (string) - The reason the bot run ended. #### Response Example ```json { "data": [ { "uuid": "bcdvde61-b4b5-4c93-96be-aa5162086f4d", "title": "Nihil tenetur dolore illum.", "organizer": { "email": "philippe@leexi.ai" }, "attendees": [ { "email": "bob@test.com" } ], "meeting_url": "https://teams.microsoft.com/l/meetup-join/…", "meeting_provider": "teams_meeting", "internal": false, "direction": "outbound", "start_time": "2024-06-20T09:30:00.000Z", "end_time": "2024-06-20T10:00:00.000Z", "description": "Maxime pariatur vitae. Pariatur ea reprehenderit. Et omnis id.", "owned": true, "to_record": true, "bot_scheduled": false, "bot_running": false, "bot_runs": [ { "uuid": "f3d6e1d4-aa2c-489b-9b73-6db6b0e5089a", "start_time": "2024-06-20T09:30:00.000Z", "end_time": "2024-06-20T10:30:00.000Z", "recording_start_time": "2024-06-20T09:35:00.000Z", "end_reason": "participants_left" } ] } ] } ``` ``` -------------------------------- ### POST /websites/leexi_readme_io_reference/meetings Source: https://leexi.readme.io/reference/create-a-meeting-event Creates a new meeting event. This endpoint accepts a JSON payload containing all necessary details for scheduling a meeting. ```APIDOC ## POST /websites/leexi_readme_io_reference/meetings ### Description Creates a new meeting event with specified details. ### Method POST ### Endpoint /websites/leexi_readme_io_reference/meetings ### Parameters #### Request Body - **meeting_url** (string) - Required - The URL for the meeting. - **user_uuid** (string) - Required - The unique identifier for the user creating the meeting. - **start_time** (string) - Required - The start time of the meeting in ISO 8601 format. - **end_time** (string) - Required - The end time of the meeting in ISO 8601 format. - **owned** (boolean) - Optional - Indicates if the meeting is owned by the user. - **internal** (boolean) - Optional - Indicates if the meeting is internal. - **to_record** (boolean) - Optional - Indicates if the meeting should be recorded. - **organizer** (string) - Optional - The email address of the organizer. - **attendees** (array of strings) - Optional - A list of email addresses for attendees. - **title** (string) - Optional - The title of the meeting. - **description** (string) - Optional - The description of the meeting. ### Request Example ```json { "meeting_url": "https://meet.google.com/abc-defg-hij", "user_uuid": "4321867f-9f82-4a0e-bd36-62c7f0c6a3b2", "start_time": "2024-06-13T11:00:00.000Z", "end_time": "2024-06-13T11:30:00.000Z", "owned": true, "internal": true, "to_record": true, "organizer": "bob@sdf.com", "attendees": ["alice@sdf.com", "bb@df.com"], "title": "Test title", "description": "Test description" } ``` ### Response #### Success Response (201) - **meetingId** (string) - The unique identifier of the created meeting. - **status** (string) - The status of the meeting creation (e.g., 'created', 'scheduled'). #### Response Example ```json { "meetingId": "m-12345abc", "status": "scheduled" } ``` ``` -------------------------------- ### List Users cURL Request Source: https://leexi.readme.io/reference/users This snippet shows how to make a GET request to the Leexi API to list all users in a workspace using cURL. It includes the endpoint URL and the 'accept' header for JSON responses. This is a basic example for direct API interaction. ```shell curl --request GET \ --url https://public-api.leexi.ai/v1/users \ --header 'accept: application/json' ``` -------------------------------- ### Authentication Source: https://leexi.readme.io/reference/public-api Leexi API uses HTTPS and authenticates requests using API Key ID and Key Secret via HTTP Basic Authentication. The Authorization header should contain 'Basic ' followed by the base64 encoded 'KEY_ID:KEY_SECRET'. ```APIDOC ## Authentication ### Description Leexi API uses HTTPS and authenticates requests using API Key ID and Key Secret via HTTP Basic Authentication. The Authorization header should contain 'Basic ' followed by the base64 encoded 'KEY_ID:KEY_SECRET'. ### Method GET, POST, PUT, DELETE (for all endpoints) ### Endpoint All Leexi API endpoints ### Parameters #### Header Parameters - **Authorization** (string) - Required - `Basic ` ### Request Example ```shell curl --header "Authorization: Basic S0VZX0lEOktFWV9TRUNSRVQ=" \ --location "https://public-api.leexi.ai/v1/users" ``` ### Response #### Success Response (200) - **(Response varies by endpoint)** #### Response Example ```json { "example": "response body" } ``` ```