{"openapi":"3.1.0","info":{"title":"Airtop API","version":"1.0.0"},"paths":{"/v1/sessions":{"get":{"operationId":"list","summary":"Get a list of sessions","description":"Get a paginated list of sessions filtered by ID or status","tags":["sessions"],"parameters":[{"name":"sessionIds","in":"query","description":"A comma-separated list of IDs of the sessions to retrieve.","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","description":"Status of the session to get.","required":false,"schema":{"$ref":"#/components/schemas/type_sessions:SessionsListRequestStatus"}},{"name":"offset","in":"query","description":"Offset for pagination.","required":false,"schema":{"type":"integer","format":"int64","default":-1}},{"name":"limit","in":"query","description":"Limit for pagination.","required":false,"schema":{"type":"integer","format":"int64","default":10}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:SessionsResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ErrorModel"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ErrorModel"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ErrorModel"}}}}}},"post":{"operationId":"create","summary":"Create a session","tags":["sessions"],"parameters":[{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:SessionResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"configuration":{"$ref":"#/components/schemas/type_:SessionConfigV1","description":"Session configuration"}}}}}}}},"/v1/sessions/{id}":{"get":{"operationId":"get-info","summary":"Get info for a session","description":"Get a session by ID","tags":["sessions"],"parameters":[{"name":"id","in":"path","description":"Id of the session to get","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:SessionResponse"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ErrorModel"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ErrorModel"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ErrorModel"}}}}}},"delete":{"operationId":"terminate","summary":"Ends a session","description":"Ends a session by ID. If a given session id does not exist within the organization, it is ignored.","tags":["sessions"],"parameters":[{"name":"id","in":"path","description":"ID of the session to delete.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response"}}}},"/v1/sessions/{sessionId}/save-profile-on-termination/{profileName}":{"put":{"operationId":"save-profile-on-termination","summary":"Save profile on termination","tags":["sessions"],"parameters":[{"name":"sessionId","in":"path","description":"ID of the session.","required":true,"schema":{"type":"string"}},{"name":"profileName","in":"path","description":"Name under which to save the profile.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response"}}}},"/v1/async/sessions/{sessionId}/windows/{windowId}/create-automation":{"post":{"operationId":"async-create-automation","summary":"Create an automation (async)","description":"Create an automation of a browser window asynchronously","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"The session id for the window.","required":true,"schema":{"type":"string"}},{"name":"windowId","in":"path","description":"The Airtop window id of the browser window.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:AsyncSessionAiResponseEnvelope"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"async":{"$ref":"#/components/schemas/type_:AsyncConfig","description":"Async configuration options."},"clientRequestId":{"type":"string"},"configuration":{"$ref":"#/components/schemas/type_:CreateAutomationRequestBodyConfiguration","description":"Request configuration"},"costThresholdCredits":{"type":"integer","format":"int64","description":"A credit threshold that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended)."},"timeThresholdSeconds":{"type":"integer","format":"int64","description":"A time threshold in seconds that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended).\n\nThis setting does not extend the maximum session duration provided at the time of session creation."}}}}}}}},"/v1/async/sessions/{sessionId}/windows/{windowId}/create-form-filler":{"post":{"operationId":"async-create-form-filler","summary":"Create a form filler automation (async)","description":"Create a form filler automation asynchronously","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"The session id for the window.","required":true,"schema":{"type":"string"}},{"name":"windowId","in":"path","description":"The Airtop window id of the browser window.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:AsyncSessionAiResponseEnvelope"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"async":{"$ref":"#/components/schemas/type_:AsyncConfig","description":"Async configuration options."},"clientRequestId":{"type":"string"},"configuration":{"$ref":"#/components/schemas/type_:CreateAutomationRequestBodyConfiguration","description":"Request configuration"},"costThresholdCredits":{"type":"integer","format":"int64","description":"A credit threshold that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended)."},"timeThresholdSeconds":{"type":"integer","format":"int64","description":"A time threshold in seconds that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended).\n\nThis setting does not extend the maximum session duration provided at the time of session creation."}}}}}}}},"/v1/async/sessions/{sessionId}/windows/{windowId}/execute-automation":{"post":{"operationId":"async-execute-automation","summary":"Execute an automation (async)","description":"Execute an automation of a browser window asynchronously","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"The session id for the window.","required":true,"schema":{"type":"string"}},{"name":"windowId","in":"path","description":"The Airtop window id of the browser window.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:AsyncSessionAiResponseEnvelope"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"async":{"$ref":"#/components/schemas/type_:AsyncConfig","description":"Async configuration options."},"automationId":{"type":"string","description":"The ID of the automation to execute"},"clientRequestId":{"type":"string"},"costThresholdCredits":{"type":"integer","format":"int64","description":"A credit threshold that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended)."},"parameters":{"type":"object","additionalProperties":{"description":"Any type"},"description":"Optional parameters to pass to the automation execution"},"timeThresholdSeconds":{"type":"integer","format":"int64","description":"A time threshold in seconds that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended).\n\nThis setting does not extend the maximum session duration provided at the time of session creation."}},"required":["automationId"]}}}}}},"/v1/async/sessions/{sessionId}/windows/{windowId}/fill-form":{"post":{"operationId":"async-fill-form","summary":"Fill a form using a form-filler automation (async)","description":"Fill a form of a browser window asynchronously using a form-filler automation","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"The session id for the window.","required":true,"schema":{"type":"string"}},{"name":"windowId","in":"path","description":"The Airtop window id of the browser window.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:AsyncSessionAiResponseEnvelope"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"async":{"$ref":"#/components/schemas/type_:AsyncConfig","description":"Async configuration options."},"automationId":{"type":"string","description":"The ID of the automation to execute"},"clientRequestId":{"type":"string"},"costThresholdCredits":{"type":"integer","format":"int64","description":"A credit threshold that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended)."},"parameters":{"type":"object","additionalProperties":{"description":"Any type"},"description":"Optional parameters to pass to the automation execution"},"timeThresholdSeconds":{"type":"integer","format":"int64","description":"A time threshold in seconds that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended).\n\nThis setting does not extend the maximum session duration provided at the time of session creation."}},"required":["automationId"]}}}}}},"/v1/sessions/{sessionId}/windows":{"get":{"operationId":"list","summary":"List windows","description":"Lists all browser windows in a session.","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"ID of the session to list windows for.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:WindowsResponse"}}}}}},"post":{"operationId":"create","summary":"Create window","description":"Creates a new browser window in a session. Optionally, you can specify a url to load on the window upon creation.","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"ID of the session that owns the window.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:WindowIdResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"screenResolution":{"type":"string","default":"1280x720","description":"Affects the live view configuration. By default, a live view will fill the parent frame (or local window if loaded directly) when initially loaded, causing the browser window to be resized to match. This parameter can be used to instead configure the returned liveViewUrl so that the live view is loaded with fixed dimensions (e.g. 1280x720), resizing the browser window to match, and then disallows any further resizing from the live view."},"url":{"type":"string","format":"uri","default":"https://www.google.com","description":"Initial url to navigate to"},"waitUntil":{"$ref":"#/components/schemas/type_windows:CreateWindowInputV1BodyWaitUntil","description":"Wait until the specified loading event occurs. Defaults to 'load', which waits until the page dom and it's assets have loaded. 'domContentLoaded' will wait until the dom has loaded, 'complete' will wait until the page and all it's iframes have loaded it's dom and assets. 'noWait' will not wait for any loading event and will return immediately."},"waitUntilTimeoutSeconds":{"type":"integer","format":"int64","default":30,"description":"Maximum time in seconds to wait for the specified loading event to occur. If the timeout is reached, the operation will still succeed but return a warning indicating the page may still be loading resources."}}}}}}}},"/v1/sessions/{sessionId}/windows/{windowId}":{"get":{"operationId":"get-window-info","summary":"Get window info","description":"Get information about a browser window in a session, including the live view url.","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"ID of the session that owns the window.","required":true,"schema":{"type":"string"}},{"name":"windowId","in":"path","description":"ID of the browser window, which can either be a normal AirTop windowId or a [CDP TargetId](https://chromedevtools.github.io/devtools-protocol/tot/Target/#type-TargetID) from a browser automation library like Puppeteer (typically associated with the page or main frame). Our SDKs will handle retrieving a TargetId for you from various popular browser automation libraries, but we also have details in our guides on how to do it manually.","required":true,"schema":{"type":"string"}},{"name":"includeNavigationBar","in":"query","description":"Affects the live view configuration. A navigation bar is not shown in the live view of a browser by default. Set this to true to configure the returned liveViewUrl so that a navigation bar is rendered, allowing users to easily navigate the browser to other pages from the live view.","required":false,"schema":{"type":"boolean"}},{"name":"disableResize","in":"query","description":"Affects the live view configuration. Set to true to configure the returned liveViewUrl so that the ability to resize the browser window from the live view is disabled (resizing is allowed by default). Note that, at initial load, the live view will automatically fill the parent frame (or local window if loaded directly) and cause the browser window to be resized to match. This parameter does not affect that initial load behavior. See screenResolution for a way to set a fixed size for the live view.","required":false,"schema":{"type":"boolean"}},{"name":"screenResolution","in":"query","description":"Affects the live view configuration. By default, a live view will fill the parent frame (or local window if loaded directly) when initially loaded, causing the browser window to be resized to match. This parameter can be used to instead configure the returned liveViewUrl so that the live view is loaded with fixed dimensions (e.g. 1280x720), resizing the browser window to match, and then disallows any further resizing from the live view.","required":false,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:WindowResponse"}}}}}},"post":{"operationId":"load-url","summary":"Load url","description":"Loads a specified url on a given window","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"ID of the session that owns the window.","required":true,"schema":{"type":"string"}},{"name":"windowId","in":"path","description":"Airtop window ID of the browser window.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:OperationOutcomeResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","format":"uri","description":"Url to navigate to"},"waitUntil":{"$ref":"#/components/schemas/type_windows:WindowLoadUrlV1BodyWaitUntil","description":"Wait until the specified loading event occurs. Defaults to 'load', which waits until the page dom and it's assets have loaded. 'domContentLoaded' will wait until the dom has loaded, 'complete' will wait until the page and all it's iframes have loaded it's dom and assets. 'noWait' will not wait for any loading event and will return immediately."},"waitUntilTimeoutSeconds":{"type":"integer","format":"int64","default":30,"description":"Maximum time in seconds to wait for the specified loading event to occur. If the timeout is reached, the operation will still succeed but return a warning indicating the page may still be loading resources."}},"required":["url"]}}}}},"delete":{"operationId":"close","summary":"Close window","description":"Closes a browser window in a session","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"ID of the session that owns the window.","required":true,"schema":{"type":"string"}},{"name":"windowId","in":"path","description":"Airtop window ID of the browser window.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:WindowIdResponse"}}}}}}},"/v1/sessions/{sessionId}/windows/{windowId}/click":{"post":{"operationId":"click","summary":"Click","description":"Execute a click interaction in a specific browser window","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"The session id for the window.","required":true,"schema":{"type":"string"}},{"name":"windowId","in":"path","description":"The Airtop window id of the browser window.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:AiPromptResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"clientRequestId":{"type":"string"},"configuration":{"$ref":"#/components/schemas/type_:ClickConfig","description":"Request configuration"},"costThresholdCredits":{"type":"integer","format":"int64","description":"A credit threshold that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended)."},"elementDescription":{"type":"string","description":"A natural language description of the element to click."},"timeThresholdSeconds":{"type":"integer","format":"int64","description":"A time threshold in seconds that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended).\n\nThis setting does not extend the maximum session duration provided at the time of session creation."},"waitForNavigation":{"type":"boolean","default":false,"description":"If true, Airtop AI will wait for the navigation to complete after clicking the element."}},"required":["elementDescription"]}}}}}},"/v1/sessions/{sessionId}/windows/{windowId}/create-form-filler":{"post":{"operationId":"create-form-filler","summary":"Create a form-filler automation synchronously","description":"Create a form-filler automation synchronously for the form loaded in the browser window","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"The session id for the window.","required":true,"schema":{"type":"string"}},{"name":"windowId","in":"path","description":"The Airtop window id of the browser window.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:AiPromptResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"async":{"$ref":"#/components/schemas/type_:AsyncConfig","description":"Async configuration options."},"clientRequestId":{"type":"string"},"configuration":{"$ref":"#/components/schemas/type_:CreateAutomationRequestBodyConfiguration","description":"Request configuration"},"costThresholdCredits":{"type":"integer","format":"int64","description":"A credit threshold that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended)."},"timeThresholdSeconds":{"type":"integer","format":"int64","description":"A time threshold in seconds that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended).\n\nThis setting does not extend the maximum session duration provided at the time of session creation."}}}}}}}},"/v1/sessions/{sessionId}/windows/{windowId}/file-input":{"post":{"operationId":"file-input","summary":"File Input","description":"Execute a file input interaction in a specific browser window.\n\t\tincludeHiddenElements defaults to true and considers hidden file input elements.\n\t\tIf there is only one file input element, it will be used directly.\n\t\tIf there are multiple file input elements, the elementDescription will be used by AI to\n\t\tselect among them.\n\t\tIf no file input elements are found by inspecting the page structure, elementDescription\n\t\twill be used by AI to try to find a match visually.","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"The session id for the window.","required":true,"schema":{"type":"string"}},{"name":"windowId","in":"path","description":"The Airtop window id of the browser window.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:AiPromptResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"clientRequestId":{"type":"string"},"configuration":{"$ref":"#/components/schemas/type_:MicroInteractionConfigWithExperimental","description":"Request configuration"},"costThresholdCredits":{"type":"integer","format":"int64","description":"A credit threshold that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended)."},"elementDescription":{"type":"string","description":"A natural language description of the file input to interact with (e.g. 'the file input', 'file upload selection box'). The interaction will be aborted if the target element cannot be found."},"fileId":{"type":"string","format":"uuid","description":"The id of the file to upload. 'fileId' or 'fileName' is required."},"fileName":{"type":"string","description":"The name of the file to upload, not including the path. 'fileId' or 'fileName' is required."},"includeHiddenElements":{"type":"boolean","default":true,"description":"If true, Airtop AI will find hidden file input elements and interact with them."},"timeThresholdSeconds":{"type":"integer","format":"int64","description":"A time threshold in seconds that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended).\n\nThis setting does not extend the maximum session duration provided at the time of session creation."},"waitForNavigation":{"type":"boolean","default":false,"description":"If true, Airtop AI will wait for the navigation to complete after clicking the element."}}}}}}}},"/v1/sessions/{sessionId}/windows/{windowId}/fill-form":{"post":{"operationId":"fill-form","summary":"Fill a form synchronously using a form-filler automation","description":"Fill a form of a browser window synchronously using a form-filler automation","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"The session id for the window.","required":true,"schema":{"type":"string"}},{"name":"windowId","in":"path","description":"The Airtop window id of the browser window.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:AiPromptResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"async":{"$ref":"#/components/schemas/type_:AsyncConfig","description":"Async configuration options."},"automationId":{"type":"string","description":"The ID of the automation to execute"},"clientRequestId":{"type":"string"},"costThresholdCredits":{"type":"integer","format":"int64","description":"A credit threshold that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended)."},"parameters":{"type":"object","additionalProperties":{"description":"Any type"},"description":"Optional parameters to pass to the automation execution"},"timeThresholdSeconds":{"type":"integer","format":"int64","description":"A time threshold in seconds that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended).\n\nThis setting does not extend the maximum session duration provided at the time of session creation."}},"required":["automationId"]}}}}}},"/v1/sessions/{sessionId}/windows/{windowId}/hover":{"post":{"operationId":"hover","summary":"Hover","description":"Execute a hover interaction in a specific browser window","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"The session id for the window.","required":true,"schema":{"type":"string"}},{"name":"windowId","in":"path","description":"The Airtop window id of the browser window.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:AiPromptResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"clientRequestId":{"type":"string"},"configuration":{"$ref":"#/components/schemas/type_:MicroInteractionConfigWithExperimental","description":"Request configuration"},"costThresholdCredits":{"type":"integer","format":"int64","description":"A credit threshold that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended)."},"elementDescription":{"type":"string","description":"A natural language description of where to hover (e.g. 'the search box', 'username field'). The interaction will be aborted if the target element cannot be found."},"timeThresholdSeconds":{"type":"integer","format":"int64","description":"A time threshold in seconds that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended).\n\nThis setting does not extend the maximum session duration provided at the time of session creation."}},"required":["elementDescription"]}}}}}},"/v1/sessions/{sessionId}/windows/{windowId}/monitor":{"post":{"operationId":"monitor","summary":"Monitor for a condition","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"The session id for the window.","required":true,"schema":{"type":"string"}},{"name":"windowId","in":"path","description":"The Airtop window id of the browser window.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:AiPromptResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"clientRequestId":{"type":"string"},"condition":{"type":"string","description":"A natural language description of the condition to monitor for in the browser window."},"configuration":{"$ref":"#/components/schemas/type_:MonitorConfig","description":"Monitor configuration. If not specified, defaults to an interval monitor with a 5 second interval."},"costThresholdCredits":{"type":"integer","format":"int64","description":"A credit threshold that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended)."},"timeThresholdSeconds":{"type":"integer","format":"int64","description":"A time threshold in seconds that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended).\n\nThis setting does not extend the maximum session duration provided at the time of session creation."}},"required":["condition"]}}}}}},"/v1/sessions/{sessionId}/windows/{windowId}/page-query":{"post":{"operationId":"page-query","summary":"Query a page","description":"Submit a prompt that queries the content of a specific browser window. You may extract content from the page, or ask a question about the page and allow the AI to answer it (ex. Is the user logged in?).","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"The session id for the window.","required":true,"schema":{"type":"string"}},{"name":"windowId","in":"path","description":"The Airtop window id of the browser window.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:AiPromptResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:SessionPageQueryHandlerRequestBody"}}}}}},"/v1/sessions/{sessionId}/windows/{windowId}/paginated-extraction":{"post":{"operationId":"paginated-extraction","summary":"Query a page with pagination","description":"Submit a prompt that queries the content of a specific browser window and paginates through pages to return a list of results.","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"The session id for the window.","required":true,"schema":{"type":"string"}},{"name":"windowId","in":"path","description":"The Airtop window id of the browser window.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:AiPromptResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"clientRequestId":{"type":"string"},"configuration":{"$ref":"#/components/schemas/type_:PaginatedExtractionConfig","description":"Request configuration"},"costThresholdCredits":{"type":"integer","format":"int64","description":"A credit threshold that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended)."},"prompt":{"type":"string","description":"A prompt providing the Airtop AI model with additional direction or constraints about the page and the details you want to extract from the page."},"timeThresholdSeconds":{"type":"integer","format":"int64","description":"A time threshold in seconds that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended).\n\nThis setting does not extend the maximum session duration provided at the time of session creation."}},"required":["prompt"]}}}}}},"/v1/sessions/{sessionId}/windows/{windowId}/prompt-content":{"post":{"operationId":"prompt-content","summary":"Prompt content.","description":"This endpoint is deprecated. Please use the `pageQuery` endpoint instead.","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"The session id for the window.","required":true,"schema":{"type":"string"}},{"name":"windowId","in":"path","description":"The Airtop window id of the browser window.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:AiPromptResponse"}}}}},"deprecated":true,"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:SessionPageQueryHandlerRequestBody"}}}}}},"/v1/sessions/{sessionId}/windows/{windowId}/scrape-content":{"post":{"operationId":"scrape-content","summary":"Scrape","description":"Scrape a window and return the content as markdown","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"The session id for the window.","required":true,"schema":{"type":"string"}},{"name":"windowId","in":"path","description":"The Airtop window id of the browser window to scrape.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ScrapeResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"clientRequestId":{"type":"string"},"costThresholdCredits":{"type":"integer","format":"int64","description":"A credit threshold that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended)."},"timeThresholdSeconds":{"type":"integer","format":"int64","description":"A time threshold in seconds that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended).\n\nThis setting does not extend the maximum session duration provided at the time of session creation."}}}}}}}},"/v1/sessions/{sessionId}/windows/{windowId}/screenshot":{"post":{"operationId":"screenshot","summary":"Take a screenshot","description":"Take a screenshot of a browser window","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"The session id for the window.","required":true,"schema":{"type":"string"}},{"name":"windowId","in":"path","description":"The Airtop window id of the browser window.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:AiPromptResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"clientRequestId":{"type":"string"},"configuration":{"$ref":"#/components/schemas/type_:ScreenshotRequestConfig","description":"Request configuration"},"costThresholdCredits":{"type":"integer","format":"int64","description":"A credit threshold that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended)."},"timeThresholdSeconds":{"type":"integer","format":"int64","description":"A time threshold in seconds that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended).\n\nThis setting does not extend the maximum session duration provided at the time of session creation."}}}}}}}},"/v1/sessions/{sessionId}/windows/{windowId}/scroll":{"post":{"operationId":"scroll","summary":"Scroll","description":"Execute a scroll interaction in a specific browser window","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"The session id for the window.","required":true,"schema":{"type":"string"}},{"name":"windowId","in":"path","description":"The Airtop window id of the browser window.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:AiPromptResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"clientRequestId":{"type":"string"},"configuration":{"$ref":"#/components/schemas/type_:MicroInteractionConfig","description":"Request configuration"},"costThresholdCredits":{"type":"integer","format":"int64","description":"A credit threshold that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended)."},"scrollBy":{"$ref":"#/components/schemas/type_:ScrollByConfig","description":"The amount of pixels/percentage to scroll horizontally or vertically relative to the current scroll position. Positive values scroll right and down, negative values scroll left and up. If a scrollToElement value is provided, scrollBy/scrollToEdge values will be ignored."},"scrollToEdge":{"$ref":"#/components/schemas/type_:ScrollToEdgeConfig","description":"Scroll to the top or bottom of the page, or to the left or right of the page. ScrollToEdge values will take precedence over the scrollBy values, and scrollToEdge will be executed first. If a scrollToElement value is provided, scrollToEdge/scrollBy values will be ignored."},"scrollToElement":{"type":"string","description":"A natural language description of where to scroll (e.g. 'the search box', 'username field'). The interaction will be aborted if the target element cannot be found. If provided, scrollToEdge/scrollBy values will be ignored."},"scrollWithin":{"type":"string","description":"A natural language description of the scrollable area on the web page. This identifies the container or region that should be scrolled. If missing, the entire page will be scrolled. You can also describe a visible reference point inside the container. Note: This is different from scrollToElement, which specifies the target element to scroll to. The target may be located inside the scrollable area defined by scrollWithin."},"timeThresholdSeconds":{"type":"integer","format":"int64","description":"A time threshold in seconds that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended).\n\nThis setting does not extend the maximum session duration provided at the time of session creation."}}}}}}}},"/v1/sessions/{sessionId}/windows/{windowId}/summarize-content":{"post":{"operationId":"summarize-content","summary":"Summarize","description":"This endpoint is deprecated. Please use the `pageQuery` endpoint and ask for a summary in the prompt instead.","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"The session id for the window.","required":true,"schema":{"type":"string"}},{"name":"windowId","in":"path","description":"The Airtop window id of the browser window to summarize.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:AiPromptResponse"}}}}},"deprecated":true,"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"clientRequestId":{"type":"string"},"configuration":{"$ref":"#/components/schemas/type_:SummaryConfig","description":"Request configuration"},"costThresholdCredits":{"type":"integer","format":"int64","description":"A credit threshold that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended)."},"prompt":{"type":"string","description":"An optional prompt providing the Airtop AI model with additional direction or constraints about the summary (such as desired length)."},"timeThresholdSeconds":{"type":"integer","format":"int64","description":"A time threshold in seconds that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended).\n\nThis setting does not extend the maximum session duration provided at the time of session creation."}}}}}}}},"/v1/sessions/{sessionId}/windows/{windowId}/type":{"post":{"operationId":"type","summary":"Type","description":"Execute a type interaction in a specific browser window","tags":["windows"],"parameters":[{"name":"sessionId","in":"path","description":"The session id for the window.","required":true,"schema":{"type":"string"}},{"name":"windowId","in":"path","description":"The Airtop window id of the browser window.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:AiPromptResponse"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"clearInputField":{"type":"boolean","description":"If true, and an HTML input field is active, clears the input field before typing the text."},"clientRequestId":{"type":"string"},"configuration":{"$ref":"#/components/schemas/type_:MicroInteractionConfigWithExperimental","description":"Request configuration"},"costThresholdCredits":{"type":"integer","format":"int64","description":"A credit threshold that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended)."},"elementDescription":{"type":"string","description":"A natural language description of where to type (e.g. 'the search box', 'username field'). The interaction will be aborted if the target element cannot be found."},"pressEnterKey":{"type":"boolean","description":"If true, simulates pressing the Enter key after typing the text."},"pressTabKey":{"type":"boolean","description":"If true, simulates pressing the Tab key after typing the text. Note that the tab key will be pressed after the Enter key if both options are configured."},"text":{"type":"string","description":"The text to type into the browser window."},"timeThresholdSeconds":{"type":"integer","format":"int64","description":"A time threshold in seconds that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended).\n\nThis setting does not extend the maximum session duration provided at the time of session creation."},"waitForNavigation":{"type":"boolean","default":false,"description":"If true, Airtop AI will wait for the navigation to complete after clicking the element."}},"required":["text"]}}}}}},"/v1/profiles":{"delete":{"operationId":"delete","summary":"Delete profiles","description":"Delete profiles matching by id","tags":["profiles"],"parameters":[{"name":"profileIds","in":"query","description":"DEPRECATED. Use profileNames.","required":false,"schema":{"type":"string"}},{"name":"profileNames","in":"query","description":"A comma-separated list of profile names.","required":false,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response"}}}},"/v1/automations":{"get":{"operationId":"list","summary":"List Automations","description":"List all automations for a given organization","tags":["automations"],"parameters":[{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ListAutomationsOutput"}}}}}}},"/v1/automations/description":{"put":{"operationId":"update","summary":"Update Automation Description","description":"Update the description of a specific automation","tags":["automations"],"parameters":[{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:AutomationOutput"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ErrorModel"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ErrorModel"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ErrorModel"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ErrorModel"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ErrorModel"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","description":"New description for the automation"},"id":{"type":"string","description":"ID of the automation to update"},"orgId":{"type":"string","description":"Organization ID"}},"required":["description","id","orgId"]}}}}}},"/v1/automations/{automationId}":{"get":{"operationId":"get","summary":"Get Automation","description":"Get a specific automation by ID","tags":["automations"],"parameters":[{"name":"automationId","in":"path","description":"ID of the automation to retrieve","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:AutomationOutput"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ErrorModel"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ErrorModel"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ErrorModel"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ErrorModel"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ErrorModel"}}}}}},"delete":{"operationId":"delete","summary":"Delete Automation","description":"Delete a specific automation","tags":["automations"],"parameters":[{"name":"automationId","in":"path","description":"ID of the automation to delete","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:DeleteAutomationOutputWrapperBody"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ErrorModel"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ErrorModel"}}}},"404":{"description":"Not Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ErrorModel"}}}},"422":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ErrorModel"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:ErrorModel"}}}}}}},"/v1/files":{"get":{"operationId":"list","summary":"Get a list of files","description":"Get a list of files filtered by session ID","tags":["files"],"parameters":[{"name":"sessionIds","in":"query","description":"A comma-separated list of IDs of the sessionId of the files to retrieve.","required":false,"schema":{"type":"string"}},{"name":"offset","in":"query","description":"Offset for pagination.","required":false,"schema":{"type":"integer","format":"int64","default":-1}},{"name":"limit","in":"query","description":"Limit for pagination.","required":false,"schema":{"type":"integer","format":"int64","default":10}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:FilesResponse"}}}}}},"post":{"operationId":"create","summary":"Create a file","tags":["files"],"parameters":[{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:EnvelopeCreateFileV1EnvelopeDefaultMeta"}}}}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"fileName":{"type":"string","description":"Name of the file, must be unique within the session the file is used with"},"fileType":{"$ref":"#/components/schemas/type_files:CreateFileRestInputV1FileType","description":"Type of the file"},"id":{"type":"string","format":"uuid","description":"File ID. Must be unique. Leave blank to get one generated for you"},"sessionIds":{"type":"array","items":{"type":"string"},"description":"IDs of the associated sessions"}},"required":["fileName"]}}}}}},"/v1/files/{id}":{"get":{"operationId":"get","summary":"Get a file","tags":["files"],"parameters":[{"name":"id","in":"path","description":"ID of the file","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:EnvelopeGetFileV1EnvelopeDefaultMeta"}}}}}},"delete":{"operationId":"delete","summary":"Delete a file","tags":["files"],"parameters":[{"name":"id","in":"path","description":"ID of the file","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response"}}}},"/v1/files/{id}/push":{"post":{"operationId":"push","summary":"Push a file to a session","description":"Push a file to one or more sessions, making it available for the sessions to use","tags":["files"],"parameters":[{"name":"id","in":"path","description":"ID of the file","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response"}},"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"sessionIds":{"type":"array","items":{"type":"string"},"description":"A comma-separated list of session IDs to make the file available on."}}}}}}}},"/v1/requests/{requestId}/status":{"get":{"operationId":"get-request-status","summary":"Get the status of an asynchronous request","tags":["requests"],"parameters":[{"name":"requestId","in":"path","description":"The ID of the request to check.","required":true,"schema":{"type":"string"}},{"name":"Authorization","in":"header","description":"Bearer authentication","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/type_:RequestStatusResponse"}}}}}}}},"servers":[{"url":"https://api.airtop.ai/api","description":"Default"}],"components":{"schemas":{"type_sessions:SessionsListRequestStatus":{"type":"string","enum":["awaitingCapacity","initializing","running","ended","completed","cancelled","all"],"description":"Status of the session to get.","title":"SessionsListRequestStatus"},"type_:Pagination":{"type":"object","properties":{"currentLimit":{"type":"integer","format":"int64","description":"The number of items to return"},"currentPage":{"type":"integer","format":"int64","description":"The current page number"},"finalCount":{"type":"integer","format":"int64","description":"The final count of items displayed on the current page"},"hasMore":{"type":"boolean","description":"Whether there are more items"},"initialCount":{"type":"integer","format":"int64","description":"The initial count of items displayed on the current page"},"nextOffset":{"type":"integer","format":"int64","description":"The number of items to skip"},"numberOfPages":{"type":"integer","format":"int64","description":"The total number of pages"},"totalItems":{"type":"integer","format":"int64","description":"The total number of items"}},"required":["currentLimit","currentPage","finalCount","hasMore","initialCount","nextOffset","numberOfPages","totalItems"],"title":"Pagination"},"type_:ExternalSessionConfig":{"type":"object","properties":{"baseProfileId":{"type":"string","description":"Id of a profile to load into the session."},"persistProfile":{"type":"boolean","description":"Persist the profile."},"timeoutMinutes":{"type":"integer","minimum":1,"maximum":1440,"default":10,"description":"Max length of session in minutes, after which it will terminate if not already deleted."}},"title":"ExternalSessionConfig"},"type_:ExternalSessionWithConnectionInfo":{"type":"object","properties":{"cdpUrl":{"type":"string","description":"Url to connect to chrome devtools protocol port on the Airtop browser. Include the header 'Authorization: Bearer <api-key>.'"},"cdpWsUrl":{"type":"string","description":"Websocket url to connect to the Airtop browser for CDP-based automation frameworks (e.g. Puppeteer or Playwright). Include the header 'Authorization: Bearer <airtop-api-key>.'"},"chromedriverUrl":{"type":"string","description":"Websocket url to connect to the Airtop browser for webdriver-based automation frameworks (e.g. Selenium). Include the header 'Authorization: Bearer <airtop-api-key>.'"},"configuration":{"$ref":"#/components/schemas/type_:ExternalSessionConfig","description":"Session configuration details. DEPRECATED"},"currentUsage":{"type":"integer","format":"int64","description":"Current usage in minutes."},"dateCreated":{"type":"string","format":"date-time","description":"Date the session was created."},"id":{"type":"string","format":"uuid","description":"Id of the session."},"lastActivity":{"type":"string","format":"date-time","description":"Date of the last activity."},"profileId":{"type":"string","description":"Id of a newly persisted profile. DEPRECATED: Use profileName.","deprecated":true},"status":{"type":"string","description":"Session status."},"viceUrl":{"type":"string","description":"-"}},"required":["configuration","id","status"],"title":"ExternalSessionWithConnectionInfo"},"type_:SessionsWithPagination":{"type":"object","properties":{"pagination":{"$ref":"#/components/schemas/type_:Pagination","description":"Pagination details."},"sessions":{"type":"array","items":{"$ref":"#/components/schemas/type_:ExternalSessionWithConnectionInfo"},"description":"List of sessions."}},"required":["pagination"],"title":"SessionsWithPagination"},"type_:Issue":{"type":"object","properties":{"code":{"type":"string","description":"Issue code."},"details":{"type":"object","additionalProperties":{"description":"Any type"},"description":"Any associated details."},"message":{"type":"string","description":"Message describing the issue."},"reason":{"type":"string","description":"Underlying reason for the issue."}},"required":["message"],"title":"Issue"},"type_:EnvelopeDefaultMeta":{"type":"object","properties":{"requestId":{"type":"string"}},"title":"EnvelopeDefaultMeta"},"type_:SessionsResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/type_:SessionsWithPagination"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}},"meta":{"$ref":"#/components/schemas/type_:EnvelopeDefaultMeta"},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}}},"required":["data","meta"],"title":"SessionsResponse"},"type_:ErrorDetail":{"type":"object","properties":{"location":{"type":"string","description":"Where the error occurred, e.g. 'body.items[3].tags' or 'path.thing-id'"},"message":{"type":"string","description":"Error message text"},"value":{"description":"Any type"}},"title":"ErrorDetail"},"type_:ErrorModel":{"type":"object","properties":{"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem."},"errors":{"type":"array","items":{"$ref":"#/components/schemas/type_:ErrorDetail"},"description":"Optional list of individual error details"},"instance":{"type":"string","format":"uri","description":"A URI reference that identifies the specific occurrence of the problem."},"status":{"type":"integer","format":"int64","description":"HTTP status code"},"title":{"type":"string","description":"A short, human-readable summary of the problem type. This value should not change between occurrences of the error."},"type":{"type":"string","format":"uri","default":"about:blank","description":"A URI reference to human-readable documentation for the error."}},"title":"ErrorModel"},"type_:AirtopProxyConfiguration":{"type":"object","properties":{"country":{"type":"string","default":"US","description":"Country to exit from, in [ISO 3166-1 alpha-2 format](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2). Or `global` to get IP addresses from random countries. We do not guarantee an available proxy in all countries."},"sticky":{"type":"boolean","default":true,"description":"Try to maintain the same IP address for the duration for up to a maximum of 30 minutes. `true` by default. <Note>Stickiness is on a best-effort basis; we cannot guarantee that the same IP address will be available for 30 minutes at a time.</Note>"}},"title":"AirtopProxyConfiguration"},"type_:ProxyCredentials":{"type":"object","properties":{"password":{"type":"string"},"url":{"type":"string"},"username":{"type":"string"}},"required":["url"],"description":"Proxy object with url of the proxy as a parameter. Takes optional username and password.","title":"ProxyCredentials"},"type_:Proxy":{"oneOf":[{"type":"string"},{"$ref":"#/components/schemas/type_:AirtopProxyConfiguration"},{"$ref":"#/components/schemas/type_:ProxyCredentials"}],"description":"Configuration for a single custom proxy.","title":"Proxy"},"type_:ProxyConfigurationKind":{"type":"object","properties":{"domainPattern":{"type":"string"},"relay":{"$ref":"#/components/schemas/type_:Proxy","description":"Configuration for a single custom proxy."}},"required":["domainPattern","relay"],"title":"ProxyConfigurationKind"},"type_:SessionConfigV1Proxy":{"oneOf":[{"type":"boolean"},{"$ref":"#/components/schemas/type_:Proxy"},{"type":"array","items":{"$ref":"#/components/schemas/type_:ProxyConfigurationKind"}}],"description":"Proxy configuration.","title":"SessionConfigV1Proxy"},"type_:SessionConfigV1":{"type":"object","properties":{"baseProfileId":{"type":"string","description":"Deprecated: Use profileName instead.","deprecated":true},"extensionIds":{"type":"array","items":{"type":"string"},"description":"Google Web Store extension IDs to be loaded into the session."},"persistProfile":{"type":"boolean","description":"Deprecated: use Save Profile On Termination API instead.","deprecated":true},"profileName":{"type":"string","description":"Name of a profile to load into the session."},"proxy":{"$ref":"#/components/schemas/type_:SessionConfigV1Proxy","description":"Proxy configuration."},"record":{"type":"boolean","description":"Enable session recording."},"solveCaptcha":{"type":"boolean","description":"Automatically solve captcha challenges."},"timeoutMinutes":{"type":"integer","minimum":1,"maximum":10080,"default":10,"description":"Number of minutes of inactivity (idle timeout) after which the session will terminate. The idle timeout is reset when a user makes an incoming HTTP request, AI request, or new WebSocket connection to the session. Thus, when using drivers like Puppeteer, Selenium or Playwright, the timeout reset depends on the nature of the driver request. If not specified, defaults to 10 minutes."}},"title":"SessionConfigV1"},"type_:SessionResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/type_:ExternalSessionWithConnectionInfo"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}},"meta":{"$ref":"#/components/schemas/type_:EnvelopeDefaultMeta"},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}}},"required":["data","meta"],"title":"SessionResponse"},"type_:AsyncConfig":{"type":"object","properties":{"webhookUrl":{"type":"string","description":"The URL to send the response to when the request is complete."}},"title":"AsyncConfig"},"type_:CreateAutomationRequestBodyConfiguration":{"type":"object","additionalProperties":{"description":"Any type"},"title":"CreateAutomationRequestBodyConfiguration"},"type_:AsyncSessionAiResponseEnvelope":{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}},"requestId":{"type":"string"},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}}},"required":["requestId"],"title":"AsyncSessionAiResponseEnvelope"},"type_:WindowId":{"type":"object","properties":{"targetId":{"type":"string","description":"CDP Window target ID"},"title":{"type":"string","description":"Current title of the browser window"},"url":{"type":"string","description":"Current URL of the browser window"},"windowId":{"type":"string","description":"Airtop window ID of the browser window"}},"required":["targetId","windowId"],"title":"WindowId"},"type_:WindowsWithMeta":{"type":"object","properties":{"windows":{"type":"array","items":{"$ref":"#/components/schemas/type_:WindowId"},"description":"List of windows in the session."}},"title":"WindowsWithMeta"},"type_:WindowsResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/type_:WindowsWithMeta"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}},"meta":{"$ref":"#/components/schemas/type_:EnvelopeDefaultMeta"},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}}},"required":["data","meta"],"title":"WindowsResponse"},"type_windows:CreateWindowInputV1BodyWaitUntil":{"type":"string","enum":["load","domContentLoaded","complete","noWait"],"default":"load","description":"Wait until the specified loading event occurs. Defaults to 'load', which waits until the page dom and it's assets have loaded. 'domContentLoaded' will wait until the dom has loaded, 'complete' will wait until the page and all it's iframes have loaded it's dom and assets. 'noWait' will not wait for any loading event and will return immediately.","title":"CreateWindowInputV1BodyWaitUntil"},"type_:WindowIdResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/type_:WindowId"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}},"meta":{"$ref":"#/components/schemas/type_:EnvelopeDefaultMeta"},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}}},"required":["data","meta"],"title":"WindowIdResponse"},"type_:Window":{"type":"object","properties":{"liveViewUrl":{"type":"string","description":"Url for loading a browser window live view that is configured according to the request options like screenResolution, disableResize, etc."},"targetId":{"type":"string","description":"CDP target ID of the browser window"},"windowId":{"type":"string","description":"Airtop window ID of the browser window"}},"required":["liveViewUrl","targetId","windowId"],"title":"Window"},"type_:WindowResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/type_:Window"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}},"meta":{"$ref":"#/components/schemas/type_:EnvelopeDefaultMeta"},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}}},"required":["data","meta"],"title":"WindowResponse"},"type_windows:WindowLoadUrlV1BodyWaitUntil":{"type":"string","enum":["load","domContentLoaded","complete","noWait"],"default":"load","description":"Wait until the specified loading event occurs. Defaults to 'load', which waits until the page dom and it's assets have loaded. 'domContentLoaded' will wait until the dom has loaded, 'complete' will wait until the page and all it's iframes have loaded it's dom and assets. 'noWait' will not wait for any loading event and will return immediately.","title":"WindowLoadUrlV1BodyWaitUntil"},"type_:OperationOutcome":{"type":"object","properties":{"success":{"type":"boolean","description":"Indicates if the operations was successful"}},"required":["success"],"title":"OperationOutcome"},"type_:OperationOutcomeResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/type_:OperationOutcome"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}},"meta":{"$ref":"#/components/schemas/type_:EnvelopeDefaultMeta"},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}}},"required":["data","meta"],"title":"OperationOutcomeResponse"},"type_:ClickConfigClickType":{"type":"string","enum":["click","doubleClick","rightClick"],"default":"click","description":"The type of click to perform. Defaults to left click.","title":"ClickConfigClickType"},"type_:MicroInteractionExperimentalConfig":{"type":"object","properties":{"scrollWithin":{"type":"string","description":"A natural language description of the scrollable area on the web page. This identifies the container or region that should be scrolled. If missing, the entire page will be scrolled. You can also describe a visible reference point inside the container. Note: This is different from elementDescription, which specifies the target element to interact with. The target may be located inside the scrollable area defined by scrollWithin."}},"title":"MicroInteractionExperimentalConfig"},"type_:VisualAnalysisConfigPartitionDirection":{"type":"string","enum":["vertical","horizontal","bidirectional"],"default":"vertical","description":"The direction to partition the screenshot into chunks: 'vertical', 'horizontal', or 'bidirectional'. Defaults to 'vertical', which is recommended for most web pages. For optimal results when partitioning in a single direction, ensure the perpendicular dimension does not exceed 1920 pixels.","title":"VisualAnalysisConfigPartitionDirection"},"type_:VisualAnalysisConfigResultSelectionStrategy":{"type":"string","enum":["first","bestMatch","auto"],"default":"auto","description":"[Experimental] The strategy to use for selecting the match using visual analysis. Can be 'auto', 'first' or 'bestMatch'. Defaults to 'auto'. Use 'auto' to let the system decide the best strategy. Use 'first' to select the first visual element that matches the element description. This will favor results that appear higher on the page in the event of multiple matches. Use 'bestMatch' to analyze the complete page and apply judgement to select the best candidate from all potential matches.","title":"VisualAnalysisConfigResultSelectionStrategy"},"type_:VisualAnalysisConfigScope":{"type":"string","enum":["viewport","page","scan","auto"],"default":"auto","description":"Whether to analyze the current viewport or the whole page. Can be 'viewport', 'page', 'scan' or 'auto'. Defaults to 'auto', which provides the simplest out-of-the-box experience for most web pages. Use 'viewport' for analysis of the current browser view only. Use 'page' for a full page analysis. Use 'scan' for a full page analysis on sites that have compatibility or accuracy issues with 'page' mode.","title":"VisualAnalysisConfigScope"},"type_:VisualAnalysisConfig":{"type":"object","properties":{"maxScanScrolls":{"type":"integer","format":"int64","default":50,"description":"Scan mode only: The maximum number of scrolls to perform. Defaults to 50."},"overlapPercentage":{"type":"integer","format":"int64","default":30,"description":"The percentage of overlap between screenshot chunks. Defaults to 30 (percent)."},"partitionDirection":{"$ref":"#/components/schemas/type_:VisualAnalysisConfigPartitionDirection","description":"The direction to partition the screenshot into chunks: 'vertical', 'horizontal', or 'bidirectional'. Defaults to 'vertical', which is recommended for most web pages. For optimal results when partitioning in a single direction, ensure the perpendicular dimension does not exceed 1920 pixels."},"resultSelectionStrategy":{"$ref":"#/components/schemas/type_:VisualAnalysisConfigResultSelectionStrategy","description":"[Experimental] The strategy to use for selecting the match using visual analysis. Can be 'auto', 'first' or 'bestMatch'. Defaults to 'auto'. Use 'auto' to let the system decide the best strategy. Use 'first' to select the first visual element that matches the element description. This will favor results that appear higher on the page in the event of multiple matches. Use 'bestMatch' to analyze the complete page and apply judgement to select the best candidate from all potential matches."},"scanScrollDelay":{"type":"integer","format":"int64","default":1000,"description":"Scan mode only: The delay between scrolls in milliseconds. Defaults to 1000 (milliseconds)."},"scope":{"$ref":"#/components/schemas/type_:VisualAnalysisConfigScope","description":"Whether to analyze the current viewport or the whole page. Can be 'viewport', 'page', 'scan' or 'auto'. Defaults to 'auto', which provides the simplest out-of-the-box experience for most web pages. Use 'viewport' for analysis of the current browser view only. Use 'page' for a full page analysis. Use 'scan' for a full page analysis on sites that have compatibility or accuracy issues with 'page' mode."}},"title":"VisualAnalysisConfig"},"type_:BrowserWaitNavigationConfigWaitUntil":{"type":"string","enum":["load","domcontentloaded","networkidle0","networkidle2"],"default":"load","description":"The condition to wait for the navigation to complete. Defaults to 'load'.","title":"BrowserWaitNavigationConfigWaitUntil"},"type_:BrowserWaitNavigationConfig":{"type":"object","properties":{"timeoutSeconds":{"type":"integer","format":"int64","default":30,"description":"The maximum time to wait for the navigation to complete, in seconds. Defaults to 30 (30 seconds)."},"waitUntil":{"$ref":"#/components/schemas/type_:BrowserWaitNavigationConfigWaitUntil","description":"The condition to wait for the navigation to complete. Defaults to 'load'."}},"title":"BrowserWaitNavigationConfig"},"type_:ClickConfig":{"type":"object","properties":{"clickType":{"$ref":"#/components/schemas/type_:ClickConfigClickType","description":"The type of click to perform. Defaults to left click."},"experimental":{"$ref":"#/components/schemas/type_:MicroInteractionExperimentalConfig","description":"Experimental configuration options. These may be subject to change and are not guaranteed to be stable across versions."},"visualAnalysis":{"$ref":"#/components/schemas/type_:VisualAnalysisConfig","description":"Optional configuration for visual analysis when locating specified content."},"waitForNavigationConfig":{"$ref":"#/components/schemas/type_:BrowserWaitNavigationConfig","description":"Optional configuration for waiting for navigation to complete after clicking the element."}},"title":"ClickConfig"},"type_:AiResponseEnvelope":{"type":"object","properties":{"modelResponse":{"type":"string"}},"required":["modelResponse"],"title":"AiResponseEnvelope"},"type_:ClientProvidedResponseMetadata":{"type":"object","properties":{"clientRequestId":{"type":"string"}},"title":"ClientProvidedResponseMetadata"},"type_:ScreenshotMetadataFormat":{"type":"string","enum":["base64","url"],"description":"Format of the screenshot data","title":"ScreenshotMetadataFormat"},"type_:ScreenshotScrollPosition":{"type":"object","properties":{"left":{"type":"integer","format":"int64","description":"Horizontal scroll position in pixels"},"top":{"type":"integer","format":"int64","description":"Vertical scroll position in pixels"}},"required":["left","top"],"title":"ScreenshotScrollPosition"},"type_:ScreenshotViewportDimensions":{"type":"object","properties":{"height":{"type":"integer","format":"int64","description":"Height of the viewport in pixels"},"width":{"type":"integer","format":"int64","description":"Width of the viewport in pixels"}},"required":["height","width"],"title":"ScreenshotViewportDimensions"},"type_:ScreenshotMetadata":{"type":"object","properties":{"dataUrl":{"type":"string","description":"Base64 encoded data URL of screenshot image data"},"fileId":{"type":"string","description":"Unique identifier for the uploaded file"},"fileName":{"type":"string","description":"Name of the screenshot file"},"format":{"$ref":"#/components/schemas/type_:ScreenshotMetadataFormat","description":"Format of the screenshot data"},"scrollPosition":{"$ref":"#/components/schemas/type_:ScreenshotScrollPosition","description":"Scroll position where the screenshot was taken"},"signedDownloadUrl":{"type":"string","description":"Signed URL for downloading the screenshot (when format is 'url')"},"urlExpiry":{"type":"string","description":"Expiration time for the signed URL in ISO format"},"viewportDimensions":{"$ref":"#/components/schemas/type_:ScreenshotViewportDimensions","description":"Viewport dimensions of the screenshot"}},"title":"ScreenshotMetadata"},"type_:ExternalSessionAiResponseMetadataStatus":{"type":"string","enum":["success","partial","failure"],"description":"Outcome of the operation.","title":"ExternalSessionAiResponseMetadataStatus"},"type_:ExternalSessionAiResponseMetadataUsage":{"type":"object","properties":{"credits":{"type":"integer","format":"int64","description":"The credit usage for this request"},"id":{"type":"string","description":"The id of the request"}},"required":["credits","id"],"title":"ExternalSessionAiResponseMetadataUsage"},"type_:ExternalSessionAiResponseMetadata":{"type":"object","properties":{"clientProvided":{"$ref":"#/components/schemas/type_:ClientProvidedResponseMetadata"},"requestId":{"type":"string"},"screenshots":{"type":"array","items":{"$ref":"#/components/schemas/type_:ScreenshotMetadata"},"description":"Array containing any requested screenshots from the operation."},"status":{"$ref":"#/components/schemas/type_:ExternalSessionAiResponseMetadataStatus","description":"Outcome of the operation."},"usage":{"$ref":"#/components/schemas/type_:ExternalSessionAiResponseMetadataUsage"}},"required":["status","usage"],"title":"ExternalSessionAiResponseMetadata"},"type_:AiPromptResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/type_:AiResponseEnvelope"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}},"meta":{"$ref":"#/components/schemas/type_:ExternalSessionAiResponseMetadata"},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}}},"required":["data","meta"],"title":"AiPromptResponse"},"type_:MicroInteractionConfigWithExperimental":{"type":"object","properties":{"experimental":{"$ref":"#/components/schemas/type_:MicroInteractionExperimentalConfig","description":"Experimental configuration options. These may be subject to change and are not guaranteed to be stable across versions."},"visualAnalysis":{"$ref":"#/components/schemas/type_:VisualAnalysisConfig","description":"Optional configuration for visual analysis when locating specified content."},"waitForNavigationConfig":{"$ref":"#/components/schemas/type_:BrowserWaitNavigationConfig","description":"Optional configuration for waiting for navigation to complete after clicking the element."}},"title":"MicroInteractionConfigWithExperimental"},"type_:MonitorConfigIncludeVisualAnalysis":{"type":"string","enum":["auto","disabled","enabled"],"default":"auto","description":"If set to 'enabled', Airtop AI will also analyze the web page visually when executing the condition check. If set to 'disabled', no visual analysis will be conducted.","title":"MonitorConfigIncludeVisualAnalysis"},"type_:IntervalMonitorConfig":{"type":"object","properties":{"intervalSeconds":{"type":"integer","format":"int64","default":5,"description":"The interval in seconds between condition checks. Defaults to 5 seconds."},"timeoutSeconds":{"type":"integer","format":"int64","default":30,"description":"The timeout in seconds after which the monitor will stop checking the condition. Defaults to 30 seconds."}},"title":"IntervalMonitorConfig"},"type_:MonitorConfig":{"type":"object","properties":{"includeVisualAnalysis":{"$ref":"#/components/schemas/type_:MonitorConfigIncludeVisualAnalysis","description":"If set to 'enabled', Airtop AI will also analyze the web page visually when executing the condition check. If set to 'disabled', no visual analysis will be conducted."},"interval":{"$ref":"#/components/schemas/type_:IntervalMonitorConfig","description":"Configuration for the interval monitor."}},"title":"MonitorConfig"},"type_:PageQueryExperimentalConfig":{"type":"object","properties":{"includeVisualAnalysis":{"type":"string","default":"auto","description":"If set to 'enabled', Airtop AI will also analyze the web page visually when fulfilling the request. Note that this can add to both the execution time and cost of the operation. If the page is too large, the context window can be exceeded and the request will fail. If set to 'auto' or 'disabled', no visual analysis will be conducted. If 'followPaginationLinks' is set to true, visual analysis will be conducted unless 'includeVisualAnalysis' is explicitly set to 'disabled'."}},"title":"PageQueryExperimentalConfig"},"type_:ScrapeConfig":{"type":"object","properties":{"optimizeUrls":{"type":"string","default":"auto","description":"URL optimization helps improve performance during model analysis, but limits the model's ability to analyze internal details of URLs (such as individual URL parameters). This setting does not affect the ability to extract URLs or links from web pages -- those will work regardless of how this option is set. However, if you need to analyze URLs themselves and are not getting satisfactory results, try setting this option to 'disabled'. If set to 'auto', Airtop AI will automatically determine whether to apply URL optimization. If 'enabled', URLs will always be optimized to improve performance. If 'disabled', URLs will not be optimized."}},"title":"ScrapeConfig"},"type_:PageQueryConfig":{"type":"object","properties":{"experimental":{"$ref":"#/components/schemas/type_:PageQueryExperimentalConfig","description":"Experimental configuration options. These may be subject to change and are not guaranteed to be stable across versions."},"outputSchema":{"type":"string","description":"JSON schema defining the structure of the output. If not provided, the format of the output might vary."},"scrape":{"$ref":"#/components/schemas/type_:ScrapeConfig","description":"Optional configuration to customize and tweak how the web page is scraped."},"visualAnalysis":{"$ref":"#/components/schemas/type_:VisualAnalysisConfig","description":"Visual analysis configuration. When provided, enables advanced screenshot-based analysis instead of or in addition to DOM scraping."}},"title":"PageQueryConfig"},"type_:SessionPageQueryHandlerRequestBody":{"type":"object","properties":{"clientRequestId":{"type":"string"},"configuration":{"$ref":"#/components/schemas/type_:PageQueryConfig","description":"Request configuration"},"costThresholdCredits":{"type":"integer","format":"int64","description":"A credit threshold that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended)."},"followPaginationLinks":{"type":"boolean","default":false,"description":"Make a best effort attempt to load more content items than are originally displayed on the page, e.g. by following pagination links, clicking controls to load more content, utilizing infinite scrolling, etc. This can be quite a bit more costly, but may be necessary for sites that require additional interaction to show the needed results. You can provide constraints in your prompt (e.g. on the total number of pages or results to consider)."},"prompt":{"type":"string","description":"The prompt to submit about the content in the browser window."},"timeThresholdSeconds":{"type":"integer","format":"int64","description":"A time threshold in seconds that, once exceeded, will cause the operation to be cancelled. Note that this is *not* a hard limit, but a threshold that is checked periodically during the course of fulfilling the request. A default threshold is used if not specified, but you can use this option to increase or decrease as needed. Set to 0 to disable this feature entirely (not recommended).\n\nThis setting does not extend the maximum session duration provided at the time of session creation."}},"required":["prompt"],"title":"SessionPageQueryHandlerRequestBody"},"type_:PaginatedExtractionExperimentalConfig":{"type":"object","properties":{"scrollWithin":{"type":"string","description":"A natural language description of the scrollable area on the web page. This identifies the container or region that should be scrolled to access pagination controls. If missing, the entire page will be scrolled. You can also describe a visible reference point inside the container."}},"title":"PaginatedExtractionExperimentalConfig"},"type_:PaginatedExtractionConfig":{"type":"object","properties":{"experimental":{"$ref":"#/components/schemas/type_:PaginatedExtractionExperimentalConfig","description":"Experimental configuration options. These may be subject to change and are not guaranteed to be stable across versions."},"interactionMode":{"type":"string","default":"auto","description":"The mode to use for interaction. If set to 'auto', Airtop AI will automatically choose the most cost-effective interaction mode. If set to 'accurate', the request might be slower, but more likely to be accurate. Whereas, 'cost-efficient' will be cheaper and speed things up, but may reduce accuracy."},"outputSchema":{"type":"string","description":"JSON schema defining the structure of the output. If not provided, the format of the output might vary."},"paginationMode":{"type":"string","default":"auto","description":"The mode to use for pagination. If set to 'auto', Airtop AI will automatically look for pagination links first and then attempt infinite scrolling to load more content. If set to 'paginated', Airtop AI will follow pagination links to load more content. If set to 'infinite-scroll', Airtop AI will scroll the page to load more content."},"scrape":{"$ref":"#/components/schemas/type_:ScrapeConfig","description":"Optional configuration to customize and tweak how the web page is scraped."}},"title":"PaginatedExtractionConfig"},"type_:ScrapeResponseContent":{"type":"object","properties":{"contentType":{"type":"string","description":"The mime type of content extracted from the browser window (usually text/plain but could be text/csv or other types depending on the site)."},"text":{"type":"string","description":"The text content of the browser window."}},"required":["contentType","text"],"title":"ScrapeResponseContent"},"type_:ScrapeResponseOutput":{"type":"object","properties":{"scrapedContent":{"$ref":"#/components/schemas/type_:ScrapeResponseContent","description":"The scraped content of the browser window."},"selectedText":{"type":"string","description":"Any text that was highlighted in the browser window."},"title":{"type":"string","description":"The title of the browser page."}},"required":["scrapedContent","title"],"title":"ScrapeResponseOutput"},"type_:ScrapeResponseEnvelope":{"type":"object","properties":{"modelResponse":{"$ref":"#/components/schemas/type_:ScrapeResponseOutput","description":"The response from the Airtop AI model."}},"required":["modelResponse"],"title":"ScrapeResponseEnvelope"},"type_:ScrapeResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/type_:ScrapeResponseEnvelope"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}},"meta":{"$ref":"#/components/schemas/type_:ExternalSessionAiResponseMetadata"},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}}},"required":["data","meta"],"title":"ScrapeResponse"},"type_:ScreenshotConfigFormat":{"type":"string","enum":["base64","url"],"default":"base64","description":"Format of the screenshot response. 'base64' returns the image as base64-encoded data. 'url' uploads the screenshot to asset storage and returns a signed download URL. Defaults to 'base64' for viewport scope, 'url' for other scopes.","title":"ScreenshotConfigFormat"},"type_:ScreenshotConfigScope":{"type":"string","enum":["viewport","page","scan","auto"],"description":"[Deprecated] Whether to capture the current viewport or whole page. Use visualAnalysis.scope instead. Only viewport is currently supported when used directly.","title":"ScreenshotConfigScope"},"type_:ScreenshotConfig":{"type":"object","properties":{"format":{"$ref":"#/components/schemas/type_:ScreenshotConfigFormat","description":"Format of the screenshot response. 'base64' returns the image as base64-encoded data. 'url' uploads the screenshot to asset storage and returns a signed download URL. Defaults to 'base64' for viewport scope, 'url' for other scopes."},"maxHeight":{"type":"integer","format":"int64","description":"Maximum height of the screenshot in pixels. The screenshot will be scaled down to fit within this height if necessary, preserving the aspect ratio."},"maxWidth":{"type":"integer","format":"int64","description":"Maximum width of the screenshot in pixels. The screenshot will be scaled down to fit within this width if necessary, preserving the aspect ratio."},"quality":{"type":"integer","format":"int64","description":"JPEG quality (1-100). Note that this option is still in development and may not work as expected."},"scope":{"$ref":"#/components/schemas/type_:ScreenshotConfigScope","description":"[Deprecated] Whether to capture the current viewport or whole page. Use visualAnalysis.scope instead. Only viewport is currently supported when used directly.","deprecated":true},"visualAnalysis":{"$ref":"#/components/schemas/type_:VisualAnalysisConfig","description":"Visual analysis configuration. When provided, the scope setting here takes precedence over the top-level scope field."}},"title":"ScreenshotConfig"},"type_:ScreenshotRequestConfig":{"type":"object","properties":{"screenshot":{"$ref":"#/components/schemas/type_:ScreenshotConfig","description":"Optional configuration for the screenshot."}},"title":"ScreenshotRequestConfig"},"type_:MicroInteractionConfig":{"type":"object","properties":{"visualAnalysis":{"$ref":"#/components/schemas/type_:VisualAnalysisConfig","description":"Optional configuration for visual analysis when locating specified content."},"waitForNavigationConfig":{"$ref":"#/components/schemas/type_:BrowserWaitNavigationConfig","description":"Optional configuration for waiting for navigation to complete after clicking the element."}},"title":"MicroInteractionConfig"},"type_:ScrollByConfig":{"type":"object","properties":{"xAxis":{"type":"string","description":"The amount of pixels/percentage to scroll horizontally. Percentage values should be between 0 and 100. Positive values scroll right, negative values scroll left."},"yAxis":{"type":"string","description":"The amount of pixels/percentage to scroll vertically. Percentage values should be between 0 and 100. Positive values scroll down, negative values scroll up."}},"title":"ScrollByConfig"},"type_:ScrollToEdgeConfig":{"type":"object","properties":{"xAxis":{"type":"string","description":"Scroll to the left or right of the page."},"yAxis":{"type":"string","description":"Scroll to the top or bottom of the page."}},"title":"ScrollToEdgeConfig"},"type_:SummaryExperimentalConfig":{"type":"object","properties":{"includeVisualAnalysis":{"type":"string","default":"auto","description":"If set to 'enabled', Airtop AI will also analyze the web page visually when fulfilling the request. Note that this can add to both the execution time and cost of the operation. If the page is too large, the context window can be exceeded and the request will fail. If set to 'auto' or 'disabled', no visual analysis will be conducted."}},"title":"SummaryExperimentalConfig"},"type_:SummaryConfig":{"type":"object","properties":{"experimental":{"$ref":"#/components/schemas/type_:SummaryExperimentalConfig"},"outputSchema":{"type":"string","description":"JSON schema defining the structure of the output. If not provided, the format of the output might vary."}},"title":"SummaryConfig"},"type_:AutomationOutput":{"type":"object","properties":{"description":{"type":"string"},"domainName":{"type":"string"},"id":{"type":"string"},"schema":{"type":"string"},"template":{"type":"string"}},"required":["domainName","id"],"title":"AutomationOutput"},"type_:ListAutomationsOutput":{"type":"object","properties":{"automations":{"type":"array","items":{"$ref":"#/components/schemas/type_:AutomationOutput"}}},"title":"ListAutomationsOutput"},"type_:DeleteAutomationOutputWrapperBody":{"type":"object","additionalProperties":{"description":"Any type"},"title":"DeleteAutomationOutputWrapperBody"},"type_:ExternalFile":{"type":"object","properties":{"deleted":{"type":"boolean","description":"Whether the file has been deleted"},"deletionTime":{"type":"string","format":"date-time","description":"Time when the file was deleted"},"expiryTime":{"type":"string","format":"date-time","description":"Time when the file will be deleted"},"fileBytes":{"type":"integer","format":"int64","description":"Size of the file in bytes"},"fileName":{"type":"string","description":"Name of the file"},"fileType":{"type":"string","description":"Type of the file"},"id":{"type":"string","format":"uuid","description":"ID of the file"},"lastHeartbeatTime":{"type":"string","format":"date-time","description":"Time when the file was last heartbeated"},"orgId":{"type":"string","format":"uuid","description":"ID of the organization"},"sessionIds":{"type":"array","items":{"type":"string"},"description":"IDs of the associated sessions"},"status":{"type":"string","description":"Status of the file"},"uploadCompleteTime":{"type":"string","format":"date-time","description":"Time when the file was uploaded"},"uploadStartTime":{"type":"string","format":"date-time","description":"Time when the file was uploaded"},"visibleInApi":{"type":"boolean","description":"Whether the file is visible in the API"},"visibleInPortal":{"type":"boolean","description":"Whether the file is visible in the portal"}},"required":["deleted","fileBytes","fileName","fileType","id","orgId","status","uploadStartTime","visibleInApi","visibleInPortal"],"title":"ExternalFile"},"type_:FilesWithPagination":{"type":"object","properties":{"files":{"type":"array","items":{"$ref":"#/components/schemas/type_:ExternalFile"},"description":"List of files."},"pagination":{"$ref":"#/components/schemas/type_:Pagination","description":"Pagination details."}},"required":["pagination"],"title":"FilesWithPagination"},"type_:FilesResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/type_:FilesWithPagination"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}},"meta":{"$ref":"#/components/schemas/type_:EnvelopeDefaultMeta"},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}}},"required":["data","meta"],"title":"FilesResponse"},"type_files:CreateFileRestInputV1FileType":{"type":"string","enum":["browser_download","screenshot","recording","customer_upload"],"default":"customer_upload","description":"Type of the file","title":"CreateFileRestInputV1FileType"},"type_:CreateFileV1FileType":{"type":"string","enum":["browser_download","screenshot","recording","customer_upload"],"default":"customer_upload","description":"Type of the file","title":"CreateFileV1FileType"},"type_:CreateFileV1Status":{"type":"string","enum":["available","uploading","upload_failed","deleted"],"default":"deleted","description":"Status of the file","title":"CreateFileV1Status"},"type_:CreateFileV1":{"type":"object","properties":{"fileBytes":{"type":"integer","format":"int64","description":"Size of the file in bytes"},"fileName":{"type":"string","description":"Name of the file"},"fileType":{"$ref":"#/components/schemas/type_:CreateFileV1FileType","description":"Type of the file"},"id":{"type":"string","format":"uuid","description":"ID of the file"},"orgId":{"type":"string","description":"ID of the organization"},"sessionIds":{"type":"array","items":{"type":"string"},"description":"IDs of the associated sessions"},"status":{"$ref":"#/components/schemas/type_:CreateFileV1Status","description":"Status of the file"},"uploadStartTime":{"type":"string","format":"date-time","description":"Time when the file upload was started"},"uploadUrl":{"type":"string","description":"URL to upload the file"}},"required":["fileBytes","fileName","fileType","id","orgId","status","uploadStartTime","uploadUrl"],"title":"CreateFileV1"},"type_:EnvelopeCreateFileV1EnvelopeDefaultMeta":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/type_:CreateFileV1"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}},"meta":{"$ref":"#/components/schemas/type_:EnvelopeDefaultMeta"},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}}},"required":["data","meta"],"title":"EnvelopeCreateFileV1EnvelopeDefaultMeta"},"type_:GetFileV1FileType":{"type":"string","enum":["browser_download","screenshot","recording","customer_upload"],"default":"customer_upload","description":"Type of the file","title":"GetFileV1FileType"},"type_:GetFileV1Status":{"type":"string","enum":["available","uploading","upload_failed","deleted"],"default":"deleted","description":"Status of the file","title":"GetFileV1Status"},"type_:GetFileV1":{"type":"object","properties":{"downloadUrl":{"type":"string","description":"URL to download the file"},"expiryTime":{"type":"string","format":"date-time","description":"Time when the file will be automatically deleted. Typically 48 hours after the file is uploaded"},"fileBytes":{"type":"integer","format":"int64","description":"Size of the file in bytes"},"fileName":{"type":"string","description":"Name of the file"},"fileType":{"$ref":"#/components/schemas/type_:GetFileV1FileType","description":"Type of the file"},"id":{"type":"string","format":"uuid","description":"ID of the file"},"orgId":{"type":"string","description":"ID of the organization"},"sessionIds":{"type":"array","items":{"type":"string"},"description":"IDs of the associated sessions"},"status":{"$ref":"#/components/schemas/type_:GetFileV1Status","description":"Status of the file"},"uploadStartTime":{"type":"string","format":"date-time","description":"Time when the file upload was started"}},"required":["downloadUrl","fileBytes","fileName","fileType","id","orgId","status","uploadStartTime"],"title":"GetFileV1"},"type_:EnvelopeGetFileV1EnvelopeDefaultMeta":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/type_:GetFileV1"},"errors":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}},"meta":{"$ref":"#/components/schemas/type_:EnvelopeDefaultMeta"},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/type_:Issue"}}},"required":["data","meta"],"title":"EnvelopeGetFileV1EnvelopeDefaultMeta"},"type_:RequestStatusResponse":{"type":"object","properties":{"error":{"type":"string","description":"The error message, if available"},"response":{"description":"Any type"},"status":{"type":"string","description":"The current status of the request (pending, completed, error)"}},"required":["response","status"],"title":"RequestStatusResponse"}},"securitySchemes":{"default":{"type":"http","scheme":"bearer"}}}}