1"use strict";(self.webpackChunkmicrolink_www=self.webpackChunkmicrolink_www||[]).push([[14893],{7633:function(e,t,n){n.r(t),n.d(t,{Head:function(){return E},default:function(){return f}});var a=n(28453),r=n(96540),l=n(99017),o=n(50303);function i(e){const t=Object.assign({p:"p",a:"a",strong:"strong",ul:"ul",li:"li",code:"code",h2:"h2",pre:"pre",table:"table",thead:"thead",tr:"tr",th:"th",tbody:"tbody",td:"td",h3:"h3"},(0,a.R)(),e.components);return r.createElement(r.Fragment,null,r.createElement(t.p,null,r.createElement(t.a,{href:"https://unavatar.io"},"unavatar")," is now ",r.createElement(t.strong,null,"Generally Available"),", and it launches with a pay-as-you-go ",r.createElement(t.a,{href:"https://unavatar.io/checkout"},"PRO")," plan at $0.001 per avatar token. The free tier stays at 50 avatar resolutions a day per IP address."),"\n",r.createElement(o.p,{url:"https://unavatar.io"}),"\n",r.createElement(t.p,null,r.createElement(t.strong,null,"TL;DR")),"\n",r.createElement(t.ul,null,"\n",r.createElement(t.li,null,"unavatar is now ",r.createElement(t.strong,null,"Generally Available"),", with a pay-as-you-go PRO plan at ",r.createElement(t.strong,null,"$0.001 per avatar token"),"."),"\n",r.createElement(t.li,null,"The free tier stays at ",r.createElement(t.strong,null,"50 avatar resolutions a day")," per IP address."),"\n",r.createElement(t.li,null,"PRO removes the daily cap and resolves avatars behind bot protection on platforms like Instagram or LinkedIn."),"\n",r.createElement(t.li,null,"unavatar supports over 18 providers and resolves more than ",r.createElement(t.strong,null,"200 million requests per month"),"."),"\n",r.createElement(t.li,null,"The default cache duration is now ",r.createElement(t.strong,null,"7 days"),", and the ",r.createElement(t.code,null,"ttl")," parameter sets it anywhere between 1 hour and 28 days."),"\n"),"\n",r.createElement(t.p,null,"Resolving a user avatar across social networks means handling a different API format per network and getting past bot protection on platforms like Instagram or LinkedIn. unavatar puts all of that behind one URL."),"\n",r.createElement(t.h2,{id:"one-url-for-any-username-email-or-domain"},"One URL for any username, email, or domain"),"\n",r.createElement(t.p,null,"You pass unavatar a username, an email address, or a domain name, and it resolves it and returns the avatar URL:"),"\n",r.createElement(t.pre,null,r.createElement(t.code,{className:"language-bash"},"\n# Get avatar by X username\ncurl https://unavatar.io/x/microlinkhq \n\n# Get avatar by domain\ncurl https://unavatar.io/microlink.io \n\n# Get avatar by email\ncurl https://unavatar.io/[email protected]\n")),"\n",r.createElement(t.p,null,"Instead of integrating with dozens of different APIs just to show a profile picture, you call one endpoint that works across X, email addresses, and domains with the same URL shape."),"\n",r.createElement(t.h2,{id:"200-million-requests-a-month-outgrew-the-free-tier"},"200 million requests a month outgrew the free tier"),"\n",r.createElement(t.p,null,"The project started almost ",r.createElement(t.strong,null,r.createElement(l.z,{from:"2018"})," years ago"),". Today, unavatar supports over 18 providers and resolves more than ",r.createElement(t.strong,null,"200 million requests per month"),"."),"\n",r.createElement(t.p,null,"Keeping that reliable and free got harder every year. Platforms like Instagram and LinkedIn introduced increasingly aggressive bot protection and stricter rate limits, and resolving their avatars became a game of cat and mouse."),"\n",r.createElement(t.p,null,"The daily limits, originally designed to protect our infrastructure from automated abuse, became a bottleneck for users moving from side projects to production-grade applications that need more than 50 avatars a day. A high success rate across all providers required a level of infrastructure and complexity that the original free-tier architecture was never designed to handle."),"\n",r.createElement(t.h2,{id:"the-free-tier-stays-at-50-resolutions-a-day"},"The free tier stays at 50 resolutions a day"),"\n",r.createElement(t.p,null,"Microlink is committed to always providing a free solution without expecting anything in return. That commitment is rooted in our open source core values, which is why ",r.createElement(t.a,{href:"https://unavatar.io"},"unavatar")," keeps a free tier."),"\n",r.createElement(t.p,null,r.createElement(t.strong,null,"unavatar")," remains free to use for everyone. You get ",r.createElement(t.strong,null,"50 avatar resolutions every day")," per IP address, which is enough for side projects, small experiments, and local development."),"\n",r.createElement(t.h2,{id:"pro-removes-the-daily-cap"},"PRO removes the daily cap"),"\n",r.createElement(t.p,null,"The ",r.createElement(t.a,{href:"https://unavatar.io/checkout"},"PRO")," plan lifts the 50-a-day limit of the free plan, so you can scale at the moment your usage requires it:"),"\n",r.createElement(t.ul,null,"\n",r.createElement(t.li,null,r.createElement(t.strong,null,"No daily cap:")," Your application keeps resolving avatars without interruptions."),"\n",r.createElement(t.li,null,r.createElement(t.strong,null,"Advanced resolution:")," unavatar jumps CAPTCHAs, handles bot protection, and bypasses restrictive challenges on platforms like Instagram or LinkedIn."),"\n",r.createElement(t.li,null,r.createElement(t.strong,null,"Dynamic pricing:")," unavatar adjusts its strategy and cost to each provider's complexity to get the highest success rate."),"\n"),"\n",r.createElement(t.h2,{id:"you-control-the-cache-with-ttl"},"You control the cache with ttl"),"\n",r.createElement(t.p,null,"We shortened the default cache duration from 1 year, the fixed value before the ",r.createElement(t.a,{href:"https://unavatar.io/checkout"},"PRO")," plan existed, to ",r.createElement(t.strong,null,"7 days"),". You can now set it yourself to anything between ",r.createElement(t.strong,null,"1 hour and 28 days")," with the ",r.createElement(t.code,null,"ttl")," parameter:"),"\n",r.createElement(t.pre,null,r.createElement(t.code,{className:"language-bash"},"https://unavatar.io/x/microlinkhq?ttl=1d # 86400000\nhttps://unavatar.io/x/microlinkhq?ttl=1day # 86400000\nhttps://unavatar.io/x/microlinkhq?ttl=1h # 3600000\n")),"\n",r.createElement(t.h2,{id:"pricing-is-0001-per-avatar-token"},"Pricing is $0.001 per avatar token"),"\n",r.createElement(t.p,null,"The ",r.createElement(t.a,{href:"https://unavatar.io/checkout"},"PRO")," plan is pay-as-you-go at ",r.createElement(t.strong,null,"$0.001 per avatar token"),". The number of tokens an avatar resolution costs depends on the strategy unavatar needs to resolve it:"),"\n",r.createElement(t.table,null,r.createElement(t.thead,null,r.createElement(t.tr,null,r.createElement(t.th,null,"Tokens"),r.createElement(t.th,null,"Resolved by"))),r.createElement(t.tbody,null,r.createElement(t.tr,null,r.createElement(t.td,null,r.createElement(t.strong,null,"1 token")),r.createElement(t.td,null,"unavatar servers")),r.createElement(t.tr,null,r.createElement(t.td,null,r.createElement(t.strong,null,"2 tokens")),r.createElement(t.td,null,"a datacenter proxy")),r.createElement(t.tr,null,r.createElement(t.td,null,r.createElement(t.strong,null,"4 tokens")),r.createElement(t.td,null,"a residential proxy")))),"\n",r.createElement(t.p,null,"The service suggests an upgrade to ",r.createElement(t.a,{href:"https://unavatar.io/checkout"},"PRO")," only when it detects that a request failing under the free tier could be resolved with the PRO strategies, so you pay for proxies only on the requests that need them."),"\n",r.createElement(t.h3,{id:"what-a-resolution-costs"},"What a resolution costs"),"\n",r.createElement(t.p,null,"A simple avatar resolves normally, for ",r.createElement(t.code,null,"1 Ã $0.001 = $0.001 total"),". A complex provider such as Instagram or LinkedIn requires a residential proxy, for ",r.createElement(t.code,null,"1 Ã $0.001 + 2 Ã $0.001 + 4 Ã $0.001 = $0.007 total"),"."),"\n",r.createElement(t.p,null,"The billing rules:"),"\n",r.createElement(t.ul,null,"\n",r.createElement(t.li,null,"You are only charged for the ",r.createElement(t.strong,null,"first successful resolution"),"."),"\n",r.createElement(t.li,null,"All subsequent requests served from cache are ",r.createElement(t.strong,null,"free"),"."),"\n",r.createElement(t.li,null,"We do ",r.createElement(t.strong,null,"not")," charge for failed resolutions."),"\n",r.createElement(t.li,null,"Only a few providers require a residential proxy, for example Instagram and similar complex platforms."),"\n"),"\n",r.createElement(t.p,null,"You can verify the tier and cost of a resolution in the response headers:"),"\n",r.createElement(t.table,null,r.createElement(t.thead,null,r.createElement(t.tr,null,r.createElement(t.th,null,"Header"),r.createElement(t.th,null,"Values"),r.createElement(t.th,null,"Meaning"))),r.createElement(t.tbody,null,r.createElement(t.tr,null,r.createElement(t.td,null,r.createElement(t.code,null,"x-pricing-tier")),r.createElement(t.td,null,r.createElement(t.code,null,"free")," / ",r.createElement(t.code,null,"pro")),r.createElement(t.td,null,"which pricing tier was used")),r.createElement(t.tr,null,r.createElement(t.td,null,r.createElement(t.code,null,"x-proxy-tier")),r.createElement(t.td,null,r.createElement(t.code,null,"origin")," / ",r.createElement(t.code,null,"datacenter")," / ",r.createElement(t.code,null,"residential")),r.createElement(t.td,null,"which resolution method was required")),r.createElement(t.tr,null,r.createElement(t.td,null,r.createElement(t.code,null,"x-unavatar-cost")),r.createElement(t.td,null,r.createElement(t.code,null,"n")),r.createElement(t.td,null,"number of tokens consumed for the avatar resolution")))),"\n",r.createElement(t.h2,{id:"coming-next-analytics-and-bluesky-vimeo-and-whatsapp"},"Coming next: analytics and Bluesky, Vimeo, and WhatsApp"),"\n",r.createElement(t.p,null,"We are working on three additions:"),"\n",r.createElement(t.ul,null,"\n",r.createElement(t.li,null,r.createElement(t.strong,null,"Built-in analytics:")," detailed usage metrics and insights."),"\n",r.createElement(t.li,null,r.createElement(t.strong,null,"Improved detection:")," better domain and brand detection for automatic resolution."),"\n",r.createElement(t.li,null,r.createElement(t.strong,null,"New providers:")," support for Vimeo, Bluesky, and WhatsApp."),"\n"),"\n",r.createElement(t.h2,{id:"upgrade-to-pro"},"Upgrade to PRO"),"\n",r.createElement(t.p,null,"Try the free tier with ",r.createElement(t.code,null,"curl https://unavatar.io/microlink.io"),", and upgrade to ",r.createElement(t.a,{href:"https://unavatar.io/checkout"},"PRO")," anytime at ",r.createElement(t.a,{href:"https://unavatar.io/checkout"},"unavatar.io/checkout"),"."))}var s=function(e={}){const{wrapper:t}=Object.assign({},(0,a.R)(),e.components);return t?r.createElement(t,e,r.createElement(i,e)):i(e)},c=n(29451),u=n(55140),m=n(44310),d=n(64810),h=n(50754),p=n(55267);const E=({pageContext:e,location:t})=>{const{description:n,isDocPage:a,isBlogPage:l,frontmatter:o={},lastEdited:i}=e,s=(0,d.GR)("502257632"),h=(0,u.Q)(),{name:p}=h;if(a||l){const e=(0,c.v1)(t),u=o.date&&!isNaN(new Date(o.date).getTime())?o.date:void 0,d=i&&!isNaN(new Date(i).getTime())?i:u,h={...o,description:n,name:a?"Guides"===e?"Microlink Guides":"Microlink Docs":"Microlink Blog",title:a?"Guides"===e?o.title||"":`${p} ${e}: ${o.title||""}`:o.title,publishedDate:u,modifiedDate:d,schemaType:l?"Article":"TechArticle",authors:l?(e=>{const t=new Map(((null==s||null===(e=s.allAuthorsYaml)||void 0===e?void 0:e.nodes)||[]).map(e=>[e.key,e.name]));return(o.authors||[]).flatMap(e=>{const n=t.get(e);return n?[n]:[]})})():void 0};return r.createElement(m.A,h)}return r.createElement(m.A,o)},g=({pageContext:e,children:t,...n})=>{var a;const{isDocPage:l,isBlogPage:o,lastEdited:i,githubUrl:s,frontmatter:c={}}=e,u=null!==(a=c.date)&&void 0!==a?a:i;return l?r.createElement(p.A,Object.assign({title:c.title,isPro:c.isPro,date:u,content:t,githubUrl:s},n)):r.createElement(h.A,Object.assign({title:c.title,subtitle:c.subtitle,authors:c.authors,date:u&&new Date(u),lastEdited:c.lastEdited?i:null,isBlogPage:o,content:t},n))};function f(e){return r.createElement(g,e,r.createElement(s,e))}},33015:function(e,t,n){n.d(t,{A:function(){return d}});var a=n(32144),r=n.n(a);const l=n(5405).f?void 0:"4g"===r()(window,"navigator.connection.effectiveType");var o=n(64815),i=n(70882),s=n(21522),c=n(72869),u=n(96540);
1const m=["iframe",l&&"video",l&&"audio","image","logo"].filter(Boolean);var d=({url:e,style:t,fetchData:n,setData:a,media:r=m,...l})=>{e&&(e=(0,s.v)(e));const d=(0,i.U)(e),h=(0,o.uB)(d),{data:p}=h||{},E=void 0!==n?n:!p,g="function"==typeof a?a(p):{...p,...a};return u.createElement(c.Ay,Object.assign({url:e,media:r,style:{margin:"auto",...t},fetchData:E,setData:g},l))}},50303:function(e,t,n){n.d(t,{p:function(){return r}});var a=n(33015);const r=(0,n(7129).Ub)(a.A)},64815:function(e,t,n){n.d(t,{uB:function(){return l}});var a=n(6016);new Map(a.map(e=>[e.id,e]));const r=new Map(a.map(e=>[e.data.url,e])),l=e=>{for(const t of e){const e=r.get(t);if(e)return e}}},70882:function(e,t,n){n.d(t,{U:function(){return a}});const a=e=>{const t=`${e.replace("https://","https://www.")}`;return[e,`${e}/`,t,`${t}/`]}},99017:function(e,t,n){n.d(t,{z:function(){return a}});const a=({from:e})=>(new Date).getFullYear()-new Date(e).getFullYear()}}]); 2//# sourceMappingURL=component---src-templates-index-js-content-file-path-src-content-blog-unavatario-generally-available-now-md-008efaa0a943c0f6af1a.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.