text: user274: 3 solutions that I had to unfortunately rule out.
  Potential solution #1
  As far as I know, the conventional way is to do this is by using CCDS ids (e.g. using biomart). However, the issue is that, as I see on the CCDS project page, the last release of CCDS ids was made almost 3 years ago (!) and it seems to be compatible with Ensembl release 92. Then how should one convert ids to the latest Ensembl release e.g. 100?
  
  
  
  
  CCDS Release
  Species
  NCBI Annotation Release
  Ensembl Annotation Release
  Assembly Name
  Assembly ID
  Made Public
  
  
  
  
  22
  Homo sapiens
  109
  92
  GRCh38.p12
  GCF_000001405.38
  06/14/2018
  
  
  
  
  Potential solution #2
  I am also aware of Ensembl's ID History Converter. However, I am looking for a programmatic approach. Also, I noticed that if I try to convert ~>20K ids with ID History Converter, in my experience, there is always some issue. e.g. an error I got when I tried to convert ~70K ensembl transcript ids.
  
  As a side note, I wonder why this ID conversion functionality is not available via Ensembl's REST API. To me, id conversion seems to be a basic enough task that almost every bioinformatician has to do. So it would be immensely helpful to be someday able to do this programmatically using Ensembl's mighty a REST API.
  Potential solution #3
  Finally, as another potential solution, over at Ensembl's FTP website, located within the directory of the release to which I am interested in converting my ids to (release 100, target release), I saw that according to a README file, "ensembl_archive_" directory should contain "Data on historical Ensembl releases". So, I wondered if this directory contains a map between ids from different releases. However, without any extra info about column names, contents, file formats etc, I couldn't really figure out how to use those files. So, I had to rule this one out too.
  Index of /pub/release-100/mysql/ensembl_archive_100/
  ../
  CHECKSUMS                                          26-Mar-2020 14:31                 132
  ens_release.txt.gz                                 26-Mar-2020 14:31                1098
  ensembl_archive_100.sql.gz                         26-Mar-2020 14:31                 943
  release_species.txt.gz                             26-Mar-2020 14:31               39620
  species.txt.gz                                     26-Mar-2020 14:31                6669
  
  Of note, I saw a similar "mysql" directory over at the directory of the release whose ids I want to convert (source release): http://ftp.ensembl.org/pub/grch37/release-100/mysql/homo_sapiens_core_100_37/ . However, again, I do not understand its contents without any extra information.
  So, finally, I am not sure what is the best way to programmatically convert Ensembl ids from between different releases. As a test case scenario, I want to convert all the protein_coding transcript ids from GRCh37 (release 75) to GRCh38 (release 100). If anybody has any suggestions about this, please kindly let me know.
  
  user1332: The ID history converter is available as a Perl script.
  This script accesses these MySQL tables, so you could query these tables directly.
  Note that the mapping session is only one release at a time, so you would need to run 25 queries to go from release 75 to 100.
  
original_text: 274: <p>3 solutions that I had to unfortunately rule out.</p>
  <p><strong>Potential solution #1</strong></p>
  <p>As far as I know, the conventional way is to do this is by using CCDS ids (e.g. using biomart). However, the issue is that, as I see on the <a href="https://www.ncbi.nlm.nih.gov/projects/CCDS/CcdsBrowse.cgi?REQUEST=SHOW_STATISTICS" rel="nofollow noreferrer">CCDS project page</a>, the last release of CCDS ids was made almost 3 years ago (!) and it seems to be compatible with Ensembl release 92. Then how should one convert ids to the latest Ensembl release e.g. 100?</p>
  <div class="s-table-container">
  <table class="s-table">
  <thead>
  <tr>
  <th>CCDS Release</th>
  <th>Species</th>
  <th>NCBI Annotation Release</th>
  <th>Ensembl Annotation Release</th>
  <th>Assembly Name</th>
  <th>Assembly ID</th>
  <th>Made Public</th>
  </tr>
  </thead>
  <tbody>
  <tr>
  <td>22</td>
  <td>Homo sapiens</td>
  <td>109</td>
  <td>92</td>
  <td>GRCh38.p12</td>
  <td>GCF_000001405.38</td>
  <td>06/14/2018</td>
  </tr>
  </tbody>
  </table>
  </div>
  <p><strong>Potential solution #2</strong></p>
  <p>I am also aware of Ensembl's <a href="http://useast.ensembl.org/Homo_sapiens/Tools/IDMapper" rel="nofollow noreferrer">ID History Converter</a>. However, I am looking for a programmatic approach. Also, I noticed that if I try to convert ~&gt;20K ids with ID History Converter, in my experience, there is always some issue. e.g. an error I got when I tried to convert ~70K ensembl transcript ids.
  <a href="https://i.stack.imgur.com/9Ie1t.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/9Ie1t.png" alt="enter image description here" /></a></p>
  <p>As a side note, I wonder why this ID conversion functionality is not available via Ensembl's REST API. To me, id conversion seems to be a basic enough task that almost every bioinformatician has to do. So it would be immensely helpful to be someday able to do this programmatically using Ensembl's mighty a REST API.</p>
  <p><strong>Potential solution #3</strong></p>
  <p>Finally, as another potential solution, over at Ensembl's FTP website, located within the directory of the release to which I am interested in converting my ids to (release 100, target release), I saw that according to a <a href="http://ftp.ensembl.org/pub/release-100/README" rel="nofollow noreferrer">README file</a>, &quot;ensembl_archive_&quot; directory should contain &quot;Data on historical Ensembl releases&quot;. So, I wondered if this directory contains a map between ids from different releases. However, without any extra info about column names, contents, file formats etc, I couldn't really figure out how to use those files. So, I had to rule this one out too.</p>
  <pre><code>Index of /pub/release-100/mysql/ensembl_archive_100/
  ../
  CHECKSUMS                                          26-Mar-2020 14:31                 132
  ens_release.txt.gz                                 26-Mar-2020 14:31                1098
  ensembl_archive_100.sql.gz                         26-Mar-2020 14:31                 943
  release_species.txt.gz                             26-Mar-2020 14:31               39620
  species.txt.gz                                     26-Mar-2020 14:31                6669
  </code></pre>
  <p>Of note, I saw a similar &quot;mysql&quot; directory over at the directory of the release whose ids I want to convert (source release): <code>http://ftp.ensembl.org/pub/grch37/release-100/mysql/homo_sapiens_core_100_37/ </code>. However, again, I do not understand its contents without any extra information.</p>
  <p>So, finally, I am not sure what is the best way to programmatically convert Ensembl ids from between different releases. As a test case scenario, I want to convert all the protein_coding transcript ids from GRCh37 (release 75) to GRCh38 (release 100). If anybody has any suggestions about this, please kindly let me know.</p>
   1332: <p>The ID history converter is available as a <a href="https://github.com/Ensembl/ensembl-tools/tree/release/103/scripts/id_history_converter" rel="nofollow noreferrer">Perl script</a>.</p>
  <p>This script accesses these <a href="http://www.ensembl.org/info/docs/api/core/core_schema.html#gene_archive" rel="nofollow noreferrer">MySQL tables</a>, so you could query these tables directly.</p>
  <p>Note that the mapping session is only one release at a time, so you would need to run 25 queries to go from release 75 to 100.</p>
  