{"components":{"schemas":{"Author":{"additionalProperties":true,"description":"Public author fields returned by the upstream provider.","properties":{"description":{"type":"string"},"followers":{"type":"integer"},"following":{"type":"integer"},"id":{"type":"string"},"name":{"type":"string"},"screen_name":{"type":"string"},"url":{"format":"uri","type":"string"}},"type":"object"},"BrowseResponse":{"additionalProperties":true,"description":"Structured browse response returned when format=json.","properties":{"cache":{"enum":["hit","miss","bypass"],"type":"string"},"feed":{"enum":["latest","media","top"],"type":"string"},"handle":{"type":"string"},"limit":{"type":"integer"},"nextCursor":{"type":"string"},"page":{"type":"integer"},"posts":{"items":{"$ref":"#/components/schemas/Post"},"type":"array"},"profile":{"$ref":"#/components/schemas/Author"},"query":{"type":"string"},"resource":{"enum":["profile","search","followers","following"],"type":"string"},"users":{"items":{"$ref":"#/components/schemas/Author"},"type":"array"}},"type":"object"},"ConvertResponse":{"description":"Structured conversion response returned when format=json.","properties":{"cache":{"enum":["hit","miss","bypass"],"type":"string"},"compact":{"type":"boolean"},"format":{"enum":["markdown","obsidian","json"],"type":"string"},"markdown":{"type":"string"},"postCount":{"type":"integer"},"posts":{"items":{"$ref":"#/components/schemas/Post"},"type":"array"},"source":{"type":"string"},"url":{"format":"uri","type":"string"},"warnings":{"items":{"type":"string"},"type":"array"}},"required":["cache","compact","format","markdown","postCount","posts","source","url","warnings"],"type":"object"},"Error":{"properties":{"code":{"type":"string"},"error":{"type":"string"}},"required":["error","code"],"type":"object"},"HealthResponse":{"description":"Static liveness response. It does not verify upstream providers or cache availability.","properties":{"check":{"const":"liveness","type":"string"},"status":{"const":"ok","type":"string"},"version":{"const":"1","type":"string"}},"required":["check","status","version"],"type":"object"},"Post":{"additionalProperties":true,"description":"Public post fields returned by the upstream provider.","properties":{"author":{"$ref":"#/components/schemas/Author"},"context":{"enum":["parent","post","thread","reply"],"type":"string"},"created_at":{"type":"string"},"id":{"type":"string"},"likes":{"type":"integer"},"text":{"type":"string"},"url":{"format":"uri","type":"string"}},"type":"object"}}},"externalDocs":{"description":"Human-readable API documentation.","url":"https://x-lookup.mynameistito.com/docs"},"info":{"contact":{"url":"https://github.com/mynameistito/x-lookup"},"description":"Read-only access to public X/Twitter statuses, profiles, search, and social graphs. Query parameters are strings on the wire; integer parameters are normalized and clamped as described.","license":{"name":"MIT","url":"https://opensource.org/license/mit"},"title":"x-lookup API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/api/browse":{"get":{"description":"Browse a public profile, search results, or connections.","operationId":"browseX","parameters":[{"description":"Resource to browse.","in":"query","name":"resource","required":true,"schema":{"enum":["profile","search","followers","following"],"type":"string"}},{"description":"X handle, with an optional leading `@`.","in":"query","name":"handle","required":false,"schema":{"pattern":"^@?[A-Za-z0-9_]{1,15}$","type":"string"}},{"description":"Search query, including X operators such as from: or since:.","in":"query","name":"q","required":false,"schema":{"minLength":1,"type":"string"}},{"description":"Search result ordering. Unsupported values fall back to `latest`.","in":"query","name":"feed","required":false,"schema":{"default":"latest","enum":["latest","media","top"],"type":"string"}},{"description":"Opaque continuation cursor returned as `nextCursor`.","in":"query","name":"cursor","required":false,"schema":{"type":"string"}},{"description":"Page to fetch when no cursor is supplied. Values are clamped to 1-10.","in":"query","name":"page","required":false,"schema":{"default":1,"maximum":10,"minimum":1,"type":"string"}},{"description":"Maximum results per response. Values are clamped to 1-50.","in":"query","name":"limit","required":false,"schema":{"default":20,"maximum":50,"minimum":1,"type":"string"}},{"description":"Include richer post metrics and user details.","in":"query","name":"full","required":false,"schema":{"default":"false","enum":["1","true"],"type":"string"}},{"description":"Response representation.","in":"query","name":"format","required":false,"schema":{"default":"markdown","enum":["markdown","json"],"type":"string"}},{"description":"Bypass the application cache.","in":"query","name":"nocache","required":false,"schema":{"default":"false","enum":["1","true"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowseResponse"}},"text/markdown":{"schema":{"type":"string"}}},"description":"Browse results in the requested representation."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request could not be completed."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request could not be completed."}}}},"/api/convert":{"get":{"description":"Convert a public X/Twitter status or thread.","operationId":"convertStatus","parameters":[{"description":"Public X or Twitter status URL.","in":"query","name":"url","required":false,"schema":{"format":"uri","type":"string"}},{"description":"Status author handle, used with `id` when `url` is absent.","in":"query","name":"handle","required":false,"schema":{"pattern":"^@?[A-Za-z0-9_]{1,15}$","type":"string"}},{"description":"Numeric X status ID, used with `handle` when `url` is absent.","in":"query","name":"id","required":false,"schema":{"pattern":"^\\d+$","type":"string"}},{"description":"Response representation.","in":"query","name":"format","required":false,"schema":{"default":"markdown","enum":["markdown","obsidian","json"],"type":"string"}},{"description":"Thread selection: `off`, `full`, `conversation`, or a number from 2 to 100.","in":"query","name":"thread","required":false,"schema":{"default":"full","enum":["off","full","conversation"],"maximum":100,"minimum":2,"pattern":"^(?:off|full|conversation|[2-9]|[1-9]\\d|100)$","type":"string"}},{"description":"Conversation context to include.","in":"query","name":"context","required":false,"schema":{"default":"full","enum":["full","thread"],"type":"string"}},{"description":"Replies to include around the focal post.","in":"query","name":"replies","required":false,"schema":{"default":"top","enum":["top","recent","off"],"type":"string"}},{"description":"Author information included in rendered output.","in":"query","name":"userinfo","required":false,"schema":{"default":"off","enum":["off","author","all"],"type":"string"}},{"description":"Set to true to expand rendered metadata.","in":"query","name":"full","required":false,"schema":{"default":"false","enum":["1","true","yes"],"type":"string"}},{"description":"Set to true to bypass the cache.","in":"query","name":"nocache","required":false,"schema":{"default":"false","enum":["1","true","yes"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvertResponse"}},"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string"}}},"description":"Converted status or thread in the requested representation."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request could not be completed."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request could not be completed."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request could not be completed."}}}},"/health":{"get":{"description":"Return static liveness status. This does not verify upstream providers or cache availability.","operationId":"getHealth","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}},"description":"The service is healthy."}}}},"/oembed":{"get":{"description":"Render an oEmbed response for an X status URL.","operationId":"getOEmbed","parameters":[{"description":"Status URL to embed.","in":"query","name":"url","required":false,"schema":{"format":"uri","type":"string"}},{"description":"Optional title/text override.","in":"query","name":"text","required":false,"schema":{"type":"string"}},{"description":"Optional author name override.","in":"query","name":"author","required":false,"schema":{"type":"string"}},{"description":"Optional status text override.","in":"query","name":"status","required":false,"schema":{"type":"string"}},{"description":"Optional provider name override.","in":"query","name":"provider","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"oEmbed response."}}}},"/search":{"get":{"description":"Browse a public profile, search results, or connections.","operationId":"searchPosts","parameters":[{"description":"Search query, including X operators such as from: or since:.","in":"query","name":"q","required":true,"schema":{"minLength":1,"type":"string"}},{"description":"Search result ordering. Unsupported values fall back to `latest`.","in":"query","name":"feed","required":false,"schema":{"default":"latest","enum":["latest","media","top"],"type":"string"}},{"description":"Opaque continuation cursor returned as `nextCursor`.","in":"query","name":"cursor","required":false,"schema":{"type":"string"}},{"description":"Page to fetch when no cursor is supplied. Values are clamped to 1-10.","in":"query","name":"page","required":false,"schema":{"default":1,"maximum":10,"minimum":1,"type":"string"}},{"description":"Maximum results per response. Values are clamped to 1-50.","in":"query","name":"limit","required":false,"schema":{"default":20,"maximum":50,"minimum":1,"type":"string"}},{"description":"Include richer post metrics and user details.","in":"query","name":"full","required":false,"schema":{"default":"false","enum":["1","true"],"type":"string"}},{"description":"Response representation.","in":"query","name":"format","required":false,"schema":{"default":"markdown","enum":["markdown","json"],"type":"string"}},{"description":"Bypass the application cache.","in":"query","name":"nocache","required":false,"schema":{"default":"false","enum":["1","true"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowseResponse"}},"text/markdown":{"schema":{"type":"string"}}},"description":"Browse results in the requested representation."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request could not be completed."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request could not be completed."}}}},"/{handle}":{"get":{"description":"Browse a public profile, search results, or connections.","operationId":"getProfile","parameters":[{"description":"X profile handle.","in":"path","name":"handle","required":true,"schema":{"pattern":"^[A-Za-z0-9_]{1,15}$","type":"string"}},{"description":"Opaque continuation cursor returned as `nextCursor`.","in":"query","name":"cursor","required":false,"schema":{"type":"string"}},{"description":"Page to fetch when no cursor is supplied. Values are clamped to 1-10.","in":"query","name":"page","required":false,"schema":{"default":1,"maximum":10,"minimum":1,"type":"string"}},{"description":"Maximum results per response. Values are clamped to 1-50.","in":"query","name":"limit","required":false,"schema":{"default":20,"maximum":50,"minimum":1,"type":"string"}},{"description":"Include richer post metrics and user details.","in":"query","name":"full","required":false,"schema":{"default":"false","enum":["1","true"],"type":"string"}},{"description":"Response representation.","in":"query","name":"format","required":false,"schema":{"default":"markdown","enum":["markdown","json"],"type":"string"}},{"description":"Bypass the application cache.","in":"query","name":"nocache","required":false,"schema":{"default":"false","enum":["1","true"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowseResponse"}},"text/markdown":{"schema":{"type":"string"}}},"description":"Browse results in the requested representation."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request could not be completed."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request could not be completed."}}}},"/{handle}/followers":{"get":{"description":"Browse a public profile, search results, or connections.","operationId":"listFollowers","parameters":[{"description":"X profile handle.","in":"path","name":"handle","required":true,"schema":{"pattern":"^[A-Za-z0-9_]{1,15}$","type":"string"}},{"description":"Opaque continuation cursor returned as `nextCursor`.","in":"query","name":"cursor","required":false,"schema":{"type":"string"}},{"description":"Page to fetch when no cursor is supplied. Values are clamped to 1-10.","in":"query","name":"page","required":false,"schema":{"default":1,"maximum":10,"minimum":1,"type":"string"}},{"description":"Maximum results per response. Values are clamped to 1-50.","in":"query","name":"limit","required":false,"schema":{"default":20,"maximum":50,"minimum":1,"type":"string"}},{"description":"Include richer post metrics and user details.","in":"query","name":"full","required":false,"schema":{"default":"false","enum":["1","true"],"type":"string"}},{"description":"Response representation.","in":"query","name":"format","required":false,"schema":{"default":"markdown","enum":["markdown","json"],"type":"string"}},{"description":"Bypass the application cache.","in":"query","name":"nocache","required":false,"schema":{"default":"false","enum":["1","true"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowseResponse"}},"text/markdown":{"schema":{"type":"string"}}},"description":"Browse results in the requested representation."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request could not be completed."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request could not be completed."}}}},"/{handle}/following":{"get":{"description":"Browse a public profile, search results, or connections.","operationId":"listFollowing","parameters":[{"description":"X profile handle.","in":"path","name":"handle","required":true,"schema":{"pattern":"^[A-Za-z0-9_]{1,15}$","type":"string"}},{"description":"Opaque continuation cursor returned as `nextCursor`.","in":"query","name":"cursor","required":false,"schema":{"type":"string"}},{"description":"Page to fetch when no cursor is supplied. Values are clamped to 1-10.","in":"query","name":"page","required":false,"schema":{"default":1,"maximum":10,"minimum":1,"type":"string"}},{"description":"Maximum results per response. Values are clamped to 1-50.","in":"query","name":"limit","required":false,"schema":{"default":20,"maximum":50,"minimum":1,"type":"string"}},{"description":"Include richer post metrics and user details.","in":"query","name":"full","required":false,"schema":{"default":"false","enum":["1","true"],"type":"string"}},{"description":"Response representation.","in":"query","name":"format","required":false,"schema":{"default":"markdown","enum":["markdown","json"],"type":"string"}},{"description":"Bypass the application cache.","in":"query","name":"nocache","required":false,"schema":{"default":"false","enum":["1","true"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrowseResponse"}},"text/markdown":{"schema":{"type":"string"}}},"description":"Browse results in the requested representation."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request could not be completed."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request could not be completed."}}}},"/{handle}/status/{id}":{"get":{"description":"Convert a public X/Twitter status or thread.","operationId":"convertStatusPath","parameters":[{"description":"Status author handle.","in":"path","name":"handle","required":true,"schema":{"pattern":"^[A-Za-z0-9_]{1,15}$","type":"string"}},{"description":"Numeric X status ID.","in":"path","name":"id","required":true,"schema":{"pattern":"^\\d+$","type":"string"}},{"description":"Response representation.","in":"query","name":"format","required":false,"schema":{"default":"markdown","enum":["markdown","obsidian","json"],"type":"string"}},{"description":"Thread selection: `off`, `full`, `conversation`, or a number from 2 to 100.","in":"query","name":"thread","required":false,"schema":{"default":"full","enum":["off","full","conversation"],"maximum":100,"minimum":2,"pattern":"^(?:off|full|conversation|[2-9]|[1-9]\\d|100)$","type":"string"}},{"description":"Conversation context to include.","in":"query","name":"context","required":false,"schema":{"default":"full","enum":["full","thread"],"type":"string"}},{"description":"Replies to include around the focal post.","in":"query","name":"replies","required":false,"schema":{"default":"top","enum":["top","recent","off"],"type":"string"}},{"description":"Author information included in rendered output.","in":"query","name":"userinfo","required":false,"schema":{"default":"off","enum":["off","author","all"],"type":"string"}},{"description":"Set to true to expand rendered metadata.","in":"query","name":"full","required":false,"schema":{"default":"false","enum":["1","true","yes"],"type":"string"}},{"description":"Set to true to bypass the cache.","in":"query","name":"nocache","required":false,"schema":{"default":"false","enum":["1","true","yes"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConvertResponse"}},"text/html":{"schema":{"type":"string"}},"text/markdown":{"schema":{"type":"string"}}},"description":"Converted status or thread in the requested representation."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request could not be completed."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request could not be completed."},"502":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"description":"The request could not be completed."}}}}},"servers":[{"url":"https://x-lookup.mynameistito.com"}]}