<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: GuGuData</title>
    <description>The latest articles on DEV Community by GuGuData (@gugudata).</description>
    <link>https://dev.to/gugudata</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F846892%2Fcf1cfdc9-267e-479d-9c42-e98850cc237f.png</url>
      <title>DEV Community: GuGuData</title>
      <link>https://dev.to/gugudata</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gugudata"/>
    <language>en</language>
    <item>
      <title>Text Processing APIs for Multilingual Developer Products</title>
      <dc:creator>GuGuData</dc:creator>
      <pubDate>Wed, 29 Apr 2026 15:33:40 +0000</pubDate>
      <link>https://dev.to/gugudata/text-processing-apis-for-multilingual-developer-products-3kb5</link>
      <guid>https://dev.to/gugudata/text-processing-apis-for-multilingual-developer-products-3kb5</guid>
      <description>&lt;h1&gt;
  
  
  Text Processing APIs: Language Detection, Similarity, Chinese Conversion, and Metadata Lookup
&lt;/h1&gt;

&lt;p&gt;Text processing is a common layer in search, publishing, content review, data enrichment, and multilingual products. Applications need to detect languages, compare text, normalize Chinese scripts, enrich book records, or retrieve structured cultural content.&lt;/p&gt;

&lt;p&gt;GuGuData text APIs provide focused endpoints for these workflows. This guide explains how to choose the right API and how to combine them safely in backend systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  API lineup
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Workflow&lt;/th&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Endpoint&lt;/th&gt;
&lt;th&gt;Detail page&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Text language detection&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/text/detectlanguage&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/nlpdetectlanguage" rel="noopener noreferrer"&gt;Detect Text Language&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text similarity&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/text/similarity&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/textsimilarity" rel="noopener noreferrer"&gt;Text Similarity Calculator&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Simplified and Traditional Chinese conversion&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/text/stconvert&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/stconvert" rel="noopener noreferrer"&gt;Simplified and Traditional Chinese Converter&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chinese poem lookup&lt;/td&gt;
&lt;td&gt;&lt;code&gt;GET&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/text/chinese-poem&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/chinesepoem" rel="noopener noreferrer"&gt;Chinese Poem Query&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ISBN book metadata lookup&lt;/td&gt;
&lt;td&gt;&lt;code&gt;GET&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/text/isbn&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/isbn" rel="noopener noreferrer"&gt;ISBN Book Metadata Lookup&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The public OpenAPI JSON is available at &lt;a href="https://gugudata.io/assets/openapi/gugudata.openapi.3.1.json" rel="noopener noreferrer"&gt;https://gugudata.io/assets/openapi/gugudata.openapi.3.1.json&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to use these APIs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Route user content by detected language before translation, moderation, or indexing.&lt;/li&gt;
&lt;li&gt;Compare two pieces of text for semantic similarity in search, deduplication, or review workflows.&lt;/li&gt;
&lt;li&gt;Normalize Simplified and Traditional Chinese content for publishing and regional display.&lt;/li&gt;
&lt;li&gt;Enrich book records from ISBN or title keywords.&lt;/li&gt;
&lt;li&gt;Add structured Chinese poem content to education, literature, or cultural products.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Choosing the right endpoint
&lt;/h2&gt;

&lt;p&gt;Use language detection before language-specific processing, especially when input can come from many countries or regions. Use text similarity when the question is whether two text inputs are semantically close enough for your product workflow.&lt;/p&gt;

&lt;p&gt;Use Chinese conversion when the script needs to match a target locale. Use ISBN lookup when your source data contains book identifiers or title keywords. Use Chinese poem lookup when the product needs structured poem content rather than free-form search results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example requests
&lt;/h2&gt;

&lt;p&gt;Detect the language of text:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.gugudata.io/v1/text/detectlanguage?appkey=YOUR_APPKEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'
{
  "content": "GuGuData provides API products for developers around the world."
}
'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Search book metadata by ISBN:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"https://api.gugudata.io/v1/text/isbn?appkey=YOUR_APPKEY&amp;amp;isbn=9780141182803&amp;amp;pageIndex=1&amp;amp;pageSize=10"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Response handling
&lt;/h2&gt;

&lt;p&gt;Text APIs use the standard GuGuData JSON response shape:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dataStatus"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusCode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"SUCCESS"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusDescription"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"successfully"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"responseDateTime"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-04-29T00:00:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dataTotalCount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"requestParameter"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Language"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"English"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"LanguageAbbr"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"en"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Probability"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.999341&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For ranking or confidence-based results, define product-level thresholds in your own service instead of treating every result as equally strong.&lt;/p&gt;

&lt;h2&gt;
  
  
  HTTP status codes
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;HTTP status&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Recommended handling&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;200&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request processed successfully.&lt;/td&gt;
&lt;td&gt;Parse the documented response body for the endpoint result.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;400&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Invalid request parameters or request format.&lt;/td&gt;
&lt;td&gt;Check required fields, text length, and query parameters.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;401&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Missing or unknown application key.&lt;/td&gt;
&lt;td&gt;Send a valid &lt;code&gt;appkey&lt;/code&gt; with the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;403&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The application key is recognized but access is not allowed.&lt;/td&gt;
&lt;td&gt;Check subscription, trial state, and endpoint access.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;429&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request rate or trial usage limit exceeded.&lt;/td&gt;
&lt;td&gt;Reduce concurrency or retry after the limit window resets.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;500&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Internal service error.&lt;/td&gt;
&lt;td&gt;Retry later or contact support if the error persists.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;503&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Upstream service unavailable.&lt;/td&gt;
&lt;td&gt;Retry later when the dependency is available again.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Implementation notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Keep API calls server-side so the &lt;code&gt;appkey&lt;/code&gt; is not exposed in public frontend code.&lt;/li&gt;
&lt;li&gt;Normalize input text before similarity checks if whitespace, punctuation, or casing should not affect your workflow.&lt;/li&gt;
&lt;li&gt;Store confidence scores and detected language codes with downstream records.&lt;/li&gt;
&lt;li&gt;Use explicit thresholds for automated actions and route uncertain results to review when needed.&lt;/li&gt;
&lt;li&gt;Cache stable lookup results such as ISBN metadata when your product allows it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Should I use language detection before translation?
&lt;/h3&gt;

&lt;p&gt;Yes. Language detection helps route content to the right downstream workflow and can reduce incorrect assumptions when users submit multilingual content.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can text similarity replace business review rules?
&lt;/h3&gt;

&lt;p&gt;No. Treat text similarity as one signal. Product-level thresholds, review queues, and domain-specific rules should still be defined in your own application.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is ISBN lookup only for exact ISBN searches?
&lt;/h3&gt;

&lt;p&gt;No. The endpoint supports ISBN lookup and keyword search fields, so it can be used for exact book matching and broader title discovery workflows.&lt;/p&gt;

&lt;p&gt;For more developer APIs, visit &lt;a href="https://gugudata.io/" rel="noopener noreferrer"&gt;GuGuData&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>api</category>
      <category>webdev</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Web Content Extraction APIs for Data Pipelines</title>
      <dc:creator>GuGuData</dc:creator>
      <pubDate>Wed, 29 Apr 2026 15:33:04 +0000</pubDate>
      <link>https://dev.to/gugudata/web-content-extraction-apis-for-data-pipelines-4a4i</link>
      <guid>https://dev.to/gugudata/web-content-extraction-apis-for-data-pipelines-4a4i</guid>
      <description>&lt;h1&gt;
  
  
  Web Content Extraction APIs: Turn URLs into Readable Data, JSON, Links, and Screenshots
&lt;/h1&gt;

&lt;p&gt;Many developer workflows start with a URL. The next step may be extracting readable article text, converting a page to Markdown, collecting links, capturing a screenshot, or checking website metadata before storing a record.&lt;/p&gt;

&lt;p&gt;GuGuData website tools APIs provide URL-focused endpoints that help developers turn web pages and domains into structured outputs for products, data pipelines, and internal automation.&lt;/p&gt;

&lt;h2&gt;
  
  
  API lineup
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Workflow&lt;/th&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Endpoint&lt;/th&gt;
&lt;th&gt;Detail page&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Readable content extraction&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/websitetools/readability&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/readability" rel="noopener noreferrer"&gt;Webpage Readable Content Extraction&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;URL to HTML&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/websitetools/url2html&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/url2html" rel="noopener noreferrer"&gt;Fetch Rendered HTML from URL&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;URL to Markdown&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/websitetools/url2markdown&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/url2markdown" rel="noopener noreferrer"&gt;Convert URL to Markdown&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;URL to structured JSON&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/websitetools/url2json&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/url2json" rel="noopener noreferrer"&gt;Extract Structured JSON from Webpage&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;URL to links&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/websitetools/url2links&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/url2links" rel="noopener noreferrer"&gt;Extract Links from URL&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;URL screenshot&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/websitetools/url2snapshot&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/url2snapshot" rel="noopener noreferrer"&gt;Webpage Screenshot Capture&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;URL to image&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/websitetools/url2image&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/url2image" rel="noopener noreferrer"&gt;Convert URL to Image&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;URL to static file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/websitetools/url2html&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/url2html" rel="noopener noreferrer"&gt;URL to Static File&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Favicon lookup&lt;/td&gt;
&lt;td&gt;&lt;code&gt;GET&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/websitetools/favicon&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/favicon" rel="noopener noreferrer"&gt;Website Favicon Extraction&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DNS lookup&lt;/td&gt;
&lt;td&gt;&lt;code&gt;GET&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/websitetools/dns-lookup&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/dnslookup" rel="noopener noreferrer"&gt;Domain DNS Information Query&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SSL certificate info&lt;/td&gt;
&lt;td&gt;&lt;code&gt;GET&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/websitetools/sslcertinfo&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/sslcertinfo" rel="noopener noreferrer"&gt;Domain SSL Certificate Information Parsing&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WHOIS lookup&lt;/td&gt;
&lt;td&gt;&lt;code&gt;GET&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/websitetools/whois&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/whois" rel="noopener noreferrer"&gt;Domain WHOIS Information Lookup&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The public OpenAPI JSON is available at &lt;a href="https://gugudata.io/assets/openapi/gugudata.openapi.3.1.json" rel="noopener noreferrer"&gt;https://gugudata.io/assets/openapi/gugudata.openapi.3.1.json&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to use these APIs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Build article ingestion pipelines that need readable page content.&lt;/li&gt;
&lt;li&gt;Convert web pages into Markdown for knowledge bases, AI workflows, or archival systems.&lt;/li&gt;
&lt;li&gt;Extract structured JSON from pages using a prompt-driven workflow.&lt;/li&gt;
&lt;li&gt;Capture page screenshots for review, monitoring, or visual records.&lt;/li&gt;
&lt;li&gt;Audit domain metadata such as DNS records, SSL certificates, favicon, or WHOIS data.&lt;/li&gt;
&lt;li&gt;Normalize URL processing behind one server-side integration layer.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Choosing the right endpoint
&lt;/h2&gt;

&lt;p&gt;Use readability extraction when your goal is the main article body. Use URL to Markdown when the output needs to be readable, portable, and friendly to documentation or AI workflows.&lt;/p&gt;

&lt;p&gt;Use URL to JSON when the page has fields you want to extract into a structured shape. Use URL to links when you need discovery, crawling, or link inventory.&lt;/p&gt;

&lt;p&gt;Use screenshot and image endpoints when the visual state of the page matters. Use DNS, SSL, favicon, and WHOIS endpoints when the domain itself is the target.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example request
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.gugudata.io/v1/websitetools/url2json?appkey=YOUR_APPKEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'
{
  "url": "https://example.com/article",
  "prompt": "Extract the article title, author, published date, and a short summary."
}
'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Response handling
&lt;/h2&gt;

&lt;p&gt;Most website tools return standard JSON responses with &lt;code&gt;dataStatus&lt;/code&gt; and &lt;code&gt;data&lt;/code&gt;. The exact &lt;code&gt;data&lt;/code&gt; shape depends on the endpoint.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dataStatus"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusCode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"SUCCESS"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusDescription"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"successfully"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"responseDateTime"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-04-29T00:00:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dataTotalCount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"requestParameter"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Example article"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"summary"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Short extracted summary"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For URL workflows, store the original URL, request time, and endpoint name with the result. This makes retries, audits, and freshness checks easier.&lt;/p&gt;

&lt;h2&gt;
  
  
  HTTP status codes
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;HTTP status&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Recommended handling&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;200&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request processed successfully.&lt;/td&gt;
&lt;td&gt;Parse the documented response body for the endpoint result.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;400&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Invalid request parameters or request format.&lt;/td&gt;
&lt;td&gt;Check URL format, prompt content, and request body structure.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;401&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Missing or unknown application key.&lt;/td&gt;
&lt;td&gt;Send a valid &lt;code&gt;appkey&lt;/code&gt; with the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;403&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The application key is recognized but access is not allowed.&lt;/td&gt;
&lt;td&gt;Check subscription, trial state, and endpoint access.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;429&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request rate or trial usage limit exceeded.&lt;/td&gt;
&lt;td&gt;Reduce concurrency or retry after the limit window resets.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;500&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Internal service error.&lt;/td&gt;
&lt;td&gt;Retry later or contact support if the error persists.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;503&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Upstream service unavailable.&lt;/td&gt;
&lt;td&gt;Retry later when the dependency is available again.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Implementation notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Validate and normalize URLs before calling extraction endpoints.&lt;/li&gt;
&lt;li&gt;Keep URL processing on the backend so credentials and retry behavior remain controlled.&lt;/li&gt;
&lt;li&gt;Add timeouts around downstream workflows because external pages can be slow or unavailable.&lt;/li&gt;
&lt;li&gt;Store extraction metadata so results can be refreshed without losing the original request context.&lt;/li&gt;
&lt;li&gt;Use demo endpoints for quick checks, then move to authenticated production endpoints.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Which endpoint should I use for AI ingestion?
&lt;/h3&gt;

&lt;p&gt;Use &lt;a href="https://gugudata.io/details/url2markdown" rel="noopener noreferrer"&gt;Convert URL to Markdown&lt;/a&gt; when readable text is enough. Use &lt;a href="https://gugudata.io/details/url2json" rel="noopener noreferrer"&gt;Extract Structured JSON from Webpage&lt;/a&gt; when you need specific fields.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should I crawl large sites directly from these endpoints?
&lt;/h3&gt;

&lt;p&gt;Use controlled queues and rate limits. URL processing depends on external pages, so retries and concurrency limits should be explicit in your own system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I combine metadata checks with content extraction?
&lt;/h3&gt;

&lt;p&gt;Yes. For example, you can check DNS or SSL metadata before extracting page content, then store both the domain-level record and the page-level output.&lt;/p&gt;

&lt;p&gt;For more developer APIs, visit &lt;a href="https://gugudata.io/" rel="noopener noreferrer"&gt;GuGuData&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>api</category>
      <category>webdev</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>QR Code and Barcode APIs for Product Workflows</title>
      <dc:creator>GuGuData</dc:creator>
      <pubDate>Wed, 29 Apr 2026 15:31:43 +0000</pubDate>
      <link>https://dev.to/gugudata/qr-code-and-barcode-apis-for-product-workflows-2dl5</link>
      <guid>https://dev.to/gugudata/qr-code-and-barcode-apis-for-product-workflows-2dl5</guid>
      <description>&lt;h1&gt;
  
  
  QR Code and Barcode APIs: Generation, Wi-Fi Access, and Image Decoding
&lt;/h1&gt;

&lt;p&gt;QR codes and barcodes are small integration points that often sit inside larger business workflows. A product may need to generate a payment code, print a logistics label, add Wi-Fi access to onboarding material, or decode QR code images submitted by users.&lt;/p&gt;

&lt;p&gt;GuGuData provides APIs for QR code generation, Wi-Fi QR code generation, general barcode generation, and QR code image decoding. This guide explains how these endpoints fit into practical product workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  API lineup
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Workflow&lt;/th&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Endpoint&lt;/th&gt;
&lt;th&gt;Detail page&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;QR code generation&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/qrcode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/qrcode" rel="noopener noreferrer"&gt;Universal QR Code Generator&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wi-Fi QR code generation&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/wifi-qrcode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/wifiqrcode" rel="noopener noreferrer"&gt;Wi-Fi QR Code Generator&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Barcode generation&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/barcode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/barcode" rel="noopener noreferrer"&gt;General Barcode Generation&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;QR code image decoding&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/barcode/qrcode/decode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/qrcode-decode" rel="noopener noreferrer"&gt;Decode QR Code from Image&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The public OpenAPI JSON is available at &lt;a href="https://gugudata.io/assets/openapi/gugudata.openapi.3.1.json" rel="noopener noreferrer"&gt;https://gugudata.io/assets/openapi/gugudata.openapi.3.1.json&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to use these APIs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Generate QR codes for URLs, internal identifiers, invitation links, or operational handoff flows.&lt;/li&gt;
&lt;li&gt;Create Wi-Fi QR codes for offices, hotels, events, or onboarding screens.&lt;/li&gt;
&lt;li&gt;Generate barcodes for product labels, warehouse workflows, or printed forms.&lt;/li&gt;
&lt;li&gt;Decode QR code images uploaded by users or extracted from documents.&lt;/li&gt;
&lt;li&gt;Standardize code generation and decoding logic across multiple services.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Choosing the right endpoint
&lt;/h2&gt;

&lt;p&gt;Use &lt;code&gt;/v1/qrcode&lt;/code&gt; when the payload is general text or a URL. Use &lt;code&gt;/v1/wifi-qrcode&lt;/code&gt; when the payload is a Wi-Fi network configuration and the code should be scannable by common mobile devices.&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;/v1/barcode&lt;/code&gt; when you need a one-dimensional barcode for product, inventory, or operational labels. Use &lt;code&gt;/v1/barcode/qrcode/decode&lt;/code&gt; when the input is an image and your application needs the decoded value rather than a generated image.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example requests
&lt;/h2&gt;

&lt;p&gt;Generate a QR code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.gugudata.io/v1/qrcode?appkey=YOUR_APPKEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'
{
  "content": "https://www.gugudata.io",
  "size": 200
}
'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Decode a QR code image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.gugudata.io/v1/barcode/qrcode/decode?appkey=YOUR_APPKEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"file=@./qrcode.png"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Response handling
&lt;/h2&gt;

&lt;p&gt;Generation endpoints usually return a URL to the generated image. Decoding returns the parsed payload and detection details:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dataStatus"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusCode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"SUCCESS"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusDescription"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"successfully"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"responseDateTime"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-04-29T00:00:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dataTotalCount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"requestParameter"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"raw"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://www.gugudata.io"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"QRCODE"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"format"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"QR_CODE"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"parsed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"https://www.gugudata.io"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"points"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Treat decoded values as user input. Validate URLs, identifiers, and business payloads before using them in privileged workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  HTTP status codes
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;HTTP status&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Recommended handling&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;200&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request processed successfully.&lt;/td&gt;
&lt;td&gt;Parse the documented response body for the endpoint result.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;400&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Invalid request parameters or request format.&lt;/td&gt;
&lt;td&gt;Check required fields, uploaded image format, size, and barcode type.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;401&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Missing or unknown application key.&lt;/td&gt;
&lt;td&gt;Send a valid &lt;code&gt;appkey&lt;/code&gt; with the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;403&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The application key is recognized but access is not allowed.&lt;/td&gt;
&lt;td&gt;Check subscription, trial state, and endpoint access.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;429&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request rate or trial usage limit exceeded.&lt;/td&gt;
&lt;td&gt;Reduce concurrency or retry after the limit window resets.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;500&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Internal service error.&lt;/td&gt;
&lt;td&gt;Retry later or contact support if the error persists.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;503&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Upstream service unavailable.&lt;/td&gt;
&lt;td&gt;Retry later when the dependency is available again.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Implementation notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Normalize payloads before generating QR codes so duplicate business records do not produce inconsistent codes.&lt;/li&gt;
&lt;li&gt;Use server-side requests when the &lt;code&gt;appkey&lt;/code&gt; must remain private.&lt;/li&gt;
&lt;li&gt;Validate decoded payloads before redirecting users or writing values into your database.&lt;/li&gt;
&lt;li&gt;Keep image upload size limits explicit for decoding workflows.&lt;/li&gt;
&lt;li&gt;Use demo endpoints for quick checks, then move to authenticated production endpoints.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Can I generate Wi-Fi QR codes with the general QR code endpoint?
&lt;/h3&gt;

&lt;p&gt;Use the Wi-Fi QR code endpoint when the payload represents Wi-Fi access. It keeps the request fields clearer and better aligned with Wi-Fi QR code use cases.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should I trust decoded QR code content automatically?
&lt;/h3&gt;

&lt;p&gt;No. Decoded values can contain arbitrary text or URLs. Validate the payload against your product rules before acting on it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which endpoint should I use for printed product labels?
&lt;/h3&gt;

&lt;p&gt;Use &lt;a href="https://gugudata.io/details/barcode" rel="noopener noreferrer"&gt;General Barcode Generation&lt;/a&gt; when the label requires a standard barcode, and use &lt;a href="https://gugudata.io/details/qrcode" rel="noopener noreferrer"&gt;Universal QR Code Generator&lt;/a&gt; when the label should carry a URL or flexible text payload.&lt;/p&gt;

&lt;p&gt;For more developer APIs, visit &lt;a href="https://gugudata.io/" rel="noopener noreferrer"&gt;GuGuData&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>api</category>
      <category>webdev</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Document Conversion APIs for Developer Workflows</title>
      <dc:creator>GuGuData</dc:creator>
      <pubDate>Wed, 29 Apr 2026 15:31:34 +0000</pubDate>
      <link>https://dev.to/gugudata/document-conversion-apis-for-developer-workflows-3g4</link>
      <guid>https://dev.to/gugudata/document-conversion-apis-for-developer-workflows-3g4</guid>
      <description>&lt;h1&gt;
  
  
  Document Conversion APIs: Build Reliable HTML, PDF, Word, and PowerPoint Workflows
&lt;/h1&gt;

&lt;p&gt;Document conversion is often a hidden part of product infrastructure. Reporting tools export PDF files, publishing systems transform HTML into shareable documents, and business platforms need to normalize user-uploaded files before downstream processing.&lt;/p&gt;

&lt;p&gt;GuGuData provides a set of document conversion APIs that can be used from backend services, internal tools, automation pipelines, and data workflows. This guide explains how the APIs fit together and when to use each endpoint.&lt;/p&gt;

&lt;h2&gt;
  
  
  API lineup
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Workflow&lt;/th&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Endpoint&lt;/th&gt;
&lt;th&gt;Detail page&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HTML to PDF&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/imagerecognition/html2pdf&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/html2pdf" rel="noopener noreferrer"&gt;HTML/URL to PDF&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Markdown to PDF&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/imagerecognition/markdown2pdf&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/markdown2pdf" rel="noopener noreferrer"&gt;Markdown to PDF&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PDF parsing and formatted output&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/imagerecognition/pdf2format&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/pdf2format" rel="noopener noreferrer"&gt;PDF Parsing and Formatted Output&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PDF split&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/imagerecognition/pdf-splitter&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/pdfsplitter" rel="noopener noreferrer"&gt;PDF Splitter&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PDF summary&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/imagerecognition/pdf-summary&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/pdfsummary" rel="noopener noreferrer"&gt;PDF Summary&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PDF to HTML&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/imagerecognition/pdf2html&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/pdf2html" rel="noopener noreferrer"&gt;PDF to HTML&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Word to HTML&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/imagerecognition/word-to-html&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/word2html" rel="noopener noreferrer"&gt;Convert Word to HTML&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HTML to Word&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/imagerecognition/html2word&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/html2word" rel="noopener noreferrer"&gt;Convert HTML to Word&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PPT to images&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/imagerecognition/ppt-to-images&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/ppt2images" rel="noopener noreferrer"&gt;Convert PPT to Images&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PPT to PDF&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/v1/imagerecognition/ppt-to-pdf&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/ppt2pdf" rel="noopener noreferrer"&gt;Convert PPT to PDF&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The public OpenAPI JSON is available at &lt;a href="https://gugudata.io/assets/openapi/gugudata.openapi.3.1.json" rel="noopener noreferrer"&gt;https://gugudata.io/assets/openapi/gugudata.openapi.3.1.json&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to use these APIs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Generate PDF versions of invoices, reports, articles, or internal documents.&lt;/li&gt;
&lt;li&gt;Convert uploaded Word, PDF, or PowerPoint files into web-friendly outputs.&lt;/li&gt;
&lt;li&gt;Create preview images from presentations for search, review, or thumbnail workflows.&lt;/li&gt;
&lt;li&gt;Normalize document content before indexing, summarization, storage, or review.&lt;/li&gt;
&lt;li&gt;Replace manual office-document export steps in operational workflows.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Choosing the right endpoint
&lt;/h2&gt;

&lt;p&gt;Use HTML to PDF when your source content is already rendered as HTML or when your system controls the page layout. Use Markdown to PDF when the source content comes from developer documentation, notes, or publishing pipelines.&lt;/p&gt;

&lt;p&gt;Use PDF parsing, PDF summary, or PDF to HTML when the input is already a PDF and you need structured output, readable content, or a web-friendly representation.&lt;/p&gt;

&lt;p&gt;Use Word to HTML when users upload Word documents and your application needs to display or process the content in a browser. Use HTML to Word when your source of truth is web content but the user needs a downloadable Word document.&lt;/p&gt;

&lt;p&gt;Use PPT to images for visual previews and slide thumbnails. Use PPT to PDF when the output should preserve the presentation as a single shareable document.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integration pattern
&lt;/h2&gt;

&lt;p&gt;Most document endpoints are best called from a trusted backend service. Keep &lt;code&gt;appkey&lt;/code&gt; out of browser code and store it only in server-side configuration.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.gugudata.io/v1/imagerecognition/ppt-to-pdf?appkey=YOUR_APPKEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"file=@./presentation.pptx"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For JSON-based endpoints, send a JSON request body:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.gugudata.io/v1/imagerecognition/markdown2pdf?appkey=YOUR_APPKEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'
{
  "content": "# Quarterly Report\n\nThis report is generated automatically."
}
'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Response handling
&lt;/h2&gt;

&lt;p&gt;Successful responses use the standard GuGuData response shape when JSON is returned:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dataStatus"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusCode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"SUCCESS"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusDescription"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"successfully"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"responseDateTime"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-04-29T00:00:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dataTotalCount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"requestParameter"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"pdfPath"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://storage.gugudata.io/pdf/example.pdf"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For file conversion workflows, store the returned URL only according to your own retention and access-control requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  HTTP status codes
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;HTTP status&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Recommended handling&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;200&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request processed successfully.&lt;/td&gt;
&lt;td&gt;Parse the documented response body for the endpoint result.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;400&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Invalid request parameters or request format.&lt;/td&gt;
&lt;td&gt;Check required fields, file type, file size, and request body format.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;401&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Missing or unknown application key.&lt;/td&gt;
&lt;td&gt;Send a valid &lt;code&gt;appkey&lt;/code&gt; with the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;403&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The application key is recognized but access is not allowed.&lt;/td&gt;
&lt;td&gt;Check subscription, trial state, and endpoint access.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;429&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request rate or trial usage limit exceeded.&lt;/td&gt;
&lt;td&gt;Reduce concurrency or retry after the limit window resets.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;500&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Internal service error.&lt;/td&gt;
&lt;td&gt;Retry later or contact support if the error persists.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;503&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Upstream service unavailable.&lt;/td&gt;
&lt;td&gt;Retry later when the dependency is available again.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Implementation notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Validate file extension and content type before uploading files.&lt;/li&gt;
&lt;li&gt;Avoid sending large files from client-side code directly with a public key.&lt;/li&gt;
&lt;li&gt;Use demo endpoints for connectivity checks, then switch to authenticated production endpoints.&lt;/li&gt;
&lt;li&gt;Add conservative retries for &lt;code&gt;429&lt;/code&gt;, &lt;code&gt;500&lt;/code&gt;, and &lt;code&gt;503&lt;/code&gt; responses.&lt;/li&gt;
&lt;li&gt;Keep conversion jobs idempotent in your own system so a retry does not create duplicate business records.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Should document conversion run in frontend code?
&lt;/h3&gt;

&lt;p&gt;No. Use a backend service so the &lt;code&gt;appkey&lt;/code&gt; stays private and file upload behavior can be validated, logged, and rate limited.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which endpoint should I use for preview images?
&lt;/h3&gt;

&lt;p&gt;Use &lt;a href="https://gugudata.io/details/ppt2images" rel="noopener noreferrer"&gt;Convert PPT to Images&lt;/a&gt; for slide previews and &lt;a href="https://gugudata.io/details/pdf2html" rel="noopener noreferrer"&gt;PDF to HTML&lt;/a&gt; when you need a browser-friendly document representation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I combine multiple APIs in one workflow?
&lt;/h3&gt;

&lt;p&gt;Yes. A common pattern is to convert uploaded files first, then pass the resulting text or URL into downstream extraction, summarization, or indexing steps.&lt;/p&gt;

&lt;p&gt;For more developer APIs, visit &lt;a href="https://gugudata.io/" rel="noopener noreferrer"&gt;GuGuData&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>api</category>
      <category>webdev</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Convert PPT to PDF API Documentation</title>
      <dc:creator>GuGuData</dc:creator>
      <pubDate>Fri, 17 Apr 2026 13:53:19 +0000</pubDate>
      <link>https://dev.to/gugudata/convert-ppt-to-pdf-api-documentation-1ge3</link>
      <guid>https://dev.to/gugudata/convert-ppt-to-pdf-api-documentation-1ge3</guid>
      <description>&lt;h1&gt;
  
  
  Convert PPT to PDF API: Technical Guide and Integration Notes
&lt;/h1&gt;

&lt;p&gt;The Convert PPT to PDF API from GuGuData helps developers convert PowerPoint presentations into PDF format with high-quality output.&lt;/p&gt;

&lt;p&gt;This article is written for developers who want a crawlable, readable reference before integrating the endpoint into a product, data pipeline, internal tool, or technical workflow. The official detail page is &lt;a href="https://gugudata.io/details/ppt2pdf" rel="noopener noreferrer"&gt;https://gugudata.io/details/ppt2pdf&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  API details
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;API name&lt;/td&gt;
&lt;td&gt;Convert PPT to PDF&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Category&lt;/td&gt;
&lt;td&gt;Document and Image APIs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Method&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Endpoint&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://api.gugudata.io/v1/imagerecognition/ppt-to-pdf&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Content type&lt;/td&gt;
&lt;td&gt;&lt;code&gt;multipart/form-data&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Demo endpoint&lt;/td&gt;
&lt;td&gt;&lt;a href="https://api.gugudata.io/v1/imagerecognition/ppt-to-pdf/demo" rel="noopener noreferrer"&gt;https://api.gugudata.io/v1/imagerecognition/ppt-to-pdf/demo&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Detail page&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/ppt2pdf" rel="noopener noreferrer"&gt;https://gugudata.io/details/ppt2pdf&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  When to use this API
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Convert PPTX presentations to PDF for sharing, reporting, or archiving.&lt;/li&gt;
&lt;li&gt;Preserve slide layout and formatting in a downloadable PDF output.&lt;/li&gt;
&lt;li&gt;Automate manual PowerPoint export steps in business tools and content workflows.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Request parameters
&lt;/h2&gt;

&lt;p&gt;This endpoint accepts parameters through the query string plus request body. Keep &lt;code&gt;appkey&lt;/code&gt; out of client-side public code and send it only from trusted server-side environments.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;appkey&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;YOUR_APPKEY&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Application key used for request authentication. Supply the value as a query parameter, form field, or multipart field according to the request content type.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;file&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;file&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;PowerPoint file to convert. PPTX format is supported.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Example request
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.gugudata.io/v1/imagerecognition/ppt-to-pdf?appkey=YOUR_APPKEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"file=@./presentation.pptx"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Response fields
&lt;/h2&gt;

&lt;p&gt;The response body contains the fields below for successful JSON responses. For binary endpoints, the success response is returned as binary content and JSON is used for error responses.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Response metadata returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.requestParameter&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Normalized request parameters echoed by the service. Sensitive credentials are omitted when available.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.statusCode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;integer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Application-level status code returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.statusDescription&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Application-level status message returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.responseDateTime&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Response timestamp returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.dataTotalCount&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;integer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Total number of records that match the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Primary response payload returned by the endpoint.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data.pdfPath&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;CDN URL for the generated PDF file.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Response example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dataStatus"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusCode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusDescription"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"successfully"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"responseDateTime"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-04-17T00:00:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dataTotalCount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"requestParameter"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"pdfPath"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://cdn.example.com/presentation.pdf"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  HTTP status codes
&lt;/h2&gt;

&lt;p&gt;Use the HTTP status code for transport-level handling. If the response body contains &lt;code&gt;dataStatus.statusCode&lt;/code&gt;, treat it as an application-level status field in the JSON payload.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;HTTP status&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Recommended handling&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;200&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request processed successfully.&lt;/td&gt;
&lt;td&gt;Parse the documented response body for the endpoint result.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;400&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Invalid request parameters or request format.&lt;/td&gt;
&lt;td&gt;Check required fields, data types, and request body format.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;401&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Missing or unknown application key.&lt;/td&gt;
&lt;td&gt;Send a valid appkey with the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;403&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The application key is recognized but access is not allowed.&lt;/td&gt;
&lt;td&gt;Check subscription, trial state, and endpoint access.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;429&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request rate or trial usage limit exceeded.&lt;/td&gt;
&lt;td&gt;Reduce concurrency or retry after the limit window resets.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;500&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Internal service error.&lt;/td&gt;
&lt;td&gt;Retry later or contact support if the error persists.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;503&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Upstream service unavailable.&lt;/td&gt;
&lt;td&gt;Retry later when the dependency is available again.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Implementation notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Validate the uploaded file type before sending the request.&lt;/li&gt;
&lt;li&gt;Keep server-side retries conservative for &lt;code&gt;429&lt;/code&gt;, &lt;code&gt;500&lt;/code&gt;, and &lt;code&gt;503&lt;/code&gt; responses.&lt;/li&gt;
&lt;li&gt;Store the returned PDF URL only according to your own retention and access-control requirements.&lt;/li&gt;
&lt;li&gt;Log the HTTP status code and &lt;code&gt;dataStatus.statusDescription&lt;/code&gt; together for easier debugging.&lt;/li&gt;
&lt;li&gt;Use the demo endpoint for a quick connectivity check, then switch to the authenticated endpoint for production data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Where is the official API detail page?
&lt;/h3&gt;

&lt;p&gt;The official detail page is &lt;a href="https://gugudata.io/details/ppt2pdf" rel="noopener noreferrer"&gt;https://gugudata.io/details/ppt2pdf&lt;/a&gt;. It is the best place to review the latest public endpoint information before publishing or integrating.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should I handle &lt;code&gt;dataStatus.statusCode&lt;/code&gt; as the HTTP status code?
&lt;/h3&gt;

&lt;p&gt;No. Use the HTTP status code for request-level behavior such as authentication, permission, rate limiting, and server errors. Use &lt;code&gt;dataStatus.statusCode&lt;/code&gt; only as the response body status field when it is present.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I use the demo endpoint in production?
&lt;/h3&gt;

&lt;p&gt;No. The demo endpoint is for quick testing and examples. Use the authenticated endpoint with your &lt;code&gt;appkey&lt;/code&gt; for production workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related GuGuData APIs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/ppt2images" rel="noopener noreferrer"&gt;Convert PPT to Images&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/html2pdf" rel="noopener noreferrer"&gt;HTML/URL to PDF&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/pdf2format" rel="noopener noreferrer"&gt;PDF Parsing and Formatted Output&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more developer APIs, visit &lt;a href="https://gugudata.io/" rel="noopener noreferrer"&gt;GuGuData&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>api</category>
      <category>pdf</category>
      <category>automation</category>
      <category>imageprocessing</category>
    </item>
    <item>
      <title>ISBN Book Metadata Lookup API Documentation</title>
      <dc:creator>GuGuData</dc:creator>
      <pubDate>Fri, 17 Apr 2026 13:53:18 +0000</pubDate>
      <link>https://dev.to/gugudata/isbn-book-metadata-lookup-api-documentation-3e8m</link>
      <guid>https://dev.to/gugudata/isbn-book-metadata-lookup-api-documentation-3e8m</guid>
      <description>&lt;h1&gt;
  
  
  ISBN Book Metadata Lookup API: Technical Guide and Integration Notes
&lt;/h1&gt;

&lt;p&gt;The ISBN Book Metadata Lookup API from GuGuData helps developers search book metadata by ISBN or title keywords and retrieve title, author, publisher, cover image, and publishing details.&lt;/p&gt;

&lt;p&gt;This article is written for developers who want a crawlable, readable reference before integrating the endpoint into a product, data pipeline, internal tool, or technical workflow. The official detail page is &lt;a href="https://gugudata.io/details/isbn" rel="noopener noreferrer"&gt;https://gugudata.io/details/isbn&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  API details
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;API name&lt;/td&gt;
&lt;td&gt;ISBN Book Metadata Lookup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Category&lt;/td&gt;
&lt;td&gt;Text Processing APIs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Method&lt;/td&gt;
&lt;td&gt;&lt;code&gt;GET&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Endpoint&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://api.gugudata.io/v1/text/isbn&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Content type&lt;/td&gt;
&lt;td&gt;&lt;code&gt;query parameters&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Demo endpoint&lt;/td&gt;
&lt;td&gt;&lt;a href="https://api.gugudata.io/v1/text/isbn/demo" rel="noopener noreferrer"&gt;https://api.gugudata.io/v1/text/isbn/demo&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Detail page&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/isbn" rel="noopener noreferrer"&gt;https://gugudata.io/details/isbn&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  When to use this API
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Look up book metadata by ISBN for cataloging and bookstore workflows.&lt;/li&gt;
&lt;li&gt;Search books by title keywords when an ISBN is unavailable.&lt;/li&gt;
&lt;li&gt;Enrich publishing, library, education, and content management applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Request parameters
&lt;/h2&gt;

&lt;p&gt;This endpoint accepts parameters through the query string. Keep &lt;code&gt;appkey&lt;/code&gt; out of client-side public code and send it only from trusted server-side environments.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;appkey&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;YOUR_APPKEY&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Application key used for request authentication. Supply the value as a query parameter, form field, or multipart field according to the request content type.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;isbn&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;ISBN number for an exact book lookup.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;keywords&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Book title keywords for fuzzy search.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pageIndex&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;integer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Page number used for keyword search.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pageSize&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;integer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;&lt;code&gt;10&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Page size used for keyword search.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Example request
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-G&lt;/span&gt; &lt;span class="s2"&gt;"https://api.gugudata.io/v1/text/isbn"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s2"&gt;"appkey=YOUR_APPKEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s2"&gt;"isbn=9780132350884"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s2"&gt;"pageIndex=1"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s2"&gt;"pageSize=10"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Response fields
&lt;/h2&gt;

&lt;p&gt;The response body contains the fields below for successful JSON responses. For binary endpoints, the success response is returned as binary content and JSON is used for error responses.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Response metadata returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.requestParameter&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Normalized request parameters echoed by the service. Sensitive credentials are omitted when available.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.statusCode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;integer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Application-level status code returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.statusDescription&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Application-level status message returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.responseDateTime&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Response timestamp returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.dataTotalCount&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;integer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Total number of records that match the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;array&amp;lt;object&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Book metadata records returned by the endpoint.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data[].Title&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Book title.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data[].Author&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Author name.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data[].ISBN&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;ISBN number of the book.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data[].Publisher&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Publisher name.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data[].PublisherDateTime&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Publication date or year.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data[].PageNumber&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;integer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Number of pages.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data[].Binding&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Binding type.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data[].BriefIntroduction&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Short introduction or summary.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data[].CoverImage&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Book cover image URL.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Response example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dataStatus"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusCode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusDescription"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"successfully"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"responseDateTime"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-04-17T00:00:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dataTotalCount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"requestParameter"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Sample Book"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Author"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Sample Author"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"ISBN"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"9780132350884"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Publisher"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Sample Publisher"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"PublisherDateTime"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"PageNumber"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;320&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Binding"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Paperback"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"BriefIntroduction"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Sample introduction"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"CoverImage"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://example.com/cover.jpg"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  HTTP status codes
&lt;/h2&gt;

&lt;p&gt;Use the HTTP status code for transport-level handling. If the response body contains &lt;code&gt;dataStatus.statusCode&lt;/code&gt;, treat it as an application-level status field in the JSON payload.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;HTTP status&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Recommended handling&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;200&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request processed successfully.&lt;/td&gt;
&lt;td&gt;Parse the documented response body for the endpoint result.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;400&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Invalid request parameters or request format.&lt;/td&gt;
&lt;td&gt;Check required fields, data types, and request body format.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;401&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Missing or unknown application key.&lt;/td&gt;
&lt;td&gt;Send a valid appkey with the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;403&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The application key is recognized but access is not allowed.&lt;/td&gt;
&lt;td&gt;Check subscription, trial state, and endpoint access.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;429&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request rate or trial usage limit exceeded.&lt;/td&gt;
&lt;td&gt;Reduce concurrency or retry after the limit window resets.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;500&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Internal service error.&lt;/td&gt;
&lt;td&gt;Retry later or contact support if the error persists.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;503&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Upstream service unavailable.&lt;/td&gt;
&lt;td&gt;Retry later when the dependency is available again.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Implementation notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Prefer &lt;code&gt;isbn&lt;/code&gt; for exact lookup and use &lt;code&gt;keywords&lt;/code&gt; with pagination for discovery workflows.&lt;/li&gt;
&lt;li&gt;Validate that at least one lookup parameter is provided before sending the request.&lt;/li&gt;
&lt;li&gt;Cache stable book metadata when your use case allows it.&lt;/li&gt;
&lt;li&gt;Log the HTTP status code and &lt;code&gt;dataStatus.statusDescription&lt;/code&gt; together for easier debugging.&lt;/li&gt;
&lt;li&gt;Use the demo endpoint for a quick connectivity check, then switch to the authenticated endpoint for production data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Where is the official API detail page?
&lt;/h3&gt;

&lt;p&gt;The official detail page is &lt;a href="https://gugudata.io/details/isbn" rel="noopener noreferrer"&gt;https://gugudata.io/details/isbn&lt;/a&gt;. It is the best place to review the latest public endpoint information before publishing or integrating.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should I handle &lt;code&gt;dataStatus.statusCode&lt;/code&gt; as the HTTP status code?
&lt;/h3&gt;

&lt;p&gt;No. Use the HTTP status code for request-level behavior such as authentication, permission, rate limiting, and server errors. Use &lt;code&gt;dataStatus.statusCode&lt;/code&gt; only as the response body status field when it is present.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I use the demo endpoint in production?
&lt;/h3&gt;

&lt;p&gt;No. The demo endpoint is for quick testing and examples. Use the authenticated endpoint with your &lt;code&gt;appkey&lt;/code&gt; for production workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related GuGuData APIs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/chinesepoem" rel="noopener noreferrer"&gt;Chinese Classical Poetry Database&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/global-university" rel="noopener noreferrer"&gt;Global University Data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/textsimilarity" rel="noopener noreferrer"&gt;Text Similarity Calculator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more developer APIs, visit &lt;a href="https://gugudata.io/" rel="noopener noreferrer"&gt;GuGuData&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>api</category>
      <category>data</category>
      <category>webdev</category>
      <category>books</category>
    </item>
    <item>
      <title>Convert HTML to Word API Documentation</title>
      <dc:creator>GuGuData</dc:creator>
      <pubDate>Fri, 17 Apr 2026 13:52:14 +0000</pubDate>
      <link>https://dev.to/gugudata/convert-html-to-word-api-documentation-7j</link>
      <guid>https://dev.to/gugudata/convert-html-to-word-api-documentation-7j</guid>
      <description>&lt;h1&gt;
  
  
  Convert HTML to Word API: Technical Guide and Integration Notes
&lt;/h1&gt;

&lt;p&gt;The Convert HTML to Word API from GuGuData helps developers convert HTML content or a webpage URL into a Word document that is ready to download, archive, or share.&lt;/p&gt;

&lt;p&gt;This article is written for developers who want a crawlable, readable reference before integrating the endpoint into a product, data pipeline, internal tool, or technical workflow. The official detail page is &lt;a href="https://gugudata.io/details/html2word" rel="noopener noreferrer"&gt;https://gugudata.io/details/html2word&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  API details
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;API name&lt;/td&gt;
&lt;td&gt;Convert HTML to Word&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Category&lt;/td&gt;
&lt;td&gt;Document and Image APIs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Method&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Endpoint&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://api.gugudata.io/v1/imagerecognition/html2word&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Content type&lt;/td&gt;
&lt;td&gt;&lt;code&gt;multipart/form-data&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Demo endpoint&lt;/td&gt;
&lt;td&gt;&lt;a href="https://api.gugudata.io/v1/imagerecognition/html2word/demo" rel="noopener noreferrer"&gt;https://api.gugudata.io/v1/imagerecognition/html2word/demo&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Detail page&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/html2word" rel="noopener noreferrer"&gt;https://gugudata.io/details/html2word&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  When to use this API
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Convert raw HTML strings into editable Word documents.&lt;/li&gt;
&lt;li&gt;Export webpage content to &lt;code&gt;.docx&lt;/code&gt; files for reports, archives, and publishing workflows.&lt;/li&gt;
&lt;li&gt;Add document export to CMS, internal tools, and business documentation systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Request parameters
&lt;/h2&gt;

&lt;p&gt;This endpoint accepts parameters through the query string plus request body. Keep &lt;code&gt;appkey&lt;/code&gt; out of client-side public code and send it only from trusted server-side environments.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;appkey&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;YOUR_APPKEY&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Application key used for request authentication. Supply the value as a query parameter, form field, or multipart field according to the request content type.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;content&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;HTML string or webpage URL to convert. Send this parameter as multipart form data.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;type&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;html&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request type. Supported values are &lt;code&gt;html&lt;/code&gt; and &lt;code&gt;url&lt;/code&gt;. Send this parameter as multipart form data.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;filename&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Optional output file name ending in &lt;code&gt;.docx&lt;/code&gt;. Send this parameter as multipart form data.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Example request
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.gugudata.io/v1/imagerecognition/html2word?appkey=YOUR_APPKEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"type=html"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"content=&amp;lt;h1&amp;gt;Quarterly Report&amp;lt;/h1&amp;gt;&amp;lt;p&amp;gt;Summary content.&amp;lt;/p&amp;gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"filename=quarterly-report.docx"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Response fields
&lt;/h2&gt;

&lt;p&gt;The response body contains the fields below for successful JSON responses. For binary endpoints, the success response is returned as binary content and JSON is used for error responses.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Response metadata returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.requestParameter&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Normalized request parameters echoed by the service. Sensitive credentials are omitted when available.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.statusCode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;integer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Application-level status code returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.statusDescription&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Application-level status message returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.responseDateTime&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Response timestamp returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.dataTotalCount&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;integer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Total number of records that match the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Primary response payload returned by the endpoint.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data.wordPath&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Download URL of the generated Word document.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Response example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dataStatus"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusCode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusDescription"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"successfully"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"responseDateTime"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-04-17T00:00:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dataTotalCount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"requestParameter"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"wordPath"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://cdn.example.com/quarterly-report.docx"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  HTTP status codes
&lt;/h2&gt;

&lt;p&gt;Use the HTTP status code for transport-level handling. If the response body contains &lt;code&gt;dataStatus.statusCode&lt;/code&gt;, treat it as an application-level status field in the JSON payload.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;HTTP status&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Recommended handling&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;200&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request processed successfully.&lt;/td&gt;
&lt;td&gt;Parse the documented response body for the endpoint result.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;400&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Invalid request parameters or request format.&lt;/td&gt;
&lt;td&gt;Check required fields, data types, and request body format.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;401&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Missing or unknown application key.&lt;/td&gt;
&lt;td&gt;Send a valid appkey with the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;403&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The application key is recognized but access is not allowed.&lt;/td&gt;
&lt;td&gt;Check subscription, trial state, and endpoint access.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;429&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request rate or trial usage limit exceeded.&lt;/td&gt;
&lt;td&gt;Reduce concurrency or retry after the limit window resets.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;500&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Internal service error.&lt;/td&gt;
&lt;td&gt;Retry later or contact support if the error persists.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;503&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Upstream service unavailable.&lt;/td&gt;
&lt;td&gt;Retry later when the dependency is available again.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Implementation notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Choose &lt;code&gt;type=html&lt;/code&gt; for raw HTML and &lt;code&gt;type=url&lt;/code&gt; when the service should fetch a webpage URL.&lt;/li&gt;
&lt;li&gt;Validate HTML size and source URL access before sending the request.&lt;/li&gt;
&lt;li&gt;Keep server-side retries conservative for &lt;code&gt;429&lt;/code&gt;, &lt;code&gt;500&lt;/code&gt;, and &lt;code&gt;503&lt;/code&gt; responses.&lt;/li&gt;
&lt;li&gt;Log the HTTP status code and &lt;code&gt;dataStatus.statusDescription&lt;/code&gt; together for easier debugging.&lt;/li&gt;
&lt;li&gt;Use the demo endpoint for a quick connectivity check, then switch to the authenticated endpoint for production data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Where is the official API detail page?
&lt;/h3&gt;

&lt;p&gt;The official detail page is &lt;a href="https://gugudata.io/details/html2word" rel="noopener noreferrer"&gt;https://gugudata.io/details/html2word&lt;/a&gt;. It is the best place to review the latest public endpoint information before publishing or integrating.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should I handle &lt;code&gt;dataStatus.statusCode&lt;/code&gt; as the HTTP status code?
&lt;/h3&gt;

&lt;p&gt;No. Use the HTTP status code for request-level behavior such as authentication, permission, rate limiting, and server errors. Use &lt;code&gt;dataStatus.statusCode&lt;/code&gt; only as the response body status field when it is present.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I use the demo endpoint in production?
&lt;/h3&gt;

&lt;p&gt;No. The demo endpoint is for quick testing and examples. Use the authenticated endpoint with your &lt;code&gt;appkey&lt;/code&gt; for production workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related GuGuData APIs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/html2pdf" rel="noopener noreferrer"&gt;HTML/URL to PDF&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/word2html" rel="noopener noreferrer"&gt;Convert Word to HTML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/ppt2images" rel="noopener noreferrer"&gt;Convert PPT to Images&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more developer APIs, visit &lt;a href="https://gugudata.io/" rel="noopener noreferrer"&gt;GuGuData&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>api</category>
      <category>automation</category>
      <category>webdev</category>
      <category>html</category>
    </item>
    <item>
      <title>Decode QR Code from Image API Documentation</title>
      <dc:creator>GuGuData</dc:creator>
      <pubDate>Fri, 17 Apr 2026 13:52:14 +0000</pubDate>
      <link>https://dev.to/gugudata/decode-qr-code-from-image-api-documentation-144j</link>
      <guid>https://dev.to/gugudata/decode-qr-code-from-image-api-documentation-144j</guid>
      <description>&lt;h1&gt;
  
  
  Decode QR Code from Image API: Technical Guide and Integration Notes
&lt;/h1&gt;

&lt;p&gt;The Decode QR Code from Image API from GuGuData helps developers decode QR code content from an uploaded image and return the parsed value, format, and detection points.&lt;/p&gt;

&lt;p&gt;This article is written for developers who want a crawlable, readable reference before integrating the endpoint into a product, data pipeline, internal tool, or technical workflow. The official detail page is &lt;a href="https://gugudata.io/details/qrcode-decode" rel="noopener noreferrer"&gt;https://gugudata.io/details/qrcode-decode&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  API details
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;API name&lt;/td&gt;
&lt;td&gt;Decode QR Code from Image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Category&lt;/td&gt;
&lt;td&gt;QR Code and Barcode APIs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Method&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Endpoint&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://api.gugudata.io/v1/barcode/qrcode/decode&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Content type&lt;/td&gt;
&lt;td&gt;&lt;code&gt;multipart/form-data&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Demo endpoint&lt;/td&gt;
&lt;td&gt;&lt;a href="https://api.gugudata.io/v1/barcode/qrcode/decode/demo" rel="noopener noreferrer"&gt;https://api.gugudata.io/v1/barcode/qrcode/decode/demo&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Detail page&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/qrcode-decode" rel="noopener noreferrer"&gt;https://gugudata.io/details/qrcode-decode&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  When to use this API
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Decode QR values from mobile uploads, scanned images, or generated QR assets.&lt;/li&gt;
&lt;li&gt;Build ticketing, logistics, inventory, payment, or check-in workflows.&lt;/li&gt;
&lt;li&gt;Extract both parsed payloads and raw decoded text for downstream validation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Request parameters
&lt;/h2&gt;

&lt;p&gt;This endpoint accepts parameters through the query string plus request body. Keep &lt;code&gt;appkey&lt;/code&gt; out of client-side public code and send it only from trusted server-side environments.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;appkey&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;YOUR_APPKEY&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Application key used for request authentication. Supply the value as a query parameter, form field, or multipart field according to the request content type.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;file&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;file&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Image file that contains a QR code.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Example request
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.gugudata.io/v1/barcode/qrcode/decode?appkey=YOUR_APPKEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"file=@./qrcode.png"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Response fields
&lt;/h2&gt;

&lt;p&gt;The response body contains the fields below for successful JSON responses. For binary endpoints, the success response is returned as binary content and JSON is used for error responses.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Response metadata returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.requestParameter&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Normalized request parameters echoed by the service. Sensitive credentials are omitted when available.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.statusCode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;integer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Application-level status code returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.statusDescription&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Application-level status message returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.responseDateTime&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Response timestamp returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.dataTotalCount&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;integer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Total number of records that match the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Primary QR decoding result returned by the endpoint.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data.format&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Detected code format.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data.parsed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Parsed QR code content.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data.points&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;array&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Detected corner points of the QR code.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data.raw&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Raw decoded string.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data.type&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Detected payload type, such as &lt;code&gt;URI&lt;/code&gt;, &lt;code&gt;WIFI&lt;/code&gt;, &lt;code&gt;EMAIL&lt;/code&gt;, or &lt;code&gt;TEXT&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Response example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dataStatus"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusCode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusDescription"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"successfully"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"responseDateTime"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-04-17T00:00:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dataTotalCount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"requestParameter"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"format"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"QR_CODE"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"parsed"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://example.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"points"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"raw"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://example.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"URI"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  HTTP status codes
&lt;/h2&gt;

&lt;p&gt;Use the HTTP status code for transport-level handling. If the response body contains &lt;code&gt;dataStatus.statusCode&lt;/code&gt;, treat it as an application-level status field in the JSON payload.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;HTTP status&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Recommended handling&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;200&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request processed successfully.&lt;/td&gt;
&lt;td&gt;Parse the documented response body for the endpoint result.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;400&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Invalid request parameters or request format.&lt;/td&gt;
&lt;td&gt;Check required fields, data types, and request body format.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;401&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Missing or unknown application key.&lt;/td&gt;
&lt;td&gt;Send a valid appkey with the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;403&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The application key is recognized but access is not allowed.&lt;/td&gt;
&lt;td&gt;Check subscription, trial state, and endpoint access.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;429&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request rate or trial usage limit exceeded.&lt;/td&gt;
&lt;td&gt;Reduce concurrency or retry after the limit window resets.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;500&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Internal service error.&lt;/td&gt;
&lt;td&gt;Retry later or contact support if the error persists.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;503&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Upstream service unavailable.&lt;/td&gt;
&lt;td&gt;Retry later when the dependency is available again.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Implementation notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Validate file presence and supported image formats before sending the request.&lt;/li&gt;
&lt;li&gt;Keep server-side retries conservative for &lt;code&gt;429&lt;/code&gt;, &lt;code&gt;500&lt;/code&gt;, and &lt;code&gt;503&lt;/code&gt; responses.&lt;/li&gt;
&lt;li&gt;Treat decoded content as untrusted input until your application validates the payload type and value.&lt;/li&gt;
&lt;li&gt;Log the HTTP status code and &lt;code&gt;dataStatus.statusDescription&lt;/code&gt; together for easier debugging.&lt;/li&gt;
&lt;li&gt;Use the demo endpoint for a quick connectivity check, then switch to the authenticated endpoint for production data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Where is the official API detail page?
&lt;/h3&gt;

&lt;p&gt;The official detail page is &lt;a href="https://gugudata.io/details/qrcode-decode" rel="noopener noreferrer"&gt;https://gugudata.io/details/qrcode-decode&lt;/a&gt;. It is the best place to review the latest public endpoint information before publishing or integrating.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should I handle &lt;code&gt;dataStatus.statusCode&lt;/code&gt; as the HTTP status code?
&lt;/h3&gt;

&lt;p&gt;No. Use the HTTP status code for request-level behavior such as authentication, permission, rate limiting, and server errors. Use &lt;code&gt;dataStatus.statusCode&lt;/code&gt; only as the response body status field when it is present.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I use the demo endpoint in production?
&lt;/h3&gt;

&lt;p&gt;No. The demo endpoint is for quick testing and examples. Use the authenticated endpoint with your &lt;code&gt;appkey&lt;/code&gt; for production workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related GuGuData APIs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/qrcode" rel="noopener noreferrer"&gt;Universal QR Code Generator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/barcode" rel="noopener noreferrer"&gt;General Barcode Generation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/wifiqrcode" rel="noopener noreferrer"&gt;Wi-Fi Wireless Network QR Code Generation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more developer APIs, visit &lt;a href="https://gugudata.io/" rel="noopener noreferrer"&gt;GuGuData&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>api</category>
      <category>qrcode</category>
      <category>barcode</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Detect Text Language API Documentation</title>
      <dc:creator>GuGuData</dc:creator>
      <pubDate>Fri, 17 Apr 2026 13:51:19 +0000</pubDate>
      <link>https://dev.to/gugudata/detect-text-language-api-documentation-537d</link>
      <guid>https://dev.to/gugudata/detect-text-language-api-documentation-537d</guid>
      <description>&lt;h1&gt;
  
  
  Detect Text Language API: Technical Guide and Integration Notes
&lt;/h1&gt;

&lt;p&gt;The Detect Text Language API from GuGuData helps developers detect the most likely language of a text snippet and return ranked language candidates with confidence scores.&lt;/p&gt;

&lt;p&gt;This article is written for developers who want a crawlable, readable reference before integrating the endpoint into a product, data pipeline, internal tool, or technical workflow. The official detail page is &lt;a href="https://gugudata.io/details/nlpdetectlanguage" rel="noopener noreferrer"&gt;https://gugudata.io/details/nlpdetectlanguage&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  API details
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;API name&lt;/td&gt;
&lt;td&gt;Detect Text Language&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Category&lt;/td&gt;
&lt;td&gt;Text Processing APIs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Method&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Endpoint&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://api.gugudata.io/v1/text/detectlanguage&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Content type&lt;/td&gt;
&lt;td&gt;&lt;code&gt;application/json&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Demo endpoint&lt;/td&gt;
&lt;td&gt;&lt;a href="https://api.gugudata.io/v1/text/detectlanguage/demo" rel="noopener noreferrer"&gt;https://api.gugudata.io/v1/text/detectlanguage/demo&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Detail page&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/nlpdetectlanguage" rel="noopener noreferrer"&gt;https://gugudata.io/details/nlpdetectlanguage&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  When to use this API
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Detect the language of user-generated content before routing or moderation.&lt;/li&gt;
&lt;li&gt;Normalize multilingual form submissions, chatbot messages, or search queries.&lt;/li&gt;
&lt;li&gt;Add language-aware processing to content pipelines without maintaining a custom classifier.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Request parameters
&lt;/h2&gt;

&lt;p&gt;This endpoint accepts parameters through the query string plus request body. Keep &lt;code&gt;appkey&lt;/code&gt; out of client-side public code and send it only from trusted server-side environments.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;appkey&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;YOUR_APPKEY&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Application key used for request authentication. Supply the value as a query parameter, form field, or multipart field according to the request content type.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;content&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Text content to analyze.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Example request
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.gugudata.io/v1/text/detectlanguage?appkey=YOUR_APPKEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'
{
  "content": "Bonjour, ceci est un exemple de texte."
}
'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Response fields
&lt;/h2&gt;

&lt;p&gt;The response body contains the fields below for successful JSON responses. For binary endpoints, the success response is returned as binary content and JSON is used for error responses.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Response metadata returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.requestParameter&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Normalized request parameters echoed by the service. Sensitive credentials are omitted when available.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.statusCode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;integer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Application-level status code returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.statusDescription&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Application-level status message returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.responseDateTime&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Response timestamp returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.dataTotalCount&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;integer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Total number of records that match the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;array&amp;lt;object&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Ranked language detection results returned by the endpoint.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data[].Language&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Detected language name.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data[].LanguageAbbr&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Language code such as &lt;code&gt;en&lt;/code&gt;, &lt;code&gt;fr&lt;/code&gt;, or &lt;code&gt;zh&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data[].Probability&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;number&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Confidence score of the detected language.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Response example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dataStatus"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusCode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusDescription"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"successfully"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"responseDateTime"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-04-17T00:00:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dataTotalCount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"requestParameter"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Language"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"French"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"LanguageAbbr"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"fr"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Probability"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.98&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  HTTP status codes
&lt;/h2&gt;

&lt;p&gt;Use the HTTP status code for transport-level handling. If the response body contains &lt;code&gt;dataStatus.statusCode&lt;/code&gt;, treat it as an application-level status field in the JSON payload.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;HTTP status&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Recommended handling&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;200&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request processed successfully.&lt;/td&gt;
&lt;td&gt;Parse the documented response body for the endpoint result.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;400&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Invalid request parameters or request format.&lt;/td&gt;
&lt;td&gt;Check required fields, data types, and request body format.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;401&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Missing or unknown application key.&lt;/td&gt;
&lt;td&gt;Send a valid appkey with the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;403&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The application key is recognized but access is not allowed.&lt;/td&gt;
&lt;td&gt;Check subscription, trial state, and endpoint access.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;429&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request rate or trial usage limit exceeded.&lt;/td&gt;
&lt;td&gt;Reduce concurrency or retry after the limit window resets.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;500&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Internal service error.&lt;/td&gt;
&lt;td&gt;Retry later or contact support if the error persists.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;503&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Upstream service unavailable.&lt;/td&gt;
&lt;td&gt;Retry later when the dependency is available again.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Implementation notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Validate required parameters before sending the request so &lt;code&gt;400&lt;/code&gt; responses are easier to diagnose.&lt;/li&gt;
&lt;li&gt;Keep server-side retries conservative for &lt;code&gt;429&lt;/code&gt;, &lt;code&gt;500&lt;/code&gt;, and &lt;code&gt;503&lt;/code&gt; responses.&lt;/li&gt;
&lt;li&gt;Cache stable language detection results when the same source text is processed repeatedly.&lt;/li&gt;
&lt;li&gt;Log the HTTP status code and &lt;code&gt;dataStatus.statusDescription&lt;/code&gt; together for easier debugging.&lt;/li&gt;
&lt;li&gt;Use the demo endpoint for a quick connectivity check, then switch to the authenticated endpoint for production data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Where is the official API detail page?
&lt;/h3&gt;

&lt;p&gt;The official detail page is &lt;a href="https://gugudata.io/details/nlpdetectlanguage" rel="noopener noreferrer"&gt;https://gugudata.io/details/nlpdetectlanguage&lt;/a&gt;. It is the best place to review the latest public endpoint information before publishing or integrating.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should I handle &lt;code&gt;dataStatus.statusCode&lt;/code&gt; as the HTTP status code?
&lt;/h3&gt;

&lt;p&gt;No. Use the HTTP status code for request-level behavior such as authentication, permission, rate limiting, and server errors. Use &lt;code&gt;dataStatus.statusCode&lt;/code&gt; only as the response body status field when it is present.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I use the demo endpoint in production?
&lt;/h3&gt;

&lt;p&gt;No. The demo endpoint is for quick testing and examples. Use the authenticated endpoint with your &lt;code&gt;appkey&lt;/code&gt; for production workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related GuGuData APIs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/textsimilarity" rel="noopener noreferrer"&gt;Text Similarity Calculator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/stconvert" rel="noopener noreferrer"&gt;Simplified and Traditional Chinese Converter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/chinesepoem" rel="noopener noreferrer"&gt;Chinese Classical Poetry Database&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more developer APIs, visit &lt;a href="https://gugudata.io/" rel="noopener noreferrer"&gt;GuGuData&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>api</category>
      <category>nlp</category>
      <category>textprocessing</category>
      <category>webdev</category>
    </item>
    <item>
      <title>International Phone Number Validation and Correction API Documentation</title>
      <dc:creator>GuGuData</dc:creator>
      <pubDate>Fri, 10 Apr 2026 14:25:12 +0000</pubDate>
      <link>https://dev.to/gugudata/international-phone-number-validation-and-correction-api-documentation-171k</link>
      <guid>https://dev.to/gugudata/international-phone-number-validation-and-correction-api-documentation-171k</guid>
      <description>&lt;h1&gt;
  
  
  International Phone Number Validation and Correction API: Technical Guide and Integration Notes
&lt;/h1&gt;

&lt;p&gt;The International Phone Number Validation and Correction API from GuGuData helps developers normalize and validate an international phone number using the documented formatting rules.&lt;/p&gt;

&lt;p&gt;This article is written for developers who want a crawlable, readable reference before integrating the endpoint into a product, data pipeline, internal tool, or technical workflow. The official detail page is &lt;a href="https://gugudata.io/details/international-phone-format" rel="noopener noreferrer"&gt;https://gugudata.io/details/international-phone-format&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  API details
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;API name&lt;/td&gt;
&lt;td&gt;International Phone Number Validation and Correction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Category&lt;/td&gt;
&lt;td&gt;Website Tools APIs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Method&lt;/td&gt;
&lt;td&gt;&lt;code&gt;GET&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Endpoint&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://api.gugudata.io/v1/websitetools/international-phone-format&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Content type&lt;/td&gt;
&lt;td&gt;&lt;code&gt;query parameters&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Demo endpoint&lt;/td&gt;
&lt;td&gt;&lt;a href="https://api.gugudata.io/v1/websitetools/international-phone-format/demo" rel="noopener noreferrer"&gt;https://api.gugudata.io/v1/websitetools/international-phone-format/demo&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Detail page&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/international-phone-format" rel="noopener noreferrer"&gt;https://gugudata.io/details/international-phone-format&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAPI JSON&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/assets/openapi/gugudata.openapi.3.1.json" rel="noopener noreferrer"&gt;https://gugudata.io/assets/openapi/gugudata.openapi.3.1.json&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  When to use this API
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Normalize international phone numbers before storage.&lt;/li&gt;
&lt;li&gt;Validate phone input in CRM and signup flows.&lt;/li&gt;
&lt;li&gt;Prepare phone data for cross-region business workflows.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Request parameters
&lt;/h2&gt;

&lt;p&gt;This endpoint accepts parameters through the query string. Keep &lt;code&gt;appkey&lt;/code&gt; out of client-side public code and send it only from trusted server-side environments.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;appkey&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;APPKEY&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Application key used for request authentication. Supply the value as a query parameter, form field, or multipart field according to the request content type.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;phone&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;PHONE&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Phone number to normalize and validate.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Example request
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-G&lt;/span&gt; &lt;span class="s2"&gt;"https://api.gugudata.io/v1/websitetools/international-phone-format"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s2"&gt;"appkey=APPKEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s2"&gt;"phone=PHONE"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Response fields
&lt;/h2&gt;

&lt;p&gt;The response body contains the fields below for successful JSON responses. For binary endpoints, the success response is returned as binary content and JSON is used for error responses.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Response metadata returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.requestParameter&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Normalized request parameters echoed by the service. Sensitive credentials are omitted when available.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.statusCode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;integer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Application-level status code returned by the API response. Successful demo responses currently return &lt;code&gt;200&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.status&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Application-level status enum. Successful demo responses currently return &lt;code&gt;SUCCESS&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.statusDescription&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Application-level status message returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.responseDateTime&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Response timestamp returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.dataTotalCount&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;integer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Total number of records that match the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Primary response payload returned by the endpoint.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data.isValid&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;boolean&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Whether the mobile number is valid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data.correctedMobileNumber&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Corrected mobile number&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data.countryCode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Country phone prefix, e.g., +1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data.countryCode2&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;ISO-3166 two-letter country code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data.countryCode3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;ISO-3166 three-letter country code&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Response example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dataStatus"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusCode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusDescription"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"successfully"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"responseDateTime"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-04-10T00:00:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dataTotalCount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"SUCCESS"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"requestParameter"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"isValid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sample value"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"correctedMobileNumber"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sample value"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"countryCode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sample value"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"countryCode2"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sample value"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"countryCode3"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sample value"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  HTTP status codes
&lt;/h2&gt;

&lt;p&gt;Use the HTTP status code for transport-level handling. If the response body contains &lt;code&gt;dataStatus.statusCode&lt;/code&gt;, treat it as an application-level status field in the JSON payload.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;HTTP status&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Recommended handling&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;200&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request processed successfully.&lt;/td&gt;
&lt;td&gt;Parse the documented response body for the endpoint result.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;400&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Invalid request parameters or request format.&lt;/td&gt;
&lt;td&gt;Check required fields, data types, and request body format.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;401&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Missing or unknown application key.&lt;/td&gt;
&lt;td&gt;Send a valid appkey with the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;403&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The application key is recognized but access is not allowed.&lt;/td&gt;
&lt;td&gt;Check subscription, trial state, and endpoint access.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;429&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request rate or trial usage limit exceeded.&lt;/td&gt;
&lt;td&gt;Reduce concurrency or retry after the limit window resets.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;500&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Internal service error.&lt;/td&gt;
&lt;td&gt;Retry later or contact support if the error persists.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;503&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Upstream service unavailable.&lt;/td&gt;
&lt;td&gt;Retry later when the dependency is available again.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Implementation notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Validate required parameters before sending the request so &lt;code&gt;400&lt;/code&gt; responses are easier to diagnose.&lt;/li&gt;
&lt;li&gt;Keep server-side retries conservative for &lt;code&gt;429&lt;/code&gt;, &lt;code&gt;500&lt;/code&gt;, and &lt;code&gt;503&lt;/code&gt; responses.&lt;/li&gt;
&lt;li&gt;Cache stable metadata responses when your use case allows it, especially for lookup and directory endpoints.&lt;/li&gt;
&lt;li&gt;Log the HTTP status code and &lt;code&gt;dataStatus.statusDescription&lt;/code&gt; together for easier debugging.&lt;/li&gt;
&lt;li&gt;Use the demo endpoint for a quick connectivity check, then switch to the authenticated endpoint for production data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Where is the official API detail page?
&lt;/h3&gt;

&lt;p&gt;The official detail page is &lt;a href="https://gugudata.io/details/international-phone-format" rel="noopener noreferrer"&gt;https://gugudata.io/details/international-phone-format&lt;/a&gt;. It is the best place to review the latest public endpoint information before publishing or integrating.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should I handle &lt;code&gt;dataStatus.statusCode&lt;/code&gt; as the HTTP status code?
&lt;/h3&gt;

&lt;p&gt;No. Use the HTTP status code for request-level behavior such as authentication, permission, rate limiting, and server errors. Use &lt;code&gt;dataStatus.statusCode&lt;/code&gt; only as the response body status field when it is present.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I use the demo endpoint in production?
&lt;/h3&gt;

&lt;p&gt;No. The demo endpoint is for quick testing and examples. Use the authenticated endpoint with your &lt;code&gt;appkey&lt;/code&gt; for production workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related GuGuData APIs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/readability" rel="noopener noreferrer"&gt;Webpage Readable Content Extraction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/sslcertinfo" rel="noopener noreferrer"&gt;Domain SSL Certificate Information Parsing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/dnslookup" rel="noopener noreferrer"&gt;Domain DNS Information Query&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more developer APIs, visit &lt;a href="https://gugudata.io/" rel="noopener noreferrer"&gt;GuGuData&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>api</category>
      <category>nlp</category>
      <category>textprocessing</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Convert Word to HTML API Documentation</title>
      <dc:creator>GuGuData</dc:creator>
      <pubDate>Fri, 10 Apr 2026 14:24:20 +0000</pubDate>
      <link>https://dev.to/gugudata/convert-word-to-html-api-documentation-80c</link>
      <guid>https://dev.to/gugudata/convert-word-to-html-api-documentation-80c</guid>
      <description>&lt;h1&gt;
  
  
  Convert Word to HTML API: Technical Guide and Integration Notes
&lt;/h1&gt;

&lt;p&gt;The Convert Word to HTML API from GuGuData helps developers convert an uploaded Microsoft Word document into HTML.&lt;/p&gt;

&lt;p&gt;This article is written for developers who want a crawlable, readable reference before integrating the endpoint into a product, data pipeline, internal tool, or technical workflow. The official detail page is &lt;a href="https://gugudata.io/details/word2html" rel="noopener noreferrer"&gt;https://gugudata.io/details/word2html&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  API details
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;API name&lt;/td&gt;
&lt;td&gt;Convert Word to HTML&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Category&lt;/td&gt;
&lt;td&gt;Document and Image APIs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Method&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Endpoint&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://api.gugudata.io/v1/imagerecognition/word-to-html&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Content type&lt;/td&gt;
&lt;td&gt;&lt;code&gt;multipart/form-data&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Demo endpoint&lt;/td&gt;
&lt;td&gt;&lt;a href="https://api.gugudata.io/v1/imagerecognition/word-to-html/demo" rel="noopener noreferrer"&gt;https://api.gugudata.io/v1/imagerecognition/word-to-html/demo&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Detail page&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/word2html" rel="noopener noreferrer"&gt;https://gugudata.io/details/word2html&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAPI JSON&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/assets/openapi/gugudata.openapi.3.1.json" rel="noopener noreferrer"&gt;https://gugudata.io/assets/openapi/gugudata.openapi.3.1.json&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  When to use this API
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Convert Word documents into web-ready HTML.&lt;/li&gt;
&lt;li&gt;Prepare document content for CMS ingestion.&lt;/li&gt;
&lt;li&gt;Automate document migration into web applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Request parameters
&lt;/h2&gt;

&lt;p&gt;This endpoint accepts parameters through the query string plus request body. Keep &lt;code&gt;appkey&lt;/code&gt; out of client-side public code and send it only from trusted server-side environments.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;appkey&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;YOUR_APPKEY&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Application key used for request authentication. Supply the value as a query parameter, form field, or multipart field according to the request content type.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;file&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;file&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Local file uploaded as multipart form data.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Example request
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://api.gugudata.io/v1/imagerecognition/word-to-html?appkey=YOUR_APPKEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-F&lt;/span&gt; &lt;span class="s2"&gt;"file=@./sample.docx"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Response fields
&lt;/h2&gt;

&lt;p&gt;The response body contains the fields below for successful JSON responses. For binary endpoints, the success response is returned as binary content and JSON is used for error responses.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;html_url&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;CDN URL of the converted HTML file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;html_content&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;HTML content of the converted document (embedded content)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Response example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dataStatus"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusCode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusDescription"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"successfully"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"responseDateTime"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-04-10T00:00:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dataTotalCount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sample value"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  HTTP status codes
&lt;/h2&gt;

&lt;p&gt;Use the HTTP status code for transport-level handling. If the response body contains &lt;code&gt;dataStatus.statusCode&lt;/code&gt;, treat it as an application-level status field in the JSON payload.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;HTTP status&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Recommended handling&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;200&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request processed successfully.&lt;/td&gt;
&lt;td&gt;Parse the documented response body for the endpoint result.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;400&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Invalid request parameters or request format.&lt;/td&gt;
&lt;td&gt;Check required fields, data types, and request body format.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;401&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Missing or unknown application key.&lt;/td&gt;
&lt;td&gt;Send a valid appkey with the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;403&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The application key is recognized but access is not allowed.&lt;/td&gt;
&lt;td&gt;Check subscription, trial state, and endpoint access.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;429&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request rate or trial usage limit exceeded.&lt;/td&gt;
&lt;td&gt;Reduce concurrency or retry after the limit window resets.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;500&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Internal service error.&lt;/td&gt;
&lt;td&gt;Retry later or contact support if the error persists.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;503&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Upstream service unavailable.&lt;/td&gt;
&lt;td&gt;Retry later when the dependency is available again.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Implementation notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Validate required parameters before sending the request so &lt;code&gt;400&lt;/code&gt; responses are easier to diagnose.&lt;/li&gt;
&lt;li&gt;Keep server-side retries conservative for &lt;code&gt;429&lt;/code&gt;, &lt;code&gt;500&lt;/code&gt;, and &lt;code&gt;503&lt;/code&gt; responses.&lt;/li&gt;
&lt;li&gt;Cache stable metadata responses when your use case allows it, especially for lookup and directory endpoints.&lt;/li&gt;
&lt;li&gt;Log the HTTP status code and &lt;code&gt;dataStatus.statusDescription&lt;/code&gt; together for easier debugging.&lt;/li&gt;
&lt;li&gt;Use the demo endpoint for a quick connectivity check, then switch to the authenticated endpoint for production data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Where is the official API detail page?
&lt;/h3&gt;

&lt;p&gt;The official detail page is &lt;a href="https://gugudata.io/details/word2html" rel="noopener noreferrer"&gt;https://gugudata.io/details/word2html&lt;/a&gt;. It is the best place to review the latest public endpoint information before publishing or integrating.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should I handle &lt;code&gt;dataStatus.statusCode&lt;/code&gt; as the HTTP status code?
&lt;/h3&gt;

&lt;p&gt;No. Use the HTTP status code for request-level behavior such as authentication, permission, rate limiting, and server errors. Use &lt;code&gt;dataStatus.statusCode&lt;/code&gt; only as the response body status field when it is present.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I use the demo endpoint in production?
&lt;/h3&gt;

&lt;p&gt;No. The demo endpoint is for quick testing and examples. Use the authenticated endpoint with your &lt;code&gt;appkey&lt;/code&gt; for production workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related GuGuData APIs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/html2pdf" rel="noopener noreferrer"&gt;HTML/URL to PDF&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/imagestreamocr" rel="noopener noreferrer"&gt;Image OCR Extraction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/pdf2format" rel="noopener noreferrer"&gt;PDF Parsing and Formatted Output&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more developer APIs, visit &lt;a href="https://gugudata.io/" rel="noopener noreferrer"&gt;GuGuData&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>api</category>
      <category>pdf</category>
      <category>automation</category>
      <category>webdev</category>
    </item>
    <item>
      <title>US Stock Symbols Directory API Documentation</title>
      <dc:creator>GuGuData</dc:creator>
      <pubDate>Fri, 10 Apr 2026 14:23:29 +0000</pubDate>
      <link>https://dev.to/gugudata/us-stock-symbols-directory-api-documentation-21lg</link>
      <guid>https://dev.to/gugudata/us-stock-symbols-directory-api-documentation-21lg</guid>
      <description>&lt;h1&gt;
  
  
  US Stock Symbols Directory API: Technical Guide and Integration Notes
&lt;/h1&gt;

&lt;p&gt;The US Stock Symbols Directory API from GuGuData helps developers search United States stock ticker symbols and company names with paginated results.&lt;/p&gt;

&lt;p&gt;This article is written for developers who want a crawlable, readable reference before integrating the endpoint into a product, data pipeline, internal tool, or technical workflow. The official detail page is &lt;a href="https://gugudata.io/details/us-stock-symbols" rel="noopener noreferrer"&gt;https://gugudata.io/details/us-stock-symbols&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  API details
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;API name&lt;/td&gt;
&lt;td&gt;US Stock Symbols Directory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Category&lt;/td&gt;
&lt;td&gt;Metadata APIs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Method&lt;/td&gt;
&lt;td&gt;&lt;code&gt;GET&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Endpoint&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://api.gugudata.io/v1/stock/us/symbols&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Content type&lt;/td&gt;
&lt;td&gt;&lt;code&gt;query parameters&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Demo endpoint&lt;/td&gt;
&lt;td&gt;&lt;a href="https://api.gugudata.io/v1/stock/us/symbols/demo" rel="noopener noreferrer"&gt;https://api.gugudata.io/v1/stock/us/symbols/demo&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Detail page&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/details/us-stock-symbols" rel="noopener noreferrer"&gt;https://gugudata.io/details/us-stock-symbols&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAPI JSON&lt;/td&gt;
&lt;td&gt;&lt;a href="https://gugudata.io/assets/openapi/gugudata.openapi.3.1.json" rel="noopener noreferrer"&gt;https://gugudata.io/assets/openapi/gugudata.openapi.3.1.json&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  When to use this API
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Search United States stock symbols and company names.&lt;/li&gt;
&lt;li&gt;Build ticker lookup in finance tools.&lt;/li&gt;
&lt;li&gt;Normalize US market symbol metadata.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Request parameters
&lt;/h2&gt;

&lt;p&gt;This endpoint accepts parameters through the query string. Keep &lt;code&gt;appkey&lt;/code&gt; out of client-side public code and send it only from trusted server-side environments.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Default&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;appkey&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;YOUR_APPKEY&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Application key used for request authentication. Supply the value as a query parameter, form field, or multipart field according to the request content type.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;query&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Search keyword used for partial matching against the documented dataset fields.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pageIndex&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;integer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;One-based page index for pagination.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;pageSize&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;integer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;&lt;code&gt;20&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Number of records returned per page.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Example request
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-G&lt;/span&gt; &lt;span class="s2"&gt;"https://api.gugudata.io/v1/stock/us/symbols"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s2"&gt;"appkey=YOUR_APPKEY"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s2"&gt;"query=AAPL"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s2"&gt;"pageIndex=1"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--data-urlencode&lt;/span&gt; &lt;span class="s2"&gt;"pageSize=20"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Response fields
&lt;/h2&gt;

&lt;p&gt;The response body contains the fields below for successful JSON responses. For binary endpoints, the success response is returned as binary content and JSON is used for error responses.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;object&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Response metadata. &lt;code&gt;dataStatus.statusCode&lt;/code&gt; is a response body status field, not the HTTP status code.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.requestParameter&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Normalized request parameters echoed by the service. Sensitive credentials are omitted when available.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.statusCode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;integer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Response body status field. Successful demo responses currently return &lt;code&gt;100&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.statusDescription&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Response body status message. Successful demo responses currently return a Chinese message.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.responseDateTime&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Response timestamp returned by the API response.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;dataStatus.dataTotalCount&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;integer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Total number of records that match the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;array&amp;lt;string&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Primary response payload returned by the endpoint.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data[].symbol&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;US stock ticker symbol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;data[].stockName&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;string&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;English company name returned by the dataset.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Response example
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"dataStatus"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusCode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"statusDescription"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"请求成功"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"responseDateTime"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-04-10T00:00:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dataTotalCount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"requestParameter"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sample value"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  HTTP status codes
&lt;/h2&gt;

&lt;p&gt;Use the HTTP status code for transport-level handling. If the response body contains &lt;code&gt;dataStatus.statusCode&lt;/code&gt;, treat it as an application-level status field in the JSON payload.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;HTTP status&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Recommended handling&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;200&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request processed successfully.&lt;/td&gt;
&lt;td&gt;Parse the documented response body for the endpoint result.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;400&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Invalid request parameters or request format.&lt;/td&gt;
&lt;td&gt;Check required fields, data types, and request body format.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;401&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Missing or unknown application key.&lt;/td&gt;
&lt;td&gt;Send a valid appkey with the request.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;403&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The application key is recognized but access is not allowed.&lt;/td&gt;
&lt;td&gt;Check subscription, trial state, and endpoint access.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;429&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Request rate or trial usage limit exceeded.&lt;/td&gt;
&lt;td&gt;Reduce concurrency or retry after the limit window resets.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;500&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Internal service error.&lt;/td&gt;
&lt;td&gt;Retry later or contact support if the error persists.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;503&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Upstream service unavailable.&lt;/td&gt;
&lt;td&gt;Retry later when the dependency is available again.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Implementation notes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Validate required parameters before sending the request so &lt;code&gt;400&lt;/code&gt; responses are easier to diagnose.&lt;/li&gt;
&lt;li&gt;Keep server-side retries conservative for &lt;code&gt;429&lt;/code&gt;, &lt;code&gt;500&lt;/code&gt;, and &lt;code&gt;503&lt;/code&gt; responses.&lt;/li&gt;
&lt;li&gt;Cache stable metadata responses when your use case allows it, especially for lookup and directory endpoints.&lt;/li&gt;
&lt;li&gt;Log the HTTP status code and &lt;code&gt;dataStatus.statusDescription&lt;/code&gt; together for easier debugging.&lt;/li&gt;
&lt;li&gt;Use the demo endpoint for a quick connectivity check, then switch to the authenticated endpoint for production data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Where is the official API detail page?
&lt;/h3&gt;

&lt;p&gt;The official detail page is &lt;a href="https://gugudata.io/details/us-stock-symbols" rel="noopener noreferrer"&gt;https://gugudata.io/details/us-stock-symbols&lt;/a&gt;. It is the best place to review the latest public endpoint information before publishing or integrating.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should I handle &lt;code&gt;dataStatus.statusCode&lt;/code&gt; as the HTTP status code?
&lt;/h3&gt;

&lt;p&gt;No. Use the HTTP status code for request-level behavior such as authentication, permission, rate limiting, and server errors. Use &lt;code&gt;dataStatus.statusCode&lt;/code&gt; only as the response body status field when it is present.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I use the demo endpoint in production?
&lt;/h3&gt;

&lt;p&gt;No. The demo endpoint is for quick testing and examples. Use the authenticated endpoint with your &lt;code&gt;appkey&lt;/code&gt; for production workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related GuGuData APIs
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/qs-global-university-ranking" rel="noopener noreferrer"&gt;Global QS World University Rankings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/chinesepoem" rel="noopener noreferrer"&gt;Chinese Classical Poetry Database&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gugudata.io/details/global-university" rel="noopener noreferrer"&gt;Global University Data&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more developer APIs, visit &lt;a href="https://gugudata.io/" rel="noopener noreferrer"&gt;GuGuData&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>api</category>
      <category>finance</category>
      <category>data</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
