{"openapi":"3.1.0","info":{"title":"Indices API","description":"The Indices REST API. See docs for details: https://docs.indices.io","version":"0.0.1"},"paths":{"/v1beta/capture_sessions":{"get":{"tags":["Capture Sessions"],"summary":"List capture sessions","description":"<p>List all capture sessions, newest first.</p>","operationId":"listCaptureSessions","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/CaptureSession"},"type":"array"}}}}}},"post":{"tags":["Capture Sessions"],"summary":"Start a capture session","description":"<p>Spawn a browser session that records the network traffic of everything done in it.</p><p>Once completed, the capture session is a reusable recording: attach it to a task to generate an API from it.</p>","operationId":"startCaptureSession","requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/StartCaptureSessionRequest"},{"type":"null"}],"title":"Body"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureSession"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/capture_sessions/{id}":{"get":{"tags":["Capture Sessions"],"summary":"Retrieve a capture session","description":"<p>Retrieve a capture session by its ID.</p><p>Poll this after requesting completion: the session is a usable recording once <code>state</code> is <code>completed</code>.</p>","operationId":"retrieveCaptureSession","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"The ID of the capture session to retrieve.","title":"Id"},"description":"The ID of the capture session to retrieve."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureSession"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/capture_sessions/{id}/complete":{"post":{"tags":["Capture Sessions"],"summary":"Complete a capture session","description":"<p>Stop recording and finalize the capture session.</p><p>Completion is asynchronous: the browser uploads its recording and the session then transitions to <code>completed</code>. Poll <code>retrieveCaptureSession</code> to observe the transition.</p>","operationId":"completeCaptureSession","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"The ID of the capture session to complete.","title":"Id"},"description":"The ID of the capture session to complete."}],"responses":{"202":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureSession"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/capture_sessions/{id}/paste":{"post":{"tags":["Capture Sessions"],"summary":"Paste a secret value into a capture session","description":"<p>Resolve one field of an attached login secret and paste it at the caret in the live recording browser, so the user does not retype credentials they already stored.</p>","operationId":"pasteCaptureSecret","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"The ID of the capture session to paste into.","title":"Id"},"description":"The ID of the capture session to paste into."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PasteSecretRequest"}}}},"responses":{"204":{"description":"Successful response"},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/capture_sessions/{id}/abandon":{"post":{"tags":["Capture Sessions"],"summary":"Abandon a capture session","description":"<p>Discard an in-progress capture session and release its browser.</p>","operationId":"abandonCaptureSession","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"The ID of the capture session to abandon.","title":"Id"},"description":"The ID of the capture session to abandon."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureSession"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/runs":{"get":{"tags":["Runs"],"summary":"List runs","description":"<p>List runs of a given connector.</p>","operationId":"listRuns","parameters":[{"name":"connector_id","in":"query","required":true,"schema":{"type":"string","description":"The ID of the connector to list runs for.","title":"Connector Id"},"description":"The ID of the connector to list runs for."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of runs to return.","default":20,"title":"Limit"},"description":"Maximum number of runs to return."},{"name":"cursor","in":"query","required":false,"schema":{"description":"Cursor from a previous response's `next_cursor`, to fetch the next page.","title":"Cursor","type":"string"},"description":"Cursor from a previous response's `next_cursor`, to fetch the next page."},{"name":"version","in":"query","required":false,"schema":{"description":"Version of the connector to list runs of; defaults to the newest.","title":"Version","type":"integer","minimum":1},"description":"Version of the connector to list runs of; defaults to the newest."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListRunsResponse"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Runs"],"summary":"Run a connector","description":"<p>Execute a connector. By default the call blocks until the run finishes. Pass <code>async: true</code> to return immediately, in which case you should poll <code>GET /runs</code> to retrieve the result once it's ready.</p>","operationId":"createRun","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRunRequest"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Run"}}}},"202":{"description":"Async run accepted; poll `get /runs` until it reaches a terminal status.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Run"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/runs/{run_id}":{"get":{"tags":["Runs"],"summary":"Retrieve a run","description":"<p>Retrieve a run by its ID.</p>","operationId":"retrieveRun","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","description":"The ID of the run to retrieve.","title":"Run Id"},"description":"The ID of the run to retrieve."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Run"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/runs/{run_id}/logs":{"get":{"tags":["Runs"],"summary":"Get run logs","description":"<p>Retrieve the combined logs for a run.</p>","operationId":"getRunLogs","parameters":[{"name":"run_id","in":"path","required":true,"schema":{"type":"string","description":"The ID of the run to get logs for.","title":"Run Id"},"description":"The ID of the run to get logs for."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunLogs"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/connectors":{"get":{"tags":["Connectors"],"summary":"List connectors","description":"<p>List the connectors in your catalog.</p>","operationId":"listConnectors","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of connectors to return.","default":20,"title":"Limit"},"description":"Maximum number of connectors to return."},{"name":"cursor","in":"query","required":false,"schema":{"description":"Cursor from a previous response's `next_cursor`, to fetch the next page.","title":"Cursor","type":"string"},"description":"Cursor from a previous response's `next_cursor`, to fetch the next page."},{"name":"domain","in":"query","required":false,"schema":{"description":"Only connectors whose website is this domain or a subdomain of it.","title":"Domain","type":"string"},"description":"Only connectors whose website is this domain or a subdomain of it."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListConnectorsResponse"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/connectors/{connector_id}":{"get":{"tags":["Connectors"],"summary":"Retrieve a connector","description":"<p>Retrieve a connector by its ID.</p>","operationId":"retrieveConnector","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","description":"The ID of the connector to retrieve.","title":"Connector Id"},"description":"The ID of the connector to retrieve."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Connector"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["Connectors"],"summary":"Rename a connector","description":"<p>Rename a connector by updating its display name. The connector ID is unchanged.</p>","operationId":"updateConnector","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","description":"The ID of the connector to rename.","title":"Connector Id"},"description":"The ID of the connector to rename."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RenameConnectorRequest"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Connector"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Connectors"],"summary":"Delete a connector","description":"<p>Delete a connector by its ID. Its past runs are kept, but it can no longer be run.</p>","operationId":"deleteConnector","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","description":"The ID of the connector to delete.","title":"Connector Id"},"description":"The ID of the connector to delete."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteConnectorResponse"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/connectors/{connector_id}/revisions":{"get":{"tags":["Connectors"],"summary":"List a connector's revisions","description":"<p>List every version of a connector, newest first.</p>","operationId":"listConnectorRevisions","parameters":[{"name":"connector_id","in":"path","required":true,"schema":{"type":"string","description":"The ID of the connector whose revisions to list.","title":"Connector Id"},"description":"The ID of the connector whose revisions to list."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListConnectorRevisionsResponse"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/files":{"get":{"tags":["Files"],"summary":"List files","description":"<p>List your files: uploads and run outputs. Default order is newest first.</p>","operationId":"listFiles","parameters":[{"name":"run_id","in":"query","required":false,"schema":{"description":"Only files produced by this run.","title":"Run Id","type":"string"},"description":"Only files produced by this run."},{"name":"connector_id","in":"query","required":false,"schema":{"description":"Only files produced by runs of this connector.","title":"Connector Id","type":"string"},"description":"Only files produced by runs of this connector."},{"name":"filename","in":"query","required":false,"schema":{"description":"Only files whose name contains this text.","title":"Filename","type":"string"},"description":"Only files whose name contains this text."},{"name":"source","in":"query","required":false,"schema":{"description":"Only files from this source.","title":"Source","$ref":"#/components/schemas/FileSource"},"description":"Only files from this source."},{"name":"sort","in":"query","required":false,"schema":{"$ref":"#/components/schemas/FileListSort","description":"Column to sort by: name, created_at, size_bytes, or source.","default":"created_at"},"description":"Column to sort by: name, created_at, size_bytes, or source."},{"name":"order","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","description":"Sort direction.","default":"desc"},"description":"Sort direction."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"description":"Maximum number of files to return.","default":20,"title":"Limit"},"description":"Maximum number of files to return."},{"name":"cursor","in":"query","required":false,"schema":{"description":"Cursor from a previous response's `next_cursor`, to fetch the next page.","title":"Cursor","type":"string"},"description":"Cursor from a previous response's `next_cursor`, to fetch the next page."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListFilesResponse"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Files"],"summary":"Initiate a file upload","description":"<p>Create a pending file and get a signed URL to PUT the bytes to.</p>","operationId":"initiateFileUpload","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateFileUploadRequest"}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateFileUploadResponse"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/files/{file_id}/complete":{"post":{"tags":["Files"],"summary":"Finalize a file upload","description":"<p>Confirm the bytes were uploaded; the file becomes available for use.</p>","operationId":"completeFileUpload","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","description":"The ID of the pending file to finalize.","title":"File Id"},"description":"The ID of the pending file to finalize."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompleteFileUploadResponse"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/files/{file_id}":{"get":{"tags":["Files"],"summary":"Retrieve a file","description":"<p>Retrieve a file's metadata by its ID.</p>","operationId":"retrieveFile","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","description":"The ID of the file to retrieve.","title":"File Id"},"description":"The ID of the file to retrieve."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/File"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Files"],"summary":"Delete a file","description":"<p>Delete a file and its stored bytes.</p>","operationId":"deleteFile","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","description":"The ID of the file to delete.","title":"File Id"},"description":"The ID of the file to delete."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteFileResponse"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/files/{file_id}/download_url":{"get":{"tags":["Files"],"summary":"Get a file download URL","description":"<p>Get a short-lived signed URL to download the file bytes directly from storage.</p>","operationId":"getFileDownloadUrl","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","description":"The ID of the file to download.","title":"File Id"},"description":"The ID of the file to download."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileDownloadUrl"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/files/{file_id}/download":{"get":{"tags":["Files"],"summary":"Download a file","description":"<p>Redirect to a short-lived signed URL that serves the file bytes.</p>","operationId":"downloadFile","parameters":[{"name":"file_id","in":"path","required":true,"schema":{"type":"string","description":"The ID of the file to download.","title":"File Id"},"description":"The ID of the file to download."}],"responses":{"307":{"description":"Successful response"},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/secrets":{"get":{"tags":["Secrets"],"summary":"List secrets","description":"<p>List all your secrets. Returns metadata only, not the actual credentials.</p>","operationId":"list_user_secrets_v1beta_secrets_get","responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/Secret"},"type":"array"}}}}}},"post":{"tags":["Secrets"],"summary":"Create secret","description":"<p>Create a new secret. Credentials are stored securely in 1Password.</p>","operationId":"create_secret_v1beta_secrets_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSecretRequest"}}},"required":true},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Secret"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/secrets/{id}/totp":{"post":{"tags":["Secrets"],"summary":"Generate TOTP code","description":"<p>Generate a current TOTP code for a login secret that has 2FA configured.</p>","operationId":"generate_totp_code_v1beta_secrets__id__totp_post","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"The ID of the secret.","title":"Id"},"description":"The ID of the secret."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TotpResponse"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1beta/secrets/{id}":{"delete":{"tags":["Secrets"],"summary":"Delete secret","description":"<p>Delete a secret. This removes it from both the database and 1Password.</p>","operationId":"delete_user_secret_v1beta_secrets__id__delete","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","description":"The ID of the secret to delete.","title":"Id"},"description":"The ID of the secret to delete."}],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteSecretResponse"}}}},"422":{"description":"Validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"CaptureSession":{"properties":{"id":{"type":"string","description":"Unique identifier for the capture session.","examples":["cap_0R3kPq8mWxYz1aBcDeFgHi"],"example":"cap_0R3kPq8mWxYz1aBcDeFgHi"},"state":{"$ref":"#/components/schemas/CaptureSessionState","description":"Current state of the capture session. A session records while active, is completing once completion is requested, and becomes a reusable recording once completed.","examples":["active"],"example":"active"},"browser_session_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Opaque identifier for the spawned browser session. Null once the browser is gone."},"iframe_url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"URL to embed in an iframe to control the browser. Only usable while the session is active."},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the object was created.","examples":["2026-01-01T12:00:00Z"],"example":"2026-01-01T12:00:00Z"},"updated_at":{"type":"string","format":"date-time","description":"Timestamp when the object was last updated.","examples":["2026-01-06T12:05:00Z"],"example":"2026-01-06T12:05:00Z"}},"type":"object","required":["id","state","browser_session_id","iframe_url","created_at","updated_at"],"title":"CaptureSession"},"CaptureSessionState":{"type":"string","enum":["active","completing","completed","abandoned","failed"],"title":"CaptureSessionState"},"CompleteFileUploadResponse":{"properties":{"file_id":{"type":"string","description":"ID of the finalized file."},"name":{"type":"string","description":"User-facing filename."},"size_bytes":{"type":"integer","description":"Size of the stored file in bytes, as reported by storage."},"content_type":{"type":"string","description":"MIME type of the stored file."},"crc32c":{"type":"string","description":"Base64-encoded CRC32C checksum reported by storage."}},"type":"object","required":["file_id","name","size_bytes","content_type","crc32c"],"title":"CompleteFileUploadResponse"},"Connector":{"properties":{"id":{"type":"string","description":"Unique identifier for the object.","examples":["conn_8kPq2mWxYz1aBcDeFgHi3J"],"example":"conn_8kPq2mWxYz1aBcDeFgHi3J"},"display_name":{"type":"string","description":"Short human-readable name of the connector.","examples":["Invoice retrieval"],"example":"Invoice retrieval"},"purpose":{"type":"string","description":"What the connector does, as specified at publish time.","examples":["Retrieve invoices from our ERP system, including refunds."],"example":"Retrieve invoices from our ERP system, including refunds."},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Website the connector operates against.","examples":["https://example.com"],"example":"https://example.com"},"input_schema":{"additionalProperties":true,"type":"object","description":"JSON Schema for the connector's run arguments."},"output_schema":{"additionalProperties":true,"type":"object","description":"JSON Schema for the connector's run results."},"required_secrets":{"items":{"$ref":"#/components/schemas/SecretSlotDefinition"},"type":"array","description":"Secret slots that must be bound when running the connector."},"version":{"type":"integer","description":"Version of the connector, starting at 1 and incremented by each revision.","examples":[1],"example":1},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the object was created."}},"type":"object","required":["id","display_name","purpose","website","input_schema","output_schema","version","created_at"],"title":"Connector"},"Country":{"type":"string","enum":["at","be","ca","ch","de","dk","es","fi","fr","gb","ie","it","lu","mx","nl","no","pt","se","us"]},"CreateRunRequest":{"properties":{"connector_id":{"type":"string","description":"ID of the connector to execute."},"arguments":{"additionalProperties":true,"type":"object","description":"Arguments to pass to the connector. Optional if the connector does not require any arguments."},"secret_bindings":{"additionalProperties":{"type":"string"},"type":"object","description":"Mapping of secret slot names to the IDs of saved, user-owned secrets. Each of the connector's required_secrets must appear here or in secret_values, but not both."},"secret_values":{"additionalProperties":{"anyOf":[{"$ref":"#/components/schemas/LoginSecretValue"},{"$ref":"#/components/schemas/StringSecretValue"}]},"type":"object","description":"Mapping of secret slot names to secret values supplied directly for this run, instead of referencing a saved secret. Use a login shape ({username, password, totp_secret?}) for login slots and a string shape ({value}) for string slots. Values are not persisted."},"proxy_settings":{"anyOf":[{"oneOf":[{"$ref":"#/components/schemas/IspProxy"},{"$ref":"#/components/schemas/ResidentialProxy"}],"discriminator":{"propertyName":"type","mapping":{"isp":"#/components/schemas/IspProxy","residential":"#/components/schemas/ResidentialProxy"}}},{"type":"null"}],"description":"Proxy for the network traffic of this run. If you do not set it, a setting is automatically determined by the platform."},"async":{"type":"boolean","description":"When true, return immediately with a pending run; poll retrieveRun for the result. Results above 1,000,000 UTF-8 JSON bytes are discarded and finish with result_too_large. Retry those requests with async=false to receive the result directly.","default":false},"max_timeout_s":{"type":"integer","maximum":3600.0,"minimum":1.0,"description":"Maximum execution time in seconds before the run is timed out.","default":300}},"type":"object","required":["connector_id"],"title":"CreateRunRequest"},"CreateSecretRequest":{"properties":{"name":{"type":"string","description":"Human-readable name for the secret."},"secret_type":{"$ref":"#/components/schemas/SecretType","description":"Type of secret: 'login' for credentials, 'string' for simple values."},"username":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Login username. Required for 'login' type."},"password":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Login password. Required for 'login' type."},"totp_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional TOTP secret (base32 encoded). Only for 'login' type."},"value":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Secret value. Required for 'string' type."}},"type":"object","required":["name","secret_type"],"title":"CreateSecretRequest"},"DeleteConnectorResponse":{"properties":{"id":{"type":"string","description":"Unique identifier for the deleted connector."},"deleted":{"type":"boolean","description":"Whether the connector was deleted."}},"type":"object","required":["id","deleted"],"title":"DeleteConnectorResponse"},"DeleteFileResponse":{"properties":{"id":{"type":"string","description":"ID of the deleted file."},"deleted":{"type":"boolean","description":"Always true when the file was deleted."}},"type":"object","required":["id","deleted"],"title":"DeleteFileResponse"},"DeleteSecretResponse":{"properties":{"id":{"type":"string","description":"Unique identifier of the deleted secret."},"deleted":{"type":"boolean","description":"Whether the secret was successfully deleted."}},"type":"object","required":["id","deleted"],"title":"DeleteSecretResponse"},"File":{"properties":{"id":{"type":"string","description":"Unique identifier for the object."},"source":{"$ref":"#/components/schemas/FileSource","description":"How the file came to exist: uploaded by the user or produced by a run."},"run_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ID of the run that produced this file. Null for uploaded files."},"name":{"type":"string","description":"User-facing filename."},"size_bytes":{"type":"integer","description":"Size of the file in bytes."},"content_type":{"type":"string","description":"MIME type of the file."},"crc32c":{"type":"string","description":"Base64-encoded CRC32C checksum of the file content."},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the file was created."}},"type":"object","required":["id","source","run_id","name","size_bytes","content_type","crc32c","created_at"],"title":"File"},"FileDownloadUrl":{"properties":{"url":{"type":"string","description":"Short-lived signed URL to download the file bytes directly from storage."},"expires_at":{"type":"string","format":"date-time","description":"When the download URL stops being valid."}},"type":"object","required":["url","expires_at"],"title":"FileDownloadUrl"},"FileListSort":{"type":"string","enum":["name","created_at","size_bytes","source"],"title":"FileListSort"},"FileSource":{"type":"string","enum":["UPLOAD","RUN_OUTPUT"],"title":"FileSource"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"InitiateFileUploadRequest":{"properties":{"name":{"type":"string","maxLength":512,"minLength":1,"description":"User-facing filename, e.g. 'report.pdf'."},"size_bytes":{"type":"integer","minimum":0.0,"description":"Exact size of the file in bytes. Enforced by the signed upload URL."},"content_type":{"type":"string","maxLength":256,"minLength":1,"description":"MIME type of the file content."}},"type":"object","required":["name","size_bytes","content_type"],"title":"InitiateFileUploadRequest"},"InitiateFileUploadResponse":{"properties":{"file_id":{"type":"string","description":"Server-assigned ID of the pending file."},"upload_url":{"type":"string","description":"Signed URL the sandbox must PUT the file bytes to."},"upload_headers":{"additionalProperties":{"type":"string"},"type":"object","description":"Headers that must be sent verbatim with the PUT; they are covered by the URL signature."},"expires_at":{"type":"string","format":"date-time","description":"When the upload URL stops being valid."}},"type":"object","required":["file_id","upload_url","upload_headers","expires_at"],"title":"InitiateFileUploadResponse"},"IspProxy":{"properties":{"type":{"type":"string","const":"isp","title":"Type","default":"isp"},"location":{"type":"string","const":"us","title":"Location"}},"additionalProperties":false,"type":"object","required":["location"],"title":"IspProxy"},"ListConnectorRevisionsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Connector"},"type":"array","description":"Every version of the connector, most recent first. The first entry is the current version."}},"type":"object","required":["data"],"title":"ListConnectorRevisionsResponse"},"ListConnectorsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Connector"},"type":"array","description":"Connectors for the requested page, ordered newest first."},"has_more":{"type":"boolean","description":"Whether more connectors exist after this page."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass as the `cursor` query parameter to fetch the next page. Null when has_more is false."}},"type":"object","required":["data","has_more","next_cursor"],"title":"ListConnectorsResponse"},"ListFilesResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/File"},"type":"array","description":"Files for the requested page."},"has_more":{"type":"boolean","description":"Whether more files exist after this page."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass as the `cursor` query parameter to fetch the next page. Null when has_more is false."}},"type":"object","required":["data","has_more","next_cursor"],"title":"ListFilesResponse"},"ListRunsResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Run"},"type":"array","description":"Runs for the requested page, ordered newest first."},"has_more":{"type":"boolean","description":"Whether more runs exist after this page."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass as the `cursor` query parameter to fetch the next page. Null when has_more is false."}},"type":"object","required":["data","has_more","next_cursor"],"title":"ListRunsResponse"},"LoginSecretValue":{"properties":{"username":{"type":"string","description":"Username for the login."},"password":{"type":"string","description":"Password for the login."},"totp_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"TOTP seed, when the login uses 2FA."}},"type":"object","required":["username","password"],"title":"LoginSecretValue"},"PasteField":{"type":"string","enum":["username","password","totp"],"title":"PasteField"},"PasteSecretRequest":{"properties":{"field":{"$ref":"#/components/schemas/PasteField","description":"Which part of the attached login secret to paste."},"secret_id":{"type":"string","description":"The stored login secret to resolve the value from."}},"type":"object","required":["field","secret_id"],"title":"PasteSecretRequest"},"RenameConnectorRequest":{"properties":{"display_name":{"type":"string","maxLength":200,"minLength":1,"description":"Short human-readable name of the connector.","examples":["Invoice retrieval"],"example":"Invoice retrieval"}},"type":"object","required":["display_name"],"title":"RenameConnectorRequest"},"ResidentialProxy":{"properties":{"type":{"type":"string","const":"residential","title":"Type","default":"residential"},"location":{"$ref":"#/components/schemas/Country"}},"additionalProperties":false,"type":"object","required":["location"],"title":"ResidentialProxy"},"Run":{"properties":{"id":{"type":"string","description":"Unique identifier for the object."},"connector_id":{"type":"string","description":"ID of the connector executed in this run."},"connector_version":{"type":"integer","description":"Version of the connector executed in this run. Runs pin the version that was newest when they were created.","examples":[1],"example":1},"arguments":{"additionalProperties":true,"type":"object","description":"Arguments in this run for the connector's input parameters."},"secret_bindings":{"additionalProperties":{"type":"string"},"type":"object","description":"Secrets to use for this run. This dict must be a mapping of secret slot names to secret IDs."},"status":{"$ref":"#/components/schemas/RunStatus","description":"Lifecycle status of the run: `pending`, `running`, `success`, `connector_error`, `timed_out`, `result_too_large`, or `internal_error`. `connector_error` means the connector's code failed (see `error`); `timed_out` and `internal_error` are platform outcomes worth retrying; `result_too_large` means the result exceeded the execution limit or could not be retained for an async caller. Async results above 1 MB require a new synchronous request."},"result":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Execution result of the run, matching the connector's output schema. Synchronous requests return successful results up to the 100 MB execution limit. Only results of at most 1,000,000 UTF-8 JSON bytes are stored. Larger results are returned once to the synchronous caller and are null on later retrieval. If delivery fails, the result cannot be retrieved later."},"result_stored":{"type":"boolean","description":"Whether the result is retained for later retrieval."},"result_size_bytes":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Size of the executor's serialized result in UTF-8 bytes, when known."},"error":{"anyOf":[{"$ref":"#/components/schemas/RunError"},{"type":"null"}],"description":"Why the run failed. Present iff `status` is `connector_error`; for platform failures the status itself is the reason."},"has_logs":{"type":"boolean","description":"Whether the run has associated logs"},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the object was created."},"finished_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"Timestamp when the object was last updated."}},"type":"object","required":["id","connector_id","connector_version","arguments","status","result","result_stored","result_size_bytes","error","has_logs","created_at","finished_at"],"title":"Run"},"RunError":{"properties":{"type":{"type":"string","description":"Machine-readable failure type: `auth_required`, `invalid_input`, `site_unavailable`, `anti_bot`, `site_changed`, `internal_error`, `crash`, or `unhandled`."},"message":{"type":"string","description":"Human-readable description of the failure."},"retryable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether retrying the run with the same arguments is expected to succeed. Null when unknown."},"exception":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Exception class name, when the failure came from a raised exception."},"details":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"Structured context reported by the connector."}},"type":"object","required":["type","message","retryable","exception","details"],"title":"RunError"},"RunLogs":{"properties":{"logs":{"type":"string","description":"Run execution logs."}},"type":"object","required":["logs"],"title":"RunLogs"},"RunStatus":{"type":"string","enum":["pending","running","success","connector_error","timed_out","result_too_large","internal_error"],"title":"RunStatus"},"Secret":{"properties":{"id":{"type":"string","description":"Unique identifier for the secret."},"name":{"type":"string","description":"Human-readable name for the secret."},"secret_type":{"$ref":"#/components/schemas/SecretType","description":"Type of secret: 'login' or 'string'."},"has_totp":{"type":"boolean","description":"Whether the secret has a TOTP configured (only applicable for login type)."},"created_at":{"type":"string","format":"date-time","description":"Timestamp when the secret was created."},"updated_at":{"type":"string","format":"date-time","description":"Timestamp when the secret was last updated."}},"type":"object","required":["id","name","secret_type","has_totp","created_at","updated_at"],"title":"Secret"},"SecretSlotDefinition":{"properties":{"name":{"type":"string","description":"Name of the secret slot, used as the key in a run's secret_bindings.","examples":["amazon_login"],"example":"amazon_login"},"type":{"$ref":"#/components/schemas/SecretType","description":"Type of secret required: 'login' or 'string'.","examples":["login"],"example":"login"},"supports_totp":{"type":"boolean","description":"Whether the connector can perform 2FA/TOTP when the bound login has it configured. Logins without TOTP remain bindable. Only applicable for 'login' type.","default":false,"examples":[false],"example":false},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"What the bound secret is used for, when the connector declares it.","examples":["Amazon account whose orders are fetched."],"example":"Amazon account whose orders are fetched."}},"type":"object","required":["name","type"],"title":"SecretSlotDefinition"},"SecretType":{"type":"string","enum":["login","string"],"title":"SecretType"},"SessionCookie":{"properties":{"name":{"type":"string","description":"The name of the cookie."},"value":{"type":"string","description":"The value of the cookie."},"domain":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The domain of the cookie."},"path":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The path of the cookie."},"secure":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether the cookie is secure."},"http_only":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Whether the cookie is HTTP only."}},"type":"object","required":["name","value"],"title":"SessionCookie","description":"A cookie to set in the browser session."},"SortOrder":{"type":"string","enum":["asc","desc"],"title":"SortOrder"},"StartCaptureSessionRequest":{"properties":{"use_proxy":{"type":"boolean","description":"If true, spawn the browser session using a proxy.","default":false},"cookies":{"items":{"$ref":"#/components/schemas/SessionCookie"},"type":"array","description":"Initial cookies to set in the browser session."}},"type":"object","title":"StartCaptureSessionRequest"},"StringSecretValue":{"properties":{"value":{"type":"string","description":"The secret value."}},"type":"object","required":["value"],"title":"StringSecretValue"},"TotpResponse":{"properties":{"id":{"type":"string","description":"Unique identifier of the secret."},"code":{"type":"string","description":"Current 6-digit TOTP code."}},"type":"object","required":["id","code"],"title":"TotpResponse"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"ApiKeyAuth":{"type":"http","scheme":"bearer","bearerFormat":"API Key","description":"Enter your API key as the bearer token. Set header: `Authorization` to `Bearer <api_key>`"}}},"tags":[{"name":"Capture Sessions","description":"Record a browser session; a completed capture is a reusable input for building connectors."},{"name":"Connectors","description":"Manage connectors."},{"name":"Runs","description":"Execute a connector."},{"name":"Secrets","description":"Manage secrets like login credentials and API keys."}],"servers":[{"url":"https://api.indices.io"}],"security":[{"ApiKeyAuth":[]}]}