{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"4f86d1d7-e2e7-4669-a21e-db9065f56fa8","name":"API documentation","description":"# 📄 Get started here\n\n---\n\n# **API Overview**\n\nThe **FoundationAPI** offers a comprehensive suite of API products, tools, and resources designed to enhance your project management and organizational workflows. Our API enables you to seamlessly integrate and manage diverse multimedia content sources and complex file uploads across various projects and organizational units. With **FoundationAPI**, you can effectively streamline your data handling processes, ensure consistent access to updated resources, and enhance collaboration within your team. Whether you're adding new content sources, uploading files, or managing project data, **FoundationAPI** provides the necessary functionalities to support your evolving business needs.\n\n# **Getting Started with FoundationAPI**\n\nWelcome to the **FoundationAPI!** Our API suite is designed to provide robust solutions for managing and integrating project and organizational resources efficiently. Follow these steps to begin using our APIs and maximize your productivity quickly:\n\n### Step 1: Obtain an API Key\n\n- **Register/Login:** Start by creating an [account](https://foundationx.ai) or logging in on our platform.\n    \n- **Generate API Key:** Navigate to the integrations dashboard in your account settings. Generate a new API key, which you will use to authenticate your API requests.\n    \n\n### Step 2: Setup Your Environment\n\n- **Use HTTPS:** **FoundationAPI** requires secure communication via HTTPS for all API requests. Ensure that your applications make requests over HTTPS to avoid redirections or security warnings.\n    \n- **Configure Headers:** Include your API key in the header of each request. This is typically done with a header such as `x-api-key:` .\n    \n\n### Step 3: Understand Rate and Usage Limits\n\n- **Check Limits:** Familiarize yourself with the rate and usage limits to ensure that your application respects these thresholds. Details about these limits are available in our API documentation section on rate limiting.\n    \n\n### Step 4: Handle API Responses and Errors\n\n- **JSON Responses:** Our API communicates and responds with JSON data. Ensure your application can parse and handle JSON format.\n    \n- **Manage Errors:** In case of an error, the API will send a JSON response containing an `error` key with details about the issue. Implement error handling in your application to gracefully manage these situations.\n    \n\n### Step 5: Explore API Endpoints\n\n- **Review Documentation:** Explore our detailed API documentation for descriptions of available endpoints, parameters, and sample requests and responses. This will help you understand how to integrate specific functionalities into your application.\n    \n\n### Step 6: Testing and Development\n\n- **Postman Collections:** Utilize provided Postman collections to test API endpoints. This allows you to understand the API flow in a controlled environment before full-scale integration.\n    \n\n### Step 7: Deployment\n\n- **Deploy:** Once testing is complete, integrate the API into your production environment. Monitor API usage and performance closely during the initial deployment phase.\n    \n\n### Step 8: Ongoing Support and Updates\n\n- **Stay Updated:** Keep an eye on API updates and changes. Subscribe to our newsletter or updates to receive notifications about new features or important changes.\n    \n- **Support:** If you encounter any issues or have questions, reach out to our support team through the help center or community forums.\n    \n\nBy following these steps, you can start leveraging the StreamlineAPI to enhance the efficiency and functionality of your projects and organizational workflows. Happy coding!\n\n# **Authentication**\n\nThe **FoundationAPI** uses **API keys** for authentication to ensure secure access to its services. This section explains how to obtain your API key, where to include it in your API requests, and how to handle common authentication errors.\n\n### Obtaining an API Key\n\n1. **Create an Account or Log In:** If you haven’t already, sign up or log in to your account on the **FoundationAPI** platform.\n    \n2. **Generate Your API Key:** Once logged in, navigate to the **API Keys** section under your account settings. Click on \"Generate API Key\". Label your key with a recognizable name that reflects its usage context.\n    \n3. **Secure Your Key:** Store your API key securely and never share it in publicly accessible areas such as GitHub, client-side code, etc.\n    \n\n### Using Your API Key\n\nTo access the **FoundationAPI** endpoints, you must include your API key in each request. This is done using the `X-Api-Key` header as follows:\n\n```\nX-Api-Key: <your_api_key_here>\n\n ```\n\nEnsure this header is included in every API call to authenticate your requests successfully.\n\n### Handling Authentication Errors\n\nIf your request fails authentication, the API will return an error. Common authentication error statuses include:\n\n- **401 Unauthorized:** The API key was not provided, is invalid, or has been revoked. Verify that your API key is correct and included in the header of your request.\n    \n- **403 Forbidden:** The API key doesn't have permissions to perform the requested operation. Ensure that your API key permissions align with the API endpoints you are attempting to access.\n    \n\n### Best Practices\n\n- **Regenerate Keys Periodically:** For security purposes, regenerate your API keys periodically and update your applications accordingly.\n    \n- **Limit Permissions:** If possible, limit the permissions associated with each key according to the use case, minimizing potential security risks.\n    \n\nBy following these guidelines, you can ensure that your interactions with the **StreamlineAPI** are secure and efficient. Remember to handle your API keys as sensitive information and manage them appropriately to avoid unauthorized access to your services.\n\n# **Rate and Usage Limits**\n\nThe **FoundationAPI** enforces rate limits and usage constraints to ensure fair usage and optimal performance for all users. This section details the limits on API requests and the policies around these limits.\n\n### Rate Limits\n\n- **Requests Per Minute:** Each API key can make up to 300 requests per minute. This limit is designed to prevent abuse and ensure service availability for all users.\n    \n- **Excess Requests:** If you exceed this rate limit, the API will return an HTTP 429 Too Many Requests status code. Subsequent requests will be rejected until the rate drops below the threshold.\n    \n\n### Usage Limits\n\n- **Monthly Quota:** Depending on your subscription plan, you may also have a monthly quota on the total number of requests or data transfer volume.\n    \n- **Plan-Based Limits:** Specific limits are detailed in your account’s plan settings. To view or change your plan, visit the subscription management page on our platform.\n    \n\n### Handling Limit Exceedance\n\nIf you exceed the stipulated rate or usage limits:\n\n- **Error Response:** An HTTP 429 status code will be sent, accompanied by a message explaining that the rate limit has been exceeded.\n    \n- **Retry-After Header:** This header may be included in the 429 response, indicating how long to wait before making a new request.\n    \n\n### Best Practices for Managing API Consumption\n\n- **Caching:** Implement caching strategies to minimize redundant API calls.\n    \n- **Throttling:** Employ client-side request throttling to spread your requests evenly and stay within rate limits.\n    \n- **Monitoring:** Regularly monitor your API usage through the dashboard provided in your account to ensure you remain within established limits.\n    \n\n### Upgrading Your Plan\n\nIf you consistently hit your rate or usage limits, consider upgrading your plan to accommodate higher limits. Details on different plans and how to upgrade are available on our website.\n\nBy understanding and adhering to these rate and usage limits, you can optimize your use of the **Foundation**API and avoid service interruptions. We are committed to providing robust and reliable service to all our users, and we appreciate your cooperation in following these terms.\n\nEach API response returns the following set of headers to help you identify your use status:\n\n| Header | Description |\n| --- | --- |\n| `X-RateLimit-Limit` | The maximum number of requests that the consumer is permitted to make per minute. |\n| `X-RateLimit-Remaining` | The number of requests remaining in the current rate limit window. |\n| `X-RateLimit-Reset` | The time at which the current rate limit window resets in UTC epoch seconds. |\n\n### 503 response\n\nAn HTTP `503` response from our servers indicates there is an unexpected spike in API access traffic. The server is usually operational within the next five minutes. If the outage persists or you receive any other form of an HTTP `5XX` error, [contact support](https://support.foundationx.ai).\n\n# API Error Handling Documentation\n\n## Overview\n\nThis documentation explains the error handling mechanism of our API, including the structure of error responses and the types of errors that clients might encounter. It is essential for clients to understand these errors to handle them effectively in their applications.\n\n## Error Handling Mechanism\n\nWhen an error occurs during the processing of a request, the API responds with a structured error object. The error handling logic ensures that clients receive a consistent and informative error response.\n\n### Error Object Structure\n\nThe error object returned by the API has the following structure:\n\n``` json\n{\n    \"status\": <HTTP status code>,\n    \"type\": \"https://www.rfc-editor.org/rfc/rfc9110.html/<error type>\",\n    \"title\": \"<error title>\",\n    \"detail\": \"<error detail>\",\n    \"instance\": \"<error instance>\"\n}\n\n ```\n\n### Response Headers\n\nThe error response will include the following header:\n\n```\nContent-Type: application/problem+json\n\n ```\n\n## Error Response Components\n\n- **status**: The HTTP status code of the error (e.g., 400, 401, 404, 500).\n    \n- **type**: A URL pointing to the error documentation.\n    \n- **title**: A short, human-readable summary of the error.\n    \n- **detail**: A detailed description of the error.\n    \n- **instance**: A URI reference that identifies the specific occurrence of the problem.\n    \n\n## Common Error Types\n\n### 400 Bad Request\n\n``` json\n{\n    \"status\": 400,\n    \"type\": \"https://www.rfc-editor.org/rfc/rfc9110.html/bad-request\",\n    \"title\": \"Bad Request\",\n    \"detail\": \"The request could not be understood or was missing required parameters.\",\n    \"instance\": \"<request URI>\"\n}\n\n ```\n\n### 401 Unauthorized\n\n``` json\n{\n    \"status\": 401,\n    \"type\": \"https://www.rfc-editor.org/rfc/rfc9110.html/unauthorized\",\n    \"title\": \"Unauthorized\",\n    \"detail\": \"Authentication failed or user does not have permissions for the requested operation.\",\n    \"instance\": \"<request URI>\"\n}\n\n ```\n\n### 403 Forbidden\n\n``` json\n{\n    \"status\": 403,\n    \"type\": \"https://www.rfc-editor.org/rfc/rfc9110.html/forbidden\",\n    \"title\": \"Forbidden\",\n    \"detail\": \"Access to the requested resource is forbidden.\",\n    \"instance\": \"<request URI>\"\n}\n\n ```\n\n### 404 Not Found\n\n``` json\n{\n    \"status\": 404,\n    \"type\": \"https://www.rfc-editor.org/rfc/rfc9110.html/not-found\",\n    \"title\": \"Not Found\",\n    \"detail\": \"The requested resource was not found.\",\n    \"instance\": \"<request URI>\"\n}\n\n ```\n\n### 500 Internal Server Error\n\n``` json\n{\n    \"status\": 500,\n    \"type\": \"https://www.rfc-editor.org/rfc/rfc9110.html/internal-server-error\",\n    \"title\": \"Internal Server Error\",\n    \"detail\": \"An unexpected error occurred on the server.\",\n    \"instance\": \"<request URI>\"\n}\n\n ```\n\n## Error Handling Class: HttpErrorBase\n\nThe `HttpErrorBase` class is used to define and handle HTTP errors. It ensures that error responses are standardized.\n\n### Properties:\n\n- **status**: HTTP status code.\n    \n- **type**: Type of the error.\n    \n- **title**: Short, human-readable summary of the error.\n    \n- **detail**: Detailed description of the error.\n    \n- **instance**: URI reference identifying the specific occurrence of the problem.\n    \n\n## Conclusion\n\nThis documentation outlines how our API handles errors, the structure of error responses, and common error types. Understanding this information will help clients handle errors more effectively and ensure a smoother integration with our API.","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":false,"owner":"7322987","team":1150294,"collectionId":"4f86d1d7-e2e7-4669-a21e-db9065f56fa8","publishedId":"2sA3JT2xvB","public":true,"publicUrl":"https://documenter-api.postman.tech/view/7322987/2sA3JT2xvB","privateUrl":"https://go.postman.co/documentation/7322987-4f86d1d7-e2e7-4669-a21e-db9065f56fa8","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"},"documentationLayout":"classic-double-column","customisation":{"metaTags":[{"name":"description","value":""},{"name":"title","value":""}],"appearance":{"default":"dark","themes":[{"name":"dark","logo":null,"colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"FF6C37"}},{"name":"light","logo":null,"colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"FF6C37"}}]}},"version":"8.12.6","publishDate":"2024-05-17T11:01:56.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"","description":""},"logos":{"logoLight":null,"logoDark":null}},"statusCode":200},"environments":[],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/221a51df052dd163553297b0cb710096711b3339c84331761232aaacca604f6e","favicon":""},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"}],"canonicalUrl":"https://documenter.gw.postman.com/view/metadata/2sA3JT2xvB"}