{"components":{"securitySchemes":{"ApiKeyAuth":{"description":"Only /api/v1/links requires one. Every other endpoint is open, and a key raises the rate limit rather than unlocking data.","in":"header","name":"X-API-Key","type":"apiKey"}}},"externalDocs":{"description":"Developer documentation","url":"https://www.mygenelog.com/developers"},"info":{"contact":{"name":"MyGeneLog","url":"https://www.mygenelog.com/developers"},"description":"Variants, the genes they sit in, the conditions and drugs they reach, and the topics they turn up beside. Structured fields are CC BY 4.0 and free to use for any purpose including grounding an AI system, with attribution. The written sections are published on the pages rather than served here. The connections between entities are the Gene Knowledge Graph, served at /api/v1/links to subscribers and readable one at a time on every page.","license":{"name":"CC BY 4.0","url":"https://creativecommons.org/licenses/by/4.0/"},"summary":"Plain-language human genetics, with a source on every record.","title":"MyGeneLog API","version":"1.0.0"},"openapi":"3.1.0","paths":{"/api/v1/conditions":{"get":{"description":"2.5 KB a row of work, so ten a page.","operationId":"api_v1_conditions","parameters":[{"description":"Which page to return, 1-based.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Records per page. Capped at 100 on every plan.","in":"query","name":"per_page","required":false,"schema":{"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"Summary, prevalence note, inheritance pattern, MONDO/OMIM/ICD-10 codes, cited sources, and the date each page was last checked. A count of pharmacogenomic notes, never the notes themselves.","tags":["conditions"]}},"/api/v1/conditions/{slug}":{"get":{"description":"open_questions is exposed on purpose \u2014 what we could not verify.","operationId":"api_v1_conditions_slug","parameters":[{"description":"The record's slug, as it appears in its URL.","in":"path","name":"slug","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"One condition, plus open_questions and a faq count.","tags":["conditions"]}},"/api/v1/drugs":{"get":{"description":"Which genes is a curated edge, so it is map rather than node.","operationId":"api_v1_drugs","parameters":[{"description":"Which page to return, 1-based.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Records per page. Capped at 100 on every plan.","in":"query","name":"per_page","required":false,"schema":{"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"Slug, name, class, summary, and how many genes reach it.","tags":["drugs"]}},"/api/v1/drugs/{slug}":{"get":{"description":"Every named thing gets an address, thin or not \u2014 what fills it later is not knowable now.","operationId":"api_v1_drugs_slug","parameters":[{"description":"The record's slug, as it appears in its URL.","in":"path","name":"slug","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"One drug: what it is, and a gene count.","tags":["drugs"]}},"/api/v1/genes":{"get":{"description":"Counts, not lists \u2014 1,657 genes naming their variants would be the edge list in seventeen calls. Someone arriving with \"MTHFR\" and no rsid starts here.","operationId":"api_v1_genes","parameters":[{"description":"Which page to return, 1-based.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Records per page. Capped at 100 on every plan.","in":"query","name":"per_page","required":false,"schema":{"maximum":100,"minimum":1,"type":"integer"}},{"description":"Substring match on the gene symbol.","in":"query","name":"q","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"Every gene symbol with how many variants, conditions and drugs hang off it.","tags":["genes"]}},"/api/v1/genes/{symbol}":{"get":{"description":"Case-insensitive. Which variants sit in a gene is structural \u2014 it is what the gene is made of. Where it leads is map.","operationId":"api_v1_genes_symbol","parameters":[{"description":"A gene symbol, case-insensitive.","in":"path","name":"symbol","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"One gene with the variants inside it, and counts for the conditions and drugs it reaches.","tags":["genes"]}},"/api/v1/links":{"get":{"description":"The only paid endpoint. Not a fact anyone is being denied \u2014 every edge is readable on a page. What is sold is the assembly.","operationId":"api_v1_links","parameters":[{"description":"Which page to return, 1-based.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Records per page. Capped at 100 on every plan.","in":"query","name":"per_page","required":false,"schema":{"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"402":{"description":"This endpoint serves the Gene Knowledge Graph and needs an API Pro subscription. The body says what it costs, where to subscribe, and links to the page describing the graph."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"security":[{"ApiKeyAuth":[]}],"summary":"The assembled Gene Knowledge Graph: every edge with its two endpoints, its evidence tier and where to check it.","tags":["links"]}},"/api/v1/senses":{"get":{"description":"Group membership is somebody deciding this position belongs here, so it is a curated edge like any other.","operationId":"api_v1_senses","parameters":[{"description":"Which page to return, 1-based.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Records per page. Capped at 100 on every plan.","in":"query","name":"per_page","required":false,"schema":{"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"The two chemosensory groups, their molecules, and a count each.","tags":["senses"]}},"/api/v1/senses/{slug}":{"get":{"description":"Completes the pair: every axis has a list and a single record.","operationId":"api_v1_senses_slug","parameters":[{"description":"The record's slug, as it appears in its URL.","in":"path","name":"slug","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"One smell or taste group.","tags":["senses"]}},"/api/v1/topics":{"get":{"description":"Counts, never the variants. 693 edges across 27 rows would rebuild the graph in 27 calls, so this is where the line has teeth.","operationId":"api_v1_topics","parameters":[{"description":"Which page to return, 1-based.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Records per page. Capped at 100 on every plan.","in":"query","name":"per_page","required":false,"schema":{"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"Slug, label, hook, and how many variants sit under the word \u2014 split into confirmed and co-mentioned.","tags":["topics"]}},"/api/v1/topics/{slug}":{"get":{"description":"Which variants is 693 co-mention edges, the largest single piece of the map.","operationId":"api_v1_topics_slug","parameters":[{"description":"The record's slug, as it appears in its URL.","in":"path","name":"slug","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"One topic, its hook, and counts split into confirmed and co-mentioned.","tags":["topics"]}},"/api/v1/variants":{"get":{"description":"A variant row is public research restated. It is the axis we give away most freely, and the reason a page holds 100 of them.","operationId":"api_v1_variants","parameters":[{"description":"Which page to return, 1-based.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Records per page. Capped at 100 on every plan.","in":"query","name":"per_page","required":false,"schema":{"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"Every published variant: rsid, gene, trait, risk tier, one note per genotype, the source it came from, and a guideline note.","tags":["variants"]}},"/api/v1/variants/{rsid}":{"get":{"description":"No joins. Which conditions name it is on the page.","operationId":"api_v1_variants_rsid","parameters":[{"description":"A dbSNP identifier, e.g. rs4988235.","in":"path","name":"rsid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"One variant, same fields as the list.","tags":["variants"]}},"/ko/api/v1/conditions":{"get":{"description":"Same endpoint, translated fields. A localized list holds only what has been translated and reviewed, so its totals are smaller; an untranslated record answers 404 pointing at the English original rather than quietly returning English text.","operationId":"ko_api_v1_conditions","parameters":[{"description":"Which page to return, 1-based.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Records per page. Capped at 100 on every plan.","in":"query","name":"per_page","required":false,"schema":{"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"Summary, prevalence note, inheritance pattern, MONDO/OMIM/ICD-10 codes, cited sources, and the date each page was last checked. A count of pharmacogenomic notes, never the notes themselves. (Korean)","tags":["conditions"]}},"/ko/api/v1/conditions/{slug}":{"get":{"description":"Same endpoint, translated fields. A localized list holds only what has been translated and reviewed, so its totals are smaller; an untranslated record answers 404 pointing at the English original rather than quietly returning English text.","operationId":"ko_api_v1_conditions_slug","parameters":[{"description":"The record's slug, as it appears in its URL.","in":"path","name":"slug","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"One condition, plus open_questions and a faq count. (Korean)","tags":["conditions"]}},"/ko/api/v1/drugs":{"get":{"description":"Same endpoint, translated fields. A localized list holds only what has been translated and reviewed, so its totals are smaller; an untranslated record answers 404 pointing at the English original rather than quietly returning English text.","operationId":"ko_api_v1_drugs","parameters":[{"description":"Which page to return, 1-based.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Records per page. Capped at 100 on every plan.","in":"query","name":"per_page","required":false,"schema":{"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"Slug, name, class, summary, and how many genes reach it. (Korean)","tags":["drugs"]}},"/ko/api/v1/drugs/{slug}":{"get":{"description":"Same endpoint, translated fields. A localized list holds only what has been translated and reviewed, so its totals are smaller; an untranslated record answers 404 pointing at the English original rather than quietly returning English text.","operationId":"ko_api_v1_drugs_slug","parameters":[{"description":"The record's slug, as it appears in its URL.","in":"path","name":"slug","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"One drug: what it is, and a gene count. (Korean)","tags":["drugs"]}},"/ko/api/v1/genes":{"get":{"description":"Same endpoint, translated fields. A localized list holds only what has been translated and reviewed, so its totals are smaller; an untranslated record answers 404 pointing at the English original rather than quietly returning English text.","operationId":"ko_api_v1_genes","parameters":[{"description":"Which page to return, 1-based.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Records per page. Capped at 100 on every plan.","in":"query","name":"per_page","required":false,"schema":{"maximum":100,"minimum":1,"type":"integer"}},{"description":"Substring match on the gene symbol.","in":"query","name":"q","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"Every gene symbol with how many variants, conditions and drugs hang off it. (Korean)","tags":["genes"]}},"/ko/api/v1/genes/{symbol}":{"get":{"description":"Same endpoint, translated fields. A localized list holds only what has been translated and reviewed, so its totals are smaller; an untranslated record answers 404 pointing at the English original rather than quietly returning English text.","operationId":"ko_api_v1_genes_symbol","parameters":[{"description":"A gene symbol, case-insensitive.","in":"path","name":"symbol","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"One gene with the variants inside it, and counts for the conditions and drugs it reaches. (Korean)","tags":["genes"]}},"/ko/api/v1/links":{"get":{"description":"Same endpoint, translated fields. A localized list holds only what has been translated and reviewed, so its totals are smaller; an untranslated record answers 404 pointing at the English original rather than quietly returning English text.","operationId":"ko_api_v1_links","parameters":[{"description":"Which page to return, 1-based.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Records per page. Capped at 100 on every plan.","in":"query","name":"per_page","required":false,"schema":{"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"402":{"description":"This endpoint serves the Gene Knowledge Graph and needs an API Pro subscription. The body says what it costs, where to subscribe, and links to the page describing the graph."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"security":[{"ApiKeyAuth":[]}],"summary":"The assembled Gene Knowledge Graph: every edge with its two endpoints, its evidence tier and where to check it. (Korean)","tags":["links"]}},"/ko/api/v1/senses":{"get":{"description":"Same endpoint, translated fields. A localized list holds only what has been translated and reviewed, so its totals are smaller; an untranslated record answers 404 pointing at the English original rather than quietly returning English text.","operationId":"ko_api_v1_senses","parameters":[{"description":"Which page to return, 1-based.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Records per page. Capped at 100 on every plan.","in":"query","name":"per_page","required":false,"schema":{"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"The two chemosensory groups, their molecules, and a count each. (Korean)","tags":["senses"]}},"/ko/api/v1/senses/{slug}":{"get":{"description":"Same endpoint, translated fields. A localized list holds only what has been translated and reviewed, so its totals are smaller; an untranslated record answers 404 pointing at the English original rather than quietly returning English text.","operationId":"ko_api_v1_senses_slug","parameters":[{"description":"The record's slug, as it appears in its URL.","in":"path","name":"slug","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"One smell or taste group. (Korean)","tags":["senses"]}},"/ko/api/v1/topics":{"get":{"description":"Same endpoint, translated fields. A localized list holds only what has been translated and reviewed, so its totals are smaller; an untranslated record answers 404 pointing at the English original rather than quietly returning English text.","operationId":"ko_api_v1_topics","parameters":[{"description":"Which page to return, 1-based.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Records per page. Capped at 100 on every plan.","in":"query","name":"per_page","required":false,"schema":{"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"Slug, label, hook, and how many variants sit under the word \u2014 split into confirmed and co-mentioned. (Korean)","tags":["topics"]}},"/ko/api/v1/topics/{slug}":{"get":{"description":"Same endpoint, translated fields. A localized list holds only what has been translated and reviewed, so its totals are smaller; an untranslated record answers 404 pointing at the English original rather than quietly returning English text.","operationId":"ko_api_v1_topics_slug","parameters":[{"description":"The record's slug, as it appears in its URL.","in":"path","name":"slug","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"One topic, its hook, and counts split into confirmed and co-mentioned. (Korean)","tags":["topics"]}},"/ko/api/v1/variants":{"get":{"description":"Same endpoint, translated fields. A localized list holds only what has been translated and reviewed, so its totals are smaller; an untranslated record answers 404 pointing at the English original rather than quietly returning English text.","operationId":"ko_api_v1_variants","parameters":[{"description":"Which page to return, 1-based.","in":"query","name":"page","required":false,"schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Records per page. Capped at 100 on every plan.","in":"query","name":"per_page","required":false,"schema":{"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"Every published variant: rsid, gene, trait, risk tier, one note per genotype, the source it came from, and a guideline note. (Korean)","tags":["variants"]}},"/ko/api/v1/variants/{rsid}":{"get":{"description":"Same endpoint, translated fields. A localized list holds only what has been translated and reviewed, so its totals are smaller; an untranslated record answers 404 pointing at the English original rather than quietly returning English text.","operationId":"ko_api_v1_variants_rsid","parameters":[{"description":"A dbSNP identifier, e.g. rs4988235.","in":"path","name":"rsid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"type":"object"}}},"description":"Success."},"404":{"description":"No such record, or no translation of it in this language."},"429":{"description":"Over the rate limit."}},"summary":"One variant, same fields as the list. (Korean)","tags":["variants"]}}},"servers":[{"url":"https://www.mygenelog.com"}]}
