# ApyHub > Certified, production-ready APIs for the features every product eventually needs. One subscription, one bill, MCP-ready by default. Free tier, no card. ApyHub is a marketplace of certified, production-ready HTTP APIs. One API key and one subscription work across every service in the catalog. Usage is metered in *atoms* (a per-call credit unit). Every service, provider and blog page on this site is also available as Markdown by appending `.md` to its path, as are /catalog, /privacy, /terms and /provider-terms. Marketing pages are HTML only. ## Base URL REST calls go to `https://api.eu.apyhub.com`. Authenticate with an ApyHub API key in the `apy-token` header. That is the default region. A workspace provisioned in another region calls that region's host instead, with identical paths — `GET https://apyhub.com/api/public/regions` returns every region's hostname. ## Site - [ApyHub Pricing | One Subscription, the Whole Catalog](https://apyhub.com/pricing): Usage-based pricing across every API in the catalog. You pay in atoms, so a small lookup never costs the same as a heavy conversion. - [API Catalog | Certified, MCP-Ready API Endpoints](https://apyhub.com/catalog): Browse a growing catalog of certified APIs for AI, file conversion, data extraction, and validation. One subscription, MCP-ready. Free tier. - [ApyHub MCP: Put Your AI Assistant to Work](https://apyhub.com/mcp): One MCP connection gives your AI assistant over 1,500 certified tools it can run for you. Invoices, verification, transcription, reporting. No code. Free tier, no card. - [Publish Your API on ApyHub | Become a Provider](https://apyhub.com/become-a-provider): List a production API in under 10 minutes. We handle docs, validation, certification, billing, and agent readiness. Free to list, no exclusivity. - [Provider Revenue Split and Payouts | ApyHub](https://apyhub.com/provider-economics): How ApyHub shares revenue with API providers: a fixed per-atom floor rate on subscriptions, plus a 50/50 split on top-up calls, never below your floor. - [About ApyHub | Why We Built the Trusted API Layer](https://apyhub.com/about): The API catalog, redesigned for how teams actually consume APIs. Why we built ApyHub, how atoms work, and what certification actually means in practice. - [Enterprise API Catalog for AI Products | ApyHub](https://apyhub.com/enterprise): The enterprise API catalog for teams building AI products. Ready-made kits for document parsing, models, verification, PII redaction and output. One subscription, one catalog, EU, US and Asia regions. - [ApyHub Quickstart | First API Call in 5 Minutes](https://apyhub.com/quickstart): One subscription, the whole catalog, pricing that reflects the actual work. Get from sign-up to your first production call in about five minutes. - [ApyHub Support | Docs, Live Chat, and Bug Reports](https://apyhub.com/support): Found a bug or stuck on an integration? Reach the ApyHub team through community, email, live chat, or the AI assistant available on every page. - [Privacy Policy | How ApyHub Handles Your Data](https://apyhub.com/privacy): How ApyHub collects, stores, and protects your data, including sub-processors, retention periods, and your rights under GDPR. - [Terms of Service | Using the ApyHub Platform](https://apyhub.com/terms): The terms governing your use of the ApyHub platform, the API catalog, subscriptions, atoms, and acceptable use of the services you call through us. - [Provider Terms | Listing an API on ApyHub](https://apyhub.com/provider-terms): The terms governing API providers who list and sell on ApyHub, covering IP ownership, pricing control, payouts, and sunset obligations. - [ApyHub Blog | API Engineering Notes and Updates](https://apyhub.com/blog): Engineering notes, API design writing, compliance explainers, and product updates from the team building the ApyHub catalog. ## Machine-readable - [llms-full.txt](https://apyhub.com/llms-full.txt): every catalog service with its endpoints, inlined. - [sitemap.xml](https://apyhub.com/sitemap.xml): all indexable URLs. - [MCP server](https://mcp.eu.apyhub.com): every subscribed ApyHub API as MCP tools (streamable HTTP). Connect via OAuth (add the URL, sign in when prompted) or send `Authorization: Bearer `. ## Services --- title: Check Domain Availability Across TLDs API slug: check-domain-availability-across-tlds url: https://apyhub.com/freejosephe/service/check-domain-availability-across-tlds provider: Youssef Ferri tags: [domain-availability, rdap, tld-check, domain-search, available-domains, domain-investing] auth: api_key version: v1 service_type: sync endpoints: 1 atoms: 80 --- # Check Domain Availability Across TLDs API Check domain name availability across multiple TLDs with our Domain Availability Checker API. Retrieve RDAP status, registrar details, expiration dates, and availability signals. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/freejosephe/check-domain-availability-across-tlds/v1/domain/availability` | What it does Checks domain availability across one or more TLDs using RDAP and returns a JSON objec… | 80 | ## Endpoint reference ### Domain availability across TLDs (RDAP) `GET https://api.eu.apyhub.com/freejosephe/check-domain-availability-across-tlds/v1/domain/availability` · 80 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `name` | query | string | yes | | | `tlds` | query | string | no | | #### Quickstart Check whether a domain name is available by passing the required `name` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/freejosephe/check-domain-availability-across-tlds/v1/domain/availability?name=apyhub" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `name`, `note`, `results`, and `checked_at` fields. `results` is an array of domain check objects; each item may include `label`, `domain`, `status`, `expires`, `registrar`, `investor_score`, and `likely_available`. ```json { "name": "apyhub", "checked_at": "2026-10-22T05:04:04.601Z", "results": [ { "domain": "apyhub.com", "domain_unicode": null, "tld": "com", "status": "registered", "likely_available": false, "label": "Registered", "registrar": "Porkbun LLC", "expires": "2028-11-17T15:51:44Z", "lifecycle": "active", "dns_hint": null, "investor_score": 82 }, { "domain": "apyhub.net", "domain_unicode": null, "tld": "net", "status": "registered", "likely_available": false, "label": "Registered", "registrar": "Porkbun LLC", "expires": "2026-11-17T15:51:42Z", "lifecycle": "active", "dns_hint": null, "investor_score": 71 }, { "domain": "apyhub.org", "domain_unicode": null, "tld": "org", "status": "not_found_in_rdap", "likely_available": true, "label": "Not found in RDAP, likely available. Confirm at a registrar.", "registrar": null, "expires": null, "lifecycle": null, "dns_hint": null, "investor_score": 65 }, { "domain": "apyhub.io", "domain_unicode": null, "tld": "io", "status": "registered_dns_only", "likely_available": false, "label": "Registered (DNS delegation; TLD has no RDAP)", "registrar": null, "expires": null, "lifecycle": null, "dns_hint": "delegated", "investor_score": 63 }, { "domain": "apyhub.app", "domain_unicode": null, "tld": "app", "status": "unknown", "likely_available": null, "label": "Unknown (RDAP rate limited (429), retry later)", "registrar": null, "expires": null, "lifecycle": null, "dns_hint": "nxdomain", "investor_score": 61 } ], "note": "\"Not found in RDAP\" means the registry has no record. Reserved or premium names can still be unavailable at registrars." } ``` ## About ## What it does Domain Availability Checker looks up a domain name across one or more TLDs and returns RDAP-based availability signals for each check. Send a `name` and, optionally, a `tlds` list. The response includes the queried `name`, an optional `note`, a `checked_at` timestamp, and a `results` array. Each result item contains the TLD `label`, full `domain`, `status`, `expires`, `registrar`, `investor_score`, and `likely_available` where available. Use Domain Availability Checker when you need to screen candidate brand names, preflight registration flows, or compare multiple extensions before sending users to a registrar. The `status` values let you distinguish registered domains from RDAP misses, unknowns, and names that were not checked, so your app can make a clear decision without extra parsing. It is a good fit for signup flows, internal naming tools, portfolio checks, and domain research dashboards that need a compact availability result rather than a full WHOIS dump. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/freejosephe/service/check-domain-availability-across-tlds * * * --- title: Convert and Get Crypto Prices API slug: convert-and-get-crypto-prices-api url: https://apyhub.com/corsair96/service/convert-and-get-crypto-prices-api provider: corsair96 categories: [Finance] tags: [crypto-prices, spot-prices, market-data, digital-assets, price-feed] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 50-60 --- # Convert and Get Crypto Prices API Get live spot prices for supported crypto symbols in USD, EUR, GBP, BTC, or ETH. Returns price, 24h change, and market cap by symbol. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/corsair96/convert-and-get-crypto-prices-api/crypto/prices` | What it does Returns spot prices for one or more symbols quoted in a selected currency. The request… | 60 | | GET | `https://api.eu.apyhub.com/corsair96/convert-and-get-crypto-prices-api/crypto/convert` | What it does Converts an amount from one coin or fiat currency to another and returns the converted… | 50 | ## Endpoint reference ### Spot prices `GET https://api.eu.apyhub.com/corsair96/convert-and-get-crypto-prices-api/crypto/prices` · 60 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `vs` | query | string | no | One of: usd, eur, gbp, btc, eth. Default: `usd`. | | `symbols` | query | string | no | Default: `BTC`. | #### Quickstart Fetch spot prices for the default quote currency (`usd`) and symbol (`BTC`). ```bash curl -X GET "https://api.eu.apyhub.com/corsair96/convert-and-get-crypto-prices-api/crypto/prices?vs=usd&symbols=BTC" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with required `vs`, `source`, and `prices` fields. `vs` is the quote currency used, `source` is the price provider string, and `prices` is an object keyed by symbol, where each value includes a required `price` number and optional `change24h` and `marketCap` fields. ```json { "vs": "usd", "source": "cryptocompare", "prices": { "BTC": { "price": 65000, "change24h": 1.25, "marketCap": 1270000000000 } } } ``` ### Convert between coins and fiats `GET https://api.eu.apyhub.com/corsair96/convert-and-get-crypto-prices-api/crypto/convert` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `to` | query | string | yes | | | `from` | query | string | yes | | | `amount` | query | number | no | Default: `1`. | #### Quickstart Convert 1 unit from USD to EUR with a simple GET request. ```bash curl -X GET "https://api.eu.apyhub.com/corsair96/convert-and-get-crypto-prices-api/crypto/convert?from=USD&to=EUR&amount=1" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `from`, `to`, `amount`, `result`, `usdPerFrom`, and `usdPerTo` fields. `from` and `to` are currency codes, `amount` is the input amount, `result` is the converted value, and `usdPerFrom` / `usdPerTo` are the USD exchange rates used. ```json { "from": "USD", "to": "EUR", "amount": 1, "result": 0.92, "usdPerFrom": 1, "usdPerTo": 1.087 } ``` ## About ## What it does Crypto Prices Converter gives you live spot prices and conversion results for supported cryptocurrencies and fiat currencies. Send a quote currency and one or more symbols to get current prices back, or pass a source currency, target currency, and amount to calculate a conversion. The spot prices endpoint accepts `vs` as `usd`, `eur`, `gbp`, `btc`, or `eth`, plus an optional `symbols` query string. The response includes the requested `vs`, a `source` string, and a `prices` object keyed by symbol. Each symbol entry returns `price`, with optional `change24h` and `marketCap` values when available. The conversion endpoint takes required `from` and `to` query parameters, plus an optional `amount`. The response returns `from`, `to`, `amount`, `result`, `usdPerFrom`, and `usdPerTo`, which makes it useful for displaying exchange values or normalising balances across assets. Use Crypto Prices Converter when you need current pricing in a trading dashboard, a portfolio view, a checkout flow, or an internal finance tool that compares coin values without maintaining your own rate feed. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/corsair96/service/convert-and-get-crypto-prices-api * * * --- title: Crypto Market Sentiment Index API slug: crypto-market-sentiment-index url: https://apyhub.com/corsair96/service/crypto-market-sentiment-index provider: corsair96 categories: [Finance] tags: [crypto-sentiment, market-indicators, trading-data, sentiment-analysis, bitcoin] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 25 --- # Crypto Market Sentiment Index API Fetch crypto fear and greed readings from alternative.me with optional history. Get value, classification, and timestamp for sentiment tracking. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/corsair96/crypto-market-sentiment-index/crypto/fear-greed` | What it does Retrieves the Crypto Fear & Greed index and returns one or more index entries, with th… | 25 | ## Endpoint reference ### Crypto market sentiment `GET https://api.eu.apyhub.com/corsair96/crypto-market-sentiment-index/crypto/fear-greed` · 25 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Default: `1`. | #### Quickstart Fetch the latest crypto fear and greed index entry, using the default `limit` of 1. ```bash curl -X GET "https://api.eu.apyhub.com/corsair96/crypto-market-sentiment-index/crypto/fear-greed" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `source` string and an `entries` array. Each entry is an object with `value` integer, `classification` string, and `timestamp` integer (Unix timestamp in milliseconds). ```json { "source": "alternative.me", "entries": [ { "value": 0, "classification": "Extreme Fear", "timestamp": 1700000000000 } ] } ``` ## About ## What it does Crypto Sentiment Index returns the current crypto market sentiment as a numeric value, a classification label, and a Unix timestamp in milliseconds. Send an optional `limit` query parameter to control how many recent entries you want back, up to 30. Use it when you need a lightweight signal for dashboards, trading bots, alerts, or market commentary. The response includes a `source` string and an `entries` array, so you can trace where the sentiment data came from and iterate over the latest readings without extra parsing. Each entry contains `value` from 0 to 100, `classification`, and `timestamp`. That makes it easy to compare the current reading with historical snapshots, threshold alerts, or other market indicators in your own app. If you need a compact sentiment feed for crypto products, Crypto Sentiment Index keeps the response focused on the fields that matter. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/corsair96/service/crypto-market-sentiment-index * * * --- title: Get Global Crypto Market Overview API slug: get-global-crypto-market-overview-api url: https://apyhub.com/corsair96/service/get-global-crypto-market-overview-api provider: corsair96 categories: [Finance] tags: [crypto-market, market-cap, btc-dominance, cryptocurrency, finance-data] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 30 --- # Get Global Crypto Market Overview API Get global crypto market metrics in usd, eur, gbp, btc, or eth. Returns total market cap, volume, dominance, 24h change, and active coins. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/corsair96/get-global-crypto-market-overview-api/crypto/market` | What it does Returns a global crypto market overview in the requested quote currency. The response… | 30 | ## Endpoint reference ### Global crypto market cap `GET https://api.eu.apyhub.com/corsair96/get-global-crypto-market-overview-api/crypto/market` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `vs` | query | string | no | One of: usd, eur, gbp, btc, eth. Default: `usd`. | #### Quickstart Fetch the global crypto market overview in USD. ```bash curl -X GET "https://api.eu.apyhub.com/corsair96/get-global-crypto-market-overview-api/crypto/market?vs=usd" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `source` and `vs` required, plus optional market summary fields like `totalVolume`, `btcDominance`, `ethDominance`, `totalMarketCap`, `marketCapChange24h`, and `activeCryptocurrencies`. ```json { "source": "coinlore", "vs": "usd", "totalVolume": 1234567890.12, "btcDominance": 52.3, "ethDominance": 18.7, "totalMarketCap": 24567890123.45, "marketCapChange24h": 1.2, "activeCryptocurrencies": 12034 } ``` ## About ## What it does Crypto Market Cap returns the global cryptocurrency market snapshot in a chosen quote currency. Send `vs` as `usd`, `eur`, `gbp`, `btc`, or `eth`, and get back the current market data in that denomination. The response includes `source`, `vs`, `totalVolume`, `btcDominance`, `ethDominance`, `totalMarketCap`, `marketCapChange24h`, and `activeCryptocurrencies`. Numeric fields may be null when the upstream source does not have a value available, so you can handle missing market data without guessing. Use Crypto Market Cap when you need to show a dashboard, drive portfolio analytics, or annotate a crypto summary with current dominance and capitalization figures. Because the output is already normalised around a single `vs` currency, it fits cleanly into charts, market overviews, and comparison views. It is a lightweight read-only endpoint for applications that need a fast global crypto market reference rather than per-asset pricing or exchange order books. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/corsair96/service/get-global-crypto-market-overview-api * * * --- title: Get Historical Crypto Prices and Volume API slug: crypto-price-volume-history url: https://apyhub.com/corsair96/service/crypto-price-volume-history provider: corsair96 categories: [Finance] tags: [crypto-prices, price-history, market-data, historical-prices, volume-data] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 90 --- # Get Historical Crypto Prices and Volume API Get historical price points for a crypto symbol with timestamp, price, and volume data. Useful for charts, portfolio views, and market analysis. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/corsair96/crypto-price-volume-history/crypto/history` | What it does Returns daily price history for a queried symbol over a number of days, compared again… | 90 | ## Endpoint reference ### crypto price history `GET https://api.eu.apyhub.com/corsair96/crypto-price-volume-history/crypto/history` · 90 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `vs` | query | string | no | One of: usd, eur, gbp, btc, eth. Default: `usd`. | | `days` | query | integer | no | Default: `7`. | | `symbol` | query | string | yes | | #### Quickstart Get the daily price history for a symbol over the last 7 days. ```bash curl -X GET "https://api.eu.apyhub.com/corsair96/crypto-price-volume-history/crypto/history?symbol=BTC&vs=usd&days=7" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `source` (string), `symbol` (string), `vs` (string), `days` (integer), and `points` (array of objects). Each item in `points` includes `t` (Unix timestamp in milliseconds), `price` (number), and `volume` (number). ```json { "source": "coinbase", "symbol": "BTC", "vs": "usd", "days": 7, "points": [ { "t": 1717200000000, "price": 68000.5, "volume": 1234.56 } ] } ``` ## About ## What it does Crypto Price History returns historical price and volume data for a cryptocurrency symbol. Send a `symbol`, optionally set `vs` to `usd`, `eur`, `gbp`, `btc`, or `eth`, and choose a `days` window up to 365. The response includes the requested `symbol`, the quote currency in `vs`, the number of `days`, a `source`, and a `points` array. Each point in `points` contains a Unix timestamp in milliseconds (`t`), the `price`, and the traded `volume` at that time. That makes it easy to plot price charts, compare recent volatility, or backfill time-series data in your own dashboard or analytics pipeline. Use Crypto Price History when you need a compact market-history feed for a trading screen, portfolio tracker, alerting job, or crypto research workflow. The output is already structured for charting and downstream storage, without extra parsing. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/corsair96/service/crypto-price-volume-history * * * --- title: Public Holidays by Country and Stock Market API slug: public-holidays-country-stock-market url: https://apyhub.com/callable-labs/service/public-holidays-country-stock-market provider: Callable Labs tags: [public-holidays, holidays, calendar, date-check, bank-holidays] auth: api_key version: v1 service_type: sync endpoints: 3 atoms: 5 --- # Public Holidays by Country and Stock Market API Get public holidays by country and year, find upcoming holidays, or check whether a date is a holiday, a weekend day or a business day. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/callable-labs/public-holidays-country-stock-market/v1/holidays/:year/:country` | What it does Returns every holiday of a country in a given year, sorted by date. Each holiday has i… | 5 | | GET | `https://api.eu.apyhub.com/callable-labs/public-holidays-country-stock-market/v1/holidays/upcoming` | What it does Returns the next holidays strictly after a date, looking up to three years ahead. Choo… | 5 | | GET | `https://api.eu.apyhub.com/callable-labs/public-holidays-country-stock-market/v1/holidays/check` | What it does Tells you whether a date is a holiday, a weekend day and a business day in one calenda… | 5 | ## Endpoint reference ### List Holidays by Country and Year `GET https://api.eu.apyhub.com/callable-labs/public-holidays-country-stock-market/v1/holidays/:year/:country` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `year` | path | integer | yes | Year to list, from 1900 to 2100. Default: `2026`. Example: `2026`. | | `country` | path | string | yes | ISO 3166-1 alpha-2 or alpha-3 country code, such as `US` or `DEU`. Default: `US`. Example: `US`. | | `language` | query | string | no | Language for the holiday `name`, such as `en_US`, `de` or `fr`. Default: English when available. Example: `de`. | | `observed` | query | boolean | no | Include days off moved by observance rules, such as a Sunday holiday observed on Monday. Default: `true`. Default: `true`. | | `categories` | query | string | no | Comma-separated holiday categories, such as `public,bank`. Default: the calendar's main category, usually `public`. Example: `public,bank`. | | `subdivision` | query | string | no | State, province or region code or name, such as `CA`, `BY` or `Bayern`. Omit for national holidays only. Example: `CA`. | #### Quickstart List the public holidays of the United States in 2026. ```bash curl -X GET "https://api.eu.apyhub.com/callable-labs/public-holidays-country-stock-market/v1/holidays/:year/:country" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with the `year`, the `count` of holidays and a `holidays` array sorted by date. Each holiday has its `date`, `weekday`, `name`, `local_name`, `categories` and an `observed` flag that is true when an observance rule moved the day off. Only the first holidays are shown here. ```json { "year": 2026, "count": 11, "country": "US", "subdivision": null, "categories": ["public"], "language": "en", "calendar_version": "2026.10", "holidays": [ { "date": "2026-01-01", "weekday": "thursday", "name": "New Year's Day", "local_name": "New Year's Day", "categories": ["public"], "observed": false }, { "date": "2026-01-19", "weekday": "monday", "name": "Martin Luther King Jr. Day", "local_name": "Martin Luther King Jr. Day", "categories": ["public"], "observed": false } ] } ``` ### Find Upcoming Holidays `GET https://api.eu.apyhub.com/callable-labs/public-holidays-country-stock-market/v1/holidays/upcoming` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `after` | query | string (date) | no | Return holidays strictly after this date (`YYYY-MM-DD`). Default: today (UTC). Example: `2026-10-21`. | | `count` | query | integer | no | How many holidays to return, from 1 to 50. Looks up to three years ahead. Default: `5`. Default: `5`. | | `language` | query | string | no | Language for the holiday `name`, such as `en_US`, `de` or `fr`. Default: English when available. Example: `de`. | | `observed` | query | boolean | no | Include days off moved by observance rules, such as a Sunday holiday observed on Monday. Default: `true`. Default: `true`. | | `categories` | query | string | no | Comma-separated holiday categories, such as `public,bank`. Default: the calendar's main category, usually `public`. Example: `public,bank`. | | `subdivision` | query | string | no | State, province or region code or name, such as `CA`, `BY` or `Bayern`. Country calendars only. Example: `CA`. | #### Quickstart Get the next 3 public holidays in the United States. ```bash curl -X GET "https://api.eu.apyhub.com/callable-labs/public-holidays-country-stock-market/v1/holidays/upcoming?country=US&count=3" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with the `after` date the search started from, the `count` of holidays and a `holidays` array in date order. Each holiday has its `date`, `weekday`, `name`, `local_name`, `categories` and `observed` flag. Dates default to today in UTC. ```json { "after": "2026-10-15", "count": 3, "country": "US", "market": null, "categories": ["public"], "language": "en", "calendar_version": "2026.10", "holidays": [ { "date": "2026-11-11", "weekday": "wednesday", "name": "Veterans Day", "local_name": "Veterans Day", "categories": ["public"], "observed": false }, { "date": "2026-11-26", "weekday": "thursday", "name": "Thanksgiving Day", "local_name": "Thanksgiving Day", "categories": ["public"], "observed": false }, { "date": "2026-12-25", "weekday": "friday", "name": "Christmas Day", "local_name": "Christmas Day", "categories": ["public"], "observed": false } ] } ``` ### Check If a Date Is a Holiday or Business Day `GET https://api.eu.apyhub.com/callable-labs/public-holidays-country-stock-market/v1/holidays/check` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `date` | query | string (date) | no | ISO date; default today (UTC) Default: `2026-12-25`. Example: `2026-12-25`. | | `market` | query | string | no | Exchange MIC or acronym, e.g. `XNYS` or `NYSE`. Give `country` or `market`. | | `country` | query | string | no | ISO 3166-1 alpha-2 or alpha-3 code, e.g. `US` or `DEU`. Give `country` or `market`. Default: `US`. | | `weekend` | query | string | no | Override the weekend: weekday names or abbreviations such as `sat,sun` or `fri,sat`, or `none`. Default: the calendar's own. | | `language` | query | string | no | Language for `name`, e.g. `en_US`, `de`, `fr`. Default: English when available. | | `categories` | query | string | no | Comma-separated holiday categories, e.g. `public,bank`. Default: the calendar's main category (usually `public`). | | `subdivision` | query | string | no | Subdivision code or name, e.g. `CA`, `BY` or `Bayern` (names as the calendar knows them) | #### Quickstart Check whether 25 December 2026 is a holiday, a weekend day or a business day in the United States. ```bash curl -X GET "https://api.eu.apyhub.com/callable-labs/public-holidays-country-stock-market/v1/holidays/check?date=2026-12-25&country=US" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with the `date`, its `weekday`, and three booleans: `is_holiday`, `is_weekend` and `is_business_day`. `holidays` lists the holidays that fall on that date. ```json { "date": "2026-12-25", "weekday": "friday", "is_holiday": true, "is_weekend": false, "is_business_day": false, "country": "US", "market": null, "subdivision": null, "categories": ["public"], "language": "en", "calendar_version": "2026.10", "holidays": [ { "date": "2026-12-25", "weekday": "friday", "name": "Christmas Day", "local_name": "Christmas Day", "categories": ["public"], "observed": false } ] } ``` ## About ## What it does Public Holidays returns the holidays of any supported country or exchange calendar. Get every holiday of a year, find the next holidays after a date, or check whether a single date is a holiday, a weekend day or a business day. Each holiday has its date, weekday, name in English (or the `language` you ask for), the local name, its categories and whether an observance rule moved it. Add `subdivision` for state, province or region holidays, and `categories` for bank, government, optional or religious days. Official weekend workdays, such as China's swapped working days, count as business days. `GET /v1/holidays/:year/:country` lists a year, `GET /v1/holidays/upcoming` returns the next 1 to 50 holidays within three years, and `GET /v1/holidays/check` answers for one date. Dates use `YYYY-MM-DD` and default to today in UTC. Use it for calendar and scheduling apps, HR and payroll tools, delivery estimates, and any feature that needs to know when people are off work. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/callable-labs/service/public-holidays-country-stock-market * * * --- title: Calculate Business Days Across Countries and Markets slug: calculate-business-days-across-countries-markets-api url: https://apyhub.com/callable-labs/service/calculate-business-days-across-countries-markets-api provider: Callable Labs categories: [Marketing, Travel] tags: [business-days, working-days, date-calculator, holidays, deadlines] auth: api_key version: v1 service_type: sync endpoints: 3 atoms: 5 --- # Calculate Business Days Across Countries and Markets Add or subtract business days, count working days between dates and find the next business day for 250 countries and 28 exchanges. Holidays are skipped. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/callable-labs/calculate-business-days-across-countries-markets-api/v1/business-days/add` | What it does Adds business days to a start date, or subtracts them when days is negative, and retur… | 5 | | GET | `https://api.eu.apyhub.com/callable-labs/calculate-business-days-across-countries-markets-api/v1/business-days/count` | What it does Counts the business days from start to end, both included, for ranges of up to ten yea… | 5 | | GET | `https://api.eu.apyhub.com/callable-labs/calculate-business-days-across-countries-markets-api/v1/business-days/next` | What it does Returns the first business day after date, or before it when direction=previous. The r… | 5 | ## Endpoint reference ### Add or Subtract Business Days `GET https://api.eu.apyhub.com/callable-labs/calculate-business-days-across-countries-markets-api/v1/business-days/add` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `days` | query | integer | yes | Business days to add; negative subtracts (±2500) Default: `3`. Example: `10`. | | `start` | query | string (date) | no | ISO date; default today (UTC) Example: `2026-12-23`. | | `market` | query | string | no | Exchange MIC or acronym, e.g. `XNYS` or `NYSE`. Give exactly one of `market` or `country`. Example: `XNYS`. | | `country` | query | string | no | ISO 3166-1 alpha-2 or alpha-3 code, e.g. `US` or `DEU`. Give exactly one of `market` or `country`. Example: `US`. | | `exclude` | query | string | no | Extra closed dates, comma-separated ISO dates (at most 366), e.g. company shutdown days | | `weekend` | query | string | no | Override the weekend: weekday names or abbreviations such as `sat,sun` or `fri,sat`, or `none`. Default: the calendar's own. | | `categories` | query | string | no | Comma-separated holiday categories, e.g. `public,bank`. Default: the calendar's main category (usually `public`). | | `subdivision` | query | string | no | Subdivision code or name, e.g. `CA`, `BY` or `Bayern` (names as the calendar knows them) | #### Quickstart Add 3 business days to 23 December 2026 in Germany, skipping weekends and public holidays. ```bash curl -X GET "https://api.eu.apyhub.com/callable-labs/calculate-business-days-across-countries-markets-api/v1/business-days/add?days=3&start=2026-12-23&country=DE" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with the resulting `date`, the `start` date and `days` used, the number of `calendar_days` between them, and `skipped_holidays`, the holidays and closures that were passed over. It also echoes the calendar settings: `country`, `market`, `subdivision`, `weekend`, `categories`, `language` and `calendar_version`. ```json { "start": "2026-12-23", "days": 3, "date": "2026-12-29", "calendar_days": 6, "country": "DE", "market": null, "subdivision": null, "weekend": ["saturday", "sunday"], "categories": ["public"], "language": "en", "calendar_version": "2026.10", "skipped_holidays": [ { "date": "2026-12-25", "reason": "holiday", "names": ["Christmas Day"] } ] } ``` ### Count Business Days Between Dates `GET https://api.eu.apyhub.com/callable-labs/calculate-business-days-across-countries-markets-api/v1/business-days/count` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `end` | query | string (date) | yes | Last day, included Default: `2026-12-31`. Example: `2026-12-31`. | | `start` | query | string (date) | yes | First day, included Default: `2026-01-01`. Example: `2026-12-01`. | | `market` | query | string | no | Exchange MIC or acronym, e.g. `XNYS` or `NYSE`. Give `country` or `market`. Default: `XNYS`. | | `country` | query | string | no | ISO 3166-1 alpha-2 or alpha-3 code, e.g. `US` or `DEU`. Give `country` or `market`. | | `exclude` | query | string | no | Extra closed dates, comma-separated ISO dates (at most 366), e.g. company shutdown days | | `weekend` | query | string | no | Override the weekend: weekday names or abbreviations such as `sat,sun` or `fri,sat`, or `none`. Default: the calendar's own. | | `categories` | query | string | no | Comma-separated holiday categories, e.g. `public,bank`. Default: the calendar's main category (usually `public`). | | `subdivision` | query | string | no | Subdivision code or name, e.g. `CA`, `BY` or `Bayern` (names as the calendar knows them) | #### Quickstart Count the business days in 2026 on the New York Stock Exchange calendar. ```bash curl -X GET "https://api.eu.apyhub.com/callable-labs/calculate-business-days-across-countries-markets-api/v1/business-days/count?start=2026-01-01&end=2026-12-31&market=XNYS" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `business_days`, `calendar_days` and `weekend_days` for the range (both ends included), and `holidays`, the holidays and closures that fell on working weekdays. It also echoes the calendar settings used. Only the first holidays are shown here. ```json { "start": "2026-01-01", "end": "2026-12-31", "business_days": 251, "calendar_days": 365, "weekend_days": 104, "weekend": ["saturday", "sunday"], "market": "XNYS", "country": null, "subdivision": null, "categories": ["public"], "language": "en", "calendar_version": "2026.10", "holidays": [ { "date": "2026-01-01", "reason": "holiday", "names": ["New Year's Day"] }, { "date": "2026-01-19", "reason": "holiday", "names": ["Martin Luther King Jr. Day"] } ] } ``` ### Find Next or Previous Business Day `GET https://api.eu.apyhub.com/callable-labs/calculate-business-days-across-countries-markets-api/v1/business-days/next` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `date` | query | string (date) | no | ISO date; default today (UTC) Example: `2026-12-24`. | | `market` | query | string | no | Exchange MIC or acronym, e.g. `XNYS` or `NYSE`. Give exactly one of `market` or `country`. Example: `XNYS`. | | `country` | query | string | no | ISO 3166-1 alpha-2 or alpha-3 code, e.g. `US` or `DEU`. Give exactly one of `market` or `country`. Example: `US`. | | `exclude` | query | string | no | Extra closed dates, comma-separated ISO dates (at most 366), e.g. company shutdown days | | `weekend` | query | string | no | Override the weekend: weekday names or abbreviations such as `sat,sun` or `fri,sat`, or `none`. Default: the calendar's own. | | `direction` | query | string | no | Search forwards or backwards One of: next, previous. Default: `next`. | | `categories` | query | string | no | Comma-separated holiday categories, e.g. `public,bank`. Default: the calendar's main category (usually `public`). | | `subdivision` | query | string | no | Subdivision code or name, e.g. `CA`, `BY` or `Bayern` (names as the calendar knows them) | | `include_date` | query | boolean | no | Return `date` itself when it is a business day Default: `false`. | #### Quickstart Find the first business day after Christmas Day 2026 in the United States. ```bash curl -X GET "https://api.eu.apyhub.com/callable-labs/calculate-business-days-across-countries-markets-api/v1/business-days/next?date=2026-12-25&country=US" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with the `result` date, the `date` the search started from and the `direction` used. `skipped` lists every day passed over with the reason. It also echoes the calendar settings used. ```json { "date": "2026-12-25", "direction": "next", "result": "2026-12-28", "skipped": [ { "date": "2026-12-26", "reason": "weekend" }, { "date": "2026-12-27", "reason": "weekend" } ], "country": "US", "market": null, "subdivision": null, "categories": ["public"], "language": "en", "calendar_version": "2026.10" } ``` ## About [Callable Labs](https://callablelabs.com) · [Quickstart](https://callablelabs.com/docs/country-holidays-api/quickstart?via=apyhub) · [API reference](https://callablelabs.com/docs/country-holidays-api/reference?via=apyhub) ## What it does Business Days Calculator works out working-day dates for 250 countries and territories and 28 stock exchange calendars. Add or subtract business days from a start date, count the business days between two dates, or find the next or previous business day, and see which holidays and closures were skipped. Choose a calendar with `country` (an ISO code such as `US` or `DEU`) or `market` (an exchange code such as `XNYS`), and narrow it with `subdivision`. Add your own closed dates with `exclude` (up to 366 dates), choose which holiday `categories` count, or override the weekend with `weekend`, for example `fri,sat`. Every response lists the skipped holidays with the reason, so a result is easy to explain to your users. Dates use `YYYY-MM-DD` and default to today in UTC. Add and subtract accept up to 2,500 business days, and counting works for ranges of up to ten years. Use it for delivery and SLA deadlines, payroll and invoice due dates, settlement dates, and project plans that must respect local holidays. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/callable-labs/service/calculate-business-days-across-countries-markets-api * * * --- title: Retrieve Public Holidays by Country and Year slug: retrieve-public-holidays-by-country-and-year-api url: https://apyhub.com/callable-labs/service/retrieve-public-holidays-by-country-and-year-api provider: Callable Labs categories: [Travel] tags: [countries, holiday-calendars, subdivisions, iso-codes] auth: api_key version: v1 service_type: sync endpoints: 3 atoms: 5 --- # Retrieve Public Holidays by Country and Year Get holiday dates by year and country, including regional calendars, local names and observed days. Look up supported countries, languages and subdivisions. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/callable-labs/retrieve-public-holidays-by-country-and-year-api/v1/countries` | What it does Returns a catalog of available holiday calendars as a JSON object, including the total… | 5 | | GET | `https://api.eu.apyhub.com/callable-labs/retrieve-public-holidays-by-country-and-year-api/v1/countries/:country` | What it does Retrieves the calendar details for a country or market identified by its ISO code. The… | 5 | | GET | `https://api.eu.apyhub.com/callable-labs/retrieve-public-holidays-by-country-and-year-api/v1/holidays/:year/:country` | What it does Returns the holiday calendar for a specific year and country, with optional filtering… | 5 | ## Endpoint reference ### List Supported Countries `GET https://api.eu.apyhub.com/callable-labs/retrieve-public-holidays-by-country-and-year-api/v1/countries` · 5 atoms · accepts `application/json` #### Quickstart Fetch the holiday calendar catalog with a simple GET request. ```bash curl -X GET "https://api.eu.apyhub.com/callable-labs/retrieve-public-holidays-by-country-and-year-api/v1/countries" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `count` as an integer, `calendar_version` as a string, and `items` as an array of calendar objects. Each item includes `code`, `aliases`, `name`, `kind`, `categories`, `default_category`, `languages`, `default_language`, `weekend`, `subdivision_count`, and `years`. ```json { "count": 250, "calendar_version": "0.106", "items": [ { "code": "DE", "aliases": ["DEU"], "name": "Germany", "kind": "country", "categories": ["public"], "default_category": "public", "languages": ["de", "en_US"], "default_language": "de", "weekend": ["saturday", "sunday"], "subdivision_count": 17, "years": [1990, 2100] } ] } ``` ### Get Country Calendar Details `GET https://api.eu.apyhub.com/callable-labs/retrieve-public-holidays-by-country-and-year-api/v1/countries/:country` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `country` | path | string | yes | ISO 3166-1 alpha-2 or alpha-3 code Default: `US`. Example: `US`. | #### Quickstart Look up the holiday calendar details for a country code like `US`. ```bash curl -X GET "https://api.eu.apyhub.com/callable-labs/retrieve-public-holidays-by-country-and-year-api/v1/countries/:country" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object matching the `CalendarDetail` schema, with required top-level fields like `code`, `name`, `kind`, `years`, `aliases`, `weekend`, `languages`, `categories`, `default_category`, `default_language`, `subdivision_count`, and `subdivisions`. ```json { "code": "DE", "aliases": ["DEU"], "name": "Germany", "kind": "country", "categories": ["public"], "default_category": "public", "languages": ["de", "en_US"], "default_language": "de", "weekend": ["saturday", "sunday"], "subdivision_count": 17, "years": [1990, 2100], "subdivisions": [] } ``` ### List Country Holidays `GET https://api.eu.apyhub.com/callable-labs/retrieve-public-holidays-by-country-and-year-api/v1/holidays/:year/:country` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `year` | path | integer | yes | Default: `2026`. | | `country` | path | string | yes | Default: `US`. | | `language` | query | string | no | | | `observed` | query | boolean | no | Default: `true`. | | `categories` | query | string | no | | | `subdivision` | query | string | no | | #### Quickstart Get the holiday list for a specific year and country. ```bash curl -X GET "https://api.eu.apyhub.com/callable-labs/retrieve-public-holidays-by-country-and-year-api/v1/holidays/:year/:country" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `categories` (array of strings), `language` (string or null), `calendar_version` (string), `year` (integer), `count` (integer), and `holidays` (array of holiday objects). Each holiday object includes `date` (string, date), `weekday` (string), `name` (string), `local_name` (string), `categories` (array of strings), and `observed` (boolean). ```json { "categories": ["public"], "language": "en_US", "calendar_version": "0.106", "year": 2026, "count": 13, "holidays": [ { "date": "2026-12-25", "weekday": "friday", "name": "Christmas Day", "local_name": "Erster Weihnachtstag", "categories": ["public"], "observed": false } ] } ``` ## About [Callable Labs](https://callablelabs.com) · [Quickstart](https://callablelabs.com/docs/country-holidays-api/quickstart?via=apyhub) · [API reference](https://callablelabs.com/docs/country-holidays-api/reference?via=apyhub) ## What it does Country Holiday Calendars returns public holiday dates for a requested year and country across 250 supported countries and territories. Use `GET /v1/holidays/:year/:country`, for example `GET /v1/holidays/2026/US`, to retrieve the holiday list. The response includes `country`, `year`, `count` and a `holidays` array. Each holiday includes its date, weekday, name, local name, categories and whether it is an observed day. Select state, province or regional calendars with `subdivision`. Optional `categories`, `language` and `observed` filters customize the result. Years 1900–2100 are accepted; coverage and available options vary by calendar. `GET /v1/countries` lists supported country calendars. `GET /v1/countries/:country` provides reference metadata, supported categories, languages, weekend days, year coverage and subdivision codes. These reference endpoints help choose valid inputs; the holidays endpoint returns the actual holiday dates. Use ISO 3166-1 alpha-2 or alpha-3 country codes, such as `US`, `DE` or `DEU`. Each endpoint costs 5 atoms per call. Validate exceptional dates against official announcements. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/callable-labs/service/retrieve-public-holidays-by-country-and-year-api * * * --- title: Stock Exchange Calendars API slug: stock-exchange-calendars-api url: https://apyhub.com/callable-labs/service/stock-exchange-calendars-api provider: Callable Labs categories: [Finance, Standard Data] tags: [stock-exchanges, market-calendar, mic-codes, finance] auth: api_key version: 0.1.0 service_type: sync endpoints: 3 atoms: 5 --- # Stock Exchange Calendars API List supported stock exchanges and get calendar details for any MIC code or acronym: holiday categories, weekend days, covered years and subdivisions. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/callable-labs/stock-exchange-calendars-api/v1/markets` | What it does Lists every stock and financial exchange that has a market-holiday calendar, with its… | 5 | | GET | `https://api.eu.apyhub.com/callable-labs/stock-exchange-calendars-api/v1/markets/:market` | What it does Returns the details of one stock exchange: its holiday categories (public closures and… | 5 | | GET | `https://api.eu.apyhub.com/callable-labs/stock-exchange-calendars-api/v1/market-holidays/:year/:market` | What it does Returns the days an exchange is closed in a given year (NYSE, NASDAQ, LSE, TARGET2, JP… | 5 | ## Endpoint reference ### List Stock Exchanges `GET https://api.eu.apyhub.com/callable-labs/stock-exchange-calendars-api/v1/markets` · 5 atoms · accepts `application/json` #### Quickstart List every stock exchange that has a market-holiday calendar. ```bash curl -X GET "https://api.eu.apyhub.com/callable-labs/stock-exchange-calendars-api/v1/markets" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `count`, the number of exchanges, `calendar_version`, and an `items` array with one object per exchange: its MIC `code`, `aliases`, `name`, holiday `categories`, `weekend` days and the `years` covered. Only the first exchange is shown here. ```json { "count": 28, "calendar_version": "2026.10", "items": [ { "code": "XNYS", "aliases": ["NYSE"], "name": "New York Stock Exchange", "kind": "market", "categories": ["public", "half_day"], "default_category": "public", "languages": ["en"], "default_language": "en", "weekend": ["saturday", "sunday"], "subdivision_count": 0, "years": [2000, 2100] } ] } ``` ### Get Stock Exchange Details `GET https://api.eu.apyhub.com/callable-labs/stock-exchange-calendars-api/v1/markets/:market` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `market` | path | string | yes | Exchange MIC or acronym Default: `XNYS`. Example: `XNYS`. | #### Quickstart Get the calendar details of the New York Stock Exchange by its MIC code. ```bash curl -X GET "https://api.eu.apyhub.com/callable-labs/stock-exchange-calendars-api/v1/markets/:market" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object describing the exchange: its `code`, `aliases`, `name`, holiday `categories` and `default_category`, `languages`, `weekend` days, `subdivisions` and the `years` covered. ```json { "code": "XNYS", "aliases": [ "NYSE" ], "name": "New York Stock Exchange", "kind": "market", "categories": [ "half_day", "public" ], "default_category": "public", "languages": [ "en_US", "gu", "hi" ], "default_language": "en_US", "weekend": [ "saturday", "sunday" ], "subdivision_count": 0, "years": [ 1900, 2100 ], "subdivisions": [] } ``` ### List Stock Market Holidays by Year `GET https://api.eu.apyhub.com/callable-labs/stock-exchange-calendars-api/v1/market-holidays/:year/:market` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `year` | path | integer | yes | Year, 1900–2100 Default: `2026`. Example: `2026`. | | `market` | path | string | yes | Exchange MIC or acronym Default: `XNYS`. Example: `XNYS`. | | `language` | query | string | no | Language for `name`, e.g. `en_US`, `de`, `fr`. Default: English when available. | | `observed` | query | boolean | no | Include days off moved by observance rules (e.g. a Sunday holiday observed on Monday) Default: `true`. | | `categories` | query | string | no | Comma-separated holiday categories, e.g. `public,bank`. Default: the calendar's main category (usually `public`). | | `subdivision` | query | string | no | Subdivision code or name, e.g. `CA`, `BY` or `Bayern` (names as the calendar knows them) | #### Quickstart List the days the New York Stock Exchange is closed in 2026. ```bash curl -X GET "https://api.eu.apyhub.com/callable-labs/stock-exchange-calendars-api/v1/market-holidays/:year/:market" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with the `year`, the `count` of closures and a `holidays` array sorted by date. Each entry has its `date`, `weekday`, `name`, `local_name`, `categories` and an `observed` flag. Add `categories=half_day` to list early closes instead. Only the first closures are shown here. ```json { "year": 2026, "count": 10, "market": "XNYS", "categories": ["public"], "language": "en", "calendar_version": "2026.10", "holidays": [ { "date": "2026-01-01", "weekday": "thursday", "name": "New Year's Day", "local_name": "New Year's Day", "categories": ["public"], "observed": false }, { "date": "2026-01-19", "weekday": "monday", "name": "Martin Luther King Jr. Day", "local_name": "Martin Luther King Jr. Day", "categories": ["public"], "observed": false } ] } ``` ## About [Callable Labs](https://callablelabs.com) · [Quickstart](https://callablelabs.com/docs/country-holidays-api/quickstart?via=apyhub) · [API reference](https://callablelabs.com/docs/country-holidays-api/reference?via=apyhub) ## What it does Stock Exchange Calendars lists the stock and financial exchanges that have a market-holiday calendar and returns the details of each one. Look up an exchange by its MIC code or acronym, such as `XNYS` or `NYSE`. `GET /v1/markets` returns every supported exchange with its MIC code, aliases and name. `GET /v1/markets/:market` returns one exchange with its holiday categories (`public` closures and `half_day` early closes), default category, languages, weekend days, subdivisions and the years covered. Use the results to find the exact code to pass to the other holiday and business-day endpoints, to show which exchanges your app supports, or to check how far ahead an exchange calendar goes before you request its holidays. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/callable-labs/service/stock-exchange-calendars-api * * * --- title: ECB Currency Converter API slug: ecb-currency-converter url: https://apyhub.com/callable-labs/service/ecb-currency-converter provider: Callable Labs categories: [Finance] tags: [currency-conversion, exchange-rate, foreign-exchange, currency-list] auth: api_key version: 0.1.0 service_type: sync endpoints: 2 atoms: 3 --- # ECB Currency Converter API Convert currencies easily with the latest or historical exchange rates. Calculate converted amounts and retrieve exchange rate details for payments, invoicing, and financial applications. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/callable-labs/ecb-currency-converter/v1/currencies` | What it does Returns the list of currencies available from the currency conversion service, along w… | 3 | | GET | `https://api.eu.apyhub.com/callable-labs/ecb-currency-converter/v1/convert` | What it does Converts an amount from one currency to another using the query parameters from, to, a… | 3 | ## Endpoint reference ### List currencies `GET https://api.eu.apyhub.com/callable-labs/ecb-currency-converter/v1/currencies` · 3 atoms · accepts `application/json` #### Quickstart Fetch the latest list of currencies supported by the API. ```bash curl -X GET "https://api.eu.apyhub.com/callable-labs/ecb-currency-converter/v1/currencies" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `count` as an integer, `latest` as a date string, and `currencies` as an array of currency objects. Each currency object includes `code`, `name`, `kind`, `first_date`, `last_date`, and `current`, with optional `parity` when applicable. ```json { "count": 66, "latest": "2026-10-06", "currencies": [ { "code": "AED", "name": "UAE dirham", "kind": "peg", "first_date": "1999-01-04", "last_date": "2026-10-06", "current": true, "parity": "3.6725 per USD (fixed)" } ] } ``` ### Convert currency `GET https://api.eu.apyhub.com/callable-labs/ecb-currency-converter/v1/convert` · 3 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `to` | query | string | yes | ISO 4217 code | | `date` | query | string (date) | no | Use that day's rates; default latest | | `from` | query | string | yes | ISO 4217 code | | `amount` | query | number | no | Amount in `from` Default: `1`. | #### Quickstart Convert 100 USD to EUR using the current exchange rate. ```bash curl -X GET "https://api.eu.apyhub.com/callable-labs/ecb-currency-converter/v1/convert?from=USD&to=EUR&amount=100" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `source`, `notice`, `pegged`, `from`, `to`, `amount`, `rate`, `result`, and `date` fields, and may also include `requested_date`. `source` and `notice` are strings, `pegged` is an array of currency codes, `rate` and `result` are numbers, and the remaining fields describe the conversion details. ```json { "source": "European Central Bank euro foreign exchange reference rates; fixed-parity currencies derived from their official pegs", "notice": "Reference rates for information, published around 16:00 CET on TARGET business days; not for trading.", "pegged": [], "from": "USD", "to": "EUR", "amount": 100, "rate": 0.88738131, "result": 88.738131, "date": "2026-10-06", "requested_date": null } ``` ## About [Callable Labs](https://callablelabs.com) · [Quickstart](https://callablelabs.com/docs/currency-exchange-api/quickstart?via=apyhub) · [API reference](https://callablelabs.com/docs/currency-exchange-api/reference?via=apyhub) ## What it does ECB Currency Converter API turns an amount in one currency into another, using the same European Central Bank (ECB) reference rates and fixed-parity data as the rest of this API. It converts between any of the currencies this API tracks, using either the latest published rate or a specific past day's rate. You send the currency you're converting from, the currency you're converting to, and an amount (1 if you leave it out). The response gives back the converted amount, the rate that was used, and the date that rate was published. If you ask for a specific past day and that day had no publication (a weekend or TARGET holiday), the conversion automatically falls back to the last published day before it and tells you the date you originally asked for. The response also tells you if either currency involved is pegged, meaning its rate comes from a fixed official parity instead of an ECB rate, along with a source note and a usage notice. You can also look up the full list of tracked currencies to check which ones are currently active, retired, or pegged before converting between them. ECB Currency Converter API is a good fit for checkout flows, invoicing, expense tools, and any application that needs to show a price or amount in a different currency without building its own FX logic. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/callable-labs/service/ecb-currency-converter * * * --- title: ECB Exchange Rates API slug: ecb-exchange-rates url: https://apyhub.com/callable-labs/service/ecb-exchange-rates provider: Callable Labs categories: [Finance] tags: [fx-rates, exchange-rates, historical-rates, currency-reference] auth: api_key version: 0.1.0 service_type: sync endpoints: 4 atoms: 3 --- # ECB Exchange Rates API Access latest and historical exchange rates, daily currency rate time series, and supported currency data for financial applications and reporting. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/currencies` | What it does Returns the list of currencies available from the currency conversion service, along w… | 3 | | GET | `https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/latest` | What it does Retrieves the latest reference exchange rates for a base currency, optionally limited… | 3 | | GET | `https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/historical/:date` | What it does Retrieves historical reference exchange rates for a specified date, with an optional b… | 3 | | GET | `https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/timeseries` | What it does Returns a daily time series of reference FX rates for the date range you provide, usin… | 3 | ## Endpoint reference ### List currencies `GET https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/currencies` · 3 atoms · accepts `application/json` #### Quickstart Fetch the latest list of currencies supported by the API. ```bash curl -X GET "https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/currencies" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `count` as an integer, `latest` as a date string, and `currencies` as an array of currency objects. Each currency object includes `code`, `name`, `kind`, `first_date`, `last_date`, and `current`, with optional `parity` when applicable. ```json { "count": 66, "latest": "2026-10-06", "currencies": [ { "code": "AED", "name": "UAE dirham", "kind": "peg", "first_date": "1999-01-04", "last_date": "2026-10-06", "current": true, "parity": "3.6725 per USD (fixed)" } ] } ``` ### Get latest reference rates `GET https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/latest` · 3 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `base` | query | string | no | Base currency (ISO 4217). Default `EUR`. Default: `EUR`. | | `symbols` | query | string | no | Comma-separated currencies to return, e.g. `USD,GBP,JPY`. Default: all available. | #### Quickstart Get the latest reference rates for the default base currency, or pass a different base in the query string. ```bash curl -X GET "https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/latest?base=EUR" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `source`, `notice`, `pegged`, `base`, `date`, and `rates` fields. `source` and `notice` are strings, `pegged` is an array of currency codes, `base` and `date` describe the reference date used, and `rates` is an object whose keys are currency codes and whose values are numbers. ```json { "base": "USD", "date": "2026-10-06", "rates": { "AED": 3.6725, "EUR": 0.88738131, "GBP": 0.75321678 }, "notice": "Reference rates for information, published around 16:00 CET on TARGET business days; not for trading.", "pegged": ["AED"], "source": "European Central Bank euro foreign exchange reference rates; fixed-parity currencies derived from their official pegs" } ``` ### Get historical reference rates `GET https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/historical/:date` · 3 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `base` | query | string | no | Base currency (ISO 4217). Default `EUR`. Default: `EUR`. | | `date` | path | string (date) | yes | ISO date from 1999-01-04 | | `symbols` | query | string | no | Comma-separated currencies to return, e.g. `USD,GBP,JPY`. Default: all available. | #### Quickstart Fetch the latest reference rates for a specific date, using the base currency and optional symbols filter in the query string. ```bash curl -X GET "https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/historical/:date" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `source`, `notice`, `pegged`, `base`, `date`, and `rates` fields. `source` and `notice` are strings, `pegged` is an array of currency codes, `base` and `date` are strings, and `rates` is an object whose keys are currency codes and values are numbers. ```json { "source": "European Central Bank euro foreign exchange reference rates; fixed-parity currencies derived from their official pegs", "notice": "Reference rates for information, published around 16:00 CET on TARGET business days; not for trading.", "pegged": ["AED"], "base": "USD", "date": "2026-10-06", "rates": { "AED": 3.6725, "EUR": 0.88738131, "GBP": 0.75321678 } } ``` ### Get a daily time series `GET https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/timeseries` · 3 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `end` | query | string (date) | yes | Last day, included | | `base` | query | string | no | Base currency (ISO 4217). Default `EUR`. Default: `EUR`. | | `start` | query | string (date) | yes | First day, included | | `symbols` | query | string | no | Comma-separated currencies to return, e.g. `USD,GBP,JPY`. Default: all available. | #### Quickstart Fetch reference rates for a date range, with the required dates passed as query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/callable-labs/ecb-exchange-rates/v1/timeseries?start=2026-09-01&end=2026-09-30" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `source` and `notice` strings, `pegged` as an array of strings, `base`, `start`, and `end` strings, `count` as an integer, and `rates` as an object mapping publication dates to currency-to-rate objects. ```json { "source": "European Central Bank euro foreign exchange reference rates; fixed-parity currencies derived from their official pegs", "notice": "Reference rates for information, published around 16:00 CET on TARGET business days; not for trading.", "pegged": ["AED"], "base": "USD", "start": "2026-09-01", "end": "2026-09-30", "count": 22, "rates": { "2026-09-30": { "EUR": 0.8912, "GBP": 0.7466 } } } ``` ## About [Callable Labs](https://callablelabs.com) · [Quickstart](https://callablelabs.com/docs/currency-exchange-api/quickstart?via=apyhub) · [API reference](https://callablelabs.com/docs/currency-exchange-api/reference?via=apyhub) ## What it does ECB Exchange Rates API gives you foreign exchange reference data from the European Central Bank (ECB): the official daily rates it publishes, plus fixed-parity rates for currencies that don't have an ECB rate. It covers the latest rates, any specific day back to 4 January 1999, and a day-by-day series across a date range of up to 366 days, along with a reference list of every currency it tracks. You choose a base currency (the default is `EUR`) and, optionally, which currencies you want rates for. For a single day's rate, if that exact day had no publication (a weekend or TARGET holiday), the response automatically falls back to the last published day before it and tells you the date you originally asked for. For a date range, days without a publication are simply left out of the results, along with a count of how many publication days actually fall in that range. Every rate response also tells you which of the returned currencies are pegged, meaning their rate comes from a fixed official parity instead of an ECB rate, plus a source note and a usage notice. Retired currencies still return rates for the years they were in use. You can also look up the full list of tracked currencies to check which ones are currently active, which have been retired, and which are pegged, before requesting them. The ECB publishes its rates around 16:00 CET on TARGET business days. ECB Exchange Rates API is a good fit for finance systems, currency converters, market data dashboards, and reporting jobs that need a lightweight FX reference feed (latest, historical, or ranged) without trading-grade execution data. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/callable-labs/service/ecb-exchange-rates * * * --- title: "Convert Speech to Text & Subtitles API" slug: convert-speech-to-text-subtitles url: https://apyhub.com/callable-labs/service/convert-speech-to-text-subtitles provider: Callable Labs categories: [Audio Processing] tags: [speech-to-text, subtitles, srt, transcription, captions] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 25 --- # Convert Speech to Text & Subtitles API Transcribe audio or video from a URL or base64 input. Get text, timed segments, subtitle formats, confidence, and billed minutes. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/callable-labs/convert-speech-to-text-subtitles/v1/transcribe` | What it does Transcribes an audio or video file and returns a structured transcript. You can provid… | 25 | ## Endpoint reference ### Transcribe audio or video `POST https://api.eu.apyhub.com/callable-labs/convert-speech-to-text-subtitles/v1/transcribe` · 25 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `audio` | body | any | yes | Choose how to send the file: a public URL or the file encoded as base64. | | `format` | body | string | no | `json` (transcript, segments, timings), `srt`, `vtt` or `txt` One of: json, srt, vtt, txt. Default: `json`. | | `max_chars` | body | integer | no | Longest segment or subtitle cue, in characters Default: `84`. | | `max_seconds` | body | number | no | Longest segment or subtitle cue, in seconds Default: `7`. | | `word_timestamps` | body | boolean | no | Include every word with its start, end and confidence (json) Default: `false`. | #### Quickstart Transcribe an audio file from a public URL and return subtitles/transcript in the default JSON format. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/convert-speech-to-text-subtitles/v1/transcribe" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "audio": { "url": "https://assets.apyhub.com/samples/sample-speech.mp3" } }' ``` #### What you'll get back Returns a JSON object with `text` (the full transcript), `duration` (audio length in seconds), `segments` (the timed transcript segments), `confidence` (average token confidence from 0 to 1), and `billed_minutes` (minutes charged, rounded up). ```json { "text": "Hello and welcome to the show.", "duration": 61.2, "segments": [ { "start": 0.32, "end": 2.4, "text": "Hello and welcome to the show." } ], "confidence": 0.97, "billed_minutes": 2 } ``` ## About [Callable Labs](https://callablelabs.com) · [Quickstart](https://callablelabs.com/docs/speech-to-text-api/quickstart?via=apyhub) · [API reference](https://callablelabs.com/docs/speech-to-text-api/reference?via=apyhub) ## What it does Speech to Text Subtitles turns an audio or video file into a transcript or subtitle file. Send a public `url` or a `base64`-encoded file in `audio`, then choose the output `format` as `json`, `srt`, `vtt`, or `txt`. Use `max_chars` and `max_seconds` to control subtitle cue length, which is useful when you need readable captions for players, editors, or downstream workflows. If you choose `json`, you can also request `word_timestamps` to include each word with its start time, end time, and confidence. The response gives you the full `text`, total `duration` in seconds, `segments` with start and end times, `confidence` as an average token score, and `billed_minutes` for usage tracking. That makes it straightforward to power media search, caption generation, meeting notes, or transcript storage without post-processing the raw output yourself. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/callable-labs/service/convert-speech-to-text-subtitles * * * --- title: Generate Certificate Document from JSON API slug: generate-certificate-document-from-json-api url: https://apyhub.com/callable-labs/service/generate-certificate-document-from-json-api provider: Callable Labs categories: [Smart Generation] tags: [certificate-generation, document-rendering, pdf-generation, docx-export, html-rendering, json-to-document] auth: api_key version: v1 service_type: sync endpoints: 1 atoms: 200 --- # Generate Certificate Document from JSON API Render certificates from JSON data as PDF, HTML, or DOCX. Includes page options, download control, and render metadata for issued documents. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/callable-labs/generate-certificate-document-from-json-api/v1/documents/preset/certificate` | What it does Generates a certificate document from JSON content and rendering options. The request… | 200 | ## Endpoint reference ### Generate a preset document from JSON (certificate) `POST https://api.eu.apyhub.com/callable-labs/generate-certificate-document-from-json-api/v1/documents/preset/certificate` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `data.date` | body | string | yes | Date Default: `18 September 2026`. Example: `18 September 2026`. | | `data.title` | body | string | no | Title Default: `Certificate of Completion`. | | `data.issuer` | body | string | yes | Issuer Default: `Callable Labs Academy`. Example: `Callable Labs Academy`. | | `data.recipient` | body | string | yes | Recipient Default: `Ada Lovelace`. Example: `Ada Lovelace`. | | `data.signatory` | body | any | no | Signatory Default: `Charles Babbage, Director`. Example: `Charles Babbage, Director`. | | `data.statement` | body | string | no | Text between the recipient and the achievement. Default: `has successfully completed`. | | `data.achievement` | body | string | yes | Achievement Default: `Advanced Analytical Engines`. Example: `Advanced Analytical Engines`. | | `data.accent_color` | body | string | no | Accent Color Default: `#1f4e79`. | | `data.certificate_id` | body | any | no | Certificate Id Default: `CERT-0001`. | | `page.size` | body | string | no | Paper size. One of: A4, Letter, Legal, A3, A5. Default: `A4`. | | `page.margin_mm` | body | number | no | Uniform page margin in millimetres. Default: `18`. | | `page.orientation` | body | string | no | Orientation One of: portrait, landscape. Default: `portrait`. | | `format` | body | string | no | `pdf`, `html` or `docx` return the bytes; `json` (default) returns a PDF data URI plus metadata. One of: json, html, pdf, docx. Default: `pdf`. | | `download` | body | boolean | no | Send `Content-Disposition: attachment` so browsers save the file. Default: `false`. | #### Quickstart Generate a certificate as JSON with the required certificate data. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/generate-certificate-document-from-json-api/v1/documents/preset/certificate" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "data": { "date": "18 September 2026", "issuer": "Callable Labs Academy", "recipient": "Ada Lovelace", "achievement": "Advanced Analytical Engines" } }' ``` #### What you'll get back Returns a JSON object with metadata about the rendered output: `bytes` (integer), `cache` (`hit` or `miss`), `pages` (integer or `null`), `engine` (string), `format` (`docx`, `pdf`, or `html`), `data_uri` (string), `warnings` (array of strings), `queued_ms` (integer), `render_ms` (integer), `media_type` (string), and `engine_version` (string). ```json { "format": "pdf", "media_type": "application/pdf", "pages": 1, "bytes": 24651, "data_uri": "data:application/pdf;base64,JVBERi0xLjQKJdPr6eEKMSAwIG9iago8PC9UaXRsZSAoQ2VydGlmaWNhdGUgQ2VydGlmaWNhdGUgb2YgQ29tcGxldGlvbikKL0NyZWF0b3IgKENocm9taXVtKQovUHJvZHVjZXIgKFNraWEvUERGIG0xNTMpCi9DcmVhdGlvbkRhdGUgKEQ6MjAyNjEwMTUwNTMwNDYrMDAnMDAnKQovTW9kRGF0ZSAoRDoyMDI2MTAxNTA1MzA0NiswMCcwMCcpPj4KZW5kb2JqCjMgMCBvYmoKPDwvQ0EgMQovY2EgMQovTEMgMAovTEogMAovTFcgMwovTUwgNAovU0EgdHJ1ZQovQk0gL05vcm1hbD4+CmVuZG9iago0IDAgb2JqCjw8L2NhIDEKL0JNIC9Ob3JtYWw+PgplbmRvYmoKOCAwIG9iago8PC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9MZW5ndGggOTUxPj4gc3RyZWFtCnicrVfbaiQ3EH3vr9BzILV1LwlCYD3Eft5kIB+w2TUEHFjn/yGopZ7WTFtrO6xxq2WdLqnq6FRJBpay/iRMmH6G4c+sDDmnz0/Lt4WJwVJv0TKIFk+COcDS85flz5/SP8u3RYDY1plabzT7/LQAMXkCQSsJNNTS7w/pOPj8uHx4kPT470JgqT5unsxyXemPxetAfdSTaR/88KDV4O68fLi3pJjOXxdqMVEidpCCzpaKpPPT8gsi+6/p/PciAp49MBKm81+pArkBBBrFwy6AWAMYOKPabiExseDTCjCCuEvRHSgNKMAilvkNFlN3tQEIQVHe5NUsQJQVIIUopeTI+1zcTAwKCXu5DeS384x5d7AiYYmUXmN+uorgCiiDmeSBFZEZj/fvDf79mzh3lzZSQEQkjW0V/GHw+bHR54n8ij4OASNzSYwbfRKIeoeoJ0TzumuI6oiaEc0QLRqmpb/z/p1ttlr7Fy89td/q3NZ/flyoWOKIVGOjmmZfF0D3SGNbbQ6DW0CRJEAEEfk6Lo41ISWxxSaLJmRmyEhGO8/aHKUM7lptLoBOgC7kAiKMQnIrC0YIR5JdL8aTqawJnBzMM2Ie3MpTpK1CCBJYzPV1j9VfWeZHiEkZdC2CQhvpFzFsAnFEy11QvounPlVQK3bfHjvt4jNGNEQ06XjuYsuX/asRvE89nphA5DoIZAhLYnYtGzJQZC0jp7Ftw0o222FTj0jfoALqrmp7ThtNTXxi0nfuBWDqWBeuApmRON1W+Rei/I5js1i6Pg0Km6sMQZ6mjMXERE8zYErLu93qrNgxnXsKCiBnDOe3sPJxisxC+c5ksy02f624BielnJjkUlt5TYGhrSaHwSG/9eaWo8CUw5JK7tlBikh3LU9ly2fZc7PmrNp+eNTvyBBpe1+f756IwK1eEPPNOR/gVqlR29bmppkMShGBhypoQCFWCt+qTIAl11P4pSI4oVNCfzSfSgLq13yyt3q51cC1b3vNq/zxMN7qauMBAXPJOtzptBfZ+h42pKfhQPqNY2iQ19NzINuHYj44tBV2tsHZrf+xO33fv+k3B+uCWAt79OJulx2w9awZ2krrYXCglUC4/VNxVcm9QLGazoY3V8MAM4vAQy01QI7iwyWs+yUQwWJKRy2RhrD4bZq/AJTJVHMLn3h1UfjB3alXswC7ehjybfE7Tdy95B1lzOTxhqlmtPcC61CoeMRwVbcO5DBB21NYtoMiR3GWPQ7Cibu0Vffb4vo/AN1E+mn5tPwHSrEP9QplbmRzdHJlYW0KZW5kb2JqCjIgMCBvYmoKPDwvVHlwZSAvUGFnZQovUmVzb3VyY2VzIDw8L1Byb2NTZXQgWy9QREYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9JbWFnZUldCi9FeHRHU3RhdGUgPDwvRzMgMyAwIFIKL0c0IDQgMCBSPj4KL0ZvbnQgPDwvRjUgNSAwIFIKL0Y2IDYgMCBSCi9GNyA3IDAgUj4+Pj4KL01lZGlhQm94IFswIDAgNTk1LjkxOTk4IDg0Mi44OF0KL0NvbnRlbnRzIDggMCBSCi9UYWJzIC9TCi9QYXJlbnQgOSAwIFI+PgplbmRvYmoKOSAwIG9iago8PC9UeXBlIC9QYWdlcwovQ291bnQgMQovS2lkcyBbMiAwIFJdPj4KZW5kb2JqCjEwIDAgb2JqCjw8L1R5cGUgL0NhdGFsb2cKL1BhZ2VzIDkgMCBSCi9WaWV3ZXJQcmVmZXJlbmNlcyA8PC9UeXBlIC9WaWV3ZXJQcmVmZXJlbmNlcwovRGlzcGxheURvY1RpdGxlIHRydWU+Pj4+CmVuZG9iagoxMSAwIG9iago8PC9MZW5ndGgxIDc2NTYKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCA0Njk3Pj4gc3RyZWFtCnicxVkLcFPXmf7+c+/Vw5ash2VsJFxd5UYGIhkblAAOGF9syw9Mwdgo1TUPSSCDSQE7yKR5FrfZtFSBAps2TbudDd1p2rRR6+OEFqfdBpJOp7PbZpqZbLpNExYmTaf7SCbMdpO2cSxt7pVkTMK2uzud3f/ie87//s///+cccw0CUIUJCEhuHmxa8clXv+gG6GEAyd0HUmM0ywIA/R7A/t23j8vJezffAUhHAfaLPWN7D3w89V0XUJkDzGf2pjJj8MD6nuzrAJx799+5J9334nmgOglUHB0ZTqVZJHwaoCSAlSMjwyn7q+JdAK0FcP3IgfE7NoDdrNt+z/+l/aO7U4sOLTwLsDSAQwdSd4wJ+8VGAO8CkA+mDgwrTeueAIRpgJ4fG82MF36DHwK0SOePHRoeq31sxUrAkgSEXgACLGCwgwoFCNDXvpoGsBUnYQKDE03YDrBb2UKDK8CAwmu6zWsAAeZAPoqPVNbPfO2dixXPGBbnw2qDwhZ+saJl6VcSjrVvwW8xGOd8qcv6eOHuPR+b+drsgxXPWJwgI7oiCOKX2d9CAqQvSRGAgsVROI09zE0SYxbBLElMEItxXIHl6wc7IEPGVumj+S6KmAP0/STo3MXfAUJOatUz817FYXjSV+gpZcIDEXEAbjghgEHGenSgC73oxwC2FgqGpk6Lohcbi7TCr65+PpCBPy/sx348h+doPbMazybjOSVsFD4vXBDvE+8TXxdflzoBU8sVJfbHLP4fgfRjeEpj2hhvgSL+CkqZL9QjOid7CxTzcSjSj7HY1IJ0WU76cWm8BTIAM4b0yon6fsvh70tzgoxvluYMFvxNaS5gJfaX5iJuQHtpLsGLJaW5CUsAbMQ+7MIwDiGFcezDKA5i0MD3YQ8a0Y5R7Ecatxi0TElCxgosw3Isw03XtCDPsyHP2ViPDHZjGAeRNrgyGiH/Sf2y9p+S68Q+7MU+g3cXhpGGjLQhm4KM3RjFGO40ZPdiBOOQsQS7sdRYSzOWoxkyujGKUezFfgxDRgdGcQhjxvuKz2WoMDh/3NoKyBgoRdFjaIchoxcHsRvLpOOowajUCkfpfRUIOSzEE0BBP1fnvfMbC+/8Obu0eDaRmwL4Ef5AEWK4h6oxhDRGcQ+yFJkvTWtoI4ZwL15BGgdxnMz462tZpQA1kB2jhp2DuBfP4dVrur8NT+Py1T5wGx7CV5HT6dQF0Ofoh7SR0njOsLwR0E/sDwK7FcAJAHfgBA6w0qnE3sRP8QtsZ0+z13AS3y7FV4XXqROgPgzhbMlAHwY/YHQal6kCe3EnPoWTRZLU+u4vYS38Ft/GBjwDoBd34/icxu/J8CFUoDBH+0h5Yu4RbmXfZWz2QQCnsBenkKKXAHZcWH/N/PwvQIjBTkuFoHErfwDYjXDk32ErCm8K16MCscLlMq3QV/itkPrv+TCdEg+gAij8On93Pi01STby0WKy41/x8voR+GkYR2gYkzQMgUZoL7zwUxKbKIEYrUcrqYiRCqJ2xKgDrca4jFoxAT+1gmgdYrQWrbQGMThoDZpoDdpoDY7QGoiw0pqSTDNaqQkxairhjWilMGKYpDDI+NGpbWg1xg0g6kGMuktjF1opihhFS3gvWvURKplB8BvvR0hUe+j8LE3OEmapommGMEP2Vy/d5L8YuRD7p8grMVygtbjQfKH/wsQFfkG6QELsFWGBf/QFSrzw5gts8wvU9iz5n734LJsunFe/fL7C3tV/Lnlu7JzwdPcNfkxT09nE2RNnJ89ePCuNfoccZ/xn2OgZ8j+5+cnCk8K3c+1+x2NHHmOTj9HYY9T2GDkflh9uflgYe5i+8NAif9Pn2z7PfH9Jp+5P+yc/S8c2+/24P3k/O3k/+e+nk/fRJzf7/SO3k/OwfJiNJwv+TKLgH+u+wT/afYP/YHfBvzBSFzNHhJhJKPj1AL++e1mk6/wuupSiZOJGf0I3uJPUnVZ715HtJ7Y/sl3YNhTyNw0RhpJD7OTQ5SHmH6LqiDsmkRATI0LMIfiFNmGzMCqcEM4JZsvghoC/f7PfP7rpyKYTm4QPdyv+Dd2y39FDak+lo6ur+wa/o9vfzRb1+GILIjUxFzlizogjxggxiiDW5Cg4mMORcBxxCA60gZ1cQBJN08mprYOhUN+0uTDQx8392zgd5cFB/a1uGeKmoxyxoW3xKaLPavcfP472+j6+YjDOk/VaH08PxrmqTyYG49xZP7UA7VomMx4ygDKh0HgIofFQaGfGwDPjh0PjoXGEQpmMIREKhRAKjWcolMlkxhHKhDL6fBw6GspQZjyDzDiFkNF/xikzflhX1s1RCDszmZ2ZTIYymQyKLkOGWcNbEa0DoHZvG9Lisa2DA1v6N2/68Ma+Db093V3Rzo729Wrbuta1a25uWb1q5U3Lm5uWNYaXLG4IXq9cF/DXeVxOR5W9ssJqMZskUWCEsMwpGeVCUHZ1pZSokuppDMvRupHOxnBU6UpyOSXzriQXG5SeHoOkpLiclHlDisupeeQkV1My3/M+SbUoqc5JklNei7W6C0Xmz3Uq8jQNbYkrMj/eqWgyf8OYf9iYiw0GYu9UtECgMSwbUenRylHedftINprsbAzTVGVFh9IxXNEYxlRFZYfSUdkYBl+ijE3RknVkTNiS6M1TDBa77pYLwWgqzfu3xKOdvkBAawz38iql02ChwzDJTR3cbJiU9+mh4wF5Knw+e2zaiV3JkC2tpFPb41xIaY3hrBDNZj/NXSG+VOnkS+96ra4xHB3mYaUzykO61b6BOT99V1wSl4JORc6+BU5J5Y3Xr6akShRT0PkW9ClnHZwG4gEdfF1KVzKb7VLkrmwym5ouTOxSZKeSnbLZsmPRpMzRH+eUmi587wEf7zqmcWdyhG7WSkvvGujj1Vu2xTkLdskjKS4EuRBsUwKrfQHXnEz/f8UGN3dwk57hQEBPwwPTKnY1hgN8Yku8iMvY5XsCalNI4yypc86XOTUxnTNR5sypJ5VAY7hvMJ7lYrA3rUT3cfWBFJ/YxeXUrXphFCevetsXULJul9zSpBmyMheCvel9MpcauEnXmq/AxQZdJes0kKq3i8MbviwXG1xuuUWRW5p0O1Elmiz9u32kjk/skhvDvCdUbIStca52ylGupkoVi041N0WVaCrJKbmv0ygmb1LGuEdpn6uuHlZ032DcUCmpcU8HR3J3SYs3RY19JUezyc5iCLotZUv8KUQKl6ZulH1PRnAjtE5deEFHnAsN0Ww8vYf7k740l5N75LgvwFWNU0pT4sOa3naKky+95DOaQzN6ZWu8b1Dp2zIUX10KpMjQzYnB6PvMKHFf0QyXgtwStMhx5hM0LgadXArKXVwMKu1ruRjk5qCFm4NObipS9cZtXyvHyYeyNF96iS+Vo8OdJTkdv8qopLdTR0/ZmklHOSU7enwBLVCExjDjYlAuOeZS0KIntafMEoIyF4MWzoIdPQZJz2Wd3vRyXBlWNGVE5mp/XF+bnh4jy6VkGDkv1WrrVdi8ZDWGOQJ9W+cQPZm8K+Sbn1zebeBzaM/72L1ltpy1KH2DWd24UjIIzoK9HHoLq6tdPuMs0De00pVSZKfcVdzQ2SlV1TfzyM26EaU3nVUG42sN6b6B+L2+u3RfbvRR39b2xvAUQ/uUQke3TKl0dHAo/pQTkI9ujT/BiHUk27Wp6+nolvhTMqAaVKZTdaKOyDqiWxqIP8EshrzvKRWYMLiiQTDw3dMEg2Yp0wi7p1mR5iw6ajAcqWDYPS0WOWpZWsTuaUuRNmHQDJiCnjK1QlItqlW1MTvzTZFOekJSLd8jwEp40kZ28k1NsI4BgzxNE1NW1VeUmICV1GKER2NXXMeG4k/aYCef8dY0rV2HxnC0bkTp06+VqJzWG+UebSSb1PTNhgWcBTkLEidlHThT1k0RM9l4hTLcziuVdp3eptPbinSTTjcr7ZwW0HvqE5x19HPSO2BbPKA4uez9O1/W+YZeKS3UGM46f90Ipv+/X5qWeuCAG59RB+1um81sklxVTodDFJ1mwVNtr3JVJTW3y0VOSTTbHIJIYkKrIDf30EkPTXio30Oqh2QPOT10yUPPe+i0QR/zULOHdhhwWxHQFgm5UBupa4u4W5r0ecTlptoWV8TlbmlZscIVcbW0LG8O1gRuWkUBqtVHISCQEKBcfiRNF+g6ennP7ON/NTE7ezd94gKd6e3t9YmvzSzy9fb6aFv+UdE7OwlCuvC6FJI2woft6iqnUGG11tYJdYvqTfaEdksFVZjEr9XSF2opWksCaptrmV2qBaoTGqpRT2P11FRPO3bchjY9xMTOHYkdO3bUtUV2hFxuamlxRSKuiCuyvFmS4XIisKK2WlncoFzHXE53ZMXKNooIJlFoyk/mP0X7KPUv75iGFv3F5D///NLPb/tGs7zNNJS/5KE91EpxGu7IP/3sUP5i/vn8b/K/XLv0lXxOWa5/NVMA8Q2pFT4cUwfrFppNVS6X0+bxEDlNC8X6RVXVtuqk5mq0kQCb08asJptNXOjzeZKajxKazy1WJjWzKLKEJgqfq6fxetpaT2o9seZ6kvXV6WvaUVxhCHVtIX3ibqlrMpZ7VW3mnuXNbeRafFPApSxuCJErsCriUhYHXBFZX3JAyeXE27fJY//wPCX8mubPf2WWWH/LtuoZvUi3e3vzj79Ulfd8Lp9+eHbG+ft8trzOT0itqKNW9eduIpOntnaBrbJygUlY6PXAjaRWm3CPulmjmwS4nW5mldxuq2h1JTWHjRyCzWa1mhOaVSCTaEpoovu0lya8tNlLTV5yeKngpTe9NOmlI15Kekn1Erx02UuXvHTeSye8NOqlhCHfZsjfXFT4maFz0tDp91Kzl5yGrYteOmewEmWFNw3iz7zEDfkTXhozVFQvyYazHVegtA8OlWHnNTnFotQV33o9Qi43ypW5ZmmWN5PL2C2l6iyjufKwiouz3Y/kxJ075eWvrn+UuvXSsLX5Jb5yVb7whtk8+/I382tzIP1LH/uF1IpKbFNbIEk2e6XJYkpoFgGSICU0wX3JTuftNGYn1U7NdpINlNtpwk6JMnHemq5ajb599GiDc8HWmFk4N3sgl2MP5tLeDRu84mE9sGJnSDC+N3WrS1ilyVxpdrrIVmVLaFWCtTKhmaxWltSs7tMuGnOR6qJmF72vp0suW0o5MrsCK1ZVR4SSb/bSz8j1YnpgqGGmN/c4+474H96Zkx6qzX+0mJlSf5oHjP78kPoMwW63eG2CYKmqrXVb3Au9sDvtzCnaK00ua6U1oTFbVZ1YKQjuWsFisiQ0UI1gcoe85PNSpZdmvPRvXnrZSz/x0veNNnrE6BjWZrSr0+ijc2XqkXnN6Td6raUwT8lRlp6cJ73ZaMjnjebmZWJ/ue+v2W47r+rPxG1XeGirLR/YtaW2a0ns3DGXUuNx6+fh8uaAMq8FrRSoMZdQ4dCqvOtMXsnlmIOO0KeZN5ebHT4jHpj5XbkF3/2scKjXO5M1cP078WJA0v8eUI1u9Xq31WoGJKmqylMjweF2JDQLcwvWKltVQqs229z9NbQDbZFIsc+Ko1F3txHlCqP2Rq+55gdJ4n1n6ELu8Ls/MqKjn7BT4i+9vb3emQZx5bvL5oL7uv6ZXr9RXpQ2ohIL0Kx6YTO5bK7aOo+Q0DzVVdaEViW21VFTHRn9Z/TevMbT7wW3y8mU6xg5A8VbQwbxyad/MDn5g6cn82fYUxSnZP7L+Vz+W/kvsdP5Z/JvkpvWUStV5N/O/5Dl8o/mJ/OP579CO/V49HPzG1IrLKjD2+o3pIoKBxY4Fiz0Wk1JzWp1291iUnM7E5pbqHDYHQnN/v93MM4diVc68H94EJYOwNC8zlveTDfql1BkxUrpSk1lscYZEPZ+7KHNgw98PP/Vi7Ndj+TYZqonb36BwE8fmf3WsXfyt5RLe+6n+e3FXEovSa3woB571VUeh8NbY7c7vVTtJJPJ+SG/xwEvkprXaxWtC5Na8b5xFi+catH9vJ+a/Ubhi603P+BSJ5aC1hvS3fK+81qPWdJ/2bHOrYhV5mbvfCTHPkFL6Pr8v9OeU/lN+SyZ73n02KkvfZKtzofLS/juM/lLA3mnr5etpmMPHZ79xwkYf2eBtMrYPwfUdltlpctssbgY89Q4BauQ1GwWq+BiYAkNbrWGmmvIWUOoocs1dL6GTtbQRA2N1VB/Dak1JNfQ/NqUaxKJXDnQ524hfUXKdQ5SXOXfEWpraOWLkV/v8G2Tarf7Bt9a/mKvTxz1/IE+lv/MH9wzD/p68Z+Q83oICmVuZHN0cmVhbQplbmRvYmoKMTIgMCBvYmoKPDwvVHlwZSAvRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9BQUFBQUErTGliZXJhdGlvblNlcmlmLUJvbGQKL0ZsYWdzIDYKL0FzY2VudCA4OTEuMTEzMjgKL0Rlc2NlbnQgLTIxNi4zMDg1OQovU3RlbVYgODMuOTg0Mzc1Ci9DYXBIZWlnaHQgLTY1NC43ODUxNgovSXRhbGljQW5nbGUgMAovRm9udEJCb3ggWy01NDMuOTQ1MzEgLTMwMy4yMjI2NiAxMzQ0LjIzODI4IDEwMDcuODEyNV0KL0ZvbnRGaWxlMiAxMSAwIFI+PgplbmRvYmoKMTMgMCBvYmoKPDwvVHlwZSAvRm9udAovRm9udERlc2NyaXB0b3IgMTIgMCBSCi9CYXNlRm9udCAvQUFBQUFBK0xpYmVyYXRpb25TZXJpZi1Cb2xkCi9TdWJ0eXBlIC9DSURGb250VHlwZTIKL0NJRFRvR0lETWFwIC9JZGVudGl0eQovQ0lEU3lzdGVtSW5mbyA8PC9SZWdpc3RyeSAoQWRvYmUpCi9PcmRlcmluZyAoSWRlbnRpdHkpCi9TdXBwbGVtZW50IDA+PgovVyBbMCBbNzc3LjgzMjAzXSAzNiAzOCA3MjIuMTY3OTcgNDAgWzY2Ni45OTIxOSA2MTAuODM5ODQgMCAwIDM4OS4xNjAxNiAwIDAgNjY2Ljk5MjE5IDk0My44NDc2NiA3MjIuMTY3OTcgNzc3LjgzMjAzIDYxMC44Mzk4NCAwIDcyMi4xNjc5NyAwIDY2Ni45OTIxOV1dCi9EVyAyNTA+PgplbmRvYmoKMTQgMCBvYmoKPDwvRmlsdGVyIC9GbGF0ZURlY29kZQovTGVuZ3RoIDI4Mj4+IHN0cmVhbQp4nF2RTWrDMBCF9zrFLJNFkCI7aQPGUBQMXvSHujmALY0dQS0LWVn49sWaNIUuJPjQvDejN1zV59rZCPwjTLrBCL11JuA83YJG6HCwju0lGKvjndKtx9Yzrupzs8wRx9r1EysKAP6Jg51jWGDzYqYOt4y/B4PBugE2F9VsGW9u3n/jiC6CYGUJBnvG1Wvr39oRgSfZrjbooo3L7qKav4qvxSPIxHuaRk8GZ99qDK0bkBVCCFFCUVVVVTJ05t/7kVRdr69tSNVZCYUQUpQryTxRvic6EmVEiuiUKDskOkiiJ6I89by7y99ej9HkMzU7kdOBfKtEGQ2Sq7sFidYfrEk/4tG3ENDFtI4UyRqGdfjYmJ/8qlrPDxWXjkEKZW5kc3RyZWFtCmVuZG9iago1IDAgb2JqCjw8L1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUwCi9CYXNlRm9udCAvQUFBQUFBK0xpYmVyYXRpb25TZXJpZi1Cb2xkCi9FbmNvZGluZyAvSWRlbnRpdHktSAovRGVzY2VuZGFudEZvbnRzIFsxMyAwIFJdCi9Ub1VuaWNvZGUgMTQgMCBSPj4KZW5kb2JqCjE1IDAgb2JqCjw8L0xlbmd0aDEgMTUxOTIKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCA5NDIwPj4gc3RyZWFtCnicpXsLfFTVmfj33cc8MjOZeyd3XgwzcyeXSQKTYUImAUIIuYQkBMJjgITmgpAJBAiVR0gCPpFRwUeQGhEfWKtZS6m17Hoj6KJ1Na1Qt+tacYvdWmVNV2y3W6ypS61/JZPde2YmmeBjf93/Gb33nO/7znfO+c73OucGQADIhQTQEF++KlK6r+MhLwA+DADxjdvbOukK+k8A+CkAHNm4p0dc71k5A0AXB6D+ZXPnlu23tD3HA5jPAOhPbWnr7oRJYASASwDAbdl2w+bNW4ABEK4HKPi3jk1t7Tnnv78cAOMAMLOjY1ObZS1TDIBzAWBKx/ae6x8pNwwB0A0A2LNt58a2KeunmwGoewDgxe1t13fS/8m+BQBXAEDc0bZ9k7+z4mkA5kUAfKJzZ3fP6F3QDoCTNXxn16ZO3PKADsBYBkD3AQANOUABDzg6CjRoa1+HK6EJDoIOKOAgAtcAUK/QPyVYGkgZPaDx/JKCAPpAsg6+kfPU58c/ey9nDuGYXdYRCOU+elviTEGrde6fwW8giH+sPfdz7X3hpq5bPj8+cn/OHP2vAcAAVLonzbRjH7AA7CNsFACDqTfdD+14DFmK0tEsw1I0k5rHeJkxf9UCkEGEG9h7kvUY1QfwR3HAl9/7CwB9gq3SJPM/Ow5kJG2FQloSwv/sVAIAJgMHNJhBhDCUwkyYDXWwCJZAE2yFTtgDN4yOEh7FUEKw8wl2JbTBNujSsKPvf9XvC/L560oUDpHf2+jEnvTvEl6iNl/9o6vo/2TmMvcxn6R+7P3aT7cs6/eCPqj/7Vf9DC2Gnxn9xr4cXc4/mT417zd/qv0s63NvtVqth7kcLof7BvcSz/J7bEu0X95OXcX4NKmvW8OXFApgGfUULMm0GYBlDMApBmBNNh0D0JLB/2882VdBYFdDJbsamthXoZJ5HyonjPkULB7jexVujMdqqGS64W7mfQj+lUsC+hA0MKm3tpbF9CGIUU9BtbYGzSFQFRAam0sFTNVVQIgBiKTXHkjPcSrthSaqAgQGwMNMlIUbAPSwRtNeRvM5J+DRdB1BhJvTdQpyYUe6ThN9TdWZLBoWJoEvXdeBDwCWwFbYAJugC9qgB7bCTtgBq0h7K2yG1aTWnYaLUArTYQZMh3KYD92wETbBDmgnNJoNiV/KTczitxI2wRbYDdugDbr+V+pa2ApbYCvB3QiboB1EaCe0bSDCRtgJnXADod0CHdADIhTBRphK5lkCM6AERFgIO2EnbIFtsAlEWAA7oQs6yXN8zOmQQzBfz60URDJ/bRYNpHcxiLAIdsBGmA7AHgI7NLBVYIVO8pyoJSfADUcBRrV4kfVMLhn97K/VuK8rKZ8LD8NxOKX5D1iXRtRDDLbCbnh7AvmP4U3YSmoxWANPQe9XsD0Bp9MWGoM43Kut5EtLDB6Ck/DqhFFisB1ugkPwLLyNM+BnALgTPkYD3Apn4TR8jDNg6ZexojTPvZlUN2dB34FvUwdhMXURAI5qGCpCcXAGHsX1WiSFejg0tuK5X2B6J+wFgFXQAXvgzhSIrbryazCO/hfcC3thMdwG82FbVo8X8XE6B4BugsfhOPyYwCIZpL6B/ib1HEWN3A8A98EWuA/a8G0A6hA9/ysk9FcXuhksOJUOkmzjC4UqA2vyM6p09DI9BXKgeXQ4AxttHP0vui25g2llJrNVzGtfN4buPmY75ACMfpC8KdnOLmOPw7PwJMCAMTZ/A24CxA7cAnngxzgsw1ZoxvlQhTI0owyINdCMC6CKvKdjFSTAj1WAOA+acS5UYSU0gx8roRorYTlWwr1YCQxWpilKoAoj0IyRdDsMVVgMzfAGFgOS/zVoNVSR92JAbIBmXJh+10MV1kEz1qXbi6BKe0Mc9YBQTZ4vIyOfxKERfGMExRHc9znGPsfEx30fU38anup/evjlYWr5R60fPf0RXfIRWj9CA3zIfRj7MP5h54f9H+pyrJfQDH9A/v2h2f73qi40/1vVu81wAefChZILsQuJC+oF9gLSze/SDj83KA6WDHYOJgbPDQ4NDg8aEi/1vUT9w4sRv/VF/4uU/+Tyk/tO0vEn0fqk/0kq9u34t6m+R9H6qP/RyKP0I0en+48u9PkferDQP/Tg8IPU6dHBkw9a+PoXcTkugSrw47KT9Kj/6fl2XAoIVlwKflwKEVwKy3Ep7MSlcC8uBR1YcQn4cQlEcIk8m259AE2HPYdDh286fPAw23lH4o6+O+jEgb4D1NN7Xt5Ddcem+nfuCPl3LJzmd0ddzfoo3ayjR/2nRwflRRuCRfXxVtnfGpvqX7umxL9m4VR/XtTWzCLdzETpZivtp6vp5fRO+l76ZVpvWBnz+VfEfP6h2HCMkmNGc711uX95ZDl9enRI3tQYKKqPL+5cnFhML6qf6m9YONtvXehfGFn4xsL3Fn60UNe6EB9fiI/XP13/cj0t10+N1Mv1vkD95AZPsyNqb+bR2sxFrc0UQjNGoTliHbVSVmurdZ+VtkI1UAkHsnga+waaVoVCjaf1oysbVUNsrYp3qcFV2lNesUbV3aVC85q1LQOI31IOHDoENd5GtXRVixr3Ko1q+6oWVdYqiVUtKucdcECN0t3dEyIFQ6Hu7p7doVA3hHaHekKh9d0pKIzhIdSN3d3Q3U06YUgjSLWxG7pDGi4U6tb6YWh99/pu0B4aMpTqpPXuTrMjnVMPUnGtlxeuXaO0NDetWrkitnzZ0iWNixc1LKyvq11QM1+unlc1t3JOxexZM8tnlESmh4uLCguCU6T8gN8l8Jw112LKMRr0OpahKYRiUcV4nUoHRb6+TaqT2hrCxWKdq6M2XFwn1cdVsU1U6+MqUyA1NBCQ1KaKcVEtaFPFtixwXJXbRHXzVZRyilIeo0ROnAtztSEkUX29VhJP45oVLZKoHqqVFFH9kNSXkjpTQBqWWkkJBMLFIpmVNluxTq3f09FbF68NF+OAKWeBtGBTTrgYBnJMC6QFpnAxqEVS5wAWzUNSoYrq5gxQYLBow6p0sK6tXY2taKmr9QQCSrh4kZor1RIULCAsVd0CVU9Yilu1qcNBcaB4sPee0xxsiIfM7VJ72zUtKt2mhIt76bre3jtVPqROlWrVqTdedIWL6zapxVJtnRrSuDauHBuncXxIVNkgJ4m9fwYV49KHlyZC2tIQXZD7M2hVlVqg4sqWgFY89VJ9vLe3XhLre+O9badHExskkZN6B8zm3s66uKhCrEXFttOjLxz0qPX3KCoX78A5Snrp9Ssb1bwVa1tUKlgvdrSpdFClg9VSYLYnwI/RxL4KDap+garTJBwIaGI4eFqGDeHigJpY0ZJqi7DB8wzIkZCiUnENM5jB2Js1TCKDGeselwLh4sZVLb0qE1zULtVtVeWDbWpigyq2fVPbGIlTcz/xBKReGy9WRBRCK6p0cFH7VlFlC1Sd1iu7g8oUaF16OdLI/ST1+tDTqzIFvE2skMSKiManTqqLp//b0+FSExvEcLHaEEopQlOLKteKdarclt6xuoGSSJ1U1xZXMb61lmymGpE6VUGqGdtdbVp1W1e1kC7pbqqwQIX4xnQvNVJH7Eqs643Xpqag8ZJWtDwP0dGhgTLRczIKZaDUasSOBS0qXVDX29K+WfXHPe2qGN8stngCqqyo2KZILZsUTe0kTp065CHKoRBdaWppXCU1rljTMjs9kRRCY8cE665iI7V4UmxUNqgaggaxhfLQisoEOZUNivUqE5Rq5qpMUNUHDao+yKm6FFRT3Jq5Ygt6IEOtTh1Sp4p1m2rTdFp7AlNWU6cFDRluOq2pYnxBgyegBFIlXEypTFBMD6yyQYMm1IYMig6KKhM0qFRwQQMBabJ0aUovtkibJEXqEFU51qKtTRMPkXJaGETm6b1qmtDKEla4WIVAY9NYQxOmWh/yZAtXXUjaY82Gq9CLMmix1yA1rurVmEtphqBSwUUqaCosz+Y9xBdoBi3Vt0kiJ9anDLp3QJY1Y+6YozGRFrX3Sqta5hLqxpUtez03amPZoBEbm2rCxQMU1AxIeNeKARnvWrWm5XkOQLyrqeUZCqkF8RplYAretaLleRFAJlBKg2pArSFqDY3TypZnKAOh9zwvAyQIliEA0t54GoHADBkYwsbTVArGpQYqIAPJQMHG00wKI2eoGdh42pCCJQiMlAHQRCbnsLJBNspmykJ5BlADPcPKhhcQwIhw0owW9AwkqAUrCfg0JgaMsidFkQAjyqkZ3tU8PnTzmpaTZrCghzwVRanRSri4ztUhNWphpU5s1xTlZqWjN65oxgYOlQqqVBBVlOaBSknzBpDSmdUcaVONapJqNHi1Bq9OwXUaXC/VqOjA/+meUKkFMRU1DVjbEpA4VZz0M08v96G2U0ooXNzLfRAGhGXJs7gPfgEcFMsuHQBjMvE2mvmOkks/uVaXe86GcRuuWweRaCjE27CCj0b56IySoKDTl88sLysoLCgvmxktdeC+xw+rvmBtbbm8fMbdz09bOrtTEPMkeWbFNYCwBB+k4lQEaHhE3kYDyyA8r+CLJSxOYVFgkWHxMosXWTzP4ikWj7G4n8UeFmtZPMJigkWqk8U4izEWZRZLWBRZBBYrhlkcZHGIxXOkorLYT8g7Cd0+FtftSpeurvXrUqV1XRawqwuqyboqZpTklQfsSygBHzx6VLsOWjZ6iX6GXQk54ABZLuBZE7DgdBlyuxWDnhK6FcotuxBcOOTCfhfGXSi7UBtg1y6oDoErzZcn8kIukE/xnC1aaqM5ShqrP5NsOP+rX717/t3TN95xW1dPYv/N1LGRBmzHJlyKbcnvJp/GGpycvJz8u+SJ5B9QAoRTAPQBtgFyoFEO64FlTWbQc3pRTxtpvZyjA5ZmuxXaJZsRzDhkxn4zxs0om8cnx0PUVT3p9db169JbOqMkyNoD5UGeLQ9GqW60jUQwL/knvLMs5ikv9zD1beX/pt1wrgGg72WXwGSIy7M8HDVZb6fsXp/e5oFcLpcy0rm5NltOt2LTUR707FHQJfsQfDjkw34fxn0o+66aBXlGyEwq0vKKkglNxfJZ86jysgIpX2dFideUzC7kol6nD9D3XnnthZNPLtpzR3lnSKp5bt+7F75x6pzSTj1z/w++85OfH7jtLq/rGFKhv/9+56tnB5asBQpaRi/Rr7BLwA1T4Hp5oT0/X+e1gA6CBfb8fNEp9ihWp99JmWmnk87JsXUr2oLEXFpbUo6entSt0G65AKEAhwqwvwDjBSgXTNjuqLaKEG+DCleqBlE+Or4kogWCTtv6MtvMaKnTLhVORymfoon5lM4kS9VzNvqVX7z67x/d8v4Dh++rkQKd4cPfNXz32MALyQ03bNvSefcjvdj/5vsYx8W/wjnHpN/dbfMkP0gOr3515L3vPHvscGnyjeQ72o1yRnsdkA/TYYtc6Z3KSwB0Ls+YnDqTLlJC5xZPKp7UrRQXi4JQ0K0IeqPYrRjdcglCCQ6VYH8JxktQLrlaqbUFkldmw2xOouWlZIF6H9oFnSTyZTNnTceUc6DJLtoFR7R05oT63deu7dr7y39PNiW2f2P7a4MvvH5w7537e/bcdmDf1G3bv7mlfXvnVvqTHUeLpp1MvDSItxx4emrRwzuPP/fsldf7++7+/g/uOEiX9N52y7cO3nCTZrECAHuabQAr2LBV/pjPtVoZm4Uzm/V6jqHzBEsunxtXbDyPnI5lzHrGitZWJQdtlwW8KOB5Ac8IeErAYwIeEXC/gD0CtgvYJGCtgGUCThFQEJAR8K+lr/iaDtnUDKEZFJBSBewXsE/AhICdAsYElAUsEVAUkBNwiBBdRbBcwLSHG/Nvu3a1ppzceMl4wXVfpE0VqI5qqhuNuqqjUVtFJBqC6Zoakz22EX+mOcugPVA+C6Po1N50gEY6gK8nFz6MP3sJ33lq5GenDowM34kHf4u/KNccyKefGzRHgrcn9zIdI7s1Da0c/Yz5mK0CA9igAC7I9xvzYTKbm2u3+yfnM0WFQS6uBG1+1sya44qVRRPNsq48l6NVcTFxxUXn2VuVPFt/EfYVYaIIO4swXoRyEQ4V4eMEEi/CGIGIRfheEQ4SSAlpQhHOeYOguSIcJiyA9DxXhP2EV6rnmIjGJZcVOkjw0Gwi2+q1GnH9KaNIG35ZQQj5aOnMPFLRdJ8tn8UXlgdEhz1tM0wgSL/0yN++8c4TRze9+MZw76M/fOqK68QJahOMXrrv9md/mvzzKCSb6E9v6kyyiaTj0O0j/6y774NyD/PYpPKHju05Pjnvb+/68as6QGgavcR8wC4BD8yTAzxtdNPuyV5dbqsCOWikc3J0jNsNILQqkCd7cV3aFUfGPNhY1GJF4DkIlDrziK8SU1FrZjVGaR2tS76QPILrseXNYV2Nr/75eHL00l8udf1TZXC+7l0BN6KMa3BjNPnO34UiyX9JvpJ8N/nPs6b/Y/JstWarlaNX2N1sFRjBCUvkCCuARbC43E57q+Jk4oqT5oRWhdPHFc4GbqyW3Si6cciN/W7sdGv7sqtrvTbzjPyzIi0EJE3CNkzNPigRSTPHkm8mf3fq+u998vuRT7EbNye/n/xBMv/EiRPUk+jG/M9vMmA+fTb5bPJUUk0eZ1KCBdS+yjB72SrwwA653iwI6NZZkZnsNefFlVbzTjMVNiMNZs5MGVmzmfF4hLjiwVbFY2NMcYWhWhWGHvJivxc7vRjzoiZyrWRNPq08revWjSvOjJJq1BSElwo1lQnMivJSYYAPiJr0A5UnTtB/rBE7z7+D3/TLsj/5IBqQilXU5H3+ZmrmyZffzh253J9sf2LkAvdp8jFA7VsTtYGtAhOa5H9gLWaTzqBrVQy0ljG0KrStz4IJC3ZasN2CTRastaBoQc6CjAWHLThkwfMWPGPBUxlsmQWnWPBiFvyYBY9kmMQzZCWETCB8Kseo91uwh4yUYsSQAc5ZkBq0oGrBfsIgRnqnZnHOgilUwoLZjivbxV3t3ca82hhFdt6hac2MkiBxYZqo7Xp87sTIf5w4QblOpPKexyaVl09K60CH9uUEZ8u/pvQmE8+hOdfcquTSRlOrAnrMpfV6o5GOK0bbKR6P8XiEx/089vC4mcfVPNbzWMCjg0cdj5d5/C2P53n8KY/P8Xicxz2ErClD9ksez/CYzWeMoJbHUh5R5FHgEXisuMzjRcLsCI/tPJZlENQwj0M8nuNxkMdOHmUeS3itH5cFV3nsJ9gYIfiC2FqzBdv65VEjK7jAeDqXyhVSMuYrNLvU84HSWXlROi1s6ro30PBW+7z5ts8/OHGCmssaJn3eIaAzuS9teZQmdXYVWwV28MEOeZ6d4zwWD6LOYRF4G2/RMX6RAw/EFY/HyBjdccWob1WMNI86RteqCIyNE/GciJ0iyqK2tq5MbBu3uvQUx321loZqs+XHtKKUeGgt0BnH3Dg++drIW4+foBZcGT58K157X/Ll5J2Y88CPfjhw8iFqSZLJKM9TL97xSsHIf3jKqSW49+itI68c0LLou0cv0ZfZJRAGRS5zGgp9wBfykek+gzBtGtuq4LQ8wdOquARmOIJDETwXwcEIDpNnSQTFSEr9ibyjJPOckI2l0ue8qNOHUS2rnK4jSZhTcyQk8/LptAQtv6Dw4Hwp+GzLPd+p2njLgVs2Vg2/9cRL86XND97xUNXGfQf2baz649C2Xzfj1mcjDffe0rB+fnj67NX71vU/F0r+/tji7fH5q6uKI5Vrb4//5K2CAKD2dZr5MVsFAs6VL9goE2Wg7Q4zGNBIGwxGnibGQdsooFoVsFU70OrAIQe+7MB7HbjPga0OrHagSODXDjvwDQf2E1ynA5c70E8QKbjqwMcJaifpJjuwhBCAA98j2ASBlxBI5SgZJ9XtXoJYTnDDBK5mxkh1EEmfYcJokAyTINhqB0YyY3yNf1n/leaxfrzPBB+UMpeMEs4o0bROytdOPJrrn44hTRWx8q3oyDrPAubRWo/vn66f8Va5h3lIeBMrk2ff1Js+v9ZTrsXUhtFL9C76x+CBIGyXq3lDMMiIZrOboQsLgvk5+SsUl53nJ8cUK+/nKTPN82DIceiZmKK3gz2mAJcoxNZClAsxUYiahqXzG03HbBVj+c1VRqOZS6nDrllMoU7K58vmYTWS04wVpfKZqM9FuxAtnTkL33zkvt3JZF7XwJ8W9T98aOHi9lX5s59AuP2O1ntrN5bSP77ltpED7vD6LnStv2k+zdzfdk1k9+tS0sew63eofhf5Iw1yrjkEJvBCQl5h0+u94PQ6ff5JxpgyyaGz2QSBXqEInNUcU6wg+zHhR/BjRZ8fOT8O+XHQj6of+wgi7keZQFJ10Z8dWcieZUSQ2qqsM306rZPydXqSz6EWqwV96phKaeZFJRN3VPZMatrde/PIwbsxomt/ePD137y1+o1lOHz6lN084uR+xUx3hZPqzL5lv780kvx/BX7tRmb0Er2MPgsOiMtzedbkYB1Ol8EaU8wGziHQwgqFdoAL58kuLHGh6ELOhcMuPEduIRLkFuJpF7ZqdxFjCrg+k+QRXzGWKwVzkRzUMt5B5LVj2Sx62YwTa5Kzfv/2nf2zQqt6kpe/+8PD2yqmTMU//WHEn/zseCTZcf7ZgLYbi0cv0b9jD0Ee2Y3lAmMCt5tjOJ8/j4spefbUJugnxxQ95wagKOcKhXKAHxfGiORLiMwhswVfvhdd2Ssgm5DWyfGlpFZDTp22aKmzoIrshtMeQLIgvkASqV/seii579fnt+3UPYa1PclPk/7E/l1rlK7klfo1+Ju/IDoDBy67wp897w7j6y/9qJD6HQ8UxEYv0fX0WbDDZDgkr3EjWicZ7Fa71+eGmGJ1+92UmXa7zTabI6bYODO7QjE7Bn2okhuPPh8mfNhJrj5i5CZkXoxcgpT4UPQh58NhQpfw4fhCM2XCgTsrM88on10gHn6WPRel/AJtG0Xejvk6e6CsAJmqfVtmHikp+d7qd177+cu4NflQx048fA2+bes9GrOZZvunX0L2k4+Tm1fio08eO3lUi0taYv4U+wR4cKb8K5vDQXs8zrwcxjvZ4XF7YorbDkKeEFPoPKs+N6aY9OjxIuPFy178kRf3e7HHi+1eDHnT8GsvevG8F8948ZQXjxCKdi82ZvX5IYGvJX0EAn8tA+/xYpMXazPwOX8gjI55sS9rqDIvTiEU4EVq2ItDXjxHMu0ESbZlL4pe5LyokiZH6L48v5nooK9KbCa47kzEzUoinZlb0TypfFYq2NpTwdaLUbuUSiV+88QT33tgac2McH5Jddlnn72WZA7SLTMKa84N5b1+k73zkUebrnwSCIcDQENLsp5+m/FAIZSBjI/Jo8WRiFPQTZrnnQ1FFgsUSKzHO0kwzq+hy2OKMxTKYT0FEkPn0DkiL1bGFJHjS2MKP/lUDfbX4JEaTNRgTw2212BTDdbWYFkNTqlBoQaZGhyqwfM1OFiDp2rwGCHeP5E4RQk1eLkGLxLiMxOJ27/AsyKb9FiGKHts5gsEY0PKhEasQYojww7XyPnaLM+RWapkSX1kSZ01GK/BEkI8Metv/fL89OrzwcSbj2zCLNurcEUiqVA38VSf3nNyp1eo92E0kLqglPK1K3Ht7mtW+m7cOcupJ3dgAS0SkmCRvu7T7sHozT95bmV9Nd0wEx0P37/73/9m8GcN8Ypljz32ygvBHv8F6eCCqfULk0emld+c+P6zyZPb167v2LohTt3+xHHr7bxvf8/WR5v3bC/fUpd3Tfkzi99+5Elrzs5QX+OVbRXylJ0lqxtvpnbv3XdgV9f+/ddrNi4A0B+wh8ALL8g3gCC4Lbm5RrfR5/dOiileEHKNbqc7ppid9jyKYll+pcJy/Zm4yaVC6RAJn53ETWf7cT9BpyJrZya4nstE3P4seLb8r9qdXeN+fuwiKjvqpmSun4fRdM5RPosvk/L14wk71usb/r76xpu7ktfuPb7+9n3J9uvuwVL6k47pU+d+686RB93hsJtaf8I7kqfVWMoVBkr7O0jKxi4BE9jhO/JmMJt1PO900MZVCtDI0bRdtttiit1q5q18TLHaBScyTqy47MQ+J1KdTow7MeZE2YmDTlSd2E+aohM5J4IThwmkz4nZlBPVUBNBK5HCWIIIk1zczzOuP1vh0ppFjy/6JjlcLMvFYTnnb5Lu/gMYYt5LteXP52jrpEW39r1nKgDFsYfACE/Inawpx6iLKUbQbgBiCm0/b8IzJjxlwmMmPGLC/SbsMWG7CaeYUDAhY8KKy4Siz4RUpwnjJoyZUDbhoAlVE/aTJmdCMOEwafaZMJtswnrTy51gk+OZ8VVHc9ypraof6+vH9gy1PdO56bMwA5+RR3mzbvLkABQVhcMBMx0tnTE9psywFgUm8+ZwKBxT/NaQ3a3TGY3CSsXIFQLQdHClQnN7org6ijOjOCWKjijqovhJFC9G8XwUfxrFY1F8MIobooixKNZGsYTQCVFkotgxnCE8FcWeKMpRLCNoJoqXo/hOFAejqBIe+6PYHk2zSNFwGbJzUTwTxR9GsY+QXRvFyiiKmTFmpwboj2I8ik2ZMQTS8yLpeSSKiSj2yKEsvIf0vUgmQKmEoJMMz0XRGkVDWuStX39QudpBXu1FWycQZaVnGfNN22/GgrNd54wSJBbs1J5uHDPjXEo/btUFV5l145Ny3W7v0jdqh29INt/TP6murtrOH0rWHGxubrn9UHL1dddhHh0PzSmrCNUk/5A29JYThhwLM3N+prlK8Y64xwwCUPuLSfo39FmYDIPyXsjLc5nMZr1L7/VNdseUydY8s97lcMWUHIfdpikNpynNMR9e9OEZHwo+ZHxYcdGHR3zY48N2Hzb5sNaHZT6c4kMPQas+pLIzQdmH53w4liSOwbPl2fp/8osTveJV8qtd+ndzUl5xRfOa2/clv7lrF5rpeHHFmFNsWdWa9opEOOlvoPRZ8g30BfnW8W+gMcXAUUJMoRxi5htojJxHUoeRIXIeGXShSk4lfeRg0pn5SJrqUvk4AcUIaOwkAxP7p440qW5xF34hN5sY0FOYL//6mvaY+uzPT+mvr7/89alb7rh993W37k/gO0k++ac/XvnLf/3qJy8Mvf8PZ7RTTiC5hFbps+CEAByQV/isjM3mdOU4c/Ilp02wxRTBYxFjisXh9eg9KxRGz9EQU2irLGFCQpCwokTCIQkHSTsuoZxVr5bGU9KsA2cmw8y6Rssct7VEs7A84ExttnbWLHR4UyaEqT13REsfvhYN1LRDi06d/dfXdm3WHUvK11Hte/ftXqZ88wq92R2eNaX4s//8KPmZo2Fq0hWJuOhlgz8KjPA8pGPEw/RZEGCFHOb1ejSb7Q4dDzzHU7ksT1MCx1liCmfVm3PMMSXH3kpuRmQH7sq6YNUWEY1qX3bJ7G0VpalTi1SoHZnH1FJbBvVwaE7p3aV/k6y57jq0Gee+Ppc+m9zhcYzUZHRxd+k1kPqyQf2CPgtF2s1ZQC9MsoAAU6dZArTT6YspHidHm2KKnnYkpmHnNIxPw9g0FKfh09OwdRoun4YZSX/NzVkqvhaWR52OaGl5WQSnUxNyervgcPpo6hcDf1v/g5LwjMbrf3JU2XRN6Q/6tnw7Mq28a0Xz0mX3r6mW0HBPn9f2u9trj99Y5g3Ubqy/+V7/69sjsdqKZZNKpy9YreVio5eoMHMrOGChXJiTm6vPo2mnizGbzDHFqDdZBQB+hQKOx4kdVbsw4kpfY6bP8tGMatgqSol02fyCcl4qr8aoXTt4kMOvPRdxWbz1pr2bqv/1XytL5qyS9gtdW6j7w4VvvdU0sm9+DTffpd07eEYv0RfoE+CAB+RWsFkYxmgzOl1sniMvpugdVobiqJWKhXOYjTHFbO8nVjqYMdqKoSw7BjLhMXtXM3acgoguzDbXbAc3rvjRq7Re2xftJJ8+1xdqebZbO+VjRf/N276F0euSfzQsfKF6+Hr0ofmEn/qdO3zlEXd4SWEFCtRmkvvA6CVG+9cOubhTHtVTxlwq18rlGvUUQ8UUE2PVG9BiAHT0cNjOYROHtRyWcTiFQ4FDhsPLHF7k8DyHZzg8xeExDo9wuJ/Dr6Ef+mvoK/4/B+j/MvoSDkUOOUJ/hvBMcEh1nuIwzmEqiO+6qnRdVf7Xb8bjp6ZodP26THzK/pAoIfm+Yky9qPDi5N44PvcA2lD3AF6zRqBvdIfDnpHrqIPucNgOCO5kPf0pfQIm4/tabpfnMrt8bsqGFsZm8rryeHOuOabYc62gX6HQMLnHh5t9uNqHlA8/JsH5vA9/6sPnfHg3CcypC5gaH5aSwCz4UOfDjk98+Esf/sSHz/jwmA8P+3A/od5Mwng9oc73oY2E8cs+/C2hP+PDUz48nqHv8uEGH67MhP0CHzoy9GPzODWR/1X0qdnM/oRQj83mSIa7/I3s+Uwh89HukobJH9acy0zoSIZ7O1lrivtlQkClko2xJGS5D62+sTzwqkRwV1fr/3H/v/qUDdWlY8ZN/Kx25z2uH3n5aX87D2elVMSTemEu9eqyJZGAf1ZZy6JZyUfieOpI8pP7cf2G5H3z4z3JettrcefcPQ/TnUR/dlL3a/pzZe33+rR/WPffnSSk/QplbmRzdHJlYW0KZW5kb2JqCjE2IDAgb2JqCjw8L1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9Gb250TmFtZSAvQkFBQUFBK0xpYmVyYXRpb25TZXJpZgovRmxhZ3MgNgovQXNjZW50IDg5MS4xMTMyOAovRGVzY2VudCAtMjE2LjMwODU5Ci9TdGVtViA2OC44NDc2NTYKL0NhcEhlaWdodCAtNjU0Ljc4NTE2Ci9JdGFsaWNBbmdsZSAwCi9Gb250QkJveCBbLTU0My45NDUzMSAtMzAzLjIyMjY2IDEyNzguMzIwMzEgOTgxLjQ0NTMxXQovRm9udEZpbGUyIDE1IDAgUj4+CmVuZG9iagoxNyAwIG9iago8PC9UeXBlIC9Gb250Ci9Gb250RGVzY3JpcHRvciAxNiAwIFIKL0Jhc2VGb250IC9CQUFBQUErTGliZXJhdGlvblNlcmlmCi9TdWJ0eXBlIC9DSURGb250VHlwZTIKL0NJRFRvR0lETWFwIC9JZGVudGl0eQovQ0lEU3lzdGVtSW5mbyA8PC9SZWdpc3RyeSAoQWRvYmUpCi9PcmRlcmluZyAoSWRlbnRpdHkpCi9TdXBwbGVtZW50IDA+PgovVyBbMCBbNzc3LjgzMjAzXSAzIDE1IDI1MCAxNiBbMzMzLjAwNzgxXSAzNiBbNzIyLjE2Nzk3IDY2Ni45OTIxOSA2NjYuOTkyMTkgNzIyLjE2Nzk3IDYxMC44Mzk4NCAwIDAgMCAzMzMuMDA3ODEgMCAwIDYxMC44Mzk4NF0gNTMgWzY2Ni45OTIxOSA1NTYuMTUyMzQgNjEwLjgzOTg0XSA2OCBbNDQzLjg0NzY2XSA3MCBbNDQzLjg0NzY2XSA3MiBbNDQzLjg0NzY2IDMzMy4wMDc4MV0gNzYgNzkgMjc3LjgzMjAzIDgwIFs3NzcuODMyMDNdIDg1IFszMzMuMDA3ODEgMzg5LjE2MDE2IDI3Ny44MzIwM11dCi9EVyA1MDA+PgplbmRvYmoKMTggMCBvYmoKPDwvRmlsdGVyIC9GbGF0ZURlY29kZQovTGVuZ3RoIDMyMT4+IHN0cmVhbQp4nF2Sy26DMBBF9/4KL5NFZJvwCBJCaomQWPSh0nwAsQdqqRjLOAv+vsJDEqkLsI491/cyA6uac2O0p+zTTbIFT3ttlIN5ujkJ9AqDNkREVGnpNwpvOXaWsKo5t8vsYWxMP5GioJR9waBn7xa6e1HTFfaEfTgFTpuB7i5VuyesvVn7CyMYTzkpS6qgJ6x66+x7NwJlQXZoFBiv/XK4VO2z4nuxQKPAAtPIScFsOwmuMwOQgnPOS1rUdV2XBIz6d56i6trLn86F6mNJC84jXq4k8kDHFOkV6RQoqgLFOVKNVAVK8CzLg+d2e3b3ekZDkeDoiVqBCUSCZhgkirHkhC4ibB63kiwsSRQ24/geZF1SrIzRKMGr0y0kyhP8xizasmK6tVXrSB9zkDfnwPgw99D7tevawOPXsJNdVevzB/38owAKZW5kc3RyZWFtCmVuZG9iago2IDAgb2JqCjw8L1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUwCi9CYXNlRm9udCAvQkFBQUFBK0xpYmVyYXRpb25TZXJpZgovRW5jb2RpbmcgL0lkZW50aXR5LUgKL0Rlc2NlbmRhbnRGb250cyBbMTcgMCBSXQovVG9Vbmljb2RlIDE4IDAgUj4+CmVuZG9iagoxOSAwIG9iago8PC9MZW5ndGgxIDcwMDQKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCA0NDY3Pj4gc3RyZWFtCnicvVh/fFTVlf+e9978zI/5kZ9kgu8NLwPEzJCQIUBgwjySzCQh1EwSxs4EITMkgUSBJCZg1XVJrV1xMIA/6kqlK1Br1Sq5AbTBdoVtaz/a7Q+73drqli37UXdrK8p219aKmVnfm0kIVtv+0c+em8+759c959xzzr3zXkAAcjEGHrG2zsrqPT9/oB6gBwHEenbEh7hT3JcBeg/A9p7do1Kvc92tgD4GcP+ydWjbjr+NP2MD8h4DDKe2xUeG4IDpQ923AFi3bb95q/jDiWeBnO8Dulf7++K99FzN9wGKAVje398Xz7mLXwmQD0BZ/47Rz1w9TCsAvhSg/u2DPfEFYWcBwPV+qP/MjvhnhoQeIQjgAwDSzviOvrJH/O8Bwh0A/WJocGQ0ddPXygAqVeVDN/YN5enusACmZYDwAAAeRnDIB6VS4KHuvYs6sAF3QQ8OVlTiOoBfw9VCAIEHUu88cTb1eaj+/xgIMDiTAXzavOrSo3+4ZG5FL+ZfodGl+eDmHfretwd+223xvQvRqAnOOOIX1fncrYOvXnp0+j5zq+EVcFp0aeCFdXQQOkD3RZ0XbnJp83r+CLZydtJxnI7XCToTL6TjuAxL13Y2gCBht25/Mkheg5O+EQOd+eXvAf5JXZ2amQ8rDs0TDyA/k4l8CIgAsMMKHhwkrMV6xNGH7RjE7lRKW5nm9czwUq9dOa6M5a8O8Y8dJ/7SQUYyUpx+xJVfMbq08aUrxgVAX3vZMfenovp/AuG11MG/WHck9au/un9A7R7w4/ALwBp1/iRdrhY7Prru44Afh3pWDehSu1BQ744n8XIGV7v4mQzOIRtPZHAeyzGawQUsQTCD61ACdwbXww1gPQawBX24EXGMYgCD2IlOjR7AVnjQglHEsR0D6MG1Gn8koyWhGkuwFEtQ87FWpDl2pCvsrMUIetCHnejVNCR4IP1ZG3Mt/DndRgxgGwY02S3oQy8k9Gq6cUjowSCGcLOmuw39GIWExehBubanKixFFSQ0YRCD2Ibt6IOEBgziRgxpz8s+l8CsSf60tWpI6MhE0aytdmsZ2YkeLNGNowDNujpYMKir063/SPWfxDwcAlLq78XsM/lacn3q/b9Oz6bBOIM8ignch1fw3QwdRAgDuA2vXKH+T3gBE7gJIYTQhSc+0eyTmEKXhoUQw+3qTj4W/hkr8DOE8BBOzfJexK3YgXG8ghCCiFA1BfFbnMD1eBXP47f4VFot9RoO41+5XCTTtHZ/b9XQrTjL/dusvQe5I1jHvQ7gELYipPHqUU+jOEwPI4j9szv2/VF8t+EuAB3ox27cmfFT/8Grug7OjL/FfmwHsArXohHbMDT9Y1694x+nPbQPAMNXMlauxZLk+uTbgKGZv557huOm7wNwD7bhHsTpFYAb59eqilxlyorD+A6qUkhuS0boRXoZtyOIX9GNOIWdGE8exvX0yXlXOyeMHCrnXdrbxh8BtwyW5Ptcdep/+TKYEU5dnOGlWlP/w8f/lOXLoL9H2AEzkHojeWuyV3eNrgJP4zFgbQwK9YGon7YhDyLFcA11I0xrUUcKwqSAqB5hakCdNi+hOoxBpDoQrUGYfKij1QjDQqtRSavhp9XYQ6sh0OqMRhXqqBJhqszQHtSRG2FyZ2g/6rR5HYiaEaamzBxEHQUQpkCGbkGdOiNEBhAqtecECYqNXpqmM9NknabBS6RcovemyKLYy8XfO1Li70KLxXdDPvG/L/rE05RHdmW5T3z7gk98qykl/ipULv5XqFz8z9d94huhGvH1UI34H6e84vlTJeKv3/SKvzznFf+d94p4k0xTqbOK780sa/BN4sM4Rz6cqzoXOjd2jp3TGc8RH/4F7xV/HioVfxYqFV8OlYo/DaXEF1+oE19o84nfbisXT1MWWZTccrHyW+T/1oFvcWdC5eIU5ZxosotTlP31oynxuc3lomWKzIqJvvHUMvHZp1Ki6tZ7umxx8HSoTPR/nZ4JlYtnTpFlonticOLhCWHo+Njxg8d56XjVceX4S8fPH794XP9UqFz8JtlQR1aEyXrC4ROnKFdZUs6HLV+mymN04BiljlHs2NCxsWP84/aU+BifEo947eHDoXLxoU6f+Mg6n+a54KizLPjw0Ymj3Beb7OKhdSnxgXU+8Zs0n4pQDpGKT3aWi/5nqQhtVKSs475wv0+03L/nfs50X6hOvDdUJ94TSokH764TD4yXi/vH60SM02pxnO7u9Il33l4u3nG7Txy7/eDt3O5dPhG7aHTkanFEy0uB4hgqFwd3Vog7m64WS7Ic4Xne4rDBy4f1fEr8JpVQvhbCvJPdXlGZovwTZYuCU6mzJ+MVVeqsZMdFORjrVsRu1V7qrPLAppKrgtc1SeLGriqxq6lczCd7OM9rD+uIDwtePmzhRd7Pt/GD/AH+DG8wdrRXiu2hcvF86GKIs7SJbZVtfGuTV1zXZBdbmnxic9NK0dIkNlU2/ajpl03vNOkfbqL55AiXNjvChd6CsI0sYavXEuYIYfIiXGlJWTiLpduyx8Jb4Ac3Vkg6mqKDkxs6KypapwypjlZmCm1ktJe5OtWn0t7F9HsZwl0bI5NE+6OfHx9H/fxWVt0ZYbH50VbW2xlhioqMdUaYdf5kIeqjIyOjFWmgkV3qhF2jFRWbRzSORldcBkrTuypoREV2pdU09ZG0dGRmwcjI6C5NOrprhEZQoeEjaQMjoxV02e7mEdWMZopmVmvijM6ICjQyMjI3kpFZpFi99tT3Q+HXumZYYMegssaWa7EIep09x5qdbTBYBT4vPyfXlhuL2m02zqrXCZZsg8AJ3VEzZ7+YT+fz6aV8OptPLJ+O5NMmDeD3Vtjg9XqL/V6vvbZSo2x2Kqq1eW322trqapvXVlu7tMplcPqJvHlF6sw7eRM5yWhO3mse4p448/5tWUlX1gFl+uIPuI7kY/STmpoah/DeJaOjpsZBn0veJvRP7wJIfWsV7Nr7whZlkaDLMptNORb1E05nslkt5mxzdzSbN5i6o0cEgmAVuFxe0Fo3r7BZEAwGxKIGO/xqkMWVFd2bNw1XoNifiblWjXl2LK1yeatX5Hl5p5/yFq1wWoh6Xn7uhsG1137gNk/8+DEz5zP/5Np8KkruqXEI/1BSU1OifgjUpX7Dn+S/AxuuQpNSNs90lcDzgN1msomS1ZpTEIrmWIVSfWlHVF/Ioy3KF8A/E0SxhmVC0aJIB1JkcK7QywsW1iyzl3mri1Z4DUtIXqDnCvILvdUr+IJhY/K1+Y/fffN9hwgP3HyDZ/k3FjVW9341Flk//HfBeZ7DkycOT9DSr1294CZHwd+nsO+GsX3qd6E/9RZ/E/88StClrCzUI0ef4yg120PRfZaHLL+xXLIIsJDJYjFbLSViSWUJn8OXlPB8cXuULzxSSi+V0lgpbdo0PJPQ7s2b/N7KzZs2Vcxmc2mVK5dmIy8s4uVFC+UFuVRgVQPXt39v41F2N/H7m44s86yw+gdiX+394YGH9rd++tlHjpN4/KrC5PvH/fuTD6bUj2wOa1K/EXS6ceRjAfqVVaUWS5m8oMAMk0mv1/Ecp9OV5RWHonlWs5gtdkSzC036tqipQODaogJ+VEZnymiijPxlNDw8PJzJ++Xc22hO/b1etYHVHdBytf78R4owpwLLV/AWQfmikRovZipx68H7CIc2V8nrajY/0htpXfm5Ov6pKrqh2PP+abUepw99jTwTe4pK7k9+sO+GsZZ6cFo1uvnnUQQnAkpZsSDYHFmwYYHMF7dFeT63oOCqULTAas7NNbRHcwtfkmkm8/4Kmx21xZUVc1tnaRXlCzpDOsCimSos91YX0hqqWaaVge9OsuQbwg0DXQ/Wz7/uB9cdmxh//65bvzD9pe++XbcqeEeMe2/v2byWPZ+tW3T1NRuefvyr5Dw5nNxrOTy8svnGsyD1K47L1o3DgFWKpBME3gDwvNGkF9qi6v9M2qJcgWgimOgdE22aTbka5pxzVmRwqhkm8UvG5OkLnzVSRXCeR9dc7NHO01v8t/nnkQMH3EoRbIZiW3Hp/AKzmopcPhTNLTwynzbNMZzpuzx147MbzZvdfEE+p78wsHnjV2IDWzZ+efNzj76QePeQ+qANdx64d/qexIF7p5PCT58+SvbDP336aPLtwyCUpt7ix/knYce1yjKYs7KsVoMl25Cdn2fJzc1uiwq5FsUasnL51jLrMis/ZqVRK1mzCvfkU3c++bXbEn7vpk3Dw37vnOvGrgVbvbSKli1ctMJbWJBvIJlftMLpoOXcO1cXG58r6UxGW/5x2ES45w8Kv8jlNniKFkfumN7I3zLPM11GD/QDUJo2dkUj4Q2dHe2htms+tb51XUtzUzDQ2FC/VvGvqfOtXlW7csXymqVVlUs87sWLFrrK5AVOsTjfZrXk5mSZTUaDXifwHMEtMYoFGO+SbMG4HJDjzR63FCjub/S4A3IwxqS4xIIxJiyUm5s1lhxnUkxiC+NMis9hx5gSl9jWj2gqaU1lVpOskg8+1YUssR80ytIUdbVHZImNN8pRiV3Q8E9puLBQI3Ia5ajT6XFLWlRqtFKABXf3JwKxRo+bJrPMDXJDn9njxqQ5q0FuyPK4wRbLQ5O0eA1pCLc4sGqSgzFHdct4VyDey0LtkUCjw+mMetwtLFdu1ERo0EwyfQMzaCalATV07JMm3WcTd09ZsSVWkd0r98avizA+HvW4E3wgkbiT2SpYudzIym95vdjjDvQxt9wYYBWq1daOWT+tl10S07msspR4F4xi8oW3ruTEMxy9y/ouVJRxDYw6Ik4VHEE5GEskgrIUTMQS8anU2BZZssqJyezsxFAgJjGEIoziU6ln9zlY8O4os8b6aVU0s/VgRyvLa98YYZwrKPXHGe9ivMsvO1c6nLZZndAnicEMDUyvZtjpVNOwb0rBFo/bycbaI2lawhbHCSiVFVHGxVTJ2RlJQViVjM1IZpfHZKfH3doZSTDB1dIrBwaYsi/OxrYwKX69WhjZynJ/53DKCbtNqq2MaroS410tvQMS0y1kenXV3AVMWKguSVg1Ivd36emCI8GEhTa7VCtLtZWqnYAciGX+dvcXs7EtksfNmivSjbAhwpRGKcCUeKZigcmqyoAciMcYxQYatWKySnmI5cv1s9VVwwoMdEa0JZllLL+BIdaTWcUqA9q5kgKJWGM6BNWW3B45DW/q/OQyyXHSi2WINqrKhQ0Rxi8MJCK9W5kYc/QyKbZVijicTIkyikflSF9UbTvZysrPO7TmiGq9siHS2im3tndFVmYCSQtUc4Ir8BEzcsSRNsN0LmZ0GaUI5+CjTHBZmc4lBZngkut9THAxg8vIDC4r06e5auPW+6QIOTCjzcrPs3Ip0NeY0VPpK4zq1HZqaJ6xpldJRrGGZocz6kyDx80xwSVlHDOdy6gmtXlGxLskJriMjHM1NGssNZfFatNLEblPjsr9ElNCEXVvanq0LGeSoeU8U6sNV1BzkuVxMzhbN8wSajJZsMIxN7msSaNnyeaPiFtmxFLCKLd2JlTjcsYgGOdqYVBbWFlpc2h3gXqg5WBclqxSMH2gE5OKoh7m/lWqEbmlNyF3RnyadmtH5DbHLaovO1qpdUO9xz3JoX5Spr3tkwrt7eyKnLYC0t4NkRMccQ2x+uhkGe1tj5yWAEXjcipXZaqEpBKqpY7ICc6o6TtOK8CYJhU0hkb3TBE0nnGGR+iZ4tI8a9rRQs2RAg49U0JaosxoC+iZMqZ5YxpPg0moKVPMOsWomJRsLodzTJLKOqFTjM8SYCKczKYcckyOcQ0dGnuKxiZNiiOtMQYTKekI94Yvuw53RU5mI4cc2jMajdar4HEHivvlVvVnJSD1qo3yN9H+RCyqHjYUMs7FOBcxkteAcfKaSeL02cws99WzLLle5ftVvj/N16t8g1zPqJA+XD7GuIYQI7UDNkacspVJJS86EtYLaqWiFR53wvqG5/8AhtQPVwplbmRzdHJlYW0KZW5kb2JqCjIwIDAgb2JqCjw8L1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9Gb250TmFtZSAvQ0FBQUFBK0xpYmVyYXRpb25TZXJpZi1JdGFsaWMKL0ZsYWdzIDcwCi9Bc2NlbnQgODkxLjExMzI4Ci9EZXNjZW50IC0yMTYuMzA4NTkKL1N0ZW1WIDk5LjEyMTA5NAovQ2FwSGVpZ2h0IC02NTQuNzg1MTYKL0l0YWxpY0FuZ2xlIC0xNgovRm9udEJCb3ggWy01NDMuOTQ1MzEgLTMwMy4yMjI2NiAxMjg2LjYyMTA5IDk4MC45NTcwM10KL0ZvbnRGaWxlMiAxOSAwIFI+PgplbmRvYmoKMjEgMCBvYmoKPDwvVHlwZSAvRm9udAovRm9udERlc2NyaXB0b3IgMjAgMCBSCi9CYXNlRm9udCAvQ0FBQUFBK0xpYmVyYXRpb25TZXJpZi1JdGFsaWMKL1N1YnR5cGUgL0NJREZvbnRUeXBlMgovQ0lEVG9HSURNYXAgL0lkZW50aXR5Ci9DSURTeXN0ZW1JbmZvIDw8L1JlZ2lzdHJ5IChBZG9iZSkKL09yZGVyaW5nIChJZGVudGl0eSkKL1N1cHBsZW1lbnQgMD4+Ci9XIFswIFs3NzcuODMyMDMgMCAwIDI1MF0gMzYgWzYxMC44Mzk4NF0gNDcgWzU1Ni4xNTIzNF0gNzAgWzQ0My44NDc2Nl0gNzIgWzQ0My44NDc2Nl0gNzkgWzI3Ny44MzIwM10gODkgWzQ0My44NDc2Nl1dCi9EVyA1MDA+PgplbmRvYmoKMjIgMCBvYmoKPDwvRmlsdGVyIC9GbGF0ZURlY29kZQovTGVuZ3RoIDI3OD4+IHN0cmVhbQp4nF2RzWqEMBSF93mKu5xZDImOdVoQoTgILvpD7TxATK42UGOIceHbF3PtFLpI4OPck3s44VVzbawJwN/9pFoM0BurPc7T4hVCh4OxLElBGxV2ircapWO8aq7tOgccG9tPrCgA+AcOZg5+hcOznjo8Mv7mNXpjBzjcqvbIeLs4940j2gCClSVo7BmvXqR7lSMCj7ZTo9EGE9bTrWr/Jj5Xh5BGTiiNmjTOTir00g7ICiGEKKGo67ouGVr9T7+Qq+vVl/Rx+lxCIUQqyo3SLFKWENVEVaSMtJy0jLSctIeUqCZ6inTJY4J9V/K7+R40y+n5R/Ke92nSt+hbxfde1OI92hD/IXaxtWAs3r/KTW5zbecHdGuNDwplbmRzdHJlYW0KZW5kb2JqCjcgMCBvYmoKPDwvVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTAKL0Jhc2VGb250IC9DQUFBQUErTGliZXJhdGlvblNlcmlmLUl0YWxpYwovRW5jb2RpbmcgL0lkZW50aXR5LUgKL0Rlc2NlbmRhbnRGb250cyBbMjEgMCBSXQovVG9Vbmljb2RlIDIyIDAgUj4+CmVuZG9iagp4cmVmCjAgMjMKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDEzMzYgMDAwMDAgbiAKMDAwMDAwMDIwMiAwMDAwMCBuIAowMDAwMDAwMjc4IDAwMDAwIG4gCjAwMDAwMDc1MTEgMDAwMDAgbiAKMDAwMDAxODMxMSAwMDAwMCBuIAowMDAwMDIzOTU5IDAwMDAwIG4gCjAwMDAwMDAzMTUgMDAwMDAgbiAKMDAwMDAwMTU3NSAwMDAwMCBuIAowMDAwMDAxNjMwIDAwMDAwIG4gCjAwMDAwMDE3NDggMDAwMDAgbiAKMDAwMDAwNjUzMSAwMDAwMCBuIAowMDAwMDA2Nzg2IDAwMDAwIG4gCjAwMDAwMDcxNTggMDAwMDAgbiAKMDAwMDAwNzY2MyAwMDAwMCBuIAowMDAwMDE3MTcwIDAwMDAwIG4gCjAwMDAwMTc0MjAgMDAwMDAgbiAKMDAwMDAxNzkxOSAwMDAwMCBuIAowMDAwMDE4NDU4IDAwMDAwIG4gCjAwMDAwMjMwMTEgMDAwMDAgbiAKMDAwMDAyMzI3MSAwMDAwMCBuIAowMDAwMDIzNjEwIDAwMDAwIG4gCnRyYWlsZXIKPDwvU2l6ZSAyMwovUm9vdCAxMCAwIFIKL0luZm8gMSAwIFI+PgpzdGFydHhyZWYKMjQxMTMKJSVFT0YK", "warnings": [], "engine": "preset", "engine_version": "jinja2 3.1.6; chromium 153.0.8010.12", "cache": "hit", "render_ms": 0, "queued_ms": 0 } ``` ## About [Callable Labs](https://callablelabs.com) · [Quickstart](https://callablelabs.com/docs/document-generation-api/quickstart?via=apyhub) · [API reference](https://callablelabs.com/docs/document-generation-api/reference?via=apyhub) ## What it does Certificate Generator renders a certificate document from JSON data. Send recipient details, achievement text, issuer information, and optional presentation settings, then get back a generated document in PDF, HTML, or DOCX format. Use the `body.data` object to provide the certificate content. The required fields are `recipient`, `achievement`, `date`, and `issuer`. Optional fields let you set a `title`, `signatory`, `statement`, `accent_color`, and `certificate_id`. You can also control output with `page.size`, `page.margin_mm`, and `page.orientation`, plus `format` and `download` for the returned file behaviour. The response includes the rendered `format`, `bytes`, `engine`, `engine_version`, and timing data such as `queued_ms` and `render_ms`. When `format` is `json`, it also returns a `data_uri`; for PDF output, `pages` reports the page count. Any render notes appear in `warnings`. Use Certificate Generator when you need to issue completion certificates, training awards, event badges, or other personalised documents from application data without building a document templating pipeline yourself. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/callable-labs/service/generate-certificate-document-from-json-api * * * --- title: Generate Invoice Document from JSON API slug: generate-invoice-document-from-json-api url: https://apyhub.com/callable-labs/service/generate-invoice-document-from-json-api provider: Callable Labs categories: [Smart Generation] tags: [invoicing, document-generation, pdf-rendering, billing, docx-converstion] auth: api_key version: v1 service_type: sync endpoints: 1 atoms: 200 --- # Generate Invoice Document from JSON API Render invoices from JSON into PDF, HTML, or DOCX. Returns document metadata, page count, and a data URI for billing and workflow systems. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/callable-labs/generate-invoice-document-from-json-api/v1/documents/preset/invoice` | What it does Generates a preset invoice document from JSON invoice data. You can choose the output… | 200 | ## Endpoint reference ### Generate a preset document from JSON (invoice) `POST https://api.eu.apyhub.com/callable-labs/generate-invoice-document-from-json-api/v1/documents/preset/invoice` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `data.date` | body | string | yes | Issue date, any display format. Default: `2026-09-18`. Example: `2026-09-18`. | | `data.buyer.name` | body | string | yes | Name Default: `Analytical Engines Ltd`. Example: `Callable Labs`. | | `data.buyer.email` | body | any | no | Email Default: `null`. | | `data.buyer.phone` | body | any | no | Phone Default: `null`. | | `data.buyer.tax_id` | body | any | no | VAT / tax registration number. Default: `null`. | | `data.buyer.address` | body | array of string | no | Address lines. Default: `["42 Difference Way","London"]`. Example: `["1 Example Street","Amsterdam"]`. | | `data.items` | body | array of object | yes | Items | | `data.items[].quantity` | body | number | no | Quantity Default: `12`. | | `data.items[].tax_rate` | body | number | no | Percent applied to this line. Default: `21`. | | `data.items[].unit_price` | body | number | yes | Unit Price Default: `95`. | | `data.items[].description` | body | string | yes | Description Default: `Consulting (hours)`. Example: `Consulting (hours)`. | | `data.notes` | body | any | no | Notes Default: `Payment within 30 days. IBAN NL00 BANK 0000 0000 00.`. Example: `Payment within 30 days. IBAN NL00 BANK 0000 0000 00.`. | | `data.title` | body | string | no | Title Default: `Invoice`. | | `data.number` | body | string | yes | Number Default: `INV-2026-0042`. Example: `INV-2026-0042`. | | `data.seller.name` | body | string | yes | Name Default: `Callable Labs`. Example: `Callable Labs`. | | `data.seller.email` | body | any | no | Email Default: `billing@example.com`. | | `data.seller.phone` | body | any | no | Phone Default: `null`. | | `data.seller.tax_id` | body | any | no | VAT / tax registration number. Default: `NL000000000B01`. | | `data.seller.address` | body | array of string | no | Address lines. Default: `["1 Example Street","1011 AB Amsterdam"]`. Example: `["1 Example Street","Amsterdam"]`. | | `data.currency` | body | string | no | Symbol or code printed before amounts. Default: `€`. | | `data.due_date` | body | any | no | Due Date Default: `2026-10-18`. Example: `2026-10-18`. | | `data.logo_base64` | body | any | no | PNG/JPEG logo, base64 (≤ 2 MiB). Default: `null`. | | `page.size` | body | string | no | Paper size. One of: A4, Letter, Legal, A3, A5. Default: `A4`. | | `page.margin_mm` | body | number | no | Uniform page margin in millimetres. Default: `18`. | | `page.orientation` | body | string | no | Orientation One of: portrait, landscape. Default: `portrait`. | | `format` | body | string | no | `pdf`, `html` or `docx` return the bytes; `json` (default) returns a PDF data URI plus metadata. One of: json, html, pdf, docx. Default: `pdf`. | | `download` | body | boolean | no | Send `Content-Disposition: attachment` so browsers save the file. Default: `false`. | #### Quickstart Render an invoice as JSON metadata by sending the required invoice data. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/generate-invoice-document-from-json-api/v1/documents/preset/invoice" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "data": { "number": "INV-2026-0042", "date": "2026-09-18", "seller": { "name": "Callable Labs" }, "buyer": { "name": "Analytical Engines Ltd" }, "items": [ { "description": "Consulting (hours)", "unit_price": 95, "quantity": 12, "tax_rate": 21 } ] } }' ``` #### What you'll get back Returns a JSON object with fields such as `bytes` and `cache`, plus render details like `pages`, `engine`, `format`, `data_uri`, `warnings`, `queued_ms`, `render_ms`, `media_type`, and `engine_version`. `pages` can be `null` for DOCX/HTML responses. ```json { "format": "pdf", "media_type": "application/pdf", "pages": 1, "bytes": 26205, "data_uri": "data:application/pdf;base64,JVBERi0xLjQKJdPr6eEKMSAwIG9iago8PC9UaXRsZSAoSW52b2ljZSBJTlYtMjAyNi0wMDQyKQovQ3JlYXRvciAoQ2hyb21pdW0pCi9Qcm9kdWNlciAoU2tpYS9QREYgbTE1MykKL0NyZWF0aW9uRGF0ZSAoRDoyMDI2MTAxNTA1MzA0NCswMCcwMCcpCi9Nb2REYXRlIChEOjIwMjYxMDE1MDUzMDQ0KzAwJzAwJyk+PgplbmRvYmoKMyAwIG9iago8PC9jYSAxCi9CTSAvTm9ybWFsPj4KZW5kb2JqCjYgMCBvYmoKPDwvRmlsdGVyIC9GbGF0ZURlY29kZQovTGVuZ3RoIDE2NTM+PiBzdHJlYW0KeJzdWttqHEcQfZ+v6OdA2nXrG5iAJWw/OwjyAU4sCDhg5f8h9Fx7Zn00M7uO5cSYlVQ103XtqtPV60VL/8+RI/ezb/7MJj5n9/Fz96UTFh/c+Ekhe7USnVJOPrinP7rffnJ/dV869SyhX2n4rX3t4+fOFytu+fj1vdtQnh67V+/VPf7dsRNLTo2cahXwqVMbaGkhGQ+k3JDKQIoLKYSBxJRnmk+q6trPqswF8emxo+Hd+U0aFWPHk17bRxpNeVJ0+8ys+rzOpHnzTJHJFt6Y0hgno3FpeiiGfKlzKmuduSe1Gg6UVh/pKa30gdLIIieZVqZvKb3pa0o1dEXpzVpRehtWFHLKuvlbtnFYP1KZ9aF1HNbPVLvrM+s4bJ4p0j+zjsP6meqb+swmDhc6W9jGoZLWcaiUdRwqZR2HSmlkeRaOziuF4rwlC30+XxCfHjuN4ozNsYqTSYINpBgm0t1D9+qdOTUfo3v41PFQHuoPFffwuXtNJPe/uIc/O2ZPHCSZI/fwu3tNpNwzJHpjk8ILowwM84GEKS4MGRi1rqj21WdgQBkSgQzJPePtQ+cpxuTaz+qTC+LT42BtcGw+hlr88spky9GX0EcyjqaPFjL5kE2S6Sw+DOKz58BMKS8MGl4RL5RTooVjAbxicK0w2TjGCWgerPgUFrVHb5qnxCWFtI3YV+wZQ5Z9iTFJEzKmca2cKVpYlGNkDitiwDcKYkDhUAZkpOe1mpx8ID2MJj8n5E4zFNIEQmP5mBpjrGcdftAw3J9eCnmM787GJ9pufOD2PRmGWdTLhgH6Dgq/IQze3PC/ltnp96a6slcZsOW6oVRcNsZlsDD5LFG1NPVp8EnxlJOlfNE4ik+cyXLTaujKNgCLKTlWnhSNpze4vUMbHDLgUlOGlCBROBxYCqU1KXhD3iEZp7UK8djWIcdhwhYw3bDCecqEFCKZLOLvxqRSycPpZK8Uw04d0LYZHa9eQmQreoPjNSI7UIcY0cDlnoXCMbBIh0OVbC9UuMjYGBGKStHilgG9pV6iUll8IgacJQEwTq/0TDbEryfWXiuHeO4rEUTgZC95j0SwhDGCGIDeo7SG+Q4ZaKnASPgbwJAhhGw+p0wlhQMO/iFrADNKFJRZcnPUZTnDpFlISnwEogIn4pKMjhsYf+GyCE8oc6c6Xn/+JwxY5PYq79VgTYr20dcWtE3Vw6KYysXZ3TwFLTnEbcSSF4p59cbAiD7lqClts0J9tiI5Ly/MORyFo2kD/+Rbw7/G9AUGGjxHTFXtOHxC2C2gI9PcZy66Btp3Y1050U6gVlfgMOiSN4iB7MBLwQaALD8PgLHbD4KnJpMWvLszhTijOB4+wHZepv1FiaXZXyPjm0AZ+AYEAKALXoGphwxj9ZKLWFOKcLO7Px3MGRHDjoT7N/QByou9pXZng8VJzPvzqtMbCtaYMTOCT6RR8pFtrqe3IFxK0FIH3aUp+aSmuXGbjuWfvdXJCaV9BTdpBcVZMM9GUVtx+Xy3gf5Ix/QInH3qd1+jx9R0c7SQshzYTHcHpRXzcWP1Mz2Wpl1NyinoV3DyRbTz82kAU223DhSntD8dOl8A4CETnu3RMQQfS7/d0QxWYLpDO/budIE73XqQD+lgjdcYvOW695cY46kHHN+i094e8N+fcGvyvWGzelngmRMO4E+fUm/WO7D6SGXtV+g+OBs6OpnP5lOJOR9yE5SGADFOCAjtoP/+NY8Xp3rgEgRtPTiXuOLS8zQchPULFh1Ypq7Aoufx7vmbPliHT3eN01NOVcCAMxzk9fR2jHnNwHhkTARl44KOHAJlXDG1g/FbI0bcNZKOYGbZc7hIfIfmMGlxRdV7gabWNAfdv0y9tTlECp4T5/xfc5Mm8tbfbmsqE0CHV0gQNCLF8aUTrEmwvO3MmA408DA18MnU79PAoYyXDLdRuHGQv+/wkuvXrmIj7BmHQ2dA/HO+GELwevGFqIjcppv7j+xDDkVTe3qsWVz9d5GbFwuHVIbqOq+bJVfTaqIRcaxKjz95/H3W1Us/f24+62j6grj7BTVy9TuCo1Wome5Nui5B3Ytit/AGoVMMk2DlQWfM8ydfqC+jsRfc8hi2nr/0RSEEeB1usCuu8tAdFIaa8CbvZS//sO1HTAztrdRK3Vyam6+3YKmV8ObbrK22VNoQHmGw6C59JTmSnVroNpVuEr2iz5D8Q/eh+wdLeifCCmVuZHN0cmVhbQplbmRvYmoKMiAwIG9iago8PC9UeXBlIC9QYWdlCi9SZXNvdXJjZXMgPDwvUHJvY1NldCBbL1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSV0KL0V4dEdTdGF0ZSA8PC9HMyAzIDAgUj4+Ci9Gb250IDw8L0Y0IDQgMCBSCi9GNSA1IDAgUj4+Pj4KL01lZGlhQm94IFswIDAgNTk1LjkxOTk4IDg0Mi44OF0KL0NvbnRlbnRzIDYgMCBSCi9UYWJzIC9TCi9QYXJlbnQgNyAwIFI+PgplbmRvYmoKNyAwIG9iago8PC9UeXBlIC9QYWdlcwovQ291bnQgMQovS2lkcyBbMiAwIFJdPj4KZW5kb2JqCjggMCBvYmoKPDwvVHlwZSAvQ2F0YWxvZwovUGFnZXMgNyAwIFIKL1ZpZXdlclByZWZlcmVuY2VzIDw8L1R5cGUgL1ZpZXdlclByZWZlcmVuY2VzCi9EaXNwbGF5RG9jVGl0bGUgdHJ1ZT4+Pj4KZW5kb2JqCjkgMCBvYmoKPDwvTGVuZ3RoMSAyNTA2OAovRmlsdGVyIC9GbGF0ZURlY29kZQovTGVuZ3RoIDg4ODg+PiBzdHJlYW0KeJzte3t8U0X2+Dn3kZt3ctO82kBz0zRpa1tSmhYoFnqhD4pV+pYGLElpwaJICyngC2lXV6CI4Cq+cAF3+flAlFt8UBUV1we7q6yw+FwWRUHdXXFh9wvqCr35fucmLYXV9fv76/f5/D490947c+bMmTNnzsw5M0kAAcAI3UBDpLo+kL/imZduBcD7ASDSel1Lp/6YvxgAvwOA11uXdQnXha99GIC5DYBaPb/z6utuaXmOB9A9BMA9c3VLtBN40AHACQAwX73whvnmxQ9nA3i3AYz+Vfu8ljbdujOZABgBgHHt7fNajE7SFosBIL39uq7rX73EVA4wpRJA2Lawo7WlobH5cYCkGgBzw3Ut13fqp7AFAHAOAIRFLdfN81omuQCoPQD4286OaBcgfACAo0h955J5nb0PM88DcHoAZgMA0KAGCrRAx2JAAwKos7AOGuAqUAEFZgjAVQD0FXQDMIBAgwIxmfD8AUAAbrI8A0q128/5vr9R20Eww0GdpWCo5Ae8J0pfDpuKz4BbrdT8dnq7n7yP3JSVfc53bkDboS4DVKSLA80cpfYAC8A+yAYB0BV/0wdhPmVRs5SOYygCTFyOoXYwdkp9KQggCDvYQ3ItBrnJuCsC+Mon3wIwE9keohnISbQgI7TGNQFWYEACgEwQgAE1CDAGCmAcFMEUKIfpcDlUQy1cCfPgalgAnbAUbhB2xGIJfnkJylKFcgbUQgO0KJQLYQlcTyhjx346fXnzxTr8j8DBLCI9owGAHfCbRB4hFbYl8hSo4aFEnoYCaE/kGcgEMZFnIQX8ibwKyLxcDgtgLsyDJdACXbAAOmAR1EMLLIIo5MJU6ICF0KboYglEE/UC5MMYGAtjoPAH2wtDHIQhDlMgCq0wDxZBm0ItQC4IP9F6sO1/piqDBYr2Sc2NMA/aQIA2hbIFBGiFDuiEG2CJQtUOXSBAJrRCljKKPBgLeSDANOiADrgaFsI8EKAUOmAJdCrP8z2OAa1S85+55YMAdQkpKpXWOSDAdFgErTCGfZt9G1awPWCDG5TnBcBMBCssB4idUNbi0FOeGfv2/8JSfhLi6xKT0Qdn4KthFa/CIXgBJHhnODVmYBaqANACx+E0vPljXDEZ3Xi5kv0EDsIb8OyP0FHwOA7Ah5gM3bAbBxRcCRzGZvTBduiGpbAOz+EN6IGtaFZqx2IyGpH5AV6TMAZHUQX3wFG4B8vgKBulkwHgQ+oNeIjuofbDW3AaZlDriCrhA3gb87AcovAMPKIwiEI3rBvOkQb4FdwPt57Hsk/Je9iegTzgY9/Ac7BH0cBK6IXIUKNT+HfcQDY/VOPgnL48WMlV0tdQz1HUwN0AcBdcDXdBC34EQK2jp1w0nO1yh9yOLNwN98NnWAvr4WV4Sn5e3gZzYCf1HjTCP+ERxqZCAPpTMFPfg0l+F/8W+y/oV2RvBd2AKXYmzkzVwywHG/MRsaHYG/JKWAr74Z9IwXuYPKURSwCxCBpxcuI9FUWwghunoAhucOOlEMSJ0IgTIEjqYRsWwWksAgrzYRKOhUYcC4gBaMQ8mKS8czALYuDGLEC8BBoxEyZhBjRiRqLsh0nog0b0JcpeTFPo0xLlbJhE3lCDHCAElOdOZMQaPDCArwygeQA7zqJ4FrvPbDiz9Qz9j1OF7sCpLaeo8EkMnAyf7Di55eQnJ9kvjgvuz49Pcn92NMP96dFJ7k8mHWn8eBLdCEfyjlBHkG4MTNFhKiCYMRUETAURU4GO7cVUMTN5VMWf6ZgbDuOfmGL3u38c5T70R787cnDDwb0HafKSDu49ePQg2x/b+/TB5NEV/bG9zxzUGipM/WgXTfjKy363+GLWlArxxbSMin70iP7nJrmhHzv6sX+31g27EXYLu8Xdkd2du1ny2rD7wO5Tu9l+FERD5SQ3PBt5ltr67IFnqf7YXtH4rM5YYdoV3kX10cVuInYylGAyVGMy0LAekwFBxGQx059V4d4Z2Fmyc8tOxrQTxZ1GewU82flk95P00SdPPUk9sb3Qvb3G734eXZiyq5hIlPIcmh5H02O4Bx2YBMXgRpt4S02xe/OmDPcvN2W4H9qU4e7ehPdXZLq33LfzPureikK36R73PdTdG/zuX9zld5vWu9d3rF+5fv169s47/O7qdWi6A8U7dKYK0xr3Gur2n5vc4Z/juJ9V/IxaVuN3L63xu7tq/O5ojd+d1YmuTqQ78XQnvt/5RSfV3omhTuyPnRJXdGoNFR2LKt2LKvLdKehsTA46G7kg3aiiY+6WGr87Es53h2v87jmzKt1XVWS4Z8+63j2rYqw7Kd/SyCLdyOTTjR00mugSupruoFfSbLgexfrMnAqxPjWtQqxPclZcW3dT3do6urZ6lLumepQ7uTqrmgpVL6im+tEi5lb43NMrkt2VFR73tIpC93cVeH8Fjqp0NdrzbY08mhrN+aZGCqERIebuR36XS+PuR7OY69K43aYSU9i00sSYTAFTtanDtN70iSlm4kpMK00nTXQHYDVgtx1Z7McNfQ312dlV/VysrkriamZLuFry1ZOnWDtLUq2WoHHW7KY+xDtDP1+3DqaOrpLy65ukyOhQldRW3ySJJNNd3ySZR/fZYWoo2hXtWpqdAIx2kReQVzQ7OzsaJVVIUEMkCjoa7erqgniTaHYUsskzOzuK2dFsiCqE0WiUEBNeiT8kTyDdKd2gQhntIkRK46XkqZQIljBSAKPR6FD3Cuf4yylOmz0r1NTYUF9XW1M944rLqy6bXjmtorysdOoUsWTypOJLJxZNGD+ucGxeYExuTmaG35fuTfO4nVbebDIadFqNmlOxDE0h5AgSRsol2ifwFS3ecm9LZW6OUO5sL8vNKfdWRCShRZAqIhLj91ZWKihviyREBMnfIgktw9ARSWwRpPkXUYpxSnGIEs1CMRSTLryCtL/MK/TjrNomryCtK/OGBOlrJX+Fkmf8SsFQ5g15PLk5giIVkVYolyqWtfeWR8pyc7BPpy31ls7T5uZAn1ZX6i3V5eaAlOnt7MPMyahkqMzyiX0UqA2kW4n2lbe0STW1TeVlLo8nlJszXTJ6y5QqKFVYSqpSiVNYCguI6LBW6MvZ23tHvxnmRrL1bd62lquaJLollJvTS5f39q6S+Gwpy1smZd143JmbUz5PyvGWlUvZhGtV3VA/Vee7RIn1mb1C7xmQMOL9+sSFmJYERuUznwGSlahSCeuaPARcFd6KSG9vhVeo6I30tvTHuud6BbO3t0+v7+0sjwgS1DRJ2NIfe2GtS6q4IySZI+04MZQYekVdlZRUO7tJonwVQnuLRPsk2lfi9UxwefghmpofqwaJK5VURMMeD1HD2n4R5ubmeKTu2qZ4WYC5rl0gBrJDEhUhNXsHa2yNpKZ7sGaoecTryc2pqm/qlRjf9DZv+QJJXNsidc+VhJZryMR4zZLxG5fH22vhhaJASKEVJNo3vW2BILF+SUVaDW8gMX7SpNesFIzfxF9fu3olxs9bhCKvUBQgfMq95ZHE37J2p9Q9V8jNkSqz44bQ0CSJZUK5JLYkZqy8Ly9Q7i1viUgYWVCmTKYU8HZKVu/UodklYpUvqG9SmiSaSdZSCSKtiVZSoFxZV0J5b6QsLgLh5a1teh6CsaN9BYLr6SAUQKiMENtLmyTaX97b1DZfckdcbZIQmS80uTySGJKwJeRtmhciZuc1S1lHXYpxhBRbaWiqqvdW1c5qmpAQJF5B2DG+8ovYeJtccTYS65PUPrXQRLnokMT4zBLrEyokxuedWiwxPonzqSXOZ5ZUcSwx3KnFQhO6YJBayjoqZQnl88oSdKR8AVOWmFNp5SA3FSlKGCmtdHlCnjjk5lAS4xMSHUusT02UWjlYRfsEifGpJcpXWqmgiC6dxOiFJu88b8jbLkhiTRMZG1GPouWEMhSdJ+aq4YLSMGXl5kjgqWoYKhBlShXZruHKlaYp5aFi5UXV0werhV61t6q+lzD3JhiCRPmmS0BMWJzAu5S9gCxob0WLVzALFfEF3dsnimQxt08kTLzT23q99U3FCnVVXdMK142kLwtUYVXD1NycPgqm9nlxdW2fiKvrZzU9bwYQVjc07aKQKo1MDfWl4+rapucFAFHBUgRLkKQgkALhVNe0i1Ir9K7nRYBupZZREEq5tR9BwakHcQit/VQcZ4535Fc6EoGC1n4mXiMOUjPQ2q+O47oVnAJ9QFQmallRLWpEPWWgXH1IULtYUf0CAmgQntajAV193VRpnYLux+4+jeiKU3SDBsW4hKsbz3fdOKvpaT0Y0KU8Q6HQVAK5OeXOdm8VcSvlQhsxlJtD7b2REFlsYJcon0T5UELvZJAo7+Q+pFR6SeudN1XSeacSfAnBl8TxKoLnvFMltOP/NO+WqNIaCYkFzG7yeM2SkPI7V6/5azJToezcnF7z57kA4PuP6XJog5vhZtgLJ3A8vkLRFE21KWnfhYk+RZ9iKpnVzEfxxCYraSI7kV3Jvsu+qxKVdIYr5qI/mM6oL1Pfpz6hadA0aH6n+Z1Wo6Qi7Us6g65O96juUd3f9BH9Fv3XJBlyjMGRNJJG0kgaSSNpJI2kkTSSRtJIGkkjaST9P0sHgYL9AGw+2wM0cOAWDSqKpSlao2ZpBmgo2R/Yz1uwqIgP8sGxeUke3pPEe/j9zLyzmy6n97M9369kC886mL+Sb4qslV9DCceCFtJEnma0akat16k1m2armcdmqyGQnT2Mlc+q4ryTsdDLe1AKFj1/6WU96Jl6fX/1tO2Xk086oQYfoJqodUCDXdQCzbAIL4RwD5TEuYzNSyr02GooNT5w+rTSOwDuwLFAg0PU0gAMC7hpNkBAoSddBnkPvxY9OFZ+ByiojZ1g3Oy9oAMXZIpWK6sHFkaP0pijIQ1HO6MhOhlKssFZMlxqNFNegS+wjAvmW7BgDHrTjGizpmIwfzIy7jNn5FHXvPvU93+Rv/A31DTO9GU01tbMzKBelTfJG6j3BlC8X75X3vjah3PCH7z26kdzWv8ECD2J785oIVu0MmqK0ulZRqRVKjUCdoXASUYMQWdJMGV/fnwoZCyFHp4t9Hl4j60Hm+WnsAW1WHqQfvXQkc/P1hwEhGkAjIe9F0bBJNGdAnoDlzQqyQBM6mgOzHq92ayJhswcpETjXSgDhaAzwFuKeAs6lAErWiucjOMnY2GBN03F+SZjMN9usxoZzmObNv6tB+9Z/vyssFH+3Hnm0PHTM27ceEd0FHXnazd8seL6h6r6W1rMr//hwJ7WrauWdS6Z8iWZpUDsr0wWey9kwkYxwqlco2xpeoA0n3mUSpV1iY838+Zo6AUeH+BxNY8VPBbzmMKjhkc9z9Nukyvsogy0y+V2O6MhN0droiGBi3CdnMTt5dg8TuS6uQ3cAY7lODJ/wUDz4vNDC89p5i1FgTnNccjmLTB8rMoEWxlvWnqGzx7MH1dY4M/GwnhGGfy4dGXwKs6WikyWfO7UMfm0A1Ndb8/rXH373KtuuLGleea1avlLO1IHjvxr0y9+tRNXvfnhwTeS32q7ek7bsdarZrZGmqzP/WGfdNv2UUzSTqDADcC0K7NvgYniKJ5VWShKjSwmWYHhma6QmuV5NKpU6ISSkqClKBAMksEkbDKo/I3NQ97DewrRwwdtWDBuvIpDD71DPj2wkqrHiXvkCRyVUiY/jw+hW/4U3Yfo9ec6DlKbx91imXCNbCLf16qKnVDmxQFeuELMSrWoDHongF5F+9Jtrq6QxWbT0BpTNAQGNNIGg4ajPeeXSJCoVlGnMxDMHqZSRaOUNw14MwTz7Q6WKNKmGBGrKNVmJZpmss59/C/5DJrOPf1Otvyt/7bFPblb5730Z/mLjpbmzqXh8DW4/9MYYDPOxBtwxeZHfGs/+6Kq5tT7169cPvemh1eREUyLnWAyEiOoF8ekWjiVUw+gstC+dJOnK6Q3mdwmSkObTDba5oqGbIrxAIeDlpIwFGUQ4TnNQ+MYtAwzeNP8ccsYb0Rvmr+wID2Yb7lgHBny38+9cCgH1Rnrlq2k/E+2vXAY8auBb+UPouHma68Jz1pOfSCvke/YssN392cfVzUOfPjx9/LDm27dtGr50nU3AQVBAPYutgc4MFGcGDMg6Ck1DRzNqFg1o+ZoM8/pqXDIoGb1ehXZpC2389jFYxuP9TyW8ljAo49HO48Uj//F43Ee3+XxDR6f4/HXPN7N4208LuVxPo8NPJYr9Ok82nhkeGw/w+Pngw2e5hG28vgLpUUXj3N5rOFxKo/5Sot4D6d4/Exp8DqPu3jcxuMGHn82SF/HYxmP4xR6s0J/WpHo/UH6X/F4D4+387hMGUGcvoBHP49WHlViB48T/jnY5Dc8PsPjI4o8cfoGZYvw82jhEUHh/jqPEo9bFb5xtdQMMrUqjF5XuNyjcOlUCMriwgGP6jnN4eZBWHweloSXDIc5zRfB4otgGG34J1pASX5JsChgKQpmA9l8z5scbykq4omj89Ae2oMeDXJGpD10BnPdioEvV8gfURReRcFAnUo7ajNuXJuN7fL9xCMzj9nTr5ILcONqsuM2xE6w69l7wQl1Yr5dYzZRtMZE0ynJ+qRwyGzWM0CZKQookeqm9lIHKFZHU5RKBeGQKikvBZvh/Oa5uCQYyL7AOfiEJFbFeAWyvj35jIMlLlFls1poF+raEevlV47KO+R1OB8bvsMJJfI5z6u3/vad995Ffcvb+7AHZ+Fs7Nr36rRrVnx38r9iZB2vAWAXsz2gAQsUiKNNrBZYsCapjOGQimZN4RBr6bZinhUFKzY3L/4BH22lGK+H9wiAZAPnyRpd/IS87/cDb6KMbXi7/MGJwwe/f/ko9daf5Bd3sD3yA3LfsZPnpilfulP6V7E9oIMu8TJWowEdoE6lpTlg9AZWHQ6Z2JXsFpY2sevZGEubaNZum25i0cqydv10lgVEJhxCGjThEFhEA+YZUDBgc3PzkKhkh8kmOybRaVyhxDUFE0GKzZP4X8M0nDtEnRow01eyPcflzcfldcfjEqKkRGzzxXIl0kEaLEfZ/0HiVhY3sNjNYg2LIovA4ikW9w5WdbIYYdHN4lEWDwziu1kcbpKDhgslJcMDpzWYQWwroSFmG9sDLHhFnvSv4pAGmgy3hsPEMBMTEm/ssa3BDOo023O29figjiexPWCAGjEAWq2BYxjWwJqMqNapaBYsERPWmFA0YbcJO02414RbTZhnQsGEcVEVAcnKKRqa+bj+PGi3kR7RX8h7ePrYwIMW+XuspTosqGImbY6ce5XtOfvCfTfTwe9XAqWsjmPsvaAHJ1SKOUmcAThITtGawyEtw9jDISZpawp2p2BnCkZSUEzBvBQ8lYJCCg5q7EcsML4miBFS3jTKZrUQOzz2lLznQ/kZeRVej9VYjTfIhz587c0Pj7zy5gfUvj/Lu/pwFTZgPd4sd8t9x5GWY1/8RT6DDJFUvk6R1A5pEBLHjeYdAGrayLPedGtKOGRldKpwSKczGoVwiKaNSd3p2JmOkXQU0zEvHU+lo5A+KDMoC5ms6kHRHUMBLnAknB3PqYi3S//BQchffZt2U8elxdQtXb9+f4p8TH7jwuH8eS8ZjvyFvCa/tUn7+1HPHXLhCiy6eFynkXwT3gHA7CceD8vEvyDFUBytUQPDMuEQS6OlRoOiBgs0mK5BRoOnNXhcg3s1+IwGt2lwrQY7NdimwQYNXjpI035WIXpLg1s1uEGDtynVZQqXOIvDSu0zSvsuDc4ebKzT4FkNfqXBAxp8XYOblFYuBT/+tNLmRQW7VoM3abBDg1VKy2yF72ENPqFUzVbwOg3GNEh9osF3NLhekTNPg4IGQYPcoD8IN/+bw5jz707lRzxPYipLEvGgo+h8JOix0az8kVzEPMf88mwr88vjZN+4KXaCvYztAR6mizkGI8sYmSSLgYnvVEmRJKxJQjEJu5OwMwn3JuHWJMxLQiFp+JJTor1hps4KkIweXol+yIIzA3VIPiK/hRlbHty8HTPkZ604CtX04nOPPPrks4/TNec2y6fljwDBCMBWKpHvBNGt0SKoiN/R0nrdXj1u0WNEjwE9aihahRYoCZYEFTF4S9xSlc6zED1od5Qgeuip8nsD32IBprkCtiA55LE955Y37bryGXoN8SrFsRNMNzMD/BCE68SS9IwMjrMZTTk0bbLRhQWqzLqQSgUh4wIjlWtE2mR0GykNY7RYdLUhizk5AIHqULoH7K8UYnUhEreTnx8/lpFnWIkbLGRbv+A8oWiIBIrjSnDwEBE/QSkaG28z0mSVeVVJnJFSQsjJWIhrfikdPvDXyxpmTNfIh11fvbX/46w8ITU5MzM39Zp5WtWy0Ia5ddnTLp163WTrE5sekyhm/DVXT6szbv7171+Ql80uV92v0qqY9nnvURqK8VYWX1FVuXIa0cGq2AlmPfs22MEDxaIwWmUyGRxgAG+aNaU6xFvNRtDZaKE6pKLtnV4kuwSZ7pKSYPawTTZxCiZiW1WcR5l1Lhg/EA9Fwsz6D34bfSyX0rDySTUmM0z47N798uGFi5csX7rkE8ojn5Y/aJvjvZFvfpB5T54rHZCPyN/073rlmR17iX+oiZ1gxjMzwAlTxXSrTUsCFo2NTklWGapDWq3KDNaIlTLQVisAXx0C+7Ag5d9iFPb86YNEJ7yZBPCskaLqvpFPo/G7V74X5M/1kaaPjtQsNGCKqeePVvShCvWYvfdxY32rvFHunddm6HgqHPcXzFUJHU4WBQdtsSSN1iRp0rwW0KdUh0x6s8pdHaJVdrDFdRhXYnCYT0xo0TMGC70qbxrFmy1EumAG7+GtjoQWiZT05YyOmR176Q8f7Ys+mktRmKyWjy1dsnjRkY4bTTdkvo4ZqEED+iLhXbj2rNC2mvLufGn3HnnDa0ApOsxlZoAFkqFDLHVozbxdp6NpXku7Uuy6upDdY+YrTXY0snY7qFRJdSGVGYy1oZVmNJM/sG9xYYcLwy6sdmHAFY8SoCQ/0Nx84VEpO/uiU/Sgyi28zaMYOkthmorzjEHqstPy96g9/ddvBi5bunBjBmqi8tbWa2ncpl5kRQ/aUI+C/Jb8vnrzwz0O+U90X+/Nt94Kiv+bwcxiqsED2dAiTnSmabVuhs6wWGg3nZvjMtl81SGHzWzKqg7pTTbgakNXMvOZZQydxuQzFMvYGIoBV2cumZP85vgQLpia8wMgJk6OesQRjpuE48/PkiNYMG68R2XjrQxN5kkxJqrhzX+MwmRTa83ShRTVHHvpwPtvn5jNaljUquTvTcsXffpJ53J5xn13eKZctuHOomv3kR0RNSi85r0+aeGd5z798gT98aMvyvfLW14kI10PgI+xbys3cleK42iOA4ZRa1gTY0OoDyHEfaKk+LeVGoxo0K3Bk4rX2qvguzXDQrrBbTsRzsUv8go9NuIp1mOy/CUmMwPvvHOWZiaefZOsvvP9V4i5NADLIIAtHlDG48iVg3HkyR+LI/8tflyPyezb3xcQ/qsAVJuZavDD3eIchx/ArXanmjl1qjozI4220jUhsyOFtpr1JrcabMcz8d1MvC0TGzLx0kw8nIkvZuKmwWIgEyl3JkImHs3EA5koZeKWTOzOxIhSN+Qpw8M8Kdm7S0ocF92jkHsvZVnyZrL+eA9f4M/wpKItSHZsRzCxb8erOZ7Wb2u8Vv6SpVFPa5mCTQu/K1SNf3D55kfkv26rW8BSYRz9VO/AHrpyZkdO0v9x39x54pZFH/xuoJZUbLljYGdcD0wbUw1OqBYD4DRznFrtTEk2W4kKyPDVYNuaghuUgFNKwXi+MwVPpuB5LecPBQBFQ1veD4/BbuPpy1+dv2JI6qIdy3f0E4F2rhku6btvD9RCYge5m5kBOrBBnpjCq/SgAoddY6oOacy0tTpE2zsdGHHgD8bAZvCkDUWPfq9APJ7A3C3/WZYH5KMoII0adMh/uuX6GKxYhjSVKv9Lfg9zUIUsZsufyP949Sn5rmdfUjyXPJNZz9SCI+65nGAZrdHoQOdNs6VUhyw2s9Gkdf2E5xq6vyWeS5nIgrhqFNdlPu+5PnpzyeO5KpX8pRp5lmPCZ186IB/+pHP58kWfUmnyP+SPWptT75dbmL89ELFcU7BPPiKfxoWvSztfSdg2JTPVYIfJok9ttwOYnA6DpSakNphZE9i2OHGlEw84cacTw04MOBPBFVwoLFkzQ1NHBfMdNsUp8OsTM5clNk0d5ykrWLCULg4tH2PZnbqkOdf0lWn7owNfA0IludtmqiETlojlnMpjdaUYAFKsKibrEo/BQTtSa0O/cWHEhbTJ5XZRWsblcphpbW3IyqVzFMfR9ppLULoE8y5B8RIMXKIcHJYo96lD933hxA3qD16h+jPGK7tnYYE/YwxVWDCOeDgucTtgd6TSjFuOHfvk64xvbVd3L1s4s/3vj8w8efjVr0b/Sz9nflvbFbNXvrF8Ghb/8ul1G31XiMViwSRboLZnzqYn770zZeqUYHFgvCVl/OXLASE59nfqLnYC2OBScXSSXq81qA0MY3cYWBVbHdKq1GqVaShIUGTnh1b++QtUEqXx3sLg+KAtaPMmojMVbrv59jX3NUn79xeXeCa1W1atoW55WZZfHvhDdZXxqTRAWEniAWYi2MkaNnKcGuxqu9NhtFjompDFrrdxYNrqxA1OPOVEyYnxfKcTTzp/Yg2j4lsKlZjA4y/0xq8cebx/7/wVJBA4rWcnPLl8Rz8zceBh+djONVTZuf7e9g3Tbuo89Da1E+IRNtPGTAQdiGI66NQaLYOciqVomuU0OtagJwZ5yoBHDbjFgNXKHcXi+LY9dH87uKHoyP2Tx0WedPCcLL+Hd8irMPDlFzhWXoXrcbV8PRWgdPJmnDvw3cAfyK+95JlMOzMRbPiCGNNpkzRG3mIx0lrG7uC1piSjBtiaELjudeDtDow6sNWBUOPAqQ7Md2C6A60OVDnwnw486sADDvyNA59x4DYH3uvAnzmwS9l46hT6Agf6HWhxIOPAq0878DMH/tGBrysNfuXAexx4mwOXOXC+AxscWKZ0kDbYwTcOfNeBbzpQUoh/MYxY/CHK3zhwlwNxqwM3KKSRQaZ5DhQUUsaB40878C2l/y6lLF562oHHFdyLDnxCkanLgZcqAwUHUqeUYb7iwG4HdjqwRmFnVuq482e+8EVHwmGnwfC/X0MuuQh+5A4yPHSHEQgGS4JDkx83wrSMQuVUMh49SeSkleRBI6Jr3uWFOcXVJRlyA2Ztz5yUPGUr+uWGK5+XZxp+q/Y3LWACMnvdp+GvMHZ23YGtgKCNnWCq2XshA3aLo9Ldboc/NS3NaNbpLFqj0+GgGSOTmeXX6XX9mPRcyKv3mHlzPyaJFaFU3sSjiQ/wJfxO/h2e1dF6Xs9zVqsrGjI53c6AM+xkNLTTaeU4iIZEuoamgDbTAi3SW+lTtIqmuWGfBJ3/qKLIGVAuNRPbwcXhQML2+WDQogQxPuXUgN40oL3jgxnjveODFs/goULFeTgP5/BwHgv1i8ortWhzf/7SZ/K50T2ZV1DU0syZJfjmc8dHy3/RNlzWusCE00bLBykaG1LlA6P2XVVn3vMSalG9MThhI0XvecJ8Wd2dD26cENwo/478rhTIZ7RxoIp+7NfAPwxUEayltkMNeZMyE4VaJgo9TBSmMVEIMFHyCZSCrxpsQ+r+E092H/mUQnk3sPtgDXsluc+7oM+hMnMsnid0qiJoUH4nm3gn6h3sPriJvZLsVv87YKJQzByDVUwUaphj0EDeCV4Nif7XD5NlPTcaVin0xxT6VQRPj1baV1LbIZk5BiuH8TYyUTD/b2UZgREYgREYgREYgREYgREYgREYgREYgREYgREYgREYgREYgREYgREYgREYgRH4/wWYKGj/Gy6H74EKZW5kc3RyZWFtCmVuZG9iagoxMCAwIG9iago8PC9UeXBlIC9Gb250RGVzY3JpcHRvcgovRm9udE5hbWUgL0FBQUFBQStMaWJlcmF0aW9uU2Fucy1Cb2xkCi9GbGFncyA0Ci9Bc2NlbnQgOTA1LjI3MzQ0Ci9EZXNjZW50IC0yMTEuOTE0MDYKL1N0ZW1WIDc2LjE3MTg3NQovQ2FwSGVpZ2h0IC02ODcuOTg4MjgKL0l0YWxpY0FuZ2xlIDAKL0ZvbnRCQm94IFstNDgxLjkzMzU5IC0zNzYuNDY0ODQgMTMwNC4xOTkyMiAxMDMzLjIwMzEzXQovRm9udEZpbGUyIDkgMCBSPj4KZW5kb2JqCjExIDAgb2JqCjw8L1R5cGUgL0ZvbnQKL0ZvbnREZXNjcmlwdG9yIDEwIDAgUgovQmFzZUZvbnQgL0FBQUFBQStMaWJlcmF0aW9uU2Fucy1Cb2xkCi9TdWJ0eXBlIC9DSURGb250VHlwZTIKL0NJRFRvR0lETWFwIC9JZGVudGl0eQovQ0lEU3lzdGVtSW5mbyA8PC9SZWdpc3RyeSAoQWRvYmUpCi9PcmRlcmluZyAoSWRlbnRpdHkpCi9TdXBwbGVtZW50IDA+PgovVyBbMyAxNSAyNzcuODMyMDMgMTYgWzMzMy4wMDc4MSAyNzcuODMyMDNdIDE5IDI4IDU1Ni4xNTIzNCAzNiAzOSA3MjIuMTY3OTcgNDAgWzY2Ni45OTIxOSAwIDAgMCAyNzcuODMyMDMgMCAwIDYxMC44Mzk4NCAwIDcyMi4xNjc5NyA3NzcuODMyMDMgMCA3NzcuODMyMDMgMCAwIDYxMC44Mzk4NCA3MjIuMTY3OTcgNjY2Ljk5MjE5XSA2OCBbNTU2LjE1MjM0IDYxMC44Mzk4NCA1NTYuMTUyMzQgNjEwLjgzOTg0IDU1Ni4xNTIzNCAwIDYxMC44Mzk4NCAwIDI3Ny44MzIwMyAwIDAgMjc3LjgzMjAzIDg4OS4xNjAxNl0gODEgODMgNjEwLjgzOTg0IDg1IFszODkuMTYwMTYgNTU2LjE1MjM0IDMzMy4wMDc4MSA2MTAuODM5ODRdIDkxIDIwODggNTU2LjE1MjM0XQovRFcgNzUwPj4KZW5kb2JqCjEyIDAgb2JqCjw8L0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAzNTQ+PiBzdHJlYW0KeJxdks1ugzAQhO9+Ch+TQ+QfCCQSQkpJkTj0R6V5AAJLilQMMs4hb1/hIYnUA0jfesc7o7XIimNhOsfFpx3qkhxvO9NYmoarrYmf6dIZpjRvutot5P91X41MZMWxvE2O+sK0A0sSzsUXXbrJ2RtfHZrhTGsmPmxDtjMXvjpl5ZqJ8jqOv9STcVyyNOUNtUxkb9X4XvXEhZdtioaM69xtc8rKZ8f3bSSuPSu4qYeGprGqyVbmQiyRUsqUJ3me5ykj0/w7VxKyc1v/VNa3BylPpNQynUntPQURKAPtPenQU6hAOAuXsxyUeQrQuUVnePAUxSDoIq/b6V3KEy0PmTe7uNrfPT4z4Xql4BVTFJyrGCYRQEdo2cFPAD/QBRrFVxTjezjvNYS7JSPk0RIA07eYF2H6dosiOmON4guKyBjvllTIMW9jfjWPVddXa8k4/7T8eufFdoYer28cxlk1f38vjbZoCmVuZHN0cmVhbQplbmRvYmoKNCAwIG9iago8PC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMAovQmFzZUZvbnQgL0FBQUFBQStMaWJlcmF0aW9uU2Fucy1Cb2xkCi9FbmNvZGluZyAvSWRlbnRpdHktSAovRGVzY2VuZGFudEZvbnRzIFsxMSAwIFJdCi9Ub1VuaWNvZGUgMTIgMCBSPj4KZW5kb2JqCjEzIDAgb2JqCjw8L0xlbmd0aDEgMjg4MDgKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAxMTQyMD4+IHN0cmVhbQp4nO19eXwUxdboOV29zCQz09OzJx2YmUwmgJOQkEmAIDItkBiMwrBniCGJhM0FAhMXREnCohhE8Ip4EQRUVECEZgcViYg7fMb98/IpqHgXBUEvbkB63uueSUhQ7/1+7/3x3u+9nIKZ6nNOnTpVdarq1KlOAggAJmgAAlUjRufk3X3/wCkA+GcAqJp0a3Vt4J1sAoC/AMCuSbfXea79S+l5APo6AGrxlNqpt86r3iMAJLkAuF1Tq6O14AI9AJwCAPPUW+ZMGRo4fRvA4MMA2YemTa6uSYYlMgBWAUDfadMmVxtXJD8DgAMBIGParXV3cjHnLQDpHgDPhltmTqp+74bP3wcQjgCYx9xafWdt8p/JSQC4CACeGdW3Tu5+d+FcAGoLAK6tnRmtizXDSgBMU+m1syfXtm69ZhgA+yEAGQIABHRAgQAYiwEBBND1wlEwBm4AFigwQw7cAEBtoGigAYGABrEDqszfAQTgBinDYUjSrgvPnL8r6SYV0xF0vTQMlbJq8rUpj1fyA38Et06jvCn9+pj6/dnc3o4Lz7Q+nHQT94laAKhEUUI/hcuBAWAeY4IAKMa/yXswhbLoGCqZpSkV6AaI19FWZ5+rRw8BCTyeLcwHykgMcoNwRxXgweM/A9ADmEa1ZyArUUJtoS3eE2ADGtar4wAeUNvvAT/0gt7QFwqhGIZBGMbAeJgOtXAbzPHYPFtiMU2WH3pCFuRCf5BgGJTCKBgP1XALzIY74lyxr/5V+tuRv919eb/9IXAwQdWWVm1sK6xM5BG6w52JPAUmuCmRJ5APfRN5ugMPA6mQlsizoNrKdTAdboTJMBuqoQ6mw0yYAaOhGmZAFMZp+GgC64E86A19oDcUwNUQhUkwGWZAjcbjgWzw/K4sT7u0UTAZpsJtcAtUw+x/wzsUpsNUmK5R7oLJUAMeqNE4q8EDk2Am1MIcmK1xTYM68EBPmAS9NB1zoQ/kggeugZkwE6bCLTAZPDAEZsJsqNU+L9XYGzyQpNH+tbw88Gj6q3qUaOWzwAPDYAZMgt4AzBHmCNzDNIId5mifnYAeADa4AyB2SptT7Z/K+P/m2P83IT6/YBccgG2aPV+CxTAPALZ0wh2EV+E5Lbcalv4LsfthcyK3AlbBfX/IdxMsgKWwAXZ1wFXBTTAH/gxbYB88C4DpGIRX4eYE9Ri89fui8At8C/4EG+Fm+BPshZthNQA1l/oB/kSNghnUJ6QR5sP9sB7W4XRYpq2qG7AcJsL8hICJMBlmXia0CZbD03AXNFxCMY2xf4Lx4k5YAPfDMlgJ02EWcwT4i91jP0A+/VcwKh/CQeKGZ2Er7NaKNLaV5UrITdQeimp9GAAegqnwEFTjpwDUUnL1v+jN/21gG+lpYKPfUW0o9oFSDwvgGGyGF2A9vHu1F/QYAsRCGIuDEt+DUQIbuPFqlMANbrwSgjgAxmJ/CKp0kJADBLf2uQ5paTM2t+K2VoRWTBpxAT0X8MdwT/cPxT3d3xdf4T5bHHBXnqk/Q/FnRpypPLPszLYzTPLXJ7u7v/qy2M1/idKXxQ73FyeK3e+eOH7izAkinQj2LT5R7HJ/dzrmPo1/H3uq5Nux3+TB2H/8/e9j/1YCY/8KMfdnVx0fexzJ2M+vImP/i8Tc/EfujyjtQ3rbJRa/ewgPNA90vxLOdL/0ck93bD+G99Xua9hH9sWapdg+S16xe29o74i9M/fW7123d9tezrUHa3es3yHvIPwOXL4b5d3I70YdvzO088xO0iAvlylZbpZbZJKzLbSNWv+8/DzV/HzL81TOltAWat1z2Ly5ZTM1YtOyTVTOppmbDm6KbaLXrM5wh1fjzJV4cCWuLO7mfmSF082vcK+oX7FsRWwFk/uQ9BDV8BDWLmtYRi1fhs3LWpZRIx6ofGDmA+Te4ph73SJcuKCPuy4ackfDme6ZMwa6ZxQXuFPRNTYl6BrLBclYlsTcVeFMd2U4031DcR93+YQS94TiPm5rnmUsg2QsnUfG3kLQQAaS68gt5G7CnBkZk2pGUtLIgv7F0kh/z+J3wzis2OMuKS5wX1Nc4N5WjMeLzxRTDcXoyLOPFZAfa87jx1IIYxHQ7eZDfCVfz9M8n8OP4Gfyy/jjfIznQnw9f4YnMwFHADY4kMF9uHz7mNGBQOk+LjaqVObC5TIulv2j1U9p5ASZXSzD2AnlZdsRH4wsWroUBncrlfNGl8lV3SKlcs3oMllSMw2jy2Rzt+0OGByJ1kXrbguogPEM1AUC0aiaQ/UpEKdpOQxEA6DyR+uiAQzU3QbRQLQOo9E6iNbVReuiODEarYtGIRoNRKMYgAAGIBpIyG+XVBcITIwGIDAxWhevIhqdGI1GMRqNJqpzTQTpmvIJkbKxY0aPGhkeMfz660qvHVZyTXHR0CGDr5ZCg64aeOWAwv79+hb0yc3pnZ3Vs0emP8OX7nW7bIKZNxmTk/Q6jmVoQiFkeWSsKpKJ3yMUV/uKfNUl2VmeIte0odlZRb7iKtlT7ZGLq2Q601dSoqF81bKnyiNnVsue6g7oKlmq9shTLuOU4pxSOyeaPQNhoFqFzyMfHerz7MMJI8t8HnnpUF/EI5/W8tdreTpTezAO9UW83uwsj6aVqq2nSC6+fVpTUdXQ7Czcnpw0xDdkclJ2FmxPSh7iG5KcnQVyT1/tduw5CLUM1bNowHYKdEa1Wpn4i6pr5PDIsqKhotcbyc4aJpt8QzUSDNFEyuwQmdNEeqarqsMSz/as5qYH9pnhxqqAocZXU31DmUyqI9lZTaSoqek+WQjIvXxD5V53nXRlZxVNlrN8Q4vkgCq1dFR7PaWXqkSZ8Zt9nqYfQcYq3+lTnTHVCQzrN/8Ialamhsg4qsyrgljsK65qair2eYqbqpqq98UabvR5zL6m7QZDU21RlUeGcJmM1ftiLywR5eIHIrK5ahoOiCSaXjyqVLaOLC+TKX+xZ1q1TPwy8Yd83v6iV2jnCf8RGWRuiMyqPez1qt2wZJ8EN2ZneeWGkWXxZw/cKO4AKScQkakqldLcRrGPVSkNbZT24lU+b3ZW6eiyJpn2D6vxFU2XpSXVcsONsqf6JnVgfGbZ9JPo9TVZBE9hTkTj9cjEP6xmukdmMmVWLdWxgExnqkWazNqD6af412mxSaYzBYun0OcpzFHlFPmKqhL/bp/mkhtu9GRnySWBuCGMKZOloZ4iWapOjFjR9tycIl9RdZWMVdOHaoMp5/hqZZtvcPvoqmoVTR9dphVJFJNtQ2SompQoJecUafPKU9RUNTSugirLN7JsPwRjJ7bne8SdQciHyFCV2TGkTCaZRU1lNVNkd5VYI3uqpnjKRK8sRWSsjvjKJkdUs/OZ5V4nRM04IpqtjCkrHe0rHTmhrH9CkThBFUf7iy4T4ysT42Jkxi/r/DpPGSWSiEz7zTLj9xTLtN83eKBM+2XOr5M5v1lm41jVcAcP9JShCG3ccq8Tci9P0eShCT71uZNQRjWnISVt0lj1UcaqISWiN+KNQ3YWJdN+T6JimfHr1E4taSMRv0em/TqZ8g8p0VBqX7pUo/eU+Sb7Ir5pHlkKl6ltU7tH6+VEZ2h9nhirMZ2eOnRWdpYM3tIx7Q9qZ8rFAbFj58rXaM/tjyWXkYe1kT1NOl/p6CZVuC8hEGTKP0wG1YSl/oKorQXqhPYVV/s8Zk9xfEI3bZckdTJPG6AK8Q2rafKNLhuocZeOKrtHvEutywKlWDpmcHbWdgoGb/fh4pHbJVw8ekLZfjOAZ/GYsh0UUkOqBke2Z+DikWX7PQCShqVUrIpUHzzqgyppVNkOSqfxi/slgAaNSmsI7XnSPgQNp2vDIUzaR8Vx5nhFmVpFElAwaR8dp0ht3DRM2qeL4xo0nAbbQe0yKYmRdJJeMlBGStyOKmoHI+leQAA9wk4DGlHc3kANGaWh92HDdr0kxjkaQI9SXMPFYy9VPXZC2U4DGFHUPiORyGAVsrOKXNN8peq2UuSpUQ3l7si0pqqIOtnAIVN+mfKjjL5BIFO+QduRYg1ykm/yYDnZN1jFh1R8KI5nVTznGyyjA/9n8QaZGhKWUbWA8jKvzyx7Ut8Sm8yn1ZGKBLKzmsxfZwOA/7K0XkstGIdMHIwRjOBqfIOyUY3UIeIhjaSR/JMu65gYE1PNHGGz2VvZrexxNXF9uD7cVG6RrlL3lO6svo++j/6+JGvSy2pKPv3bZLjb8KXxauNTJoPpNt7A1/BbtfSj+axwrfCooAiKJcfyhOWkdZB1kO0qO+dI70pdqSt1pa7UlbpSV+pKXakrdaWu1JX+P0rX/F+WvmABjrbduVGFv72H47rBsHb6ZqinNoOhA/8+ajOUU4XwovpMRyFMR2ENHYWpdBSG01HIoaMwio7CtAQ9Qkeh6o/u/HRueIIZBzQzDjYyb8A05g3YqObpr2BjhzoPqN8aPgob2c0a70a2EKpVnEaLl6ugv1JvrRPtWKq9t/JvgY7CeDoKC2nQvsepz1QhdEvkH8Q34P42XnwDmtjNsJiOav9V+sJEPy2mAQqpQnDTUVgU1ynWSgM4aVDf+eiCLuiCLuiCLuiCLuiCLuiCLuiCLuiCLuiCLuiCLuiCLuiCLuiCLuiCLuiC/9dA939agf/LgY6CGSj1HQUmj2kEAhy4JSPFMoQleh1DaCAQOppzVLBgYaEQFIJ9cq1ewWsVvMJRevKF1deRo0zj+Xqm4IKT/od69z4sdo79kFkKycCDCD0gCOOlgjRIZ028wdjT2jslxWrkWWAL8h199kTMjn3l5sCeiJk2EaNF794TIfp95cS/J0KsEFJ/utIVCqnfggWdWv1tqU8u2lhfemZBft9gngN9GPTnOextKMzP9KWzdpsjmNcpz3745No161Y9s+HPF65cTR57/MLxdY+tW7t23WNMxfXl5SNHlJeNunD2ugkTw+Ebxo/EHZ/87YvPTh7/urWWaTSc+PzTb/5+7Pjxi/6dT6zd89zTz1Kvy0+u2/n80xsBoV4po9YyR8AE6ZKZg+QkQifRQHhzkkgAQqEO6vfJtZot/YIsJZgtTl8mJdTvfmnri9ueP7D1wC7Khl488k6LkqV8o3yr9P7gCB5FNyAYlDIqcEk+oZOTgE5S5QMRL5ePZorz9bUIZqpH0GERqMDul7a+tHXbi2oFZuW4kv/O+/geOtGJ7793RAkqX6i/AWOfch4b4RjoIV0SaAZ0jC4pGZiN5TpYXa6DHG0I2kzAb7exnK9vga8AGzN7zp1YdmzjTQ9evXjeMVVSObZQI6haIOCWBCA0g/BiZB2+i1QOIkJOxay4qD651gKvvRzPYcv69YDqOy44D44BAaeURABoBnB1OUCOxq5WGywI2l989dgx9XdvhGOnaB+zEpLBCT0lm4U1AAuuFD0fjeg5Yo9GSAqEVPPpqDeaKV+62vHePAtpywfzLLTv13/+89xphF9P71365DMPPbx+3QrqFWWd8gDOxkl4M96k/ElZhX3QovygvKN8qHyDaYCwBoDmmUZIgoBko3UUlWxgaJqwrA4B6yLgglBAgKArFAzmBOON0FrhFZgCf1Dw2tfgVOUQXv8Mjl9FD/xq89cXXKvUHpwKQBuYldAdBkmeNDDxOns3Ow+026NLM1ksydGIhUNIg7S2OixQ6NKqshR2soRgwSCmQDN/rscgDKoTxIScCTmvfWrw4SfXNYxYPCf6iHGf7edDH31duuK96OLu1PH623Y+dPfdi8fVNdwzS9j05lv7Rz355OaJjxavAoThsVN0CrNS/b0WUiHHimn2dANAut+cxrK9rvALZsFcFxFc1vnXCy4rXs8LaGYEgYhutysacXNEH41w6sAE4yOjKuzKqZxYoc1wKOw0y9tmeI9+Dm9e34L8zAAWBLVMx/awnL070im//PXjmOuFDOQXr97+7JQbVzy1aMEdDxt2234+9OG3jy5fK+OiVz9+5YBw/t6F0cY1jbNnLbhrpun5Q6/J923qTgs7gIIcALqfNpYW6CulCoyFonTIoNUGtEBHIzpBwGSWRReEQkFLYU5Q1T5hWm3qCj7BW4BBIWhHE3LIo5fM2tw6jVp04HVlOZVvVB7ta8YfMKS8gqEHyJ6L1z1I7mAnWltPXWsDhFGxU3Q3phHSYKJUYLG6nDYbWDnWZTUAOKws3a17Kh+NpKYSm81ZF7GxamdO5dDBYZRbwFHxfq2oqEgYPRS6cjotm5ZC7UPtVoh366Xe9Fm9di9RV1K6m/Lzt6/94NlTeOqhDU8/MGxeSM4h3tYF4m1bW37Gd47HYMtT9ve2rVq0oXc/6qdVytUTzgEF0xJ24YB0CEuBbgJrSHYCJLPElyGk2lJvi9hsRK83RSO8YZmBSmIMeo54Lk3SoGoDbTpr/dqmtmYG8ZkKQY+Vy1Sz2thzHdZ1OuWHj767iOwPGBq9pWDnY5v67Ii++vXelffOW/3EvPkr8OhxRcEbcRTOwMXKF+4tyhfK2fLKcx+veubhxqdatgGBSOwUncqshBTIgBwYK/UOsG5jqtUPYHXojSyb28ehT++Z3vO2CJ+OVjY9nZjNabdFzBzJvq3jWgMJg1Zzv2/PBfl9+xX0xvjGlTBgku9ta4o13iyzN68vnfrL37+MrZ0bXfT9Oy3f31t338rPlfP1i+6/p36Rb83S+x/DXg8vx/tf/cvHrzW9ZKPFXXOeePPws3N2OWnHfsp45s475tTf1npxwaJl9yifLVXXzKrYKdrCrAQnZMAYqXd3C8e6DACshfgzDV7eG43wvJunTITnid0uRiN2bcY6OUwY1+VtbB+p9p2n3bIsVhP60imtlZYOQzUIaYvy849PvxHY0nff6s10z0N1L5/85bNvfzi8ZsH8lSsbht97PfWZ8ohy15LVooweTJ5wK9KffNaqbNi2+d3tjz6285r5QMETytfcDOYIhGA4zJOKRa5X/2t4TpKcTpcXoI+L78+MCNPdPorQtMFw7ccR65CPI04rb3AbqGRisBqs+QMH+j+ODAQqFy10bn5+9seRfNBsr3JiRaKRha4ctZlCMKCt4jm/dULig0ppo9rPpzY4syDf0jeY5wz2CxLWblPbW5BPZfjSacpus9DBvIx+Tpb2pWdQBWYLePNoC6P2jQnjg9+vLzcjerR+0i2EHfzqrMefb/z70mOj2B5r6vwjw/cNf0z5/NAPygMfPo69Xn8Ir1jf7yHl+a3fK48e/BVfQMv3OHF/65MLZ0x+fELlpHtaejqpf76gfLChrKx47twjuzdg6jN71ivshsjEph8e3on2Rz5Wbj3/ivLp2tLxtePLD2L1X9GFb0Nst7Lnyyn31H+x4M7F7z9+A1CgvlI5imkEDsxQLvU1IhgowjI6IDSt44hFMFCVEYNBcxYtsgXDFjxrwWYLLrdglQVzLZhjwQoNZs2CUF4oWNjelXlCMGgpLLSo3oCXeIkPg3rkWI54SWYPetkTrfOefJ0KfUr1bS3Xp/TZRfG709JwjVKj+pz092mj5yt98L2i8UDUN1Ppb5hGMIIDusM0aUCyVWcVRdqkcwLoaOL2JFtTramVEWuGlbqetyIZZEWat6KZsVpphrFURhhCi5UR2nL5XK6sqJz1O/tTYi2lfV7B6xFsLNcdVVfTK3jVSdwL1W/6G+W7c62HKcCzDzRs3KN8t2aFchCvXvXoSOVJZQ1Gt63HpS+9xzQqm+/Z3M22H8/PvlEZHG2N/arQ81VPYFrsFDNHW5UmSoXE7HTo9HqHmaSKvBONxOm0WqEyYqVBZ9ZJurBuuW69rkV3QqczEJ3OYGArIwarR8SKhB+iNuZSrrPPmA7xBbbdOlXjdHK9kbi+US4i/zfs+cia8cprLR8pbz2Ft+DgL7D3Nbv7fEqfVz5QziutymvoH77n5e047AscifPk5wfOna+uORsBmMlMI+jBClmSk2eSgAGbnTVVRljC8JURxuKxaxpe7qvZqHjXAjFDvDctzOTNyptHWr/H93EKLmpWV3Hlexyw+tt51Lt/UfZvZRqVVcpuZNF6Yfti1H7DnGoXCtMIyTBGymP0ekgiHNAGI6OrjCxj8AUG5zD3MxTPoI4wDCDSlREkoK+MgMVj7KBYwhgq4u6rM6Gl6sV5E/830tkX/0TyLv4HeZRpXKMMfEyxr0lo8JDWA32lbsgwrI5iSVKyVhEyHAeVEY4wFk+yWtlvd27Vr1Dl+wSvHacSy8XvDpJ/0F+3nlvb+hrTuEZt4wEAvFs7vT0gVWueMxKwSAzmMuhh0MwgMFh4lkGZwfUM1jJYxWCYQUkjnGWwuY0UR5rb8NsYXN6Z38MkprI6meMwOwETNWz8MBJ314WgcOCgOlXjvcCEtHHIl0RI1uk5QuhkfRJNG4xJHFI0rWMIqJMvGApanJdvnV7kBJ8QFNT1gR7VenTfwYPUs1+0bqQ2UhsfaD3JNLYOog61rrn4VduY5zCNwIBbMqn9wXJIgKhDGh/OhJnFVfTaNx6k3mQaL4iJ0WIpphFScZR0xgWpZqMp1ZQmkiRXEk+AsxGTZXkaLkzD2jSsScOhaZifhp40tKXhuTRsScPDabhBY6hLw6o0HKMxmNOQTsOpJzXyrjRcoZHDWvkMjXYuDT/USAs7yI0LjUtcohWJi6PTsN/JNHyng6y4oOQ2QS+2CSptE3QhDU+2yWpIQ6pWq19Kw5CmP6QhFx/Bisp/Mby/Q7hE6UCEkDMY0tyCdhdZHUUhvx/LoQ9z0K16y0Hsjs5B2A+DAjNO36eHsuJeZVl/L6E3X8A7bH5WF9Rj7Y9ky5rlOydflEjz5hkzD1wcwzRezLnyvu49n7KT99pty6Ot/WEpB5KSjBxNM0aGNyUjS3TAWDw8NvMo87iexwYea3ms4jHMo4e/ZM0QCmoat61AbXaXUDSzQAgK9IBWE8Ns/pw6b9hCy9XPXixjGi+UHC4ja87XAwXVsVPMJ8xKMEEq5Eqpdh0POhDTki2VkWSadlVGaGuD1tkVf7Teta+8Fk51pbQ1OQ+YTzYphz/5VHntGZyN136CA599Vfn17A/KL5h8+hwy1BufKbt2yHj95zgK73lOeeFz5DBL+U/lR+Vn5S3Mjq/C2u6YBAIMlDw8w7DJwILFytOVEZ5nOM6UWIWs6LGi2hsdV6LCS/uEtt/5BG8ezZnVVdlDf6NcOKHceJAaeRrpZmWfsggXoEQ+ffNU6zGm8fMjKLR+mNgHpiX25/FSDhoMVr2VENqkB6NRTxOny0BZqcqI1QptmzFYGlxY60KPC7WFJS/0+0eExNlGHayEaqpXjaRtM6YfUP6kDDtIPfodkr1P4PJfnn1cuRKPPvo0Nax1L9P40cuPf5zW+gQ5Nbex9Zel6vpRETtF/8KshGx4UHIboFuaz8EyjCMN6JzeBrPVUTLMEDFMNxDegL59sbNSodVRUuwb55viI0YfGmiDj6SkeCojM7thpBuWdkMC3VDPdEuhib4yUsXiKBaHssiqMa62E1tQczQqEgcHdaMJaA+XHSBor4f0647aya031aM3KcjP8OY51I1a87C7o7M7Q/+ivKt829o6ar+nZef+t0Kz11Y9+3xNAdqROqsEX3JvfWzTjqL5h65uvH3qdQH1ZIxT/PV31M8tGtc/0+G/tvyuEbsPP7zdWzu5dubVY68M8O7AgDGzAdWf9qF3qZ4g5kqfIkVTHNHrgGZodbjQMlePpXq8Uo8Zerygx3f0+KIeV+txiR7r9UhV6nGEHnP1yOtx6nE9vqtHWY/L9Bgn8Ho8q8c4fpse1+mxViNJenTr8YxGWqfHmRoypCFBj/3O6LFFj8v12KDRwnrM0QgtmpTlWtVxvKRHjx7Neozp8YQeD+pxvcZQpZFCGpXXt6+CHVezP14EZ3UkVF6iafOn3UrbYgNeO9XyspJG30t/fUGkv16j7d56AO5ephFS8KIUc6Xo1CCZjRNQZ0bBTOs4DpMJZ0zS6420LYURU5eIKDbfXV9SKOIVIqaImCTiryJ+I+KnIr4t4j4R7xdXiZtEcqeI00UcIF4rThBJLxFTRTSIOK1VxFMifibiEREPiPiciGtEXCLi3SLeLOINIpaKOFDEgIhpIiaLeFHEb0X8LxHfEfGlNn5YKmK9iLeKWCni9SLmiCGR6iYiL2KriGc0+e9q8reJ+LiIy1Tee0SqXOO+UsRsEUURjSL2vyDiaRGPiXhUlGbiiyI+L+JqEZeKOFeroFQsF6lCTaEUTaFfNYU+0xSKN+BxrQH3aA2o0BpwlYhqAbeIVKVYL64TD4rHxZjIgog6l5nWE5vRiDrV3QgK6rofxIkVFZWzZlXO6gizO0PHna6jFVT+PntnfpUhMEuwxCd05cQKdU+sqFA/tMXLRzJ7mFA9Alkdzr4Wq/rVbxBikPnbyXOu3qkZsZNK9Rut2Zmu0E97f+zv0YvpqHuD1I/5tG7NxRqm8WLjxh0zkCZTLz78ySO+6ENkh+p/j4+doqP0cPBBLjwojfP06sVxdhPfmxDenkrn9enmGhnp5vCAwPUaGeE4AUIm5E0zTVQyMZkEITkcEcyQEY6AozkP1+fh8jxsyMPaPKzKw3Ae5mrIDtt+W2BPc5ZnCRbtrBcPT3Y+PffJZbRYSAjbInoWb57DLqjn4H52LfDnM2GPvEF4FXImym5z4NqnNnz20z9r75wzI/ml3rjwyH9ccWWqd+g1NeUsW7R3wqTHIq/VLyiutG1ZuXEXS1+5cPaoCQJmvLhd6R0eydWap9fePfW+CY+PjtBUbs3Isiq1dxZqMbcj4AQfVEj9ujMmk9EFRsjwMwJlt4vhiN1shCQ75Q1HKIfsx5Afl/ux1o9uP8b8eMKPzX6MD+7s2fHWJ3bOwg77phYa8aotisfNhaBg44JqFMtCOkaxuimz5z4VpHTUVnYXTec9fdfRVw7ced+flyxetXgOld76dmSSuz6p7yb6tBK5umzaBOWU8uVXh1u+/OidtwDVkSZv08MhBaZIRWC0WVmOsxpJqmh2hiNuW71tme24jbbZzGYPW8s2sC3sCZYB1sxWaY/NbAvL6QnLJiWRcCTJ4e58bpwVCuZ02o/U3UgLWTi1QI8WSG/bh9C6+P6qRn6P/cSWr86cPfHMsbT9ptnTlzVQ6f/ZMu0Ww5oX0I1WFNC95VHThJteVkdiXOwUOcMc0SKI46Q+3cBk4p0sz2b4LHYTQDLR6TzhiM5MUsMR4liegbUZ6M7AWAaeyMDmjMQYdDitFbpCoc5D4E8oqu6XwR7qGDh9vbEg3oy4EZICrdPxwbkb8ihqF7uFcK1/ufO+VU1Njy6es3XaBLShi+o74cY5+MoF66a+5rorsParwx8e/+TNtxJzzUUPBwukwB1SsVVguRQAg4ETiJjKskBSIBwxpqCNTknR87wjHOHNehKO6B0tIjaLuF7E5SI2iFgrYpWIYRFzRZx1+dzqFGJ05fzGRYgPCuWNj4lHsPfQxoRD22MrbluasrZa2Xj2woV/4Gcv8MvvW7CKxZ9feHtiSXYMsDumogG7t77ianru8W1qvL8bADWQeRvssEyaZrQiixRlp+2005HEhyNJAIQl4YiV5dHuduY4RzgrnfXOZc51To53hpz1zm3Og87jzjNO7spK50EnFacR3pnj3KbhGac0rqbEKfXIKvE4c51VTiI5sWJWIFAxa/ZEzQsNxm9QNC80T/PzgkIwL76h+gqCWnzRaVfHrhsG7Th915//PP/e0vxsX9GgD8jei8PI3gV3rZhvuF9XfEP1AtXOlPHkDF0KHugN66Qar1Ovd9OkpyAQN8nNSeOdSTaTzR+O2MymQDhicgAXjthpZGlMpkGUctGTi+/mopyLy7U85GL4eC425+KIXFyfiw25mJOLfC6ezcUWLaObmFj82zcELQw2MRGp72CvnYZSC8pk9lCdPY9Q4Os4yYL5ffsFWbtgJvkJt08LrFIZ29/vvtsytwaNVHDHHW+8+NbR6KbelI5+jt1ZsmB007zbl41dWKKMX9KQWjoSr9w6bTrqUFQPONOru6/g+m6++JrSn7y+8ODkN098fqjmRUB4EIB8xxwBF1RJV9oFwaLjLFxKqhWAWDg7MYYjxNySis2pKKfiWe0zloonUrEduT4Va1OxfQuc3bZKBi2Foc4ni/iFjuATEo3SzvuqI3/VgKfukZ/dfUXV2PpVu3ZxSBpvmrTtP1pzqK2zZ+bLj7TOZ44o866anwSU+rPjeBVzRLvHniGVEI4DmtbpGZ62I4yOIMR9v+N6bNa8z3Wa31jb5k2e7UCKO4cjNFLFb/b3xFKfuNTTbnULgnYiBIX7d+3axXi2bDl/gh5w4XVAaALAQZpOt0sjCQBDI4D9LIMnGDzeFntZx2CDFmlxM8hrsZfjHcIyyxkcwWBMK9Ki4duZO3siHRXsFIdp2sUcOZ8PCIsBWB89HHrhPCnm6gXg1Xs9Fp3eow9ckeYPR9LMLgHsdlrd+Qy8Vw/2mgCWBjCk/upjdAeQD+C3ATwewBcD+FwAlwRwbgBnBvBKjZocwJu+DeA7GnmbRq4PYHkARwRQDOCFAJ7RCrczrAhgvIKAxkAH8FwAj7WJrg/gzQHM10h8AAsvaLQXA7heK1mniS5tUy1ZqyBe/QZNrzhV1IS2BJBq1kouD2CVqpGUjLkBzAkgBOKztC388Tvu38TfOH1/FANpW63z8kLtMzvQ4abQUtgWC8lMmHl+j2B3yqn5A47El4aO0wmMq43eu5PdjBShyICVt8xdlkb6r5u14ZEd42pvX0BtffxOeX3rUjL6wBVMVuGI6IQbb761asc76vx4/M5tT7QujY86+Y4eDqlQLQ206PVJkJqUKqZZHOBgwhGH2cgngb0lDZvTUE7Ds9pnLA1PaBGtOHK9FvLqPJHbWthpIns7TOCOLbMLpPCKGyLzV+5KNGXQU3N2PE1tvfn2/B1rL+lfW7H9SGtO3COgu9HDIQkcUCJlCVrEwunSmTQ3wKa6AetduNyF8ShBlQvDLsx14XFX+3z94zcAvJd7Xue/O/0Dfv3LNwcWPb526ZJHnlxCdVdOKt+gFwUqVzmjfHHinXf/6+NPWjSvURlPd6Ov1+7RKqR+LnALOp0e9Jl+gbZTca/RwOtEKl3zGjMxlInLM7E2E92ZGMvEE5nYnPnvvMaEut70Hj5He1faOziNbXdGqtd4fhxD72K3Is3QuWsb33z9wF2Lbp4TWrzq3rmq2/iS7kklwrDP9qX7TLHWVCjnlM++PDTh4KqP3n4tbhvUYno4WMEnmVmrFcBgs/NskpnmwQ6hUMegmLqY5PcIOuJ6xPddu/Agu1lHB2qnZPgzBtbeTgbNbtrnXzIl6emkV3a1HgGEwtgpsocuhSugRhrIsen2NNEIINpZOpBlTCculzscSXOZSVI4whGHOQshC89m4YksbM7CqixsyMJQFpqzsH0jTbxBEPwX16w92sIkmTnYO34P2TlMQsiev7W8fcy7zrm84f76shsbVy+49oO3d36Q9iS/YMZddbkTH102b1hPDKx6ZtFS9/iRY8ZI4dT0ntfPCK9YPW+JreT6a0t7D7zCn3HVtdXqKd4dO0tdwWSBDYqkDKPNlszzepp22E2MjglHknk9Gohe0vGURbWJBkfbzULqUfUk2PYyQdy70V6xYX3pBaqH0y9oD9p98WMRdUWk4j/vWVhw55tvBkMZQ3WuH6n3F/zww4LWscNDJlWLRbFT5Ft6AKRCpXSlRadLxpTklDTRwmjT3GG064H/X5zmEOy8XQu2eP8m/GiqR+L+U8ABv53l9IDWUdo8p6IXn780z6n3AGOt6l8+Uf+6CW6VYggCxxp4E7HqDUQgNh1nQ5tDp8NknZ2YrETHo0EgnP12B05x4BgHFjuwrwMzHOhwIO3Acw78qwMPO3CHAzc4cKUD723jHKpx2hzIOnD6Tw780oEfOvB1B+7R+BY6sE5j7SiRbZO4RxO3QhM33YHj2sSxDjzpwI+1Kvc48BkH3u/A2Q7EKq3ODE2p/ue0qg5rMhq0ekodmKuRbQ68oJHWq+KlXJzrwBpNer4DRQee1Sp4x4G7tOoXatSQAymzA8GhbVuVfxiu6hyXqvi9jet34hqdYvhO9c5FvQSvUCMX2oVtezTfRy4FLPpZg1b1g1753oEMfeb+FuW9HXu5DOHLVw70dh+VqdZN2Ztac+kBrV7X1mtJeWvKy0tIKiA4Acg39ABIxjHSevVeKIlGjmUoQhhOn8wYDQuNeLsRhxrHGGuMpK8RM4zoMCJtxJ+MeNKIHxvxsBH3GHGDynevcaWR1BiRNTqMmcZi4zgjM5XVvlXK68aPjX816lYZPzVSNUYcp4rFjiJV8k9GclgVkGnsayw20v2mGJ8x7tHwjFH9SyF9rxpcUmjEdCMiGM1G6pwRm40txhNGssuIDcblxvVGUmfEKiOOMaJkxHwjeoyoFU23uErWG5FSy4WNtUaVm+WSaKQ5QulYHih7+/WXGo+qrAh0GLHK2bMDsyd2vID5jU/SFlwSgm1vZHj16NOrl2ZBPRKv8ply7BA2Kg+9gSY0vKU8hPfiS8pQKosyKeX4dOu51vfVVYRRxpOL9ABw4EkpZtXxgiVJrye8hXY5dVbe6hT0PDDhCIh/cuF8F9a5sMaFo1w42IX5LsxwocWFlAvPufCkC9934SEX7nLhBhd25B/Xgd+h8U+NF/i4Q4GV/7JAR36UXbjehStcuLDNHRjjwqGaR+Bxoc2FtAvPuvCECz904WHXf4u/3wmXNCHB387cztnO1i6zIw8VbpMFLmxuc1TCLsxxoVlDtkea/yiEeHm4sZPrWflvA46dSySOXQkftOP7Vdb0HgWOYF4IMWjtTqmTGE3UwWvzMntvvFFQRjefZEzXkeLTLytVQ+qWKuOT72N/DtAFrZtNPT43vkZtv/D685tGq3+BDF/VAXUdEOgjpVPaMeeFCI9uDOEIpHMwhDNxGx5HBqXMQAlCTuDSm6BCgdeuA3z1fvUAB+bYKXocsxICsFma7unRg+7lzsgwmZOTLUmmFJeL0CY6KzvdLJhHRnolG5JHRjLVN3vqDcsM6wyMQeqRUwIGs6HBQPQGyc0LbqFSIOrXMmGbQPPCMoFKJoJ6ykmLRlLsHAfRCOFSOvkU8ZjX7GDqkYkVgVl56vZ3+Qt/wbaDevzyyd8eCiO+fsEe/Xz9gpYOPgfn5bys3eb0ct7uSO2sudO0v/uxrZ+2dn+u552ErO/Z6Pnl2LZj3fab5tz04KN2fLmnMonQeLincovjyXk15abVG5FFunH4uHrEC5seM5XXbH2p3jWoZ2bjq+qflPofyfSjEAplbmRzdHJlYW0KZW5kb2JqCjE0IDAgb2JqCjw8L1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9Gb250TmFtZSAvQkFBQUFBK0xpYmVyYXRpb25TYW5zCi9GbGFncyA0Ci9Bc2NlbnQgOTA1LjI3MzQ0Ci9EZXNjZW50IC0yMTEuOTE0MDYKL1N0ZW1WIDQ1Ljg5ODQzOAovQ2FwSGVpZ2h0IC02ODcuOTg4MjgKL0l0YWxpY0FuZ2xlIDAKL0ZvbnRCQm94IFstNTQzLjk0NTMxIC0zMDMuMjIyNjYgMTMwMS43NTc4MSA5NzkuOTgwNDddCi9Gb250RmlsZTIgMTMgMCBSPj4KZW5kb2JqCjE1IDAgb2JqCjw8L1R5cGUgL0ZvbnQKL0ZvbnREZXNjcmlwdG9yIDE0IDAgUgovQmFzZUZvbnQgL0JBQUFBQStMaWJlcmF0aW9uU2FucwovU3VidHlwZSAvQ0lERm9udFR5cGUyCi9DSURUb0dJRE1hcCAvSWRlbnRpdHkKL0NJRFN5c3RlbUluZm8gPDwvUmVnaXN0cnkgKEFkb2JlKQovT3JkZXJpbmcgKElkZW50aXR5KQovU3VwcGxlbWVudCAwPj4KL1cgWzAgWzc1MCAwIDAgMjc3LjgzMjAzXSA4IFs4ODkuMTYwMTYgMCAwIDMzMy4wMDc4MSAzMzMuMDA3ODEgMCAwIDI3Ny44MzIwMyAzMzMuMDA3ODEgMjc3LjgzMjAzXSAxOSAyOCA1NTYuMTUyMzQgMzUgWzEwMTUuMTM2NzIgNjY2Ljk5MjE5IDY2Ni45OTIxOSA3MjIuMTY3OTcgNzIyLjE2Nzk3IDY2Ni45OTIxOSA2MTAuODM5ODQgMCAwIDI3Ny44MzIwMyAwIDY2Ni45OTIxOSA1NTYuMTUyMzQgODMzLjAwNzgxIDcyMi4xNjc5NyA3NzcuODMyMDMgNjY2Ljk5MjE5IDAgNzIyLjE2Nzk3IDY2Ni45OTIxOSA2MTAuODM5ODQgMCAwIDk0My44NDc2Nl0gNjggNjkgNTU2LjE1MjM0IDcxIDcyIDU1Ni4xNTIzNCA3MyBbMjc3LjgzMjAzIDU1Ni4xNTIzNCA1NTYuMTUyMzQgMjIyLjE2Nzk3IDAgMCAyMjIuMTY3OTcgODMzLjAwNzgxXSA4MSA4MyA1NTYuMTUyMzQgODUgWzMzMy4wMDc4MV0gODcgWzI3Ny44MzIwMyA1NTYuMTUyMzQgMCA3MjIuMTY3OTddIDIwMTYgWzEwMDBdIDIwODggWzU1Ni4xNTIzNF1dCi9EVyA1MDA+PgplbmRvYmoKMTYgMCBvYmoKPDwvRmlsdGVyIC9GbGF0ZURlY29kZQovTGVuZ3RoIDM1Nj4+IHN0cmVhbQp4nF1STW+DMAy951fkuB4qkgCllRBSS4vEYR8a6w+gYFikEaKQHvj3EzZrpR0Ies579rPjIC/PpdGeBx9ubCrwvNOmdTCNd9cAv0GvDZOKt7rxK8KzGWrLgrw8V/PkYShNN7I05Tz4hF5P3s385diON9iw4N214LTp+cs1rzYsqO7W/sAAxnPBsoy30LEgf63tWz0AD1C2LVswXvt5e82rJ+NrtsAVYklumrGFydYNuNr0wFIhhMh4WhRFkTEw7b/7HaluXfNdO2SHGU+FUCJDtCcUI1I5ouiAKDwiipMFJZelihIyWtBe7REdc6y5Zpfyr9jT2wlzCEqs9lS0QCQlBXMMSvIlD/gLyZ4kuSR5SHK1dkDMiJjqQhS6i07UQUzBhBpRGIwiolDOnaQgWYpJviNLMcljmlFC8nidCsmTZB0AdbzMf9mTx+M2d+fAeFwmfNDlKbWBx77Z0S6q5fsFEsWz4AplbmRzdHJlYW0KZW5kb2JqCjUgMCBvYmoKPDwvVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTAKL0Jhc2VGb250IC9CQUFBQUErTGliZXJhdGlvblNhbnMKL0VuY29kaW5nIC9JZGVudGl0eS1ICi9EZXNjZW5kYW50Rm9udHMgWzE1IDAgUl0KL1RvVW5pY29kZSAxNiAwIFI+PgplbmRvYmoKeHJlZgowIDE3CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAxNSAwMDAwMCBuIAowMDAwMDAxOTQ3IDAwMDAwIG4gCjAwMDAwMDAxODYgMDAwMDAgbiAKMDAwMDAxMjU4MiAwMDAwMCBuIAowMDAwMDI1NjQyIDAwMDAwIG4gCjAwMDAwMDAyMjMgMDAwMDAgbiAKMDAwMDAwMjE2NiAwMDAwMCBuIAowMDAwMDAyMjIxIDAwMDAwIG4gCjAwMDAwMDIzMzggMDAwMDAgbiAKMDAwMDAxMTMxMiAwMDAwMCBuIAowMDAwMDExNTY2IDAwMDAwIG4gCjAwMDAwMTIxNTcgMDAwMDAgbiAKMDAwMDAxMjczMyAwMDAwMCBuIAowMDAwMDI0MjQxIDAwMDAwIG4gCjAwMDAwMjQ0OTAgMDAwMDAgbiAKMDAwMDAyNTIxNSAwMDAwMCBuIAp0cmFpbGVyCjw8L1NpemUgMTcKL1Jvb3QgOCAwIFIKL0luZm8gMSAwIFI+PgpzdGFydHhyZWYKMjU3ODgKJSVFT0YK", "warnings": [], "engine": "preset", "engine_version": "jinja2 3.1.6; chromium 153.0.8010.12", "cache": "hit", "render_ms": 0, "queued_ms": 0 } ``` ## About [Callable Labs](https://callablelabs.com) · [Quickstart](https://callablelabs.com/docs/document-generation-api/quickstart?via=apyhub) · [API reference](https://callablelabs.com/docs/document-generation-api/reference?via=apyhub) ## What it does Invoice Generator turns structured invoice data into a rendered document. Send invoice details in JSON and get back a PDF, HTML, or DOCX version, with a JSON response available for metadata and a data URI. Use Invoice Generator when you need to produce invoices from application data instead of filling out templates by hand. The request body includes the invoice number, date, seller, buyer, and line items, plus optional fields like notes, title, currency, due date, logo_base64, page settings, and download behavior. Seller and buyer records support name and optional email, phone, tax_id, and address lines. Each line item can include quantity, tax_rate, unit_price, and description. The response reports the rendered format and document metadata such as bytes, cache status, pages, media_type, engine, engine_version, queued_ms, render_ms, warnings, and a data_uri when applicable. That makes it useful for billing systems, internal back offices, and workflow automation that need to generate customer-ready invoices from existing records. Choose this service when your app already knows the invoice data and you want a consistent output document without building a rendering pipeline yourself. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/callable-labs/service/generate-invoice-document-from-json-api * * * --- title: Generate Letter Document from JSON API slug: generate-letter-document-from-json-api url: https://apyhub.com/callable-labs/service/generate-letter-document-from-json-api provider: Callable Labs categories: [Smart Generation] tags: [document-generation, letter-rendering, pdf-generation, docx-export, html-rendering] auth: api_key version: v1 service_type: sync endpoints: 1 atoms: 200 --- # Generate Letter Document from JSON API Render structured letter data into PDF, HTML, or DOCX. Return a PDF data URI and render metadata for business letters, notices, and mail-merge workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/callable-labs/generate-letter-document-from-json-api/v1/documents/preset/letter` | What it does Generates a letter document from JSON input. You provide the letter content plus optio… | 200 | ## Endpoint reference ### Generate a preset document from JSON (letter) `POST https://api.eu.apyhub.com/callable-labs/generate-letter-document-from-json-api/v1/documents/preset/letter` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `data.date` | body | string | yes | Date Default: `18 September 2026`. Example: `18 September 2026`. | | `data.sender.name` | body | string | yes | Name Default: `Ada Lovelace`. Example: `Callable Labs`. | | `data.sender.email` | body | any | no | Email Default: `null`. | | `data.sender.phone` | body | any | no | Phone Default: `null`. | | `data.sender.tax_id` | body | any | no | VAT / tax registration number. Default: `null`. | | `data.sender.address` | body | array of string | no | Address lines. Default: `["Ockham Park","Surrey"]`. Example: `["1 Example Street","Amsterdam"]`. | | `data.closing` | body | string | no | Closing Default: `Yours faithfully,`. | | `data.subject` | body | any | no | Subject Default: `Notes on the Analytical Engine`. Example: `Confirmation of engagement`. | | `data.recipient.name` | body | string | yes | Name Default: `Charles Babbage`. Example: `Callable Labs`. | | `data.recipient.email` | body | any | no | Email Default: `null`. | | `data.recipient.phone` | body | any | no | Phone Default: `null`. | | `data.recipient.tax_id` | body | any | no | VAT / tax registration number. Default: `null`. | | `data.recipient.address` | body | array of string | no | Address lines. Default: `["1 Dorset Street","London"]`. Example: `["1 Example Street","Amsterdam"]`. | | `data.reference` | body | any | no | Reference Default: `null`. | | `data.signature` | body | any | no | Signature Default: `A. A. L.`. Example: `Ada Lovelace`. | | `data.paragraphs` | body | array of string | yes | Body paragraphs. Default: `["Thank you for the drawings you sent last week. I have annotated the punched-card sequence and enclose my notes.","I believe the engine might act upon other things besides… | | `data.salutation` | body | string | no | Salutation Default: `Dear Mr Babbage,`. | | `page.size` | body | string | no | Paper size. One of: A4, Letter, Legal, A3, A5. Default: `A4`. | | `page.margin_mm` | body | number | no | Uniform page margin in millimetres. Default: `18`. | | `page.orientation` | body | string | no | Orientation One of: portrait, landscape. Default: `portrait`. | | `format` | body | string | no | `pdf`, `html` or `docx` return the bytes; `json` (default) returns a PDF data URI plus metadata. One of: json, html, pdf, docx. Default: `pdf`. | | `download` | body | boolean | no | Send `Content-Disposition: attachment` so browsers save the file. Default: `false`. | #### Quickstart Render a letter with the required sender, recipient, date, and body paragraphs. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/generate-letter-document-from-json-api/v1/documents/preset/letter" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "data": { "date": "18 September 2026", "sender": { "name": "Ada Lovelace" }, "recipient": { "name": "Charles Babbage" }, "paragraphs": [ "Thank you for the drawings you sent last week.", "I believe the engine might act upon other things besides number." ] } }' ``` #### What you'll get back Returns a JSON object with `bytes` and `queued_ms`/`render_ms` timing fields, plus `cache`, `engine`, `format`, `data_uri`, `warnings`, `media_type`, and `engine_version`. `pages` is an integer when the output is a PDF, or `null` for DOCX/HTML. ```json { "bytes": 12345, "cache": "miss", "pages": 2, "engine": "string", "format": "pdf", "data_uri": "data:application/pdf;base64,....", "warnings": [], "queued_ms": 12, "render_ms": 345, "media_type": "application/pdf", "engine_version": "string" } ``` ## About [Callable Labs](https://callablelabs.com) · [Quickstart](https://callablelabs.com/docs/document-generation-api/quickstart?via=apyhub) · [API reference](https://callablelabs.com/docs/document-generation-api/reference?via=apyhub) ## What it does Letter Document Generator turns structured letter content into a rendered document. Send a `body` object with `data`, plus optional page and output settings, and get back a letter in `pdf`, `html`, or `docx` form. If you choose `json`, the response includes a PDF data URI and render metadata. Use it when you need to create formal correspondence from application data: customer notices, engagement letters, internal approvals, or mail-merge style exports. The letter payload accepts the sender and recipient parties, `date`, `paragraphs`, and optional fields such as `subject`, `salutation`, `closing`, `signature`, and `reference`. You can also control paper size, margin, and orientation through the `page` object. The response includes the generated file’s `format`, `media_type`, `bytes`, `engine`, `engine_version`, `cache`, and timing fields such as `queued_ms` and `render_ms`. For PDF output, it can also return `pages`; if rendering produces issues or notes, they appear in `warnings`. Use Letter Document Generator when your backend needs a consistent, template-free way to produce printable business letters from JSON. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/callable-labs/service/generate-letter-document-from-json-api * * * --- title: Generate Receipt Document from JSON API slug: generate-receipt-document-from-json-api url: https://apyhub.com/callable-labs/service/generate-receipt-document-from-json-api provider: Callable Labs categories: [Smart Generation] tags: [receipt-generation, document-rendering, pdf-generation, html-to-pdf, docx-export, financial-documents] auth: api_key version: v1 service_type: sync endpoints: 1 atoms: 200 --- # Generate Receipt Document from JSON API Render receipts from structured JSON as PDF, HTML, or DOCX. Returns file metadata, byte size, page count, and a data URI for JSON output. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/callable-labs/generate-receipt-document-from-json-api/v1/documents/preset/receipt` | What it does Generates a preset receipt document from structured JSON input. The request contains r… | 200 | ## Endpoint reference ### Generate a preset document from JSON (receipt) `POST https://api.eu.apyhub.com/callable-labs/generate-receipt-document-from-json-api/v1/documents/preset/receipt` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `data.date` | body | string | yes | Date Example: `2026-09-18 14:02`. | | `data.items` | body | array of object | yes | Items | | `data.items[].quantity` | body | number | no | Quantity Default: `1`. | | `data.items[].tax_rate` | body | number | no | Percent applied to this line. Default: `0`. | | `data.items[].unit_price` | body | number | yes | Unit Price | | `data.items[].description` | body | string | yes | Description Example: `Consulting (hours)`. | | `data.notes` | body | any | no | Notes Default: `null`. | | `data.number` | body | string | yes | Number Example: `RCP-1042`. | | `data.currency` | body | string | no | Currency Default: `€`. | | `data.customer` | body | any | no | Default: `null`. | | `data.merchant.name` | body | string | yes | Name Example: `Callable Labs`. | | `data.merchant.email` | body | any | no | Email Default: `null`. | | `data.merchant.phone` | body | any | no | Phone Default: `null`. | | `data.merchant.tax_id` | body | any | no | VAT / tax registration number. Default: `null`. | | `data.merchant.address` | body | array of string | no | Address lines. Example: `["1 Example Street","Amsterdam"]`. | | `data.payment_method` | body | any | no | Payment Method Default: `null`. Example: `Card •••• 4242`. | | `page.size` | body | string | no | Paper size. One of: A4, Letter, Legal, A3, A5. Default: `A4`. | | `page.margin_mm` | body | number | no | Uniform page margin in millimetres. Default: `18`. | | `page.orientation` | body | string | no | Orientation One of: portrait, landscape. Default: `portrait`. | | `format` | body | string | no | `pdf`, `html` or `docx` return the bytes; `json` (default) returns a PDF data URI plus metadata. One of: json, html, pdf, docx. Default: `json`. | | `download` | body | boolean | no | Send `Content-Disposition: attachment` so browsers save the file. Default: `false`. | #### Quickstart Create a receipt PDF from a minimal receipt payload. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/generate-receipt-document-from-json-api/v1/documents/preset/receipt" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "data": { "number": "RCP-1042", "date": "2026-09-18 14:02", "merchant": { "name": "Corner Café" }, "items": [ { "description": "Flat white", "unit_price": 3.6 } ] } }' ``` #### What you'll get back Returns a JSON object with rendering metadata: `bytes` and `queued_ms`/`render_ms` are integers, `cache` is `"hit"` or `"miss"`, `pages` is an integer or `null`, `engine` and `engine_version` are strings, `format` is `"docx"`, `"pdf"`, or `"html"`, `data_uri` is a `data:;base64,…` string, `warnings` is an array of strings, and `media_type` is a string. ```json { "format": "pdf", "media_type": "application/pdf", "pages": 1, "bytes": 23414, "data_uri": "data:application/pdf;base64,JVBERi0xLjQKJdPr6eEKMSAwIG9iago8PC9UaXRsZSAoUmVjZWlwdCBSQ1AtMTA0MikKL0NyZWF0b3IgKENocm9taXVtKQovUHJvZHVjZXIgKFNraWEvUERGIG0xNTMpCi9DcmVhdGlvbkRhdGUgKEQ6MjAyNjEwMTUwNzM4MjMrMDAnMDAnKQovTW9kRGF0ZSAoRDoyMDI2MTAxNTA3MzgyMyswMCcwMCcpPj4KZW5kb2JqCjMgMCBvYmoKPDwvY2EgMQovQk0gL05vcm1hbD4+CmVuZG9iago2IDAgb2JqCjw8L0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAzMjEwPj4gc3RyZWFtCnic1Zvdqh25EYXv91P0dSAaSVX6gyEQO/ZcTziQB5jEhiAHxnl/CK1Sl6qqLZ9tZwKZuTD6SrWq1Wq11HvlxEVo47/DH/74oxNYMbpaj18+PX59xBBdOua/PlUH2PIBvhaXjs//ePztD8e/Hr8+wIWYRiVqSdkvnx6uYTvWP3/96TCRzx8fP/wEx8d/P9p5/SNgOQDOC3x4RChnKDeOgM9npMGKtDZyAkcwU6HgOeQKABzy33Mgt+Dnj+cgQsjHp0eD0ejUKGfDXw10LacU0pVaJHfFNn9wcw2ChykPPgruik16Gd3o6llv6YsMdB24SSjQXM3R53rVCFEGug7cJCMQ0NVYUgtco8hA14GbhALNlfPm8lUjRhnoOnCTjEBEV1LNkccRiwx0HbhJKNBciRiAxwFRBroO3CQjAOjyOcs8Digy0HXgJqFAc+dKqfGqgVEGug7cJCOA6M7n1ArXKDLQdeAmoUBzY354HCnKQNeBm2QEErqUQok8jlRkoOvATUKB5k5GHkeOMtB14CYZgYwOz1XHaz0XGeg6cJNQoDk8I1eJEgV3xTZ/cEGHAUpjfRHcFdt84uagNH7ja1zYJZrkgRUdnINhcRHcFdt84ubO7efa7UKLgrtimz+4oTunkl+tVgR3xTafuLnzPbseX/RRcFds88voR3duW431RXBXbPOJm5NL8Dza5AqUbPMHB3Tno0TWF8Fdsc0nbi54wGv+Y4yCu2KbPziiO2+nsL4I7optPnFz/lwQlx6i4K7Y5g8GvnPga0JRvWfrA/d/ekT0VyZ6zmQNRudLbvxEMAnuim0+cXEhQeVxJS+4K7b5g1N0EXzh0aYkuCu2+cTFgS98+MbsBXfFNn9wjg4q5sD6JLgrtvnExWEOiVdU8YK7Yps/uER3TsfSJ8Fdsc0nLi6HBPxGVi+4K7b5g2t0uUXg51+T4K7Y5hMXdy6HazuNzQvuim3+4BbdOZ2Z9UlwV2zziYtr54KYevBecFds88voB1Zm1mTVS28U8IcV+MaZjTNZE661BOF6C6i1eqnF9QLXC031jhZ/jEHkehFVL7W4XuR6sane0QKuB1yPdw7qpRbX49UEvG6Av9UAuR5yPUTVSy2uh1wPm+odLf7og8T1EqpeanG9xPVSU72jxe82ZK6XUfVSi+tlrpeb6h2twvUK1yuoeqnF9fjbZH2FUO9oVa7Hu+baH6mXWlyPz1vgkxX4jAf+EQF8LgKfgMC/F6Bxvcb1WlO9c+W3a3dBf+0L1CpKgx5cBeAzCn0W3BXbfOLq8vnfpQ9BcFds8wcHcIm12SXWUVvmULs6kOONQXBXbPMHR3BBjjdmwV2xzSe+Ti2E67xBfv+od7QgjnkKnJ0Ed8U2n7joeUWv51WwzR+Mcc0rpjWvsy1zqF3GPPF4kxfcFdv8wSnqeU1Jz6tgm098nQanfTE12ateWtlX/5kJnHnt+UKTk/MtRZ6FXAV3xTZ/cPEuNI/8HhUQ3BXbfOLkYk2882Cpgrtimz+4egfVNx5/BcFdsc0nTg5LjiyvC7tEkzyweZdKQH7LGgzmsQu2+cRJr95W9eptZhcQ+Scnf36BhGvqk4eFXaJJJkzunMbE4iq4K7b5g4N3LUX+OksBBHfFNp84O4+FT7AUmuCu2OYPjsEFjPXaZ1LEwdeTk2zzibOL64BKsS3sEk3yQAhqF0iAaheQbPOJs8NYE88dNMFdsc0fjMGlyD91E+LCLtEkE2aXQ/ORxU1wV2zzB6fgSsDIY08ouCu2+cTZna8fz11qgrtimz84B9c8skeSMgruim0+8bWDpnLtoNRavbSDnkYutunxYpseb/LT46XG8mwptUhWHq/NJ2bTdsiFpzvkgk36QGnYTn2RAe3x3iQzsAxbqiEsXaohAjcJBYRhO2sUGdAe700yA8uwpRrC0qUaInCTUEAYtrNGkQHt8d4kM7AMW6ohLF2qIQI3CQWEYTtrFBnQHu9NMgPLsKUawtKlGiJwk1BAGLazRpEB7fHeJDOwDFuqISxdqiECNwkFhGE7axQZ0B7vTTIDy7ClGsLSpRoicJNQQBi2s0aRAe3x3iQzwJ4tlVieLlVYbPOJl2c79UWw8nht/uTLtiU5m7qkZjTJhMuzneIiWHm8Nn8ye7akX54u6RfbfOLl2U59Eaw8Xps/mT3boRee7tALtvmDhWc79UWw8nht/mT2bEm/PF3SL7b5xMuznfoiWHm8Nn8ye7akX54u6RfbfOLl2U59Eaw8Xps/mT1b0i9Pl/SLbT4x8J0DXxOK7B2tD9w/PV7KRM+ZrFme7cxOgpXHa/Mns2dL+uXpkn6xzSdenu3UJ8HK47X5k9mzJf3ydEm/2OYTL8926pNg5fHa/Mns2ZJ+ebqkX2zziZdnO/VJsPJ4bf5k9mxJvzxd0i+2+cTLs536JFh5vDZ/Mnu2pF+eLukX23zi5dlOfRKsPF6bP5k926EXnu7QC7b5g4E/HYG/k4C/h4C/FD9w//R4Z2bjTNaEay0NZ5fyAsre2eJ6geuFJnupxR9jw9mlvIiyd7a4XuR6scleagHXA67HO8fonS2ux6sJeN0Af6sNF5fykOshyt7Z4nrI9bDJXmrxR99wdikvoeydLa6XuF5qspda/G4PZ5fyMsre2eJ6mevlJnupVbhe4XoFZe9scT3+NllfIaOXWpXr8a659sfRO1tcj89b4JMV+IwH/hEBfC4Cn4DAvxeGizvzuF5rsvda+e3aXYazOzJHa2ZeGuHZzuwsWHm8Nn8yuzWkX54u6RfbfGLyb6c2u8S60ZY5s82eLWmWp0u6xTafeHm2U58FK4/X5k++Ti2E67xBfv9GL7WWZzuzk2Dl8dr8yUXP6/J0Sb/Y5hOTfzu1ac0rtWXObLNnS5rl6ZJusc0nXp7t1Cc9r4tt/uTrNBguLWmyl71zZV/90+OdmdeeLzTLs53ZVbDyeG0+8fJsSb88XdIvtvmT2bOd+ipYebw2n3h5tqRfni7pF9v8yZdtO+V1ofR4TTLh8mxJvDxdUi+2+ZOTXr2t6tXbzC6w8gcv23bIl6k71AtN8kT2bKe4ClYer80nXp4t6ZenS/rFNn8ye7ZT3wQrj9fmEy/PlvTL0yX9Yps/+bJtp7wtlB6vSSZcni2Jl6dL6sU2fzJ7tlPfBCuP1+YTs21LcjZ1Sc1okieyZzvFTbDyeG0+8fJsSb88XdIvtvmT2bOd+iZYebw2n3h5tqRfni7pF9v8ydcOOpxd0hQve+cO6nzO5ZD/nn/xewvSX/zGUI+Y8hHnnxRjplDEK/Tm5fHDezzGwXu8fHgE+tvpcJy/40o6QjtePj1+9D7mPx0v/3yE5NBHbBkOf7z8/fjRe0TqCa7mkBuKnvejJ7kWU0ZoT3TsayXqAedj9edu93qxuivmYSOJ77dX+Y6RJZqzdy+P8aId8t/zqd2Cnz/SAzm3O5fT+cfrVT8Vj86HlOFI14OBeXnvUsVY5MDo/qsLKQRf6uqgcRUHsdIfub8meDs6wMWUA7Z1iQQbRSqjA50voZVU7NS/e7mW3u5OU3Gl5VqfudNrcd57gC7XXCkpe1zPJvg5wFp9xrRGHnBzS2F3r6HsOpK61+1ThbGRI4h7ndN0n7/SNuPeKuYovuWGtoq269jO5vYab7+51PbBvNl07KdkW2r7KP+yK/XKJJ4v/9Nb9tdfiXb+H1SCT9eOXL75xZ8b0nZH+IIizZ2yeMixir3i7WZCeEtoKeYYloK3BPtg96XirlR4chM5P/NTjnLagDdyPBebL68PML197nKQo4uhFnW5untK8ybud7efj/LcODBW5/HcO8U4ytzza8ZU6u1g+8Kjf/Pc1ZLPLqA/f8WttYnbu/Z8WkIoCdITT7t+fRlsl9qrGy+9UVCuUbfdE3m/Of/2k/fK+feFh/vn7eu829/2x/Lu6nNneHViYm7Oj/eGJ2e/Z4Zv3hrhuVEAJlfbWFnXMGrc7W3fsaf/zwaOEM7lredvV9Q/+UzO35q5hPOt/n3NBr1lNV47Ud58kqXt5+fue2S7znkveVqxfZPnu/8tj+e61d/R44m+2YMCYinhma3uzZMTFNGNnxt8ra/Mz/am/ttp+PrXVeTXdXte7o+p7ffNk0trf8Ly0or/b2/+t/+wjV8+cM7/mfr8coql2idQwDcMYtrezA4PtXoIdqLvHfND4QuKd6Mj21/C85QGl0KG80/uzKfgTTBXxRcuXTcd20tg2117e400H2AMmME/cY3f7ja+49rwm11j/my53cZ3rJBdpd2YAv8E+fnx8+M/XtLTGwplbmRzdHJlYW0KZW5kb2JqCjIgMCBvYmoKPDwvVHlwZSAvUGFnZQovUmVzb3VyY2VzIDw8L1Byb2NTZXQgWy9QREYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9JbWFnZUldCi9FeHRHU3RhdGUgPDwvRzMgMyAwIFI+PgovRm9udCA8PC9GNCA0IDAgUgovRjUgNSAwIFI+Pj4+Ci9NZWRpYUJveCBbMCAwIDU5NS45MTk5OCA4NDIuODhdCi9Db250ZW50cyA2IDAgUgovVGFicyAvUwovUGFyZW50IDcgMCBSPj4KZW5kb2JqCjcgMCBvYmoKPDwvVHlwZSAvUGFnZXMKL0NvdW50IDEKL0tpZHMgWzIgMCBSXT4+CmVuZG9iago4IDAgb2JqCjw8L1R5cGUgL0NhdGFsb2cKL1BhZ2VzIDcgMCBSCi9WaWV3ZXJQcmVmZXJlbmNlcyA8PC9UeXBlIC9WaWV3ZXJQcmVmZXJlbmNlcwovRGlzcGxheURvY1RpdGxlIHRydWU+Pj4+CmVuZG9iago5IDAgb2JqCjw8L0xlbmd0aDEgMjM1MTYKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCA3ODAyPj4gc3RyZWFtCnic7Xt7eFTVtfha5zHvzMyZzMyZZCDnTCYzSUxiQiYhBAM5kGQIomby0gwIMyEJBgsmMgF8IUlrFaIUrGJVVGjL9VpEOcEHQa1CfbVVKlStRWqlBbVesdA2WK+QM/e3z0xCpNLe/vX7vvvN2vnO2Xu99tprr7323uebAAKAGfqBhmhDc3Hpmqd/+h0AvB8Aoh3L23vrTCd+AIBfAsDOjlV94vLIt34IwCwDoNYt6b1m+a3tz3IAxtsAtE9f0x7rBQ6MAHACAKzXLLtxyf7couUA3rsA+B3dXe2dxg2n8wAwCgBTu7u72s0u40MAWAUAOd3L+2540GBaAnDJNABx+7KejvYl4eUxgPRpANaW5e039JpmsWUAcBYAxOval3d5bTPcANR2APx5b0+sDxDeA8BJhN67oqt38IfMXgDNCACzCQBo0AEFBqDjcaABAXT52AQtcDVogAIrFMPVAPTldAswgECDCnGF6PwGQADtTOUKqDHsOOv76iZDD8FMBF2+iqEyHril6+5FEUvVaRB0KuXnc7v95P3BzfkFZ31nRw09ulpA1boE0MxR6gVgAdgH2QAAuhNv+hAsoWw6ljJqGYoAk7BjXA6mzGquARFEcSf7ttKIAe1M3B0FfOnDvwMw09kB4hkoTEqQEdoTngA7MEDmPRtEYIACES6GUiiDWVALl0ETtEIHdMFS6IWVcKO4Mx5XNRVBicpTA5dBCFqgXeVZBivgBsITP/bPyie3nO+xC4AW5hMrGT2JQ/hZso6QBduTdQp08FCyTkMZdCfrDOSBlKyzkAn+ZF0DxP+XwVJYDF2wAtqhD5ZCD1wHzdAO10EMimA29MAy6IQrVY5Yki5CKVwMU+BiKP9GeXFcgziuYRbEVO9dB50qN/Gb+C+kx2T/OVctLIVrYKlKuQm6oBNE6FQ520GEDuiBXrgRVqhc3dAHIuRBB+SroyiBKVACIsyBHuiBa2AZdIEINdADK6BXfZ7r8WIwqJR/rq0URGhKWlGvSheCCHPhOuiAi9k32TdhDTsADrhRfX4NmOlgh9UA8RPqmht/KlfF//6/ipH/JSTWH2agD07DZxMI++FteA5keGsiN+ZiPmoA0AbHYQReu5BWzEABL1OrH8IheBWeuQAfBT/BUfgtZkA/7MFRFVcNR3Ah+mAH9MNK2IBn8Ub0wDa0qtQpmIFmZL5B1wyMw1HUwL1wFO7FWjjKxugMAPgt9So8RA9QB+ANGIErqA3ElfAevIklWAcxeBoeVRXEoB82TNRIA/wI7ofvnMOyTyovsAOjJcDFv4Bn4QXVA2thEKLjQqfwz7iJJDnU4dicvjhG1NbT11LPUtToPQBwN1wDd0M7HgagNtCzzhvODqVH6UYW7oH74Y/YCBvhRXhS2atsh0Wwi3oXWuGv8Cjj0CAA/QewUl+BRXkH/yv+NxhWbe8A46glfjqhTDPArAYHc5jEUPxVZS2shAPwV6TgXcyY1YrVgFgJrTgz+Z6NEthBwFkogQACXgIBnA6tOA0ChA7bsRJGsBIoLIUZOAVacQogFkMrlsAM9V2I+RAHAfMB8SJoxTyYgbnQirnJth9moA9a0ZdsezFb5c9OtgtgBnlDCLWAUKw+dyEjhfDgKL40itZR7DmD0hnsP73p9LbT9F9OlQvFp7aeoiInsfhk5GTPya0nPzzJfnxcFD46PkP449Fc4Q9HZwgfzvig9fcz6Fb4oOQD6gOkW4tnGTELEKyYBSJmgYRZQMf3YZaUlzEp+Ds6LsARfJ+pEt759STh7V/7heihTYf2HaLJSz6079DRQ+xwfN9ThzImB4fj+54+ZEgLWobRKVnwpRf9gvR8/qyg9Hx2bnAYPZL/2RkCDGPPMA7vMQiwB2GPuEfaE93Tu4clr017Du45tYcdRlFKq58hwDPRZ6htzxx8hhqO75PMzxjNQcvuyG5qiK4SiNkZUI0Z0IAZQMNGzAAECTOkPH9+UNhVvKt619ZdjGUXSrvMziA80ftE/xP00SdOPUE9vqNc2BHyC3vRjZm7q4hFmc+i5SdoeQxfQB7ToQoEdEi3hqqER7bkCg9vyRUe2pIr9G/B+4N5wtYf7PoBdV+wXLDcK9xL3bPJL3z/br9g2Shs7Nm4duPGjez37vILDRvQchdKdxktQct6YT11+3ctQuS7OPXbwW9Tq0J+YWXIL/SF/EIs5Bfye9Hdi3QvjvTib3o/7qW6ezHci8PxU9KaXkNasOe6euG6YKmQia7WjICrVRugWzV0XGgP+YVopFSIhPzCovn1wtXBXGHB/BuE+cEpQnqprZVFupUppVt7aLTQ1XQD3UOvpdlIM0rNeYVBqTkrOyg1p7uC32q6uenOJrqxYZIQapgkZDTkN1DhhqUN1DDapKKgT5gbzBDqgx5hTrBc+DKI9wdxUr271VnqaOXQ0mottbRSCK0IcWEYud1uvTCMVqnIrRcES7UlYllrYSyWYkuDpcey0fKhJW7RVlvWWk5a6B7ABsB+J7I4jJuGWpoLCuYNa+NN82RtaIGM62RfM3lKjfNlzToZWucvaBtC/F74uxs2wOzJ8+TS5jY5Ojk8T+5sbpMlUulvbpOtk4ecMDsc64v1rSxIAsb6yAvIK1ZQUBCLERIS1DiLio7F+vr6ICESK4hBAXkWFMSwIFYAMZUxFosRZqIr+YfkCaQ7tRtUOWN9hEkVXkmeaotgiSIVMBaLjXevak68XNKcBfPDba0tzU2NoYYrLr9s3qVz6+cE62prZs+SqmfOqLpkeuW0iqnlU0qKLy4qzMv1+3K82R7BZeesFnOa0aDXaTUsQ1MIhaKM0TqZ9olcsN1b522vLyoU61zdtUWFdd5gVBbbRTkYlRm/t75eRXnbZTEqyv52WWyfgI7KUrsoLzmPU0pwSuOcaBWroIp04RXlA7VecRjnN7Z5RXlDrTcsyp+r9cvVOuNXG2m13rDHU1QoqlYRa8U6Obiqe7AuWltUiENGQ423pstQVAhDBmONt8ZYVAhynrd3CPNmolqh8uqmD1GgSyPdyrSvrr1TDjW21dW6PZ5wUeFc2eytVUlQo6qUNTWyVlUpLiWmw53iUOG+wbuGrbA4WmDq9Ha2X90m0+3hosJBum5w8A6ZK5DzvbVy/k3HXUWFdV1yobe2Ti4gWuc1jfcz71yXKLM+q1ccPA0yRr2fn/g6pj2J0fisp4FUZapGxqY2DwF30BuMDg4GvWJwMDrYPhzvX+wVrd7BIZNpsLcuKsoQapOxfTj+3J1uOXhXWLZGu3F6ODn0YNM8Ob1xQZtM+YJid7tM+2TaV+31THN7uHGe0IXIIGtrZA3xsMdD3HDnsASLiwo9cn9jW6ItwmL3bpCKC8IyFSWUfWMURyuh9I9RxsWjXk9R4bzmtkGZ8c3t9NYtlaU72+X+xbLYfi2ZGK9VNn/h9ngHbZxYWRxWeUWZ9s3tXCrKrF/WEKmJAjLjJyKDVrVh/iLx+tw9KDN+ziZWesXKYqKnzlsXTf6t6nbJ/YvFokK5viARCC1tslQr1slSe3LG6oZKiuu8de1RGaNLa9XJlIu9vbLdO3t8dolZdUub21SRpJhsr5Eh2pGUkovr1HUl1g1GaxMmEF3exra9EIgfHSoT3U8FoAzCtYTZWdMm0/66wbbOJbIQdXfKYnSJ2Ob2yFJYxvawt60rTMLOa5Xzj7rV4AirsdLSNq/ZO69xftu0pCEJAlHH+OrOU+NtcyfUyKxP1vl0YhvlpsMy47PKrE8MyozPO7tKZnyy1qeTtT6rrElgSeDOrhLb0A1j3HL+UTlfrOuqTfKR9teUsiScaurHtGlIU8ZoTb3bE/YkoKiQkhmfmOxYZn064tT6MRLtE2XGp5MpX029iiK+dJGgF9u8Xd6wt1uUpVAbGRtxj+rlpDNUnyfnquVrrQnOKiqUwTOvZbxBnCkHC9wTnSvPUdvjzfrzyHPHyOKgzjuveZAo9yYVgkz55spAQliaxrnVXEAWtDfY7hWtYjCxoAeHJIks5u7pRIl3buegt7mtSuWe19S2xn0T6csG83Bey+yiwiEKZg95cV3jkITrmue37bUCiOta2nZTSNVEZ4eHcnBdY9teEUBSsRTBEiRpiKRBNDW17aZ0Kr97rwTQr1IZFaG2O4YRVJxuDIfQMUwlcNZER361Iwko6BhmEhRpjJuBjmFdAtev4lQYAuIyycBKOkkvmag0yj2EBLWblXTPIYAe4SkTpqF7qJ+qaVLRw9g/pJfcCY5+0KOUsHBd67muW+e3PWWCNHSrz3A4PJtAUWGdq9s7j2wrdWInCZRbwt2D0TBZbOCUKZ9M+VBG70yQKe/MIaQ0Jtng7ZotG72zCb6a4KsTeA3Ba72zZXTi/xPvl6makIwkAha0ebxWWcz8hXvQ+jmZqXBBUeGg9aMiAPD9izIDWqEVHoBX0YpWbLlQodZQa6h3acd5ZWqy9NMnmDqmjvmKnXWB8rLGpenSdGkOJIo2TS0ztPt1nO5K3eO6x3V/1nfqf6z/CymGEmNFqqRKqqRKqqRKqqRKqqRKqqRKqqRKqvx/K+8CBQcA2FJ2AGjQgiClaSiWpmi9jqUZoKH6QPEBzoaVlVyAC0wpSfdwnnTOwx1gus5suYw+wA58tZYtP8Mzn5JfhITwAaqN2gA0OCUD0AyL8FwYX4DqAlXFlJL0co8jROnwgZERwn8nAO7EKUADLxloAIYF3LIAoFjlJ/0FOA93J3pwivIWUNAYP8EI7H1gBDfkSXY7awIWJk/SW2NhvZZ2xcJ0BlQXgCvZX8JktFJekSuzTQ2U2rDsYvRmm9Fhz8JA6UxkhNOnlUnXvvPkV39SPva3hFqv8uW2NoauyqX2K1uUTdS7oyjdr9ynbH75t4si7728//CijvcBYSD5qxYDFEh2RkdRRhPLSLRGo0PAvjC4yIgh4KoOZB4oTQyFjKXcw7HlPg/ncQzgQuVJbEcD1hyi97/9wUdnQocAYQ4A42Hvg0kwQxIywZSmTZ+UngZM1mQtWE0mq1UfC1u1kBlLdKEOFAKuYs5WydmQVweseq18JlbMxPIyb7ZG65uJgVKnw25mtB7HnIo3Hrx39d75EbPykev028dHrrhp812xSdT3Xr7x4zU3PDRvuL3d+sqvDr7Qse2OVb0rZn1CfrEjADDd6mhtMF2axLEaG0XpkMV0OzAc0xfWsRyHZo0GXVBdHbBVFgcCxK7kHATUvyklyHk4Tzl6uIADy6ZWaLTooXcqI6NrqWac/oIyTUtl1ip78SEUlD+g8Da98WzPIeqRqbfapl2rWIgdAQD2bnYAtGChtFI8DcFE6WjQ0oyG1TE6LW3ltCYqEk7TsSaThoSv7XYO+zjs5LCZwxoOyzj0cejkkOLwbxwe5/AdDl/l8FkOf8zhPRzexuFKDpdw2MJhncqfw6GDQ4bD7tMcfjQm8BSHsI3D76sSfRwu5jDE4WwOS1WJRA+nOPyjKvAKh7s53M7hJg6/PcbfxGEth1NVfqvKP6Ja9Jsx/h9xeC+Ht3O4Sh1Bgr+MQz+Hdg41Ug+H0/46JvIzDp/m8FHVngR/C4dBldnGIYKq/RUOZQ63qXoTbgmNKbWril5RtdyraulVGWoTxgGHukULIwvH4PpzsCKyYiIsWngeXH8eTOCN/AsJqC6tDlQW2yoDBUCCXI1wNcQ5W2UlRxKKh/bQHvToUWtG2kPnMsvXjH6yRjlMUXg1BaNNGsOkR3DznQXYrdxPchXzmDPnaqUMN68j+aclfoLdyN4HLmiSSp16q4Wi9RaazswwpUfCVquJAcpKUUBJVD+1jzpIsUaaojQaiIQ16SWZuDC5zIsjixZeXx1Qs9a5RegT01kN4xWBs4KnlOFZkno0DruNdqOxG7FZeemoslPZgEuw5UucVq2c9ez/zs/fevcdNLW/+ToO4HxcgH2v759z7ZovT/4tTlbAegD2enYA9GCDMmmyhTUAC/Z0jTkS1tCsJRJmbf12LLGjaMeFC6//hlxopxivh/OIgGX+AuQCpTb2+seV1385+hoq2Im3K++dOHLoqxePUm+8rzy/kx1QHlCGjp08O0f9ORLpn9nODgALXokj+VqjRRroSBhsIa3qDnBVJ7tL5G6PYz3mUiPswJmO42MjsLIDYIR0qJfyLRqN1gRacNhZayTMshqdzhIJ62iNrd+BvQ6MOrDEgYIDk/FABgOVruJzY0qMyoxkVJynlGHL8pHzlE5lrbd8slX5kXKYunEUOeU95SvlLay86Tb65XW/WalY2YFP3/+9UnEjsalFWc4eY+8DJ2RDWJo6meMBdLSZY7059sxI2M4YNZGw0Wg2i5EwTZvT+3OwNwejOSjlYEkOnspBMQeTYQtqGJCYGHM9P74NgZZsOhVajTfbn5ujhgWZB8qbTTnsNjIVx5TP/p59c88lVdStfT/+zSzlmPIq3oAN2IA3Km//9uXXfvu7fa+9R72ufKysL+1oM/xy0rNvu3ENVmIz3qL0K0PHkVbiH/9JGUEm6euH2QFIAwcslAJoMtn0NppmzHpIS9MzNO802SjKFglTFLAsFwmrKbOXx208lvAo8rhQDaLSCV6HiRuNug7J2DyY9L7DrtHqMTkFTKOyV3lUOUztO4u2xzbiGuVu5axyO377ln6KH/2UHTj8xr3vZY/K9KE3lGgviS8egDlAMjzWSn9CiqG0tF4HDMsQ29AW0qOkxzI95uiR0eOIHo/rcZ8en9bjdj3eqcdePXbqsUWPl4zxdJ9Rmd7Q4zY9btLjbSq5VtWSUHFEpT6tyvfpccGYsFGPZ/T4mR4P6vEVPW5RpdwqvmJElXlexd6px5v12KPHeapkgar3iB4fV0kLVLxRj3E9Uh/q8S09blTtLNGjqEfQo3Ys/0UW/kOCXPSPSfQCmfbc+lD3Xb7y3I7rcdCsclipZJ5lHj7TwTx8/Dgg3Bw/wV7KDgAHc6XCNDPLmJl0WxpDgz4ShvRoOobSUUrH/nTsTcd96bgtHUvSUUzHRGcrVqxILPbAhOTCipCBHs7uDJROLec8nBWot5UPlDcwd+uDj+zAXOUZO05CHX392Uf/84lnfkKHzj6ijCiHgYKq+Ammn7kC/BCA5VJ1Tm6uVuswWwpp2uKgy8s0eU1hjQbC5qVmqsiMtMUsmCk9Y7bZjI1hmzWjGIobwjkecL5Ujg3lqMZsaeIARp4RdeeyJdPGhOAlNmf7y8umVmN5mX/CWUkdQ4XDTJOV6tWka82Ug6BmYjmuf1g+cvDTS1uumKtXjrg/e+PA7/NLxKyMvLyirGu7DJpV4U2LmwrmXDJ7+Uz741sekymm4tpr5jSZH/nxL59TVi2o09yvMWiY7q53KT3FeOurLp9Xv3YOyUJ3xE8wG9k3wQkeqJLEyRqLJY2HNPBm2zMbwpzdagajgxYbwhra2etFkmnIBFRXByYmw+R5l5ht12g96jxoA4mjr1/dfpyBUmbjez+PPVZE6VnlpA4zGCZyZt8B5ciy61esXrniQ8qjjCjvdS7y3sQtfJB5V1ksH1Q+UL4Y3v3S0zv3qaf8+AmmgrkCXDBbyrE7DGTL1DvozAxNWkPYYNBYwR61U2m03Q7ANYTBOWGb/Iddks0miTBQ6kzsj5w1UDq1gjVTVNMXygiav3zpK1H5yBRtO/xBaFkaZloGfm1HH2rQhAX7fmJu7lA2K4NdnWk9T0aAUi0rYq4AG2RAj1TDG6yc02ikac5AuzOdxqaw02Pl6i1ONLNOJ2g06U1hjRXMjeG1VrSSP3BudWOPGyNubHBjsVsN94VQXVq8cGEyoZNEGFm0sODrsXRuIDbO4VHDh6UwW6P1XIzUpSPKV2gY+fSL0UtXLtuci/qYsq3jWzRu111nRw860ISi8obyG90jPxzglffpocFbvvMdEhMbAfAx9k31ZnalNJXWaoFhdHrWwjgQmsMIiYwoq9ltrR6jehT0eFLNWftUfL8ez+WHsUVbnbySqBe6co+D5ImNmKF8ghnM6FtvnaGZ6WdeIzN9rv+gVEQDsAwCOEIsSizKLG5jcS2LURYFFk+yeJDFfSq+nz2v0+qJ17mNmMG++VUZ0X8HgOYRpgH8cI+0iPcDCDohy6rVZenycrNpOx0KW/lM2m41WQQdOI7n4Tt5eFsetuThJXl4JA+fz8MtY83iPKSEPIQ8PJqHB/NQzsOtedifh1GVNp4nIxPyKMkT1dX8ebcVdVMjuxpnJSuG83Bl/lxPFjoCJDvwgWSOSJC1HG3a3vot5ROWRhNtYMq2LPuyXFPx4OpHHlU+3d60lKUiOPnJwdEX6PqregrT/0O4pffErde994vRRkLYetforoQfmE6mAVzQIBWDy6rV6nSuzAyrnbiADF8Hjm2ZuCkTT2WinImJem8mnszEc14uHU//545G3zwGp4OjL9u/ZM241ZU7V+8cJgbtWj/R0nfeHG2E5Lq6h7kCjOCAEimT05hAA7xTb2kI6620vSFMO3t5jPJ4/TedOa3gyR4/7fi9IsmuInOP8jtFGVWOoog06pFX3r/1hjisWYU0laX8t/IuFqIGWSxQPlT+sv9J5e5nfqpmSeUqZiPTCHwiS7rANlmvN4LRm+3IbAjbHFazxeD+F1ly/KsAyZLqRJYlXKOmSeu5LHn4tRU/KdJolE90yLFaJnLmpweVIx/2rl593R+obOUvyuGOhVn3K+3Mfz0QtV1b9rrygTKCy16Rd72UjG1KYRrACTMln87pBLC4+DRbKKxLs7IWcGx14VoXHnThLhdGXFjsSm6t8HVjyZoZnzoqUMo71DTObUzOXL7UNnuqp7Zs6Uq6Krz6YtuerBULiyyfWXb85+jngFBPvpgwDZAHK6Q6rcZjd2emAWTaNUz+RZ40nuazGsM/c2PUjbTFLbgpA+N281ba0Bi2a3O0lFZLO0MXoXwRllyE0kVYfJF60F1BjrlqQgwUJ3ZXNTFWnpcS0c4QH1eQY+/U8jJ/7sVUedlUkuu1ybuQk8+iGUGJH/vw89y/O67pX7Xsqu4/P3rVySP7P5v836ZFSzo7L1+w9tXVc7Dq4ac2bPZdLlVJZTMcxY0Di7Y8cd/3MmfPClQVV9gyKy5bDQgZ8T9Td7PTwAGXSJPTTSZDmi6NYZx8GqthG8IGjU6nsYxvSKrt3PjKP/eZgpwIOG95oCLgCDi8yZOABrffcvv6H7TJBw5UVXtmdNvuWE/d+qKivDj6q4Z55iezAWFt/ARzNTMdnGQNm7VaHTh1ThdvttnoUNjmNDm0YNnmwk0uPOVC2YWJeq8LT7r+xRpGdVMkO7md9/jLvWb0Ehvx/n1L1mCGThkxsdOeWL1zmJk++kPl2K71VO3Z4cHuTXNu7n37TWoXiUWzml+mgxEkKQeMOr2BQa2GpWia1eqNbJqJBOSpNDyahlvTsCEtefCvnjCfgbGEYiS3bY+bPOnAWUV5F+9S7sDiTz7GKcoduBHXKTdQxZRReQQXj345+ivyq3/lKqabmQ4OfE6KGw3pejNns5lpA+PkOYMl3awHNhQG93083s5jjMcOHiHE42weS3nM4dHOo4bHv/J4lMeDPP6Mx6d53M7jfTx+m8c+NfE0qfxlPPp5tPHI8HjNCI9/5PHXPL6iCvyIx3t5vI3HVTwu4bGFx1q1g+yxDr7g8R0eX+NRVpm/P4FZ+ibOn/G4m0dyWdqkskbHlCbuTnbViooRHt9Q++9T29IlIzweV3HP8/i4alMfj5eoAwUeqVPqMF/isZ/HXh5DqjqrStOeO/FHzrsQTLgLRP7xo8uK8+ACX1wiiTsE+dYSCFQHxic/EYTZueXqCbgCPelOvhrTPWhGdHddVl5Y1VCdq7Rg/o68GRmztqFfablyr3JV2s91/ralTLHCLv9D5DOMn9lwcBsgGOInmAb2PsiFPdKkHEHg/VnZ2War0WgzmF08TzNmJi/fbzQZhzH92bDX5LFy1mFMl4LhLM7CoYUr5qq5XdxbHGukTZyJ09rt7ljY4hJcxa6Ii9HTLpddq4VYWKJDNAW0lRZpid5Gn6I1NK3NUDPX9eOpK5G3XMXqJ5xkOjj/OJCMfS4QSNx2feoJFb3ZQHsrArkV3oqAzTN2gNVoPVqPlvdoPTbq+/VXGtAhfPTTPypnJw/kXU5RK/OuqsbXnj0+WfmToeXSjqUWnDNZOUTR2JKlHJz0+tVN1hd+igbUbQ5M20zRLzxuvbTpew9unhbYrPyC/H8RkG/1CaAqL/RfYRcGageEqEry1R2AiUEjE4MBJka+Oqtt4d/Vx75Ovsmq7xb2dfK94cLAHPs6nb0S1msqz8kxx4BnX4eb/53+mRhUMcfgDiYGoWQ7NJFOVZIT7Lm6djLcofIfgxB5Ezw9WZWvp3ZABnMM1k7QbWZiYP137ElBClKQghSkIAUpSEEKUpCCFKQgBSlIQQpSkIIUpCAFKUhBClKQghSk4P8CMDEw/A/NiXSDCmVuZHN0cmVhbQplbmRvYmoKMTAgMCBvYmoKPDwvVHlwZSAvRm9udERlc2NyaXB0b3IKL0ZvbnROYW1lIC9BQUFBQUErTGliZXJhdGlvblNhbnMtQm9sZAovRmxhZ3MgNAovQXNjZW50IDkwNS4yNzM0NAovRGVzY2VudCAtMjExLjkxNDA2Ci9TdGVtViA3Ni4xNzE4NzUKL0NhcEhlaWdodCAtNjg3Ljk4ODI4Ci9JdGFsaWNBbmdsZSAwCi9Gb250QkJveCBbLTQ4MS45MzM1OSAtMzc2LjQ2NDg0IDEzMDQuMTk5MjIgMTAzMy4yMDMxM10KL0ZvbnRGaWxlMiA5IDAgUj4+CmVuZG9iagoxMSAwIG9iago8PC9UeXBlIC9Gb250Ci9Gb250RGVzY3JpcHRvciAxMCAwIFIKL0Jhc2VGb250IC9BQUFBQUErTGliZXJhdGlvblNhbnMtQm9sZAovU3VidHlwZSAvQ0lERm9udFR5cGUyCi9DSURUb0dJRE1hcCAvSWRlbnRpdHkKL0NJRFN5c3RlbUluZm8gPDwvUmVnaXN0cnkgKEFkb2JlKQovT3JkZXJpbmcgKElkZW50aXR5KQovU3VwcGxlbWVudCAwPj4KL1cgWzMgWzI3Ny44MzIwM10gMTYgWzMzMy4wMDc4MSAyNzcuODMyMDNdIDE5IDIzIDU1Ni4xNTIzNCAzNiAzOSA3MjIuMTY3OTcgNDcgWzYxMC44Mzk4NCAwIDAgMCA2NjYuOTkyMTkgNzc3LjgzMjAzIDcyMi4xNjc5NyAwIDYxMC44Mzk4NCA3MjIuMTY3OTddIDY4IFs1NTYuMTUyMzQgNjEwLjgzOTg0IDU1Ni4xNTIzNCAwIDU1Ni4xNTIzNF0gNzYgNzkgMjc3LjgzMjAzIDgwIFs4ODkuMTYwMTZdIDgxIDgzIDYxMC44Mzk4NCA4NSBbMzg5LjE2MDE2IDU1Ni4xNTIzNCAzMzMuMDA3ODEgNjEwLjgzOTg0XSA5MSAyMDg4IDU1Ni4xNTIzNF0KL0RXIDc1MD4+CmVuZG9iagoxMiAwIG9iago8PC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCi9MZW5ndGggMzQ0Pj4gc3RyZWFtCnicXZLLasMwEEX3+gotm0XQw48kYAypgsGLPqibD3DksSuoZSMrC/99kcZNoQsLzmhmdK9nmKovtTWesnc36QY87Y3tHCzT3WmgNxiMJULSzmi/UTz12M6EqfrSrIuHsbb9RIqCUvYBg1m8W+nTuZtusCPszXXgjB3o01U1O8Ka+zx/wwjWU07KknbQE6Ze2vm1HYGyWLavO7De+HV/Vc1fxuc6A5WRBarRUwfL3GpwrR2AFJxzXtKiqqqqJGC7f/cHrLr1+qt1MTspacG55GUgcYiUpJFkGikVSBWSipQeI+UZkkI6BTrKcCf5WUUF21un35cfQgWPRUKgggsqQD0iQyEoS+aYgurSJAYTzEwwM8PMZDOA6jL0kW4+sEuOdlK0k2GXHF1lWzMsP0gMPmMQPR6Omyv0EX5xWIXH/PTdObA+7kucWZiWsfBYqXmaQ1X4fgDdPK3dCmVuZHN0cmVhbQplbmRvYmoKNCAwIG9iago8PC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMAovQmFzZUZvbnQgL0FBQUFBQStMaWJlcmF0aW9uU2Fucy1Cb2xkCi9FbmNvZGluZyAvSWRlbnRpdHktSAovRGVzY2VuZGFudEZvbnRzIFsxMSAwIFJdCi9Ub1VuaWNvZGUgMTIgMCBSPj4KZW5kb2JqCjEzIDAgb2JqCjw8L0xlbmd0aDEgMjQ2OTIKL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCA4NDI0Pj4gc3RyZWFtCnic7Xt5fBRVtvA5tXYlXb1vSQe6OpUOYGcjTcAg0iUkbTAqHUIgTUzSkQABFUI6LuCSBEQxiKBilEXIuAKDUIEIwY24jOOCQxyXeTOMQ9xmcUAYt/EJ6X5fVScxYdTxe+/3ve+fnJtf1b3nnHvuveee5VZVGhAAdNAMJIRnlmbn3tL63EIAfAgAwvOvq6kvXH7qMQD8FgCem39Do3DZH4q/A6BmAxBrF9Yvuu62moNGgAQBgO1cVBOpBwdwAHASAAyLrl2xMFJ0w00AqbcApOypW1BTmwjrZAAMA8DEuroFNfymxB4AnAIAaXXXNd609Q/6dwH8YwHcl1+7bH4NcQn3NoDxXQDDzutqbqpPfIn8BADOAYCwtOa6BaNvyb8ZgOgEwO31yyKNsW5oA8AUhV7fsKC+b++lMwCYPwKQ0wGABA0QYASMxYAEBNCU4iyYDVcBAwQYIBuuAiAeIyigAIEEFWLPKzJ/ABCAnRq9EqYndJ594ruVCUsUzFDQlKoYImnzjM9nVVbrp3wNLo1KeU36zy3K/YObs2xnn+i7P2EJ+zulAxD9XUnqUdwINAC9hfYBoDN+J9+GhYRJQxOJDEUoQKmrgsF+MP6S0ukggSDsod+JlqCPnYr7w4BHTvwTgJpMtyiagYz+HkpPS1wTYAEKdgJAOghAAQMCeCALcmECTITJEIDZMB8WwmK4FurhelgBh4Q9sZgqzQOZkKPyXQgBmAU1sADq4BpYCg1wY5wv9vG/KS/95ZbztfcTwMI8ZdaUYmt7oa2/jjAabuqvE6CDJf11Up1bvE4N4aEhGVL66wwoNnM5LIarYQE0QA00wmJYBkuhFGpgKURgjoqP9GMFyIUsGA9ZkAeXQATmwwJYCrUqjwCZIPygLGFQ2ixYAIvgergWaqDh3/AWwGJYBItVykpYALUgQK3KWQMCzIdlUA8roEHlqoNGEGAszIdx6hxzYDzkgACXwjJYBovgWlgAAkyHZdAA9er1+xGzQIAElfbT8nJBUOevzKNI7Z8BAsyApTAfsgDoo/RRuJVuASusUK/DgJoMFrgRIHZS9a3Ba3Tuz979nwVxP4NOeB72Qfsw0lq4DQD2DMMdgZfhl2ptK6z/CbGHYXd/bRNshjt/lG8JrIb18Bh0DsGFYQmsgIdgD3TBkwCYij54Ga7ppx6H139YFH6Ir8N9sBOugfvgEFwDWwGIm4kv4D5iFiwlfke2wCq4C9phBy6GDWp0fQwroApW9QuoggWw7DyhrbARHoeV0Pw9im6JfQn8uQOwGu6CDdAGi2E5fRT050bHvoAJ1J+Bj74LR0gXPAl74Wm1S8tAX7aIXEIcJIi++wHgXlgE90IN/h6AWE9e8hPa/B8D00LVgYV6U7Gh2DvRJlgNx2E3PAPtcOwSN3DoB8R8KMOp/fdpKIEFXHgJSuACF14EPpwMZXgh+BQ6SMgCgku97kBK2o3dfbivD6EPE2aeReEsfh0c6/oiMNb1j8AFrjMBr6v6dNNpQn965unq0xtO7ztNJ376yWjXxx8FXPqPUPooYHN92BtwHes90Xu6l5R6fRMDvQGH6/NTMdcp/GvZyaK/l32WC2V/++tfy/5SBGV/hpjrg4tPlJ1AsuxPF5NlfyRjLv17rvcI9SK94XAGjr2Ez3dPcb0YTHc998JYV+wwBrvqu5q7yK5YtxTrMuUGXIf8h2YeWnao6dCOQ/sOsY6DWL+/fb+8n9Tvx41Po/w06p9Gjf6A/8DpA2SzvFEmZLlb7pHJ7H3+fUT7U/JTRPdTPU8R2Xv8e4gdv8Tu3T27iZm7Nuwisnct23VkV2wXtW1rmiu4FZe14ZE2bAuMcj2wye7Sb3Jtatq0YVNsE51zr3Qv0Xwv1m9o3kBs3IDdG3o2EDPvrr572d3kHYGYa8cavH31eFdjxO+KBNNdy5ZOcS0N5LmS0VGW5HOUsT6yjCFjrnAw3VUdTHddFRjvqphX5JoXGO8y55rKaCTLqFyy7FoSteQU8nLyWvIWkj5dEpNqSwipJO/CgFTiGRs4FsQZAcFVFMhzXRrIc+0L4InA6QDRHEBbrrXMiPoyQ66+jEAoQ0CXS+/XV+ub9JRen62fqV+m36A/oY/pWb++SX9aTy4DnAnYbEMau3Bjx+xSr7e4i43NKpbZYIWMa2VPqXKVSubJzFoZyuZVlHcg3hNas349TBtVLOeWlsvhUaFiuba0XJaUSnNpuWwY1WGDaaFIY6Txeq8CGK9Ao9cbiSg1VFreOE2toTfiBYU/0hjxorfxeoh4I40YiTRCpLEx0hjBqkikMRKBSMQbiaAXvOiFiLdf/qCkRq+3KuIFb1WkMT5EJFIViUQwEon0D+eoAunSinmh8rLZpbNKgjOvvOLy4stmFF0aKCyYPu0SyT/14ikXTc6/cNLEvPE52VmZGWPHpHvSxFS3y2ExGvQ6PjGB07AMTZEEQoYgY7hQJj2CMVAjFoo1RZkZQqGjriAzo1AMhGWhRpADYZlKF4uKVJRYIwthQU6vkYWaIeiwLNUI8sLzOKU4pzTIiQZhCkxRhhAF+a0CUejCeSXloiCvLxBDgnxKrV+h1ql0tcEXiCG3OzNDUGelzFYolAM31LUWhgsyM7AjMWG6OH1BQmYGdCQkThenJ2ZmgDxWrO/AsVNRrRBjCyd3EKDhlWFl0lNYUysHS8oLC5xudygzY4asEwtUEkxXRcrMdJlVRQqLlanDOqEjo7v17i4DXB32amvF2pqrymWyJpSZ0UoWtrbeKRu98jixQB638hNHZkbhAjlDLCiUvYrU4lmD4xR/PyTKtMcgCq1fg4xh8dTJ4ZiafgzjMXwNSlUmpss4q9ytgDMgBsKtrQFRCLSGW2u6Ys1Xi4JBbO3QalvrC8OCDMFyGWu6Ys+sc8qBu0OyIVyHk0P9Sw/MKpbNJRXlMuEJCHU1MumRSY9fdF/odBsHeYI/RgaZnS4ziobdbkUN67okuDozwy03l5TH2wJc7dwPUrY3JBNhhdI9QLGWKZTmAcpg97DozswoLi1vlSnPjFqxcLEsrauRm6+WhZolysaIBln3jdMttpqMQn52SOUVZNIzo3axINPpMqP0GtpBptKVLq0GtaH7Jn475WyVqXSjScgXhfxsRU6hWBju/7uhziE3Xy1kZshF3rghzC6XpQKhUJZq+nessCMnu1AsrAnLGF5coG6mnC3WyxZx2uDuKtMqXFxarnbp7yZbpssQnt/fS84uVP1KKGwNF8SnoMgSS8oPgy/W2zFBcB7wwQQIFSjMtunlMple2Fpeu1B2hZ21shBeKJQ73bIUkrEmJJYvCClmJxrkcb1O1ThCqq3MLi8uFYtL5pVf2D+ROEERR3kKzxMjljvjYmTaI2s8GqGccJIhmfIYZNojBGTKI06bIlMemfVoZNZjkJk4VjHcaVOEcnTCALc8rlceJxQuKOjnU9rDhNKKOU0vGpDGKE0Zw9OLnO6QOw6ZGYRMeYT+gWXao1GUWjRAIj2CTHk0MuGZXqSiFF06FKMXysUFYkisE2QpWK6sTVGPquV+Zag679+r2cNaQ5SVmSGDu3j2YENRphzwOocqV75UbQ82i84jzxggC60asbi0VREu9gsEmfDMkEExYelCo1ONBYpDi4EaUTAIgbhDt3ZIkuLMdZMVIeKM2laxtHyKyl08q/xW50plLBMUY/HsaZkZHQRM6xBxbUmHhGtL55UfNgAIa2eX7yeQmB6eFupIw7Ul5YcFAEnFEgpWQSoNQWkokmaV7yc0Kr/zsATQrFIpFaG253chqDjNAA5hfhcRxxniA6WrA0lAwPwuKk6RBrgpmN+lieOaVZwKHaCoTEqgJY3ESVqCJ5wdqKD205LmGQTgEA5okUdnRzMxfZaK7sLmDk5yxjmagUMpPsO1Zd8PXTav/IAWeHSq11AoNE2BzIxCR51YrKSVQqFWMZRbQnWt4ZDibGCTCY9MeFBGcSrIhDi1AwlGKyeIC6bJieI0Be9X8P44nlHwrDhNRhv+n+7NMjE9KKNiARXlbtEgC8mvO1sNp5SdCnkzM1oNn2YCgOe80n5eeQ7egXfQipfgPXgPHsNjRA6RQzxCsmTmj5SqHymdlET9/ccKvZLuZfyMn9nJGlkju5g9wB7QWDVXaa7SHORIbgm3hNuawCcEE3Yn7E7cpY3w9/y3y/aRMlJGykgZKSNlpIyUkTJSRspIGSkjZaT8z4ruwv8HZQ4Q8BYAnUu3AAksuCSeYGiSITkNTVJAgv+t7LeMJszPN/qMvvE5ZrfRbTa6jW9RC85uvZx8i275ronOO2un/gZAw4zYV8y79HpIBD04YQz4YK6UlwKpjE6v5ceas5KSzLyeASZvgm38wZDB1lVh8B4MGSgdyZs418EQyXVVkJ6DIdIMfuVriMPvV+5GE9rV8QfK+By0MGJqet6Eib5cG4ro8+TarAMonJAupjJWi82XO6zOvPvI9m07Nj/x2ENnL9pKbnn47IkdW3Zs375jC115RUVFycyK8llnz1w+ryoYvGpuCe7/3V8+/OCTE5/21dMt2t4//f6zvx4/ceKc58Avth/85eNPEq/Kj+w48NTjOwGhAnuImUQ9kOCSjEBSNMKzoR14DIlsRITsyuVeVYPjc8x5bmsFfoU97e2A8CwA3gbHgQS7lEACUDTg1gqAbJVdWaUvz2d99uXjx5X/EwnGTlIi3QaJYIexksXEaIEBRxKnj4Q4lrRGQmQS+BWVeYdsFxoIMZUwGkzuXBM5UPflmijxP7/88qtTCP956tD6R5649/72HZuIF6M7ondjA87Ha3BJ9L7oZhyPpugX0Tej70Y/wxRA2AZA6ekWSACvZKE0BJGopSmKZBgNAjaGwAF+rxF8Dr/Pl+2LL0JdhdtI53l8Rrd1Gy6KvoRXPIFzN1NTPt796VnHZuU/eBYBUFq6DUbDVElIAZ1eYx1l1QPlEjQpOpMpMRIysQgpkDIwhgnyHepQpvwhxqEMNZXOU7ecHTMVfYpR6JDVIeu2LvLd/8iO5plrV0Qe4Lss/3zpvU+LN70dWTuaONF0/YF7b7ll7ZzG5luXG3e99vrhWY88srvqwcBmICAbgJqkrtgEE6VkI20iCA3SaLYAZaQiIY3RiIkMgw7w+32m/GyfMqn+DRgwVaNodOehz+izog5Z1KObXL67r45Y8/yr0Y3EBD764EQDfoH+6Ivov5s8eO7ye8gbmSpz38nLLEBAXewklUS3gQ1SISh5RxkZbaIdIJEhxTRjsiX5+pDFQnKcLhLSazdoiQRay7Gk8L05+KqrKuMKy+6f24C6VDeK2wT4BDObrlRVrbFDvIZK+uK9z88h8wX6S/fkHdiya/z+yMufHmq747atv7ht1SZ860Q0ilfjLFyKa6MfuvZEP4yeqaj+6v3NT9zf8mjPPiAhFDtJJdNtkARpkA1lUpaXcfHJZg+A2cbxDJMz3saljk0de31In4pmJjWVNBhSrg8ZWDLz+qFWrSxhYDH5w2LCkHgwKS8L42HBamFY62gkJ7gHlmKOL8vgzp1IJX/7149i22+OrPnHmz3/uKPxzrY/Rb9rWnPXrU1rxG3r79qC4+7fiHe9/If3f9X6nIVydq74xWuvPLmi007ZDhP86ZtuXNF0fd+51Ws23Br9YL3ineHYScpEt4Ed0mC2lDXaxDIOLQBjIj3pWrfeHQnp9S49oSP1etJqdUZCVpbkIiE7i6yyQl/l+Wsc3KmBBRpATE0fM8nmyzWZdSimEuoqTUO2aipSpug/v3781949E7u27qbGvtT4wifffvD3L17ZtnpVW1vzlXdcQXwQfSC6ct1Wp4wCJs67DqnffdAXfWzf7mMdD245cOkqIOJRiZqsZoMxkplkWQooTkPR2yoohG0VqFc3JHtomDHn+aykGqtefpm85tixcw8cO6b49U4A6l66BTiYKI1CmmY0BEMmJCJVHUKkWRaqQyxJm4RErAS/f9BKB7ZW8R231a34jxUXkaZznx8h/0Z92vfV9r5f0S3bFL3vBKDr6BbgwQZzpWzUas2cmSQpHQc8z1Gk3aElzER1yGwGmjZVh5SkZmp2YL0DBQdWVlaCP9f/w+5h9BlNahR2ozqFXEqxKCQnpItuo2JCd0fvi844Qjz4OZKHfoEbv33y4ehF+NaDjxMz+g7RLe+98PD7KX2/IE/e3NL37XpFG5Wxk9S3dBtkwj2SSwujUkQbQ9O2FKCys7QGs61ohjakXawl9VoUu2JnpHyzrSggzhEXiiQvopbSimRSklAdWjYKQ6OweBSSMAo5elQSRXLVoTCDsxgsYJBRsqevsrJywPurlbrqNNVVlZVetXGe81BugZw0Gn25E/MmZBFjssi8CWnuXJudzULVukajfTRNfRs9Fv17X9+sw0LPgcOv+xu2h598qjYPrUicifqec+3dsmt/4aqXLmm5YdHlXlzz8vu40NN0Y9PNhXMuTLd5LqtYOfPpV+7vcNcvqF92SdlFXr3LO3l2A6Dy32pUJ90CLOZIv0eCIliS0wBFU8p2oelmDos5vIjDNA7Pcvgmh89yuJXDdRw2cUhUcziTwxwO9RwuOsHhMQ5lDjdwGCfoOTzDYRy/j8MdHNarJIlDF4enVdIODpepSL+KBA4nneawh8ONHDartCCH2SqhR5WyUR06jpc4FDg0cBjjsJfDIxy2qwxhleRXqXoO2arKQVg+AA39UPVjFJVQ/T1N9ZJBKx3ILW4r0fNCNIW6g/r0rJP6dJvqGXNjJ6kIdSWIkAP3SHOEceNY1qrTZ5Gk3ppM5Y4f5SgJjbIJYGTHlYRY1gh+Hep1y3REIqnTGY2JwZDRAGnBENi6c7E9FzfmYnMu1udiOBeDuZijIgcnPBCkwafGr+VGU372YJoefnwbn0OrkdqPA5na5M61WY1KCJtkVcL4GFGHY3Kn4sXI6girxYbbH33sg2++rL9pxdLE57Lw9qO/ueCiZHfBpbUVDFN4aN78LaFfNa0OVFv2tO3sZKiLbm+YNc+Iac92RLOCJWy9YXH9LYvunPdwaYgicmpLysOKdm6PnaRG0UfBDiJUSpNG0zod7wAe0jy0kbBancGQ1cBDgpVwB0OETfag34MbPVjvQZcHYx7s9WC3B+O70tAQX31/BMsfDIzxFGtwKyuyMKw4Mc/oM1pYn5JjTeTQHDsq2nDzoz5CQ+xlOikq9/GVb734/E13PrRu7ea1K4jUvjdC811NCRN3UaeioUvK6+ZFT0Y/+viVno/ee/N1QGWnyTeoKyEJFkqFwFvMDMuaeTLZabAHQy5Lk2WD5YSFslgMBoGpZ5qZHqaXoYExMGG12c30MCxHMkxCAhkMJdhcTiUaf7+Vfl/2sIihxAtl0pPsahpSD5QDkQLNa+8Kt+gPWnv3fHz6TO8Tx1MO6xoWb2gmUv+jp+5a7bZn0IVmNKJrz4O6eUteGLBTB3UlmCAJbpQCZiPDJgFotayRdCYzDJBJEAzxSWihkpI4vd4WDOkNHBkMcbYeJ3Y7sd2JG53Y7MR6J4adGHRijhOXn2+Xww4Pjux/CYDxBRHu+HoEo3WMuh4WLVs2Xb8+aXtNdOeZs2f/hh88o9945+rNDP7zmTeqijJjgKMxGbU4uu9FR+svH963GRBGARBT6DfAChukOt6MDBKElbJSdluCPhhKACAZMhgyM3q0uuzZ9pn2anuTfYN9h53V2/32Jvs++xH7CftpO3tRtf2InYjTSL09275PxdN2aU5tkV0ak1Ek2HPsYTsp2bFyuddbubyhqlKJEb74KVxN0blqFvMZfbnxcCHm+dSTg92q2N8o9FlxcedDD626o3hCplg49R3y0LkZ5KHVKzet0t6lCVxVsxoQ7gEgP6ePggPC0kVWo9GkYU1sUrIZgDSxVpIPhkhDTzJ2J6OcjGfUaywZe5NxENmejPXJOBjlGgZ8xmfK9w/xl/E5GD+2G0XjhHjuMYqK0zAsXjz50VvlJ5++IFzWtLmzk0WyZcn8fb/pyyb2NiybID/Qt4o+Gr3t4lUJQMBdAHgxfVQ9wyyVikiWBYrScLSesiKUhhDisfoEh91qttihxvn6geh/ZggpHsxnqqTK88L2oOP3P+oMHoWMPuNdnZ2dtLBnz3e91OSzrwJCKwBF0kchEdZLizQcJnAJFCQmsiRF8VoX7+cJ5VLNx3hKz8erTTydz0ulc4rCfDPfznfzPTx9gkfg420KeAOfw0v9xF7+DM+xBLIJlEZPA2UFK/j9fr89H6sUlXurKpc3xI0h1+gzDZzd3MiqKkYfh2RO9L7bOzvx+DvRGfgb/Py6aBN99FwNwUez+x6MrwGnqnq9QSohAWgKAaxnaOyl8QSN3TTKNO6gsZnGehpdNOppPDOE1E7jRhpn0hhTu/So+EHm4TlwqJL9gw/ERp+xtZM++t0EQFirWCV1JSRDjTTFxHEJkJyQ7Ewx2cBGB0M2A69PAGtPCnanoJyCZ9RrLAV7U3AQ2Z6C9SnnmWVufxwfZpbuIeY4YYxvNGH39RsqmX/BVaFVbZ3MbiRIgpz66Ir9jxN7r7lhwv7tfevJ0ucvoDPyZ9ZXdhztywYC5ih5h7oSEsAGRVKGkUkEBuwOjS4Y0hhISzBE2toduNGB8TNq2IFBB+Y48IRj0Pp+/CnffX5W+e7zU1/gp99+9vyah7evX/fAI+uI0dFPop+hG41ETvR09MPeN4/98f3f9agZMTqXGkVdoT7BVEqTHOAyajQccOkeI2Ul4hlRq9c4iVQ1I6ajPx03pmN9OrrSMZaOvenYnf7vMmL/dN2pY0TboCqtQxKiDr/PiN/NoalOZi9SNJWzveW1V59fueaaFf61m++4WUmJz2keiYZo5smJ1PiF5trK6FfRDz56ad6Rze+98au4bRBrqSvBDKJkYMxmAK3FqmcSDJQ+7hY+3xAF+pSJ2OLziMdFq/EeZreG8tYvTPOkTam/gZza0NrlWbcw4fGEFzv7jgJCfuwkeZAqhgugVprCMqnWFCcP4LQylDeDTyUdDlcwlOIwkAnBEEvaDBkIGXgmA3szsDsDwxnYnIH+DDRk9KtM1ZlPDYk/8YA7ZuCQnp6NWfEnwOGHdJI8+JeeN467d9g3Nt/VVH51y9bVl73zxoF3Uh7Rr166sjGn6sENt80Yi97NT6xZ75pbMnu2FExOHXvF0uCmrbetsxRdcVlx1pQLPGkXX1ajPLG4YmeIC+gMsEChlMZbLIl6PUdRNquO1tDBUKKeQy3JSRo9YVJsotmmHhzA4U9+q7qqcvBVSDz7KIvwMGJqnpKBJvmsPqsYP/IRF4Qq/+PW2/Nueu01nz+tQOP4mvjt6i++WN1XdqVfp8xiTewk+XdqMiRDtXSRSaNJxKTEpBSniVbd3MZbOdD/N90cfMOTj9ES16+ScuxiFqGcRJX3Ckac/K9eTk3um6X6ORE599T3fk68DRjrU36Bo/zKBvdKMQQjy2j1OtLMaUkjadGwFrTYNBpM1FhJnZnU6FFrJFnrDTZcaMPZNgzYcKIN02xosyFlw69s+GcbvmLD/TZ8zIZtNrxjgLNA5bTYkLHh4m9s+JEN37XhqzY8qPLdbsNGlXWoRGZA4kFV3CZV3GIbzhkQx9jwExu+rw550IZP2PAuGzbYEMPqmGnqpC78Sh3qFVVGszpOsQ1zVLLFhmdVUrsiXsrBm21Yq0qfYEOnDc+oA7xpw051+NtVqt+GhMGGYENN1eBDzw88LA1/KvqePpRj2EPVMDbw231+u5LuqiqNvkqjyZ6v2GY8NimBXiTH6JAU0We22SeZfWblQrW9/Xwal364J/r2/kNsmvGjF5/Pcr0lE327Mnf15VCT+9yOvZeRFX1JL6wjkwHBDkB+Rk2GRJwttUOihkugkGVogiRplkukee3tPN7AYwE/m6/lyYk8pvFo45Hi8RseP+HxfR5f4fEgj48pfHfwbTxZyyPD2/h0PsDP4elFjHpXKK/y7/N/5jWb+d/zRC2PcxSxOFSkQv6GJ19RBKTzE/kAT01ayD/BH1TxNK/8YmXixdOK8nlM5RGVQwXxFY/KaaOXJzt5bOY38u082chjmMfZPEo8TuBR4FHtmmpyFLXzSCj9gnw9r3AzbAKFFEsSGkYPhBX8Pr/PpEQzVN5GeIfsWHVDg1fdqUFM1flbZjQNvrAcSMYcipxyXlGOLO7oB9HjL2FL9N5fow61r0fvxTvwuWgBkUHoohX4eN9Xfb9VoggdnUueoyaDDT+RYmaN3mhK4DhSb6Icdo1Zb7YbOT3QwRA473PgKgc2OrDWgbMcOM2BExyY5kCTAwkHfuXATxz4Wwe+5MBOBz7mwKH8c4bw21T+RfEO7w/p0PaTHYbyo+zAdgducuDtA8eB2Q4sUE8EggMtDqQceMaBvQ5814GvOH4W/6RehzSvn3+QeZBzkG1Q5lAeIjggCxzYPXBQCTow24EGFTn4nkPZuuofcMzhbjncgeMdGhp+ypGH9eh/iIi/JR32ZtucOibP5sv1I/rMownFiVFHHLksNz1r59XGaGn3J7TucjJw6oVoeHrj+ujcxDuZf3qpvL7dujF/4n9FdJx99aldpbEYfIkv4EFii5HRzLoQIPEQVMMyaAKyMk/9USAYYiepOXQbeGG3tFgYM4Ya50pL0xkSE00JuiSHg6R0VEZmqsFoKAmNS9QmloTS9VqXtkm7QbtDS2ulMdlFoDVom7Ukp5VceqPLWG0kldsG4z4jpTduMBKJpNEIVmtKJJRkZVmIhEg2adhJIf6U3uBLPlpV6V2eqyS18z9C+PqPEb74C03P4MM7KU7yjZkkTvKZhpwkWDfrZqwWu5t1j0biQO1NusOjj+/9fd/oX469iSTbx7YI3x7fd3zUYd2KJfc8aMUXxkbnkxS+MjZ6re2R22ordFt3IoNUy5VzmhDP7tqiq6jd+1yTY+rY9JaXn1Z09iy+gLcRW4AEUbKo370Qtob06EICJX16EUK2t3LwG5hZfa+ML/zxj8CA8q0yDkT+v/4OkR0FM37qd4rEbqgg8pU33ABUBIJUBLZREeXrk9rO7r/X9d9DVATCA/w/F6iP1d9v/2ygfw076TlQSX2svAf9vwMqAnOpCNxOAcwdaBP5yvsHtX4P/lp5EgagAFrx18rTm4pfS0VgjtIP4jpZSwHkE/ngoiKwJj6nWB8FYKeUb7r/y0Dshi//t8ccgREYgREYgREYgREYgREYgREYgREYgREYgREYgREYgREYgREYgREYgREYgREYClQEDP+/5/BzQPmfhv8CZL/OqQplbmRzdHJlYW0KZW5kb2JqCjE0IDAgb2JqCjw8L1R5cGUgL0ZvbnREZXNjcmlwdG9yCi9Gb250TmFtZSAvQkFBQUFBK0xpYmVyYXRpb25TYW5zCi9GbGFncyA0Ci9Bc2NlbnQgOTA1LjI3MzQ0Ci9EZXNjZW50IC0yMTEuOTE0MDYKL1N0ZW1WIDQ1Ljg5ODQzOAovQ2FwSGVpZ2h0IC02ODcuOTg4MjgKL0l0YWxpY0FuZ2xlIDAKL0ZvbnRCQm94IFstNTQzLjk0NTMxIC0zMDMuMjIyNjYgMTMwMS43NTc4MSA5NzkuOTgwNDddCi9Gb250RmlsZTIgMTMgMCBSPj4KZW5kb2JqCjE1IDAgb2JqCjw8L1R5cGUgL0ZvbnQKL0ZvbnREZXNjcmlwdG9yIDE0IDAgUgovQmFzZUZvbnQgL0JBQUFBQStMaWJlcmF0aW9uU2FucwovU3VidHlwZSAvQ0lERm9udFR5cGUyCi9DSURUb0dJRE1hcCAvSWRlbnRpdHkKL0NJRFN5c3RlbUluZm8gPDwvUmVnaXN0cnkgKEFkb2JlKQovT3JkZXJpbmcgKElkZW50aXR5KQovU3VwcGxlbWVudCAwPj4KL1cgWzAgWzc1MCAwIDAgMjc3LjgzMjAzXSA4IFs4ODkuMTYwMTZdIDE2IFszMzMuMDA3ODEgMjc3LjgzMjAzXSAxOSAyOCA1NTYuMTUyMzQgMjkgWzI3Ny44MzIwM10gNDEgWzYxMC44Mzk4NF0gNTMgWzcyMi4xNjc5NyA2NjYuOTkyMTkgNjEwLjgzOTg0XSA2OCA2OSA1NTYuMTUyMzQgNzIgWzU1Ni4xNTIzNCAyNzcuODMyMDMgMCA1NTYuMTUyMzQgMjIyLjE2Nzk3XSA3OSBbMjIyLjE2Nzk3XSA4MSA4MyA1NTYuMTUyMzQgODUgWzMzMy4wMDc4MV0gODcgWzI3Ny44MzIwMyA1NTYuMTUyMzQgMCA3MjIuMTY3OTddIDEyMSBbMzMzLjAwNzgxXSAyMDg4IFs1NTYuMTUyMzRdXQovRFcgNTAwPj4KZW5kb2JqCjE2IDAgb2JqCjw8L0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAzNTc+PiBzdHJlYW0KeJxdks1ugzAQhO9+Ch+TQ4RN+EklhJRAkDj0R6V5AAILRSoGGefA21f2JKnUA0bf4N0Zs/ayMi/VYLj3oaemIsO7QbWalummG+JX6gfFpM/boTF3cmsz1jPzsjKv1sXQWKpuYknCufdJ/bAYvfLNsZ2utGXeu25JD6rnm0tWbZlX3eb5h0ZShguWpryljnnZaz2/1SNxz5XtypaUGcy6u2TV346vdSbuO5ZI00wtLXPdkK5VTywRQoiUJ0VRFCkj1f77HqPq2jXftXa79ylPhPBF6ugACh3J2NE+AL2AIkc+KADFoFNs6eDbLr44Zi7B3UvKh/UzqRSuSkqY5rBBIBnCDbnkCWIO8eDE/X0LUoa+E4Pgkcu+IgkRxwqQMsLpAvQMMojoGZwhFhBPTgwRMESy6AwR7iFax3APjxDRM47vPwAnttOwt+Y56uamNSnjrpYbrx3soOh5++ZptlX2+QXOH7Z4CmVuZHN0cmVhbQplbmRvYmoKNSAwIG9iago8PC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMAovQmFzZUZvbnQgL0JBQUFBQStMaWJlcmF0aW9uU2FucwovRW5jb2RpbmcgL0lkZW50aXR5LUgKL0Rlc2NlbmRhbnRGb250cyBbMTUgMCBSXQovVG9Vbmljb2RlIDE2IDAgUj4+CmVuZG9iagp4cmVmCjAgMTcKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDM0OTkgMDAwMDAgbiAKMDAwMDAwMDE4MSAwMDAwMCBuIAowMDAwMDEyOTcyIDAwMDAwIG4gCjAwMDAwMjI4NTEgMDAwMDAgbiAKMDAwMDAwMDIxOCAwMDAwMCBuIAowMDAwMDAzNzE4IDAwMDAwIG4gCjAwMDAwMDM3NzMgMDAwMDAgbiAKMDAwMDAwMzg5MCAwMDAwMCBuIAowMDAwMDExNzc4IDAwMDAwIG4gCjAwMDAwMTIwMzIgMDAwMDAgbiAKMDAwMDAxMjU1NyAwMDAwMCBuIAowMDAwMDEzMTIzIDAwMDAwIG4gCjAwMDAwMjE2MzQgMDAwMDAgbiAKMDAwMDAyMTg4MyAwMDAwMCBuIAowMDAwMDIyNDIzIDAwMDAwIG4gCnRyYWlsZXIKPDwvU2l6ZSAxNwovUm9vdCA4IDAgUgovSW5mbyAxIDAgUj4+CnN0YXJ0eHJlZgoyMjk5NwolJUVPRgo=", "warnings": [], "engine": "preset", "engine_version": "jinja2 3.1.6; chromium 153.0.8010.12", "cache": "miss", "render_ms": 185, "queued_ms": 1 } ``` ## About [Callable Labs](https://callablelabs.com) · [Quickstart](https://callablelabs.com/docs/document-generation-api/quickstart?via=apyhub) · [API reference](https://callablelabs.com/docs/document-generation-api/reference?via=apyhub) ## What it does Receipt Generator turns structured receipt data into a rendered document. Send a receipt `data` object with the required `number`, `date`, `merchant`, and `items` fields, and choose the output format you need: `pdf`, `html`, `docx`, or the default `json` response. Use `items` to describe each line with `description` and `unit_price`, and add optional `quantity` and `tax_rate` when you need them. The `merchant` and optional `customer` objects support `name`, `email`, `phone`, `tax_id`, and address lines. You can also include `currency`, `payment_method`, `notes`, and page settings such as `size`, `margin_mm`, and `orientation` when generating PDF output. The response tells you what was rendered, including `format`, `media_type`, `bytes`, `engine`, `engine_version`, and `cache`. For PDF output it can also return `pages`, plus a `data_uri` when you request JSON. If rendering produces issues worth noting, they come back in `warnings`. Use Receipt Generator when you need to create downloadable receipts from checkout events, accounting records, or back-office exports without building your own document layout layer. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/callable-labs/service/generate-receipt-document-from-json-api * * * --- title: Generate Report Document from JSON API slug: generate-report-document-from-json-api url: https://apyhub.com/callable-labs/service/generate-report-document-from-json-api provider: Callable Labs categories: [Smart Generation] tags: [document-generation, reporting, pdf-rendering, docx-export, html-rendering] auth: api_key version: v1 service_type: sync endpoints: 1 atoms: 200 --- # Generate Report Document from JSON API Render structured JSON into PDF, HTML, or DOCX reports. Returns file bytes or a data URI plus render metadata, cache status, and page count. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/callable-labs/generate-report-document-from-json-api/v1/documents/preset/report` | What it does Generates a rendered report from JSON report content and returns the render metadata a… | 200 | ## Endpoint reference ### Generate a preset document from JSON (report) `POST https://api.eu.apyhub.com/callable-labs/generate-report-document-from-json-api/v1/documents/preset/report` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `data.date` | body | string | yes | Date Default: `14 October 2026`. | | `data.title` | body | string | yes | Title Default: `Quarterly Sales Review`. Example: `Quarterly Operations Review`. | | `data.author` | body | any | no | Author Default: `Example Company`. | | `data.footer` | body | any | no | Footer Default: `null`. | | `data.summary` | body | any | no | Executive summary printed before the sections. Default: `A review of quarterly sales and upcoming priorities.`. | | `data.sections` | body | array of object | yes | Sections | | `data.sections[].table` | body | any | no | Default: `{"rows":[["July","120"],["August","134"],["September","142"]],"columns":["Month","Orders"]}`. | | `data.sections[].bullets` | body | array of string | no | Bullets | | `data.sections[].heading` | body | string | yes | Heading Default: `Sales`. | | `data.sections[].paragraphs` | body | array of string | no | Paragraphs Default: `["Orders increased across the product range."]`. | | `data.subtitle` | body | any | no | Subtitle Default: `null`. | | `page.size` | body | string | no | Paper size. One of: A4, Letter, Legal, A3, A5. Default: `A4`. | | `page.margin_mm` | body | number | no | Uniform page margin in millimetres. Default: `18`. | | `page.orientation` | body | string | no | Orientation One of: portrait, landscape. Default: `portrait`. | | `format` | body | string | no | `pdf`, `html` or `docx` return the bytes; `json` (default) returns a PDF data URI plus metadata. One of: json, html, pdf, docx. Default: `pdf`. | | `download` | body | boolean | no | Send `Content-Disposition: attachment` so browsers save the file. Default: `false`. | #### Quickstart Render a report from the required report data and return JSON metadata by default. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/generate-report-document-from-json-api/v1/documents/preset/report" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "data": { "title": "Quarterly Operations Review", "date": "18 September 2026", "sections": [ { "heading": "Volume", "paragraphs": ["Requests grew steadily through the quarter."] } ] } }' ``` #### What you'll get back Returns a JSON object with metadata about the render. The schema declares top-level fields such as `bytes` (`integer`), `cache` (`hit` or `miss`), `pages` (`integer` or `null`), `engine` (`string`), `format` (`docx`, `pdf`, or `html`), `data_uri` (`string`), `warnings` (`string[]`), `queued_ms` (`integer`), `render_ms` (`integer`), `media_type` (`string`), and `engine_version` (`string`). ```json { "bytes": 12345, "cache": "miss", "pages": 2, "engine": "render-report-preset", "format": "pdf", "data_uri": "data:application/pdf;base64,...", "warnings": [], "queued_ms": 12, "render_ms": 340, "media_type": "application/pdf", "engine_version": "1.0.0" } ``` ## About [Callable Labs](https://callablelabs.com) · [Quickstart](https://callablelabs.com/docs/document-generation-api/quickstart?via=apyhub) · [API reference](https://callablelabs.com/docs/document-generation-api/reference?via=apyhub) ## What it does Report Generator turns structured JSON into a formatted report document. Send report content with a title, date, and one or more sections, then choose the output format you need: PDF, HTML, DOCX, or JSON metadata. Use the `body.data` object to provide report content. The schema supports an optional `subtitle`, `author`, `footer`, and `summary`, plus up to 50 sections. Each section needs a `heading` and can include `paragraphs`, `bullets`, or a `table` with `columns`, `rows`, and an optional `caption`. You can also set page options such as `size`, `margin_mm`, and `orientation`, and control whether the result is downloaded as a file. The response includes rendering details such as `bytes`, `cache`, `pages`, `engine`, `format`, `data_uri`, `warnings`, `queued_ms`, `render_ms`, `media_type`, and `engine_version`. For PDF output, `pages` reports the page count; for DOCX and HTML, it is null. That makes it useful for operational reports, summaries, status updates, and templated documents where you already have the content in JSON and need consistent output across runs. Use Report Generator when your app assembles report data programmatically and you need predictable document rendering without building a layout engine yourself. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/callable-labs/service/generate-report-document-from-json-api * * * --- title: "Validate & Generate Documents from Templates" slug: validate-generate-documents-from-templates url: https://apyhub.com/callable-labs/service/validate-generate-documents-from-templates provider: Callable Labs categories: [Smart Generation] tags: [document-generation, template-rendering, docx, html-to-pdf, markdown-to-html] auth: api_key version: v1 service_type: sync endpoints: 3 atoms: 30-250 --- # Validate & Generate Documents from Templates Validate DOCX templates and render DOCX, HTML, or PDF from JSON data. Get variable checks, syntax errors, and generated document output. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/callable-labs/validate-generate-documents-from-templates/v1/documents/validate` | What it does Validates a .docx template and checks it against optional input data. It returns wheth… | 30 | | POST | `https://api.eu.apyhub.com/callable-labs/validate-generate-documents-from-templates/v1/documents/render` | What it does Fills a DOCX template using the values you provide in the request body. The endpoint c… | 250 | | POST | `https://api.eu.apyhub.com/callable-labs/validate-generate-documents-from-templates/v1/documents/html` | What it does Renders a Jinja2 template from template using the values in data, with optional stylin… | 150 | ## Endpoint reference ### Validate a DOCX template `POST https://api.eu.apyhub.com/callable-labs/validate-generate-documents-from-templates/v1/documents/validate` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `data` | body | string | no | Optional JSON object to check against the template's variables | | `template` | body | string (binary) | yes | The .docx template to inspect | #### Quickstart Validate a `.docx` template by uploading the template file and, optionally, a JSON string of template data. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/validate-generate-documents-from-templates/v1/documents/validate" \ -H "apy-token: $APY_TOKEN" \ -F "template=@/path/to/template.docx" \ -F 'data={"name":"Ava","company":"ApyHub"}' ``` #### What you'll get back Returns a JSON object with these top-level fields: `ok` boolean, `engine` string, `unused` array of strings, `undefined` array of strings, `variables` array of strings, and `syntax_errors` array of objects. `ok` is `false` when the template has syntax errors. ```json { "ok": true, "engine": "docxtemplater", "unused": [], "undefined": [], "variables": ["name", "company"], "syntax_errors": [] } ``` ### Fill a DOCX template `POST https://api.eu.apyhub.com/callable-labs/validate-generate-documents-from-templates/v1/documents/render` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `data.logo` | body | string | no | Default: ``. | | `data.note` | body | string | no | Default: `Paid`. | | `data.intro` | body | string | no | Default: `Thank you for your order.`. | | `data.items` | body | array of object | no | | | `data.items[].qty` | body | number | no | Default: `2`. | | `data.items[].name` | body | string | no | Default: `Widget`. | | `data.items[].price` | body | number | no | Default: `9.5`. | | `data.number` | body | string | no | Default: `INV-2026-1042`. | | `data.customer.name` | body | string | no | Default: `Ada`. | | `format` | body | string | no | `docx` returns the filled document, `pdf` returns a PDF, `json` (default) returns the DOCX as a base64 data URI plus metadata. One of: json, docx, pdf. Default: `json`. | | `download` | body | boolean | no | Send `Content-Disposition: attachment` so browsers save the file. Default: `false`. | | `template_base64` | body | string | yes | The .docx template, base64-encoded (≤ 5 MiB decoded). Default: `UEsDBBQAAAAIAA6uMl2tUqWRlQEAAMoGAAATAAAAW0NvbnRlbnRfVHlwZXNdLnhtbLWVTU/bQBCG7/0Vli8+IHtDDxWq4nAocCyRGkSvm/U4Wdgv7UwC+ffMOolV0VCHBi6RnJn… | #### Quickstart Render a DOCX template from base64 and return the rendered result in the default JSON format. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/validate-generate-documents-from-templates/v1/documents/render" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "template_base64": "UEsDBBQAAAAIA...", "data": { "customer": { "name": "Ada Lovelace" }, "items": [ { "name": "Widget", "qty": 2, "price": 9.5 } ] } }' ``` #### What you'll get back Returns a JSON object with rendering metadata such as `bytes` (`integer`), `cache` (`"hit"` or `"miss"`), `pages` (`integer` or `null`), `engine` (`string`), `format` (`"docx"`, `"pdf"`, or `"html"`), `data_uri` (`string`), `warnings` (`array` of strings), `queued_ms` (`integer`), `render_ms` (`integer`), `media_type` (`string`), and `engine_version` (`string`). ```json { "bytes": 12345, "cache": "miss", "pages": null, "engine": "libreoffice", "format": "docx", "data_uri": "data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,...", "warnings": [], "queued_ms": 12, "render_ms": 45, "media_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "engine_version": "7.6.0" } ``` ### Render an HTML or Markdown template `POST https://api.eu.apyhub.com/callable-labs/validate-generate-documents-from-templates/v1/documents/html` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `css` | body | any | no | Extra stylesheet appended to the document shell. External URLs are never fetched. | | `data.name` | body | string | no | Default: `Ada`. | | `page.size` | body | string | no | Paper size. One of: A4, Letter, Legal, A3, A5. Default: `A4`. | | `page.margin_mm` | body | number | no | Uniform page margin in millimetres. Default: `18`. | | `page.orientation` | body | string | no | Orientation One of: portrait, landscape. Default: `portrait`. | | `title` | body | any | no | `` of the document shell. | | `format` | body | string | no | `html` or `pdf` return the bytes; `json` (default) returns the HTML as a data URI plus metadata. One of: json, html, pdf. Default: `pdf`. | | `download` | body | boolean | no | Send `Content-Disposition: attachment` so browsers save the file. Default: `false`. | | `markdown` | body | boolean | no | Treat the rendered template as Markdown (CommonMark + tables) and convert it to HTML. Default: `true`. | | `template` | body | string | yes | Jinja2 template in HTML or Markdown (≤ 256 KiB). Values are HTML-escaped; use `{{ value \| safe }}` to insert markup on purpose. A fragment is wrapped in a document shell with consistent fonts; a full… | #### Quickstart Render a simple HTML template with the minimum required input. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/validate-generate-documents-from-templates/v1/documents/html" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "template": "<h1>Hello {{ name }}</h1>", "data": { "name": "Ada" } }' ``` #### What you'll get back Returns a JSON object with rendering metadata. Top-level fields include `bytes` (integer), `cache` (`hit` or `miss`), `pages` (integer or `null`), `engine` (string), `format` (`docx`, `pdf`, or `html`), `data_uri` (string), `warnings` (array of strings), `queued_ms` (integer), `render_ms` (integer), `media_type` (string), and `engine_version` (string). ```json { "bytes": 1234, "cache": "miss", "pages": null, "engine": "render-html-template", "format": "html", "data_uri": "data:text/html;base64,PGgxPkhlbGxvIEFkYTwvaDE+", "warnings": [], "queued_ms": 12, "render_ms": 34, "media_type": "text/html", "engine_version": "1.0.0" } ``` ## About [Callable Labs](https://callablelabs.com) · [Quickstart](https://callablelabs.com/docs/document-generation-api/quickstart?via=apyhub) · [API reference](https://callablelabs.com/docs/document-generation-api/reference?via=apyhub) ## What it does Document Template Renderer fills and validates DOCX, HTML, and Markdown templates from JSON data. Send a template plus the values it reads, and get back validation details, rendered HTML, or a filled document in DOCX or PDF format. Use the DOCX validation endpoint to inspect a template before generation. It reports whether the template is syntactically valid and can return the variables it reads, missing keys from your data, unused keys, and syntax errors with line numbers. That makes it useful for catching broken invoice, contract, or report templates before they reach production. Use the rendering endpoints when you need finished output from templated content. For DOCX templates, provide the template as base64 and optional `data`, `format`, and `download` settings. For HTML or Markdown templates, send `template`, optional `data`, `css`, `page`, `title`, `format`, `download`, and `markdown`. The response includes the rendered bytes or `data_uri`, plus metadata such as `bytes`, `media_type`, `engine`, `engine_version`, `format`, `warnings`, and timing fields. Document Template Renderer fits workflows like automated invoice generation, customer letters, proposals, and report exports where the template structure is known and the final document needs to be generated consistently from application data. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/callable-labs/service/validate-generate-documents-from-templates * * * --- title: Retrieve Country Bank List API slug: retrieve-country-bank-list url: https://apyhub.com/apyhub/service/retrieve-country-bank-list provider: ApyHub categories: [Finance, Standard Data] tags: [bank-directory, bank-lookup, country-data, swift-codes, financial-reference] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 20 --- # Retrieve Country Bank List API Bank list API: get every bank in a country with its name, local bank code and SWIFT/BIC, for payout forms and bank dropdowns. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/apyhub/retrieve-country-bank-list/bank/countries` | What it does Returns the list of countries supported by the bank service. The response is a JSON ob… | 20 | | GET | `https://api.eu.apyhub.com/apyhub/retrieve-country-bank-list/bank/countries/:country/banks` | What it does Returns the list of banks for the specified country as a JSON object containing a data… | 20 | ## Endpoint reference ### List supported countries `GET https://api.eu.apyhub.com/apyhub/retrieve-country-bank-list/bank/countries` · 20 atoms · accepts `application/json` #### Quickstart Fetch the list of supported bank countries. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/retrieve-country-bank-list/bank/countries" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` array field. Each item in `data` is an object with `name`, `code`, and `currency` fields. ```json { "data": [ { "name": "Nigeria", "code": "NG", "currency": "NGN" } ] } ``` ### List banks for a country `GET https://api.eu.apyhub.com/apyhub/retrieve-country-bank-list/bank/countries/:country/banks` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `country` | path | string | yes | Example: `NG`. | #### Quickstart Fetch the list of banks for a country code, such as `NG`. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/retrieve-country-bank-list/bank/countries/:country/banks" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` array. Each item in the array is an object with `id` (integer), `name` (string), `code` (string or `null`), and `SWIFT` (string or `null`). ```json { "data": [ { "id": 1, "name": "Access Bank", "code": "044", "SWIFT": "ABNGNGLA" } ] } ``` ## About ## What it does The Bank List API returns the banks in a country with their names, local bank codes, and SWIFT/BIC codes. Call `/bank/countries` to get the supported countries, each with its ISO 3166-1 alpha-2 `code` and ISO 4217 `currency`, then call `/bank/countries/{country}/banks` with a code such as `NG`, `KE`, or `GR` to get that country's list as a `data` array of `id`, `name`, `code`, and `SWIFT`. Coverage spans over 200 countries and territories, and the country code works in upper or lower case. Local bank codes are filled where a country uses them: Nigeria returns the CBN and NIBSS codes payment providers expect, such as `044` for Access Bank and `057` for Zenith Bank. Elsewhere `code` can be `null` and the SWIFT/BIC is the identifier to use, so handle both fields as nullable. Lists include banks, microfinance banks, and other institutions registered for SWIFT. An unsupported code returns `Unsupported country`. Use the bank list API to build bank dropdowns in payout and beneficiary forms, look up bank codes in Nigeria for transfers, prefill SWIFT codes in onboarding, or map bank names during payment reconciliation. Check account details with the [IBAN Validation API](https://apyhub.com/apyhub/service/validate-iban) and confirm codes with the [SWIFT Code Validator API](https://apyhub.com/apyhub/service/validate-swift-bic-code). For US routing numbers, use the [US Bank Routing Number API](https://apyhub.com/werouteapi/service/us-bank-directory-lookup-api), and for full country details, the [Countries Dictionary API](https://apyhub.com/apyhub/service/list-all-countries). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/retrieve-country-bank-list * * * --- title: "Web Search & Analysis API" slug: web-search-analysis url: https://apyhub.com/skycraft/service/web-search-analysis provider: Skycraft categories: [Data Extraction, Data Validation, SEO] tags: [web-search, content-extraction, page-rank, publish-date, author-extraction, email-verification] auth: api_key version: 1.9.0 service_type: sync endpoints: 5 atoms: 20 --- # Web Search & Analysis API Search the web, extract webpage content, retrieve website rankings, and find article publication dates and author details using one API. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/skycraft/web-search-analysis/retrieve-page-rank` | What it does Retrieves the page rank information for a domain passed in the query string. The respo… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/web-search-analysis/extract-publish-date` | What it does Extracts the publish date from the web page at the provided URL and returns it in the… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/web-search-analysis/search-web` | What it does Searches the web for the supplied query and returns a JSON object containing a results… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/web-search-analysis/extract-content` | What it does Extracts the main content from a web page URL and returns a JSON object containing the… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/web-search-analysis/extract-authors` | What it does Extracts author information from the page at the provided URL and returns it in a JSON… | 20 | ## Endpoint reference ### Retrieve Page Rank API `GET https://api.eu.apyhub.com/skycraft/web-search-analysis/retrieve-page-rank` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `domain` | query | string | yes | Example: `amazon.com`. | #### Quickstart Look up the page rank for a domain by passing it as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/web-search-analysis/retrieve-page-rank?domain=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these optional top-level fields: `position` as an integer, `page_rank` as a number, and `percentile` as a number. ```json { "page_rank": 3.85, "position": 3171874, "percentile": 0.6828126999999999 } ``` ### Extract Publish Date API `GET https://api.eu.apyhub.com/skycraft/web-search-analysis/extract-publish-date` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | yes | Example: `https://www.nytimes.com/2024/03/27/world/australia/economy-cost-of-living.html`. | #### Quickstart Extract the publish date from a webpage by passing its `url` as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/web-search-analysis/extract-publish-date?url=https%3A%2F%2Fwww.nytimes.com%2F2024%2F03%2F27%2Fworld%2Faustralia%2Feconomy-cost-of-living.html" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `publish_date` string field, which may be `null` if the date can't be determined. ```json { "publish_date": "2024-03-27" } ``` ### Search Web API `GET https://api.eu.apyhub.com/skycraft/web-search-analysis/search-web` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `query` | query | string | yes | Example: `penguins`. | | `number` | query | integer (int32) | no | Example: `5`. | #### Quickstart Search the web for a required query term, optionally limiting the number of results. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/web-search-analysis/search-web?query=apyhub" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `results` array. Each item in `results` is an object that may include `url`, `title`, and `summary` strings. ```json { "results": [ { "url": "//duckduckgo.com/l/?uddg=https%3A%2F%2Fapyhub.com%2F&rut=fba80afb4ac1bc4096e1fdf39557fedad9b2e5cb5bc35514c05b8389dc6c8e6d", "title": "ApyHub | Certified APIs for Developers and Agents", "summary": "Certified, production-ready APIs for the features every product eventually needs. One subscription, one bill, MCP-ready by default. Free tier, no card." }, { "url": "//duckduckgo.com/l/?uddg=https%3A%2F%2Fapyhub.com%2Fcatalog&rut=11f48187f8ec0e5c23600bd353a30dea0c8920901825b643ca30057bbdb2648e", "title": "API Catalog | Certified, MCP-Ready API Endpoints - ApyHub", "summary": "Browse a growing catalog of certified APIs for AI, file conversion, data extraction, and validation. One subscription, MCP-ready. Free tier." }, { "url": "//duckduckgo.com/l/?uddg=https%3A%2F%2Fapyhub.com%2Fabout&rut=4731205ce427171792b700157d9c24016742b625aefe541ac99839f6774709e3", "title": "About ApyHub | Why We Built the Trusted API Layer", "summary": "The API catalog, redesigned for how teams actually consume APIs. Why we built ApyHub, how atoms work, and what certification actually means in practice." }, { "url": "//duckduckgo.com/l/?uddg=https%3A%2F%2Fapyhub.com%2Fpricing&rut=b9a3358a874afaf6c071d387c43ca2a91eb7b1eb40c09bf5e42a48f1a51b02e7", "title": "ApyHub Pricing | One Subscription, the Whole Catalog", "summary": "Usage-based pricing across every API in the catalog. You pay in atoms, so a small lookup never costs the same as a heavy conversion." }, { "url": "//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.producthunt.com%2Fproducts%2Fapyhub&rut=ecc2f496df165bf0eab06e71644c4f18aff2ce2a7df4f78eba4b58a1ccf5371f", "title": "ApyHub: The API Discovery and Consumption Layer for devs and agents", "summary": "ApyHub API Ecosystem is a powerful API utility management system that can help developers save time and money. The platform offers a wide range of APIs, from simple utilities to cutting-edge AI-powered services." }, { "url": "//duckduckgo.com/l/?uddg=https%3A%2F%2Fapyhub.com%2Fquickstart&rut=5c4af07b01facfa0c544486c1a7e5477f5dc5acaeb8ab45de22ee5ef5da1ad2e", "title": "ApyHub Quickstart | First API Call in 5 Minutes", "summary": "One subscription, the whole catalog, pricing that reflects the actual work. Get from sign-up to your first production call in about five minutes." }, { "url": "//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.linkedin.com%2Fcompany%2Fapyhub&rut=6ca4ce39f7c403ee0a4855ca0a45b0bf349c2aed60a18c5f09a27462c1b65505", "title": "ApyHub - LinkedIn", "summary": "ApyHub is the fastest-growing API catalogs in the AI space. 200+ certified APIs and 1,000+ endpoints to build with. AI services, Video and Image Manipulation, Document Conversions, Data validation ..." }, { "url": "//duckduckgo.com/l/?uddg=https%3A%2F%2F1000.tools%2Fapyhub&rut=217c9d24f8fdf345abf4e313c8d57d5051e5436a339dc8de8eab7c3afc5c8d9c", "title": "ApyHub - 1000.tools", "summary": "ApyHub is an all-in-one developer platform offering APIs for common functionalities and standard data that can be consumed as a service within software applications. Our platform" }, { "url": "//duckduckgo.com/l/?uddg=https%3A%2F%2Fwww.producthunt.com%2Fproducts%2Fapyhub%2Freviews&rut=6f5092882a0972508ac68c38e265a71a68e490e8caaba27a140709c2ff360514", "title": "ApyHub Reviews (2026) | Product Hunt", "summary": "ApyHub API Ecosystem is a powerful API utility management system that can help developers save time and money. The platform offers a wide range of APIs, from simple utilities to cutting-edge AI-powered services." }, { "url": "//duckduckgo.com/l/?uddg=https%3A%2F%2Fgithub.com%2Fapi%2Devangelist%2Fapyhub&rut=71be29bb79596b163a6e197e4a167236c4a33942dec538d7545ce8fccdb23c36", "title": "GitHub - api-evangelist/apyhub: ApyHub — independent third-party", "summary": "ApyHub — independent third-party profile of a public API surface, by API Evangelist. ApyHub is an API platform that provides a collection of utility APIs for common development tasks such as document conversion, data processing, image manipulation, currency exchange, and more." } ] } ``` ### Extract Content from a Web Page API `GET https://api.eu.apyhub.com/skycraft/web-search-analysis/extract-content` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | yes | Example: `https://www.nytimes.com/2024/03/27/world/australia/economy-cost-of-living.html`. | #### Quickstart Fetch extracted content from a webpage by passing the page URL as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/web-search-analysis/extract-content?url=https%3A%2F%2Fwww.nytimes.com%2F2024%2F03%2F27%2Fworld%2Faustralia%2Feconomy-cost-of-living.html" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `title`, `images`, `main_html`, and `main_text` fields. `title`, `main_html`, and `main_text` are nullable strings, and `images` is an array of nullable strings. ```json { "title": "Example article title", "images": ["https://example.com/image.jpg"], "main_html": "<article>...</article>", "main_text": "Example extracted article text" } ``` ### Extract Authors API `GET https://api.eu.apyhub.com/skycraft/web-search-analysis/extract-authors` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | yes | Example: `https://www.nytimes.com/2024/03/27/world/australia/economy-cost-of-living.html`. | #### Quickstart Fetch authors for a given article URL by passing the URL as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/web-search-analysis/extract-authors?url=https%3A%2F%2Fwww.nytimes.com%2F2024%2F03%2F27%2Fworld%2Faustralia%2Feconomy-cost-of-living.html" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with an `authors` array field. Each item in `authors` is an object with optional `link` and `name` string fields, both of which may be `null`. ```json { "authors": [ { "link": "https://www.nytimes.com/by/jane-doe", "name": "Jane Doe" } ] } ``` ## About ## What it does The **Web Search & Analysis API** helps you search the web, extract webpage content, retrieve website ranking information, and identify article metadata. Use **Search Web** to find relevant webpages by providing a search query. Use **Extract Content from a Web Page** to retrieve the title, images, HTML, and main text from a specific webpage by passing its URL. For article information, use **Extract Publish Date** to retrieve the publication date of an article and **Extract Authors** to identify the author names and profile links. For both endpoints, provide the URL of the specific article or webpage you want to analyze. Use **Retrieve Page Rank** to get ranking information for a website by providing its domain name. The response includes the position, page rank score, and percentile. These endpoints are useful for web research, content analysis, SEO insights, and article metadata extraction. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/skycraft/service/web-search-analysis * * * --- title: Basic Sentiment Analysis API slug: basic-sentiment-analysis url: https://apyhub.com/skycraft/service/basic-sentiment-analysis provider: Skycraft categories: [Artificial Intelligence] tags: [sentiment-analysis, text-analysis, nlp] auth: api_key version: v1 service_type: sync endpoints: 1 atoms: 20 --- # Basic Sentiment Analysis API Detect positive, negative or neutral sentiment in text, with an overall score plus per-sentence results and confidence. Simple REST API, JSON output. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/skycraft/basic-sentiment-analysis/detect-sentiment` | What it does Analyzes the sentiment of the text passed in the request and returns sentiment results… | 20 | ## Endpoint reference ### Detect Sentiment API `GET https://api.eu.apyhub.com/skycraft/basic-sentiment-analysis/detect-sentiment` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | query | string | yes | Example: `Happy times feel so good.`. | #### Quickstart Check the sentiment of a piece of text by passing it as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/basic-sentiment-analysis/detect-sentiment?text=Happy%20times%20feel%20so%20good." \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with optional `document` and `sentences` fields. `document` is an object with `sentiment` (`string` or `null`), `confidence` (`integer`), and `average_confidence` (`integer`). `sentences` is an array of objects, each with `length` (`integer`), `offset` (`integer`), `sentiment` (`string` or `null`), and `confidence` (`integer`). ```json { "document": { "sentiment": "positive", "confidence": 98, "average_confidence": 97 }, "sentences": [ { "length": 25, "offset": 0, "sentiment": "positive", "confidence": 98 } ] } ``` ## About ## What it does Basic Sentiment Analysis API tells you whether a piece of text reads as positive, negative, or neutral. Send text as the `text` query parameter and get back JSON with an overall sentiment for the whole input plus a breakdown for each sentence. `Detect Sentiment` takes `text` and returns a `document` object with the overall `sentiment`, its `confidence`, and the `average_confidence` across sentences, along with a `sentences` array where each entry gives that sentence's `sentiment`, `confidence`, and its `offset` and `length` in the original text. Basic Sentiment Analysis API is a good fit when you need to triage customer reviews or support tickets, track tone in social posts, or flag negative passages inside longer feedback without training your own model. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/skycraft/service/basic-sentiment-analysis * * * --- title: "Language Detection & Text Tagging API" slug: language-detection-text-tagging url: https://apyhub.com/skycraft/service/language-detection-text-tagging provider: Skycraft categories: [Artificial Intelligence] tags: [text-analysis, natural-language-processing, sentiment-analysis, language-detection, spell-check, readability] auth: api_key version: 1.9.0 service_type: sync endpoints: 3 atoms: 20 --- # Language Detection & Text Tagging API Detect the language of any text with confidence scores, stem words to their root form, and tag parts of speech. Simple REST API with JSON responses. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/skycraft/language-detection-text-tagging/stem-text` | What it does Converts words in the provided text into their stemmed or root forms. This is useful f… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/language-detection-text-tagging/detect-language` | What it does Detects the language of the provided text. It supports 99 languages (Apache OpenNLP la… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/language-detection-text-tagging/tag-pos` | What it does Identifies the part of speech of words in the provided text and returns the text with… | 20 | ## Endpoint reference ### Stem Text API `GET https://api.eu.apyhub.com/skycraft/language-detection-text-tagging/stem-text` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | query | string | yes | Example: `The laziest dogs are jumping over the quicker brown foxes.`. | #### Quickstart Call this endpoint with your ApyHub API key: ```bash curl "https://api.eu.apyhub.com/skycraft/language-detection-text-tagging/stem-text?text=The%20cats%20are%20running%20in%20the%20gardens." \ -H 'apy-token: $APY_TOKEN' ``` ##### What you'll get back ```json { "original": "The cats are running in the gardens.", "stemmed": "The cat are run in the garden." } ``` ### Detect Language API `GET https://api.eu.apyhub.com/skycraft/language-detection-text-tagging/detect-language` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | query | string | yes | Example: `Das ist ein Text.`. | #### Quickstart Call this endpoint with your ApyHub API key: ```bash curl "https://api.eu.apyhub.com/skycraft/language-detection-text-tagging/detect-language"?text=Das%20ist%20ein%20Text." \ -H 'apy-token: $APY_TOKEN' ``` ### Tag Part of Speech API `GET https://api.eu.apyhub.com/skycraft/language-detection-text-tagging/tag-pos` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | query | string | yes | Example: `The lazy dog jumps over the quick brown fox.`. | #### Quickstart Analyze the parts of speech in a sentence. ```bash curl "https://api.eu.apyhub.com/skycraft/language-detection-text-tagging/tag-pos?text=The%20lazy%20dog%20jumps%20over%20the%20quick%20brown%20fox." \ -H 'apy-token: $APY_TOKEN' ``` ##### What you'll get back ```json { "tagged_text": "The/AT lazy/JJ dog/NN jumps/NNS over/UNDER the/AT quick/RB brown/JJ fox/NN" } ``` ## About ## What it does Language Detection & Text Tagging API runs core linguistic preprocessing on a piece of text. Send a sentence or passage as a single `text` query parameter and get back structured JSON: the detected language with confidence scores, a stemmed version of the text, or the text annotated with part-of-speech tags. `Detect Language` takes `text` and returns a list of candidate languages, each with a `language` code and a `confidence` score, most likely first; it works best on a full sentence or more. `Stem Text` takes `text` and returns the `original` alongside a `stemmed` version where each word is reduced to its root form, so "jumping" and "jumped" match. `Tag Part of Speech` takes `text` and returns `tagged_text`, the same text with a grammatical tag attached to each word. Language Detection & Text Tagging API is a good fit when you need to route user content by language, normalize text before search indexing or matching, or feed grammatical structure into a lightweight NLP pipeline without hosting your own models. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/skycraft/service/language-detection-text-tagging * * * --- title: "Text Analysis & Scoring API" slug: text-analysis-scoring url: https://apyhub.com/skycraft/service/text-analysis-scoring provider: Skycraft categories: [Artificial Intelligence, Smart Generation] tags: [readability, text-analysis, content-quality, writing-score] auth: api_key version: v1 service_type: sync endpoints: 2 atoms: 20 --- # Text Analysis & Scoring API Score text readability with Flesch, Fog, SMOG and more, plus style, skimmability and interestingness scores, word and sentence counts. JSON REST API. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/skycraft/text-analysis-scoring/score-readability` | What it does Scores the readability of the provided text and returns a JSON object containing a rea… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/text-analysis-scoring/score-text` | What it does Scores a piece of text by evaluating the supplied title and text query parameters and… | 20 | ## Endpoint reference ### Score Readability API `GET https://api.eu.apyhub.com/skycraft/text-analysis-scoring/score-readability` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | query | string | yes | Example: `A rather complex text, hard to read, and highly convoluted using acronym TERMS.`. | #### Quickstart Check the readability score for a piece of text by passing it as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/text-analysis-scoring/score-readability?text=A%20rather%20complex%20text%2C%20hard%20to%20read%2C%20and%20highly%20convoluted%20using%20acronym%20TERMS." \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `readability` object. Inside it, `subscores` contains numeric readability metrics such as `ari`, `fog`, `lix`, `smog`, `flesch`, `forcast`, `kincaid`, `coleman_liau`, and `reading_time_seconds`, and `mainscores` contains `total` and `total_possible` integers. ```json { "readability": { "subscores": { "ari": 0, "fog": 0, "lix": 0, "smog": 0, "flesch": 0, "forcast": 0, "kincaid": 0, "coleman_liau": 0, "reading_time_seconds": 0 }, "mainscores": { "total": 0, "total_possible": 0 } } } ``` ### Score Text API `GET https://api.eu.apyhub.com/skycraft/text-analysis-scoring/score-text` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | query | string | yes | Example: `A nice short story to be analyzed`. | | `title` | query | string | yes | Example: `A short story`. | #### Quickstart Score a text by passing its `title` and `text` as query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/text-analysis-scoring/score-text?title=A%20short%20story&text=A%20nice%20short%20story%20to%20be%20analyzed" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with score breakdowns for `style`, `readability`, `skimmability`, and `interestingness`, plus `total_score`, `number_of_words`, and `number_of_sentences`. - `style`, `readability`, `skimmability`, and `interestingness` are objects with `subscores` and `mainscores`. - `total_score` is a number. - `number_of_words` and `number_of_sentences` are integers. ```json { "number_of_words": 7, "number_of_sentences": 1, "readability": { "mainscores": { "total": 10.0, "total_possible": 10 }, "subscores": { "forcast": -1.0, "flesch": 78.873, "smog": 8.842, "ari": 0.237, "lix": -1.0, "kincaid": 3.997, "fog": 8.514, "coleman_liau": 2.633, "reading_time_seconds": 1 } }, "skimmability": { "mainscores": { "total": 3.08, "total_possible": 10 }, "subscores": { "highlighted_word_ratio_score": [0, 2], "bullet_point_ratio_score": [0, 2], "paragraph_headline_ratio_score": [0, 2], "image_score": [0, 3], "video_score": [0, 1], "paragraph_score": [4, 3] } }, "interestingness": { "mainscores": { "total": 3.57, "total_possible": 10 }, "subscores": { "google_hits_score": [4, 4], "link_score": [0, 2], "quote_score": [0, 1], "title_rating_score": [1, 4], "length_score": [0, 2] } }, "style": { "mainscores": { "total": 10.0, "total_possible": 10 }, "subscores": { "abbreviation_score": [3, 3], "style_score": [5, 5], "spelling_score": [5, 5] } }, "total_score": 6.66 } ``` ## About ## What it does Text Analysis & Scoring API grades how readable and engaging a piece of writing is. Send text (and optionally its title) as query parameters and get back JSON with standard readability metrics, sub-scores, and overall totals. `Score Readability` takes `text` and returns a `readability` object with subscores from established formulas (Flesch, Flesch-Kincaid, Gunning Fog, SMOG, ARI, Coleman-Liau, LIX, FORCAST), an estimated `reading_time_seconds`, and a `mainscores` total out of a possible maximum. `Score Text` takes both `title` and `text` and returns broader breakdowns for `readability`, `style`, `skimmability`, and `interestingness`, plus a `total_score`, `number_of_words`, and `number_of_sentences`. Text Analysis & Scoring API is a good fit when you need to check content quality in an editorial workflow, enforce a reading-level target for help docs or marketing copy, or compare drafts with a consistent, deterministic score. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/skycraft/service/text-analysis-scoring * * * --- title: "Text Correction & Word Tools API" slug: text-correction-word-tools url: https://apyhub.com/skycraft/service/text-correction-word-tools provider: Skycraft categories: [Smart Generation, Standard Data] tags: [spell-check, spelling-correction, grammar, text-processing] auth: api_key version: v1 service_type: sync endpoints: 4 atoms: 20 --- # Text Correction & Word Tools API Correct spelling in text, list synonyms for a word, and singularize or pluralize nouns with one REST call. Clean JSON output, no word lists to maintain. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/skycraft/text-correction-word-tools/correct-spelling` | What it does Corrects the spelling in the provided text for the specified language and returns the… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/text-correction-word-tools/list-synonyms` | What it does Returns a JSON object containing a synonyms array for the requested word. You provide… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/text-correction-word-tools/singularize-word` | What it does Converts a provided word into its singular form and returns both the original input an… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/text-correction-word-tools/pluralize-word` | What it does Pluralizes a single input word and returns the plural form alongside the original word… | 20 | ## Endpoint reference ### Correct Spelling API `GET https://api.eu.apyhub.com/skycraft/text-correction-word-tools/correct-spelling` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | query | string | yes | Example: `Driving carss is fun.`. | | `language` | query | string | yes | One of: en, de, es, fr, it. Example: `en`. | #### Quickstart Corrects the spelling of the provided text for the given language. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/text-correction-word-tools/correct-spelling?text=Driving%20carss%20is%20fun.&language=en" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `corrected_text` string field, which may be `null` if no correction is available. ```json { "corrected_text": "Driving cars is fun." } ``` ### List Word Synonyms API `GET https://api.eu.apyhub.com/skycraft/text-correction-word-tools/list-synonyms` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `word` | query | string | yes | Example: `airplane`. | #### Quickstart Look up synonyms for a word by passing it as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/text-correction-word-tools/list-synonyms?word=airplane" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `synonyms` array field. Each item in the array is a string, and items may be `null`. ```json { "synonyms": ["aeroplane", "plane", "aircraft"] } ``` ### Singularize Word API `GET https://api.eu.apyhub.com/skycraft/text-correction-word-tools/singularize-word` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `word` | query | string | yes | Example: `airplanes`. | #### Quickstart Singularize a word by passing it as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/text-correction-word-tools/singularize-word?word=airplanes" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `original` and `singular` string fields, both nullable. `original` is the input word, and `singular` is its singular form. ```json { "original": "airplanes", "singular": "airplane" } ``` ### Pluralize Word API `GET https://api.eu.apyhub.com/skycraft/text-correction-word-tools/pluralize-word` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `word` | query | string | yes | Example: `party`. | #### Quickstart Pluralize a single word by passing it as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/text-correction-word-tools/pluralize-word?word=party" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with two optional string fields: `plural` for the pluralized form, and `original` for the word you sent. ```json { "plural": "parties", "original": "party" } ``` ## About ## What it does Text Correction & Word Tools API fixes spelling and transforms individual words. Send a passage of text or a single word as a query parameter and get back JSON with the corrected text, a list of synonyms, or the word's singular or plural form next to the original. `Correct Spelling` takes `text` plus a `language` code (for example `en`) and returns `corrected_text` with misspellings fixed. `List Word Synonyms` takes a `word` and returns a `synonyms` array of strings. `Singularize Word` takes a `word` and returns the `original` and its `singular` form, and `Pluralize Word` does the reverse, returning the `original` and its `plural` form. Text Correction & Word Tools API is a good fit when you need to clean up user-entered text, expand search queries with related words, or generate grammatically correct labels and messages ("1 item" vs "3 items") without maintaining your own word lists. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/skycraft/service/text-correction-word-tools * * * --- title: "Text Entity & Date Extraction API" slug: text-entity-date-extraction url: https://apyhub.com/skycraft/service/text-entity-date-extraction provider: Skycraft categories: [Data Extraction] tags: [date-extraction, entity-extraction, nlp, text-analysis] auth: api_key version: v1 service_type: sync endpoints: 2 atoms: 20 --- # Text Entity & Date Extraction API Extract people, places, organizations and dates from free text, with normalized date values and character positions for every match. Fast JSON REST API. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/skycraft/text-entity-date-extraction/extract-entities` | What it does Extracts named entities from the provided text and identifies their type, such as peop… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/text-entity-date-extraction/extract-dates` | What it does Extracts date mentions from the input text and returns them in a JSON object. The resp… | 20 | ## Endpoint reference ### Extract Entities API `GET https://api.eu.apyhub.com/skycraft/text-entity-date-extraction/extract-entities` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | query | string | yes | Example: `Jim Carrey is an actor from Canada`. | #### Quickstart Find entities in a piece of text by passing the text as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/text-entity-date-extraction/extract-entities?text=Jim%20Carrey%20is%20an%20actor%20from%20Canada" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with an `entities` array. Each entity is an object with `type`, `image`, `value`, `end_position`, and `start_position` fields. ```json { "entities": [ { "type": "PER", "value": "Jim Carrey", "start_position": 0, "end_position": 10, "image": "https://upload.wikimedia.org/wikipedia/commons/8/8b/Jim_Carrey_2008.jpg" }, { "type": "LOC", "value": "Canada", "start_position": 28, "end_position": 34, "image": null } ] } ``` ### Extract Dates API `GET https://api.eu.apyhub.com/skycraft/text-entity-date-extraction/extract-dates` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | query | string | yes | Example: `On 5th or April, 2035 there will be flying cars - 2023-02-12.`. | #### Quickstart Send the text to scan in the query string to extract any dates it contains. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/text-entity-date-extraction/extract-dates?text=On%205th%20of%20April%2C%202035%20there%20will%20be%20flying%20cars%20-%202023-02-12." \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `dates` array. Each item in `dates` is an object with `tag`, `date`, `end_position`, `start_position`, and `normalized_date` fields describing each detected date. ```json { "dates": [ { "tag": "DATETIME", "date": "2023-02-12", "end_position": 60, "start_position": 50, "normalized_date": 1676160000000 } ] } ``` ## About ## What it does Text Entity & Date Extraction API pulls structured facts out of free text. Send a sentence or passage as the `text` query parameter and get back JSON listing every named entity or date mention found, each with its exact character position in the input. `Extract Entities` takes `text` and returns an `entities` array; each item carries the matched `value`, its `type` (such as person, location, or organization), an `image` URL where one is available, and `start_position`/`end_position` offsets. `Extract Dates` takes `text` and returns a `dates` array; each item carries the matched `date` string, a `normalized_date` timestamp, a `tag`, and `start_position`/`end_position` offsets. Text Entity & Date Extraction API is a good fit when you need to tag people, places, and organizations in articles, turn natural-language dates in emails or notes into machine-readable values, or highlight extracted spans directly in a UI. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/skycraft/service/text-entity-date-extraction * * * --- title: Chat Completion with Qwen3.8 Flash 27B slug: chat-completion-with-qwen3-8-flash-27b url: https://apyhub.com/flonno/service/chat-completion-with-qwen3-8-flash-27b provider: Flonno categories: [Artificial Intelligence] tags: [llm-chat, chat-completions, model-listing, generative-ai, text-generation] auth: bearer version: 2026-10-12 service_type: sync endpoints: 1 atoms: 1 --- # Chat Completion with Qwen3.8 Flash 27B Generate text with Qwen3.8 Flash 27B. JSON chat completions, model discovery, and usage-based metering for coding and text workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/flonno/chat-completion-with-qwen3-8-flash-27b/chat/completions` | What it does Generates a text chat completion from the messages you provide. You send a model name… | 1 | ## Endpoint reference ### Generate a Qwen text chat completion `POST https://api.eu.apyhub.com/flonno/chat-completion-with-qwen3-8-flash-27b/chat/completions` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `model` | body | string | yes | One of: qwen3.8-27b. Default: `qwen3.8-27b`. | | `top_p` | body | number | no | | | `stream` | body | boolean | no | One of: false. Default: `false`. | | `messages` | body | array of object | yes | | | `messages[].role` | body | string | yes | One of: system, user, assistant. | | `messages[].content` | body | string | yes | | | `max_tokens` | body | integer | no | Default: `1024`. | | `temperature` | body | number | no | | | `reasoning_effort` | body | string | no | One of: none, low, medium, high. Default: `none`. | #### Quickstart Create a chat completion with the required `model` and `messages`. ```bash curl -X POST "https://api.eu.apyhub.com/flonno/chat-completion-with-qwen3-8-flash-27b/chat/completions" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "model": "qwen3.8-27b", "messages": [ { "role": "user", "content": "Hello, how are you?" } ], "max_tokens": 256 }' ``` #### What you'll get back A JSON object. The generated text is in `choices[0].message.content`. ```json { "id": "chatcmpl-3e13a3a3f428b2a7", "object": "chat.completion", "created": 1791873923, "model": "qwen3.8-27b", "choices": [ { "finish_reason": "stop", "index": 0, "logprobs": null, "message": { "content": "I'm doing well, thank you for asking! How are you doing today? Is there anything specific I can help you with?", "refusal": null, "role": "assistant" } } ], "usage": { "completion_tokens": 27, "completion_tokens_details": { "reasoning_tokens": 0 }, "prompt_tokens": 15, "prompt_tokens_details": { "cached_tokens": 0 }, "total_tokens": 42 } } ``` ## About ## What it does Chat Completion generates a text response from a chat-style message list. Send a `model` and a `messages` array with one or more entries, each with a `role` of `system`, `user`, or `assistant` and a `content` string. You can also set `stream` to `true` for streamed output, and `max_tokens` to control the length of the reply. Use Chat Completion when you need a conversational LLM endpoint for assistants, drafting, classification, or controlled text generation inside your app. The request format is simple and keeps the conversation history explicit, so you can build prompts from your own application state and send exactly the context you want the model to use. The response schema is open-ended, so the exact payload depends on the model and runtime. In practice, you should treat the result as the completion object returned by the model call and parse it according to your integration requirements. This makes Chat Completion suitable for workflows where you want to route user input to an LLM and handle the generated text in your own code. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/flonno/service/chat-completion-with-qwen3-8-flash-27b * * * --- title: "US Bank Directory & Lookup API" slug: us-bank-directory-lookup-api url: https://apyhub.com/werouteapi/service/us-bank-directory-lookup-api provider: Anis Ben Fadhel categories: [Data Extraction, Finance] tags: [routing-number, aba-routing, bank-lookup, fedach, fedwire, us-banks] auth: none version: v1 service_type: sync endpoints: 3 atoms: 10-2000 --- # US Bank Directory & Lookup API Look up any US bank by routing number or name. ACH and Fedwire directories, JSON responses. Validate payouts and fill in bank details with one API call. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/werouteapi/us-bank-directory-lookup-api/us-bank-information` | What it does Lists banks from the Federal Reserve's FedACH (Automated Clearing House) and Fedwire (… | 2000 | | GET | `https://api.eu.apyhub.com/werouteapi/us-bank-directory-lookup-api/us-bank-information/lookup` | What it does Returns the bank registered under a US routing number (ABA number) from the Federal Re… | 10 | | GET | `https://api.eu.apyhub.com/werouteapi/us-bank-directory-lookup-api/us-bank-information/search` | What it does Searches the Federal Reserve's FedACH (Automated Clearing House) and Fedwire (wire tra… | 10 | ## Endpoint reference ### USA Bank information of specific routing number `GET https://api.eu.apyhub.com/werouteapi/us-bank-directory-lookup-api/us-bank-information` · 2000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Maximum number of banks to return in one response. Example: `10`. | | `offset` | query | integer | no | Number of banks to skip, for paging through the directory. Default: `0`. Example: `0`. | | `transfer_type` | query | string | no | Which Federal Reserve directory to list: ACH (Automated Clearing House), WIRE (Fedwire) or ALL. Case-insensitive. Defaults to ACH; an unrecognised value is treated as ACH. One of: ACH, WIRE, ALL. Def… | #### Quickstart List US banks from the Federal Reserve routing directories, a page at a time. ```bash curl -X GET "https://api.eu.apyhub.com/werouteapi/us-bank-directory-lookup-api/us-bank-information?transfer_type=ALL&limit=2" \ -H "apy-token: $APY_TOKEN" ``` Add `&offset=2` for the next page. `transfer_type` can be `ACH`, `WIRE` or `ALL`. #### What you'll get back ```json { "success": true, "transfer_type": "ALL", "total_records": 10795, "offset": 0, "limit": 2, "returned": 2, "banks": [ { "routing_number": "021001033", "routing_number_formatted": "021-001-033", "name": "DEUTSCHE BANK TRUST CO AMERICAS", "city": "JERSEY CITY", "state": "NJ", "transfer_type": "ACH", "transfer_types": ["ACH", "Wire"] }, { "routing_number": "021001208", "routing_number_formatted": "021-001-208", "name": "FEDERAL RESERVE BANK", "city": "EAST RUTHERFORD", "state": "NJ", "transfer_type": "ACH", "transfer_types": ["ACH"] } ], "database_info": { "database": "FedACH + Fedwire (Combined)", "records": 10795, "coverage": "US Only", "updated": "Daily", "source": "Federal Reserve" }, "next_url": "/us-bank-information?transfer_type=ALL&limit=2&offset=2" } ``` ### USA BANK INFORMATION `GET https://api.eu.apyhub.com/werouteapi/us-bank-directory-lookup-api/us-bank-information/lookup` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `transfer_type` | query | string | no | Which Federal Reserve directory to search: ACH (Automated Clearing House), WIRE (Fedwire) or ALL. Case-insensitive. Defaults to ACH. Use WIRE for routing numbers that are only in the Fedwire director… | | `routing_number` | query | string | yes | Nine-digit ABA routing number of the bank, digits only. Example: `021001033`. | #### Quickstart Look up a US bank by its nine-digit routing number. ```bash curl -X GET "https://api.eu.apyhub.com/werouteapi/us-bank-directory-lookup-api/us-bank-information/lookup?routing_number=021001033" \ -H "apy-token: $APY_TOKEN" ``` Add `&transfer_type=WIRE` to search the Fedwire directory, which also holds routing numbers that are not in the ACH directory. #### What you'll get back ```json { "success": true, "routing_number": "021001033", "transfer_type": "ACH", "bank": { "routing_number": "021001033", "routing_number_formatted": "021-001-033", "name": "DEUTSCHE BANK TRUST CO AMERICAS", "short_name": "", "city": "JERSEY CITY", "state": "NJ", "transfer_type": "ACH", "funds_transfer_eligible": null, "book_entry_securities_eligible": null }, "message": "Routing number found.", "database_info": { "database": "FedACH", "records": 9023, "coverage": "US Only", "updated": "Daily", "source": "Federal Reserve" } } ``` ### Us Routing number by providing Bank Name `GET https://api.eu.apyhub.com/werouteapi/us-bank-directory-lookup-api/us-bank-information/search` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `name` | query | string | yes | Full or partial bank name to search for. Example: `DEUTSCHE BANK TRUST CO AMERICAS`. | | `limit` | query | integer | no | Maximum number of matches to return. Defaults to 50. Default: `50`. | | `transfer_type` | query | string | no | Which Federal Reserve directory to search: ACH (Automated Clearing House), WIRE (Fedwire) or ALL. Case-insensitive. Defaults to ALL. One of: ACH, WIRE, ALL. Default: `ALL`. | #### Quickstart Find US banks and their routing numbers by name. A partial name works too. ```bash curl -X GET "https://api.eu.apyhub.com/werouteapi/us-bank-directory-lookup-api/us-bank-information/search?name=DEUTSCHE+BANK+TRUST+CO+AMERICAS" \ -H "apy-token: $APY_TOKEN" ``` Spaces can be sent as `+` or `%20`. Add `&transfer_type=WIRE` to search only the Fedwire directory. #### What you'll get back ```json { "success": true, "search_query": "DEUTSCHE BANK TRUST CO AMERICAS", "transfer_type": "ALL", "total_matches": 1, "returned": 1, "limit": 50, "banks": [ { "routing_number": "021001033", "routing_number_formatted": "021-001-033", "name": "DEUTSCHE BANK TRUST CO AMERICAS", "city": "JERSEY CITY", "state": "NJ", "transfer_type": "ACH", "transfer_types": ["ACH", "Wire"] } ], "database_info": { "database": "FedACH + Fedwire (Combined)", "coverage": "US Only", "updated": "Daily", "source": "Federal Reserve" } } ``` ## About ## What it does US Bank Routing Numbers looks up US banks from the Federal Reserve's FedACH (Automated Clearing House) and Fedwire (wire transfer) directories. You send a nine-digit routing number, a bank name or a transfer type, and get back the bank's name, city, state and whether it supports ACH, Wire or both. `USA BANK INFORMATION` lists the whole directory, 10,795 institutions, page by page with `limit` and `offset`. `US Bank Lookup by Routing Number` returns one bank for a routing number, and its `transfer_type` parameter picks the ACH or Wire directory. `US Bank Search by Name` finds banks by a full or partial name. US Bank Routing Numbers is a good fit when you need to validate a routing number before a payment, fill in a bank's name and location from a routing number in a payout form, or find the routing number for a named US bank. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/werouteapi/service/us-bank-directory-lookup-api * * * --- title: Detect Image Color from URL API slug: image-color-detection-api url: https://apyhub.com/skycraft/service/image-color-detection-api provider: Skycraft categories: [Image Processing] tags: [dominant-color, color-detection, image-analysis] auth: api_key version: v1 service_type: sync endpoints: 1 atoms: 20 --- # Detect Image Color from URL API Detect the main color of any image from its URL. Returns hex codes plus main and specific color names as JSON, for tagging, filtering, and color matching. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/skycraft/image-color-detection-api/detect-color` | What it does Detects the main color in an image identified by the url query parameter and returns t… | 20 | ## Endpoint reference ### Detect Main Image Color API `GET https://api.eu.apyhub.com/skycraft/image-color-detection-api/detect-color` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | yes | Example: `https://fastly.picsum.photos/id/63/5000/2813.jpg?hmac=HvaeSK6WT-G9bYF_CyB2m1ARQ…`. | #### Quickstart Detect the main color of an image by passing its `url` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/image-color-detection-api/detect-color?url=https://assets.apyhub.com/samples/sample.png&width=200&height=200&crop=true" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON array of objects. Each object may include `hex_code`, `main_color`, and `specific_color`, all of which can be `null`. ```json [ { "hex_code": "#73685b", "specific_color": "Dim Gray", "main_color": "Gray" }, { "hex_code": "#e5eeed", "specific_color": "Catskill White", "main_color": "White" }, { "hex_code": "#b78f1f", "specific_color": "Dark Golden Rod", "main_color": "Yellow" }, { "hex_code": "#3f3326", "specific_color": "Woody Brown", "main_color": "Brown" } ] ``` ## About ## What it does Detect Image Color lets you find the dominant color of any image from its URL. Send a `GET` request to `/detect-color` with the image `url`, and get back structured color data you can use right away, without running your own image analysis. The `url` parameter is required and can be up to 1000 characters long. The response is a JSON array of objects. Each object can include `hex_code`, `main_color`, and `specific_color`, which are all strings. Any of them may be `null` when a value can't be determined, so handle empty fields in your code. Use `hex_code` when you need an exact value for styling, such as a card background or accent color. Use `main_color` for broad categories like red or blue, and `specific_color` when you want a more precise color name for labels or search filters. Use Detect Image Color when you need to tag or sort images by color, build color filters for a product or media catalog, match UI accents to uploaded pictures, or add color metadata to images in a content pipeline. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/skycraft/service/image-color-detection-api * * * --- title: "Image, Icon & Vector Search API" slug: image-icon-vector-search-api url: https://apyhub.com/skycraft/service/image-icon-vector-search-api provider: Skycraft categories: [Image Processing] tags: [image-search, icon-search, vector-search, screenshot, image-resizing, color-detection] auth: api_key version: 1.9.0 service_type: sync endpoints: 3 atoms: 20 --- # Image, Icon & Vector Search API Search icons, royalty-free images, and vectors, or capture screenshots and resize images. Returns structured asset metadata, colors, and binary image output. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/skycraft/image-icon-vector-search-api/search-icons` | What it does Searches for icons matching a text query and returns a JSON object containing an icons… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/image-icon-vector-search-api/search-images` | What it does Searches for royalty-free images matching a query string and returns a JSON object con… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/image-icon-vector-search-api/search-vectors` | What it does Searches for vectors matching a text query and returns a JSON object containing a vect… | 20 | ## Endpoint reference ### Search Icons API `GET https://api.eu.apyhub.com/skycraft/image-icon-vector-search-api/search-icons` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `query` | query | string | yes | Example: `cars`. | | `number` | query | integer (int32) | no | Example: `3`. | | `only-public-domain` | query | boolean | no | Example: `true`. | #### Quickstart Search for icons with a required query string. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/image-icon-vector-search-api/search-icons?query=bicycle" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with an `icons` array. Each item in `icons` is an object that can include `id`, `url`, `license` (`link`, `name`), and `thumbnail`. ```json { "icons": [ { "id": 1294, "url": "https://img.apileague.com/icons/10372458.svg", "thumbnail": "https://img.apileague.com/icons/10372458.svg", "license": { "name": "ATTRIBUTION", "link": null } ] } ``` ### Search Royalty Free Images API `GET https://api.eu.apyhub.com/skycraft/image-icon-vector-search-api/search-images` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `query` | query | string | yes | Example: `dogs`. | | `number` | query | integer (int32) | no | Example: `3`. | #### Quickstart Search for images by query. The `query` parameter is required, and `number` lets you limit how many results come back. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/image-icon-vector-search-api/search-images?query=dogs&number=3" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with an `images` array. Each item in `images` is an object that can include `id`, `url`, `width`, `height`, `license`, and `thumbnail`. ```json { "images": [ { "url": "https://images.unsplash.com/photo-1552053831-71594a27632d?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w5NTgyNnwwfDF8c2VhcmNofDF8fGRvZ3N8ZW58MHx8fHwxNzkwNjgxMDI2fDA&ixlib=rb-4.1.0&q=80&w=1080", "thumbnail": "https://images.unsplash.com/photo-1552053831-71594a27632d?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3w5NTgyNnwwfDF8c2VhcmNofDF8fGRvZ3N8ZW58MHx8fHwxNzkwNjgxMDI2fDA&ixlib=rb-4.1.0&q=80&w=200", "width": 3742, "height": 6000, "license": { "name": "FREE", "link": "https://unsplash.com/license" }, "id": "Sg3XwuEpybU" } ] } ``` ### Vector Search API `GET https://api.eu.apyhub.com/skycraft/image-icon-vector-search-api/search-vectors` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `query` | query | string | yes | Example: `airplanes`. | | `number` | query | integer (int32) | no | Example: `3`. | | `offset` | query | integer (int32) | no | Example: `0`. | #### Quickstart Search vector results for a query term; this minimal example sends the required `query` as a URL parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/image-icon-vector-search-api/search-vectors?query=airplane" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `vectors` array. Each item in `vectors` is an object that may include `title`, `author`, `license`, and `image_url` fields. ```json { "vectors": [ { "title": "Flying Airplane", "license": "ATTRIBUTION", "author": "Danil Polshin", "image_url": "https://img.apileague.com/icons/7444511.svg" } ] } ``` ## About ## What it does Media Search Tools helps you find and work with visual assets through simple HTTP endpoints. You can search for icons, royalty-free images, and vectors by query, then receive structured results with IDs, dimensions, URLs, thumbnails, and license details where available. Use `search-icons`, `search-images`, and `search-vectors` when your app needs asset discovery from a keyword like `cars`, `dogs`, or `airplans`. The search endpoints accept `query` and optional `number`; vector search also supports `offset`. The icon search endpoint can also filter to public-domain results with `only-public-domain`. For image workflows, `detect-color` takes an image `url` and returns an array with `hex_code`, `main_color`, and `specific_color` values. `take-screenshot` captures a web page from a `url` at the `width` and `height` you provide and returns a binary image. `rescale-image` takes an image `url` plus `width`, `height`, and `crop`, then returns the resized image as binary output. Media Search Tools fits catalog browsing, content generation, asset previews, and lightweight image processing in systems that need visual references or transformed image files without building those features from scratch. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/skycraft/service/image-icon-vector-search-api * * * --- title: Resize Image from URL API slug: resize-image-from-url-api url: https://apyhub.com/skycraft/service/resize-image-from-url-api provider: Skycraft categories: [Image Processing] tags: [image-resize, resize, image-processing] auth: api_key version: v1 service_type: sync endpoints: 1 atoms: 20 --- # Resize Image from URL API Resize images from a URL with the ApyHub API. Customize image width and height, crop images, and get resized images in binary format. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/skycraft/resize-image-from-url-api/rescale-image` | What it does Rescales an image from a source URL to the requested width and height, with optional c… | 20 | ## Endpoint reference ### Rescale Image API `GET https://api.eu.apyhub.com/skycraft/resize-image-from-url-api/rescale-image` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | yes | Example: `https://fastly.picsum.photos/id/63/5000/2813.jpg?hmac=HvaeSK6WT-G9bYF_CyB2m1ARQ…`. | | `crop` | query | boolean | yes | Example: `true`. | | `width` | query | integer (int32) | yes | Example: `200`. | | `height` | query | integer (int32) | yes | Example: `200`. | #### Quickstart Rescales an image from a URL using the required query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/resize-image-from-url-api/rescale-image?url=https://assets.apyhub.com/samples/sample.png&width=200&height=200&crop=true" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a binary file response, which is the resized image data. ## About ## What it does Resize Image lets you rescale any image from a public URL to the exact size you need. Send a `GET` request to `/rescale-image` with the source `url` and the target `width` and `height`, and the response is the resized image as binary data, ready to save or serve. All four of `url`, `width`, `height`, and `crop` are required. The `url` can be up to 1000 characters long, and `width` and `height` each accept values from 1 to 5000 pixels. The `crop` parameter is a boolean that controls whether the image is cropped while it is rescaled. Because the response is the image itself and not JSON, you can write it straight to a file, stream it to a client, or pass it to the next step of an image workflow without extra decoding. Use Resize Image when you need thumbnails for listings and cards, fixed-size pictures for layouts, normalized image sizes in an upload pipeline, or lightweight resizing without hosting your own image processing. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/skycraft/service/resize-image-from-url-api * * * --- title: Webpage Screenshot from URL API slug: webpage-screenshot-api url: https://apyhub.com/skycraft/service/webpage-screenshot-api provider: Skycraft categories: [Image Processing] tags: [website-screenshot, url-to-image, screenshot, webpage-capture] auth: api_key version: v1 service_type: sync endpoints: 1 atoms: 20 --- # Webpage Screenshot from URL API Capture any webpage from its URL at the exact width and height you set. Returns a JPEG image for link previews, thumbnails, and responsive layout checks. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/skycraft/webpage-screenshot-api/take-screenshot` | What it does Takes a screenshot of the web page at the specified URL and returns it as a JPEG image… | 20 | ## Endpoint reference ### Screenshot API `GET https://api.eu.apyhub.com/skycraft/webpage-screenshot-api/take-screenshot` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | yes | Example: `https://nytimes.com`. | | `width` | query | integer (int32) | yes | Example: `400`. | | `height` | query | integer (int32) | yes | Example: `300`. | #### Quickstart Take a screenshot of a webpage by passing the page URL and desired image size as query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/webpage-screenshot-api/take-screenshot?url=https://apyhub.com&width=400&height=300" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns the screenshot as a binary file, not JSON. ## About ## What it does Webpage Screenshot lets you capture any web page as an image from its URL. Send a `GET` request to `/take-screenshot` with the page `url`, plus the `width` and `height` you want, and get back a JPEG (`image/jpeg`) of exactly that size. `url`, `width`, and `height` are all required. `width` and `height` set the size of the browser viewport, and the page is captured 1:1 at that size, so text stays sharp. Both accept values from 100 to 1920 pixels, and values outside that range are clamped. Small widths show the site's mobile layout, which makes it easy to check how a page looks on different screens. The response is the image itself and not JSON, so you can save it to a file, display it in your app, or hand it to the next step of a workflow directly. Use Webpage Screenshot when you need link previews, website thumbnails, visual monitoring and archiving, or responsive layout checks without running your own headless browser. - They run about 1,000 to 1,100 characters each, in line with the catalog's median of about 1,050. - I only used details from each endpoint's own docs and schema (GET, the paths, required fields and limits). I didn't add related-service links, because the ingredient service has them only because its sibling services have known URLs. - I'm not sure the crop behavior is documented beyond "controls whether the image is cropped". If the provider can clarify what crop does, add that sentence. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/skycraft/service/webpage-screenshot-api * * * --- title: "Random Trivia, Quotes & Life Hacks API" slug: random-trivia-quotes-life-hacks-api url: https://apyhub.com/skycraft/service/random-trivia-quotes-life-hacks-api provider: Skycraft categories: [Smart Generation] tags: [riddles, trivia, quotes, affirmations, life-hacks, content] auth: api_key version: 1.9.0 service_type: sync endpoints: 5 atoms: 20 --- # Random Trivia, Quotes & Life Hacks API Fetch random riddles, trivia, life hacks, quotes, and affirmations as simple JSON. Useful for daily prompts, onboarding cards, and content widgets. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/skycraft/random-trivia-quotes-life-hacks-api/retrieve-random-riddle` | What it does Returns a random riddle as a JSON object. You can optionally filter the result by pass… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/random-trivia-quotes-life-hacks-api/retrieve-random-trivia` | What it does Retrieves a random trivia string from the service. You can optionally limit the maximu… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/random-trivia-quotes-life-hacks-api/retrieve-random-life-hack` | What it does Returns a random life hack as a JSON object containing a title and a description. You… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/random-trivia-quotes-life-hacks-api/retrieve-random-quote` | What it does Retrieves a random quote and returns it as a JSON object with the quote text and autho… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/random-trivia-quotes-life-hacks-api/retrieve-random-affirmation` | What it does Retrieves a random affirmation and returns it in a JSON object. The response includes… | 20 | ## Endpoint reference ### Random Riddle API `GET https://api.eu.apyhub.com/skycraft/random-trivia-quotes-life-hacks-api/retrieve-random-riddle` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `difficulty` | query | string | no | One of: easy, medium, hard. Default: `easy`. Example: `easy`. | #### Quickstart Fetch a random riddle, optionally narrowing it by difficulty with a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/random-trivia-quotes-life-hacks-api/retrieve-random-riddle?difficulty=easy" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with nullable string fields: `answer`, `riddle`, and `difficulty`. ```json { "answer": "Echo", "riddle": "What can you hear but never see?", "difficulty": "easy" } ``` ### Random Trivia API `GET https://api.eu.apyhub.com/skycraft/random-trivia-quotes-life-hacks-api/retrieve-random-trivia` · 20 atoms · accepts `application/json` #### Quickstart Fetch a random trivia string, optionally limiting its length with a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/random-trivia-quotes-life-hacks-api/retrieve-random-trivia?max-length=300" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `trivia` string field, which may be `null` if no trivia is available. ```json { "trivia": "The shortest complete sentence in English is often said to be: \"I am.\"" } ``` ### Random Life Hack API `GET https://api.eu.apyhub.com/skycraft/random-trivia-quotes-life-hacks-api/retrieve-random-life-hack` · 20 atoms · accepts `application/json` #### Quickstart Fetch a random life hack, optionally limiting its length with a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/random-trivia-quotes-life-hacks-api/retrieve-random-life-hack" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with nullable `title` and `description` string fields. ```json { "title": "Save time with this kitchen hack", "description": "Store herbs upright in a jar with a little water to keep them fresh longer." } ``` ### Random Quote API `GET https://api.eu.apyhub.com/skycraft/random-trivia-quotes-life-hacks-api/retrieve-random-quote` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `max-length` | query | integer (int32) | no | Example: `300`. | | `min-length` | query | integer (int32) | no | Example: `120`. | #### Quickstart Fetch a random quote, optionally narrowing it by minimum and maximum length using query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/random-trivia-quotes-life-hacks-api/retrieve-random-quote?max-length=300&min-length=120" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with two nullable string fields: `quote` for the quote text and `author` for the quote’s author. ```json { "quote": "The only way to do great work is to love what you do.", "author": "Steve Jobs" } ``` ### Random Affirmation API `GET https://api.eu.apyhub.com/skycraft/random-trivia-quotes-life-hacks-api/retrieve-random-affirmation` · 20 atoms · accepts `application/json` #### Quickstart Fetch a random affirmation. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/random-trivia-quotes-life-hacks-api/retrieve-random-affirmation" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with two top-level string fields: `image` and `affirmation`. Both are nullable, so either may be `null` in the response. ```json { "image": "https://img.apileague.com/portrait-backgrounds/affirmation-147.png", "affirmation": "I am present in this moment." } ``` ## About ## What it does Random Knowledge lets you fetch short, ready-to-use content from five endpoints: riddles, trivia, life hacks, quotes, and affirmations. Each response is a simple JSON object, so you can drop the result straight into a widget, homepage module, onboarding screen, or daily content feed. The service provides random riddles, trivia, life hacks, quotes, and affirmations, with some endpoints offering optional parameters to control the type or length of content returned. For quote flows, **GET /retrieve-random-quote** accepts optional `max-length` and `min-length` query values and returns a `quote` plus `author`. **GET /retrieve-random-affirmation** takes no input and returns an `affirmation` and an `image` field. All fields in the responses are nullable, so your client should handle empty values gracefully. Random Knowledge is useful anywhere you want lightweight, human-friendly content without building your own content pipeline: a daily prompt in a product dashboard, a fresh onboarding card, a classroom activity, or a small engagement feature in a consumer app. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/skycraft/service/random-trivia-quotes-life-hacks-api * * * --- title: "EUR Reference Exchange Rates – USD, GBP, JPY & INR" slug: eur-reference-exchange-rates url: https://apyhub.com/liquilens/service/eur-reference-exchange-rates provider: LIQUILENS PRIVATE LIMITED categories: [Finance, Standard Data] tags: [exchange-rates, forex, fx, currency, currency-rates, historical-rates, daily-rates, eur, usd, gbp, jpy, inr, market-data] auth: none version: 1.0.0 service_type: sync endpoints: 4 atoms: 1 --- # EUR Reference Exchange Rates – USD, GBP, JPY & INR Historical reference exchange-rate strings for EUR/USD, EUR/GBP, EUR/JPY, and EUR/INR. Useful for finance workflows, reporting, and rate normalization. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/liquilens/eur-reference-exchange-rates/inr.csv` | What it does Returns the full daily history of the INR per euro reference rate from the European Ce… | 1 | | GET | `https://api.eu.apyhub.com/liquilens/eur-reference-exchange-rates/usd.csv` | What it does Returns the full daily history of the USD per euro reference rate from the European Ce… | 1 | | GET | `https://api.eu.apyhub.com/liquilens/eur-reference-exchange-rates/gbp.csv` | What it does Returns the full daily history of the GBP per euro reference rate from the European Ce… | 1 | | GET | `https://api.eu.apyhub.com/liquilens/eur-reference-exchange-rates/jpy.csv` | What it does Returns the full daily history of the JPY per euro reference rate from the European Ce… | 1 | ## Endpoint reference ### INR per euro reference history `GET https://api.eu.apyhub.com/liquilens/eur-reference-exchange-rates/inr.csv` · 1 atoms · accepts `application/json` #### Quickstart Fetch the INR per euro reference rate history with a simple GET request. ```bash curl -X GET "https://api.eu.apyhub.com/liquilens/eur-reference-exchange-rates/inr.csv" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a plain string containing CSV text. It starts with `#` metadata lines, followed by a `date,value` header and one row per date. ```text # Seiche series ECBFX_INR: INR per euro (ECB daily reference rate) # source: ecb_fx (remote id EXR/D.INR.EUR.SP00.A), unit: INR/EUR, cadence: daily, native lag: published same day to next business day # retrieved_at: 2026-10-08T03:42:20+00:00, last_observation: 2026-10-07, staleness: fresh # vintage: the upstream's current print, not a reconstructed as-of view; lightly revised series revise here too # cite: Seiche (https://seiche.info/methodology); credit for the data belongs to the source above # Source: European Central Bank. Reference data is freely available from the ECB; not executable quotes. https://www.ecb.europa.eu/services/using-our-site/disclaimer/html/index.en.html date,value 2009-01-02,67.125 2009-01-05,65.893 2009-01-06,64.827 2026-10-05,107.8915 2026-10-06,108.6615 2026-10-07,108.1165 ``` > **Note:** This example is truncated. The full response includes every daily rate from **2009-01-02** to the latest observation. Not every calendar date has a row. ### USD per euro reference history `GET https://api.eu.apyhub.com/liquilens/eur-reference-exchange-rates/usd.csv` · 1 atoms · accepts `application/json` #### Quickstart Fetch the USD per euro reference rate history with a simple GET request. ```bash curl -X GET "https://api.eu.apyhub.com/liquilens/eur-reference-exchange-rates/usd.csv" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a plain string containing CSV text. It starts with `#` metadata lines, followed by a `date,value` header and one row per date. ```text # Seiche series ECBFX_USD: USD per euro (ECB daily reference rate) # source: ecb_fx (remote id EXR/D.USD.EUR.SP00.A), unit: USD/EUR, cadence: daily, native lag: published same day to next business day # retrieved_at: 2026-10-08T03:42:20+00:00, last_observation: 2026-10-07, staleness: fresh # vintage: the upstream's current print, not a reconstructed as-of view; lightly revised series revise here too # cite: Seiche (https://seiche.info/methodology); credit for the data belongs to the source above # Source: European Central Bank. Reference data is freely available from the ECB; not executable quotes. https://www.ecb.europa.eu/services/using-our-site/disclaimer/html/index.en.html date,value 1999-01-04,1.1789 1999-01-05,1.179 1999-01-06,1.1743 2026-10-05,1.1204 2026-10-06,1.1269 2026-10-07,1.1177 ``` > **Note:** This example is truncated. The full response includes every daily rate from **1999-01-04** to the latest observation. Not every calendar date has a row. ### GBP per euro reference history `GET https://api.eu.apyhub.com/liquilens/eur-reference-exchange-rates/gbp.csv` · 1 atoms · accepts `application/json` #### Quickstart Fetch the GBP per euro reference rate history with a simple GET request. ```bash curl -X GET "https://api.eu.apyhub.com/liquilens/eur-reference-exchange-rates/gbp.csv" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a plain string containing CSV text. It starts with `#` metadata lines, followed by a `date,value` header and one row per date. ```text # Seiche series ECBFX_GBP: GBP per euro (ECB daily reference rate) # source: ecb_fx (remote id EXR/D.GBP.EUR.SP00.A), unit: GBP/EUR, cadence: daily, native lag: published same day to next business day # retrieved_at: 2026-10-08T03:42:20+00:00, last_observation: 2026-10-07, staleness: fresh # vintage: the upstream's current print, not a reconstructed as-of view; lightly revised series revise here too # cite: Seiche (https://seiche.info/methodology); credit for the data belongs to the source above # Source: European Central Bank. Reference data is freely available from the ECB; not executable quotes. https://www.ecb.europa.eu/services/using-our-site/disclaimer/html/index.en.html date,value 1999-01-04,0.7111 1999-01-05,0.7122 1999-01-06,0.7076 2026-10-05,0.8472 2026-10-06,0.8488 2026-10-07,0.84645 ``` > **Note:** This example is truncated. The full response includes every daily rate from **1999-01-04** to the latest observation. Not every calendar date has a row. ### JPY per euro reference history `GET https://api.eu.apyhub.com/liquilens/eur-reference-exchange-rates/jpy.csv` · 1 atoms · accepts `application/json` #### Quickstart Fetch the JPY per euro reference rate history with a simple GET request. ```bash curl -X GET "https://api.eu.apyhub.com/liquilens/eur-reference-exchange-rates/jpy.csv" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a plain string containing CSV text. It starts with `#` metadata lines, followed by a `date,value` header and one row per date. ```text # Seiche series ECBFX_JPY: JPY per euro (ECB daily reference rate) # source: ecb_fx (remote id EXR/D.JPY.EUR.SP00.A), unit: JPY/EUR, cadence: daily, native lag: published same day to next business day # retrieved_at: 2026-10-08T03:42:20+00:00, last_observation: 2026-10-07, staleness: fresh # vintage: the upstream's current print, not a reconstructed as-of view; lightly revised series revise here too # cite: Seiche (https://seiche.info/methodology); credit for the data belongs to the source above # Source: European Central Bank. Reference data is freely available from the ECB; not executable quotes. https://www.ecb.europa.eu/services/using-our-site/disclaimer/html/index.en.html date,value 1999-01-04,133.73 1999-01-05,130.96 1999-01-06,131.42 2026-10-05,177.28 2026-10-06,178.15 2026-10-07,176.85 ``` > **Note:** This example is truncated. The full response includes every daily rate from **1999-01-04** to the latest observation. Not every calendar date has a row. ## About ## What it does Euro Reference FX gives you historical reference exchange-rate strings for four currency pairs: USD per euro, GBP per euro, JPY per euro, and INR per euro. Send a GET request for the pair you need and get the reference history back as a string. Use Euro Reference FX when you need a lightweight source of historical FX reference data for reporting, dashboards, reconciliations, or price normalization. Because each endpoint is read-only and returns a plain string, it fits well into pipelines that already handle parsing and storage on the client side. The service is straightforward: no request parameters are defined, and each endpoint is dedicated to one euro-based pair. That makes it easy to wire into scheduled jobs, internal finance tools, or analytics workflows where you want a simple lookup for a specific currency history without extra response nesting. If your application needs reference FX data for EUR/USD, EUR/GBP, EUR/JPY, or EUR/INR, Euro Reference FX keeps the interface narrow and predictable. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/liquilens/service/eur-reference-exchange-rates * * * --- title: "Create, Validate & Parse E-Invoice API" slug: create-validate-parse-e-invoices url: https://apyhub.com/callable-labs/service/create-validate-parse-e-invoices provider: Callable Labs categories: [File Conversion, Finance, Smart Generation] tags: [e-invoicing, invoice-validation, invoice-parsing, zugferd, xrechnung, peppol] auth: api_key version: 0.2.0 service_type: sync endpoints: 3 atoms: 20-100 --- # Create, Validate & Parse E-Invoice API Create ZUGFeRD, XRechnung, or Peppol e-invoices, validate XML or PDF documents, and extract invoice data, totals, and rule errors. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/callable-labs/create-validate-parse-e-invoices/v1/einvoice/create` | What it does Creates an e-invoice from the JSON request body and returns the generated invoice outp… | 100 | | POST | `https://api.eu.apyhub.com/callable-labs/create-validate-parse-e-invoices/v1/einvoice/validate` | What it does Validates an e-invoice sent as XML or as a base64-encoded XML/PDF document. The respon… | 20 | | POST | `https://api.eu.apyhub.com/callable-labs/create-validate-parse-e-invoices/v1/einvoice/parse` | What it does Parses an e-invoice from XML or a base64-encoded file and returns a JSON object with t… | 20 | ## Endpoint reference ### Create an e-invoice from JSON `POST https://api.eu.apyhub.com/callable-labs/create-validate-parse-e-invoices/v1/einvoice/create` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `format` | body | string or null | no | One of: pdf, xml, json, null. Default: `pdf`. | | `invoice.buyer.city` | body | string | yes | Default: `Munich`. | | `invoice.buyer.name` | body | string | yes | Default: `Acme GmbH`. | | `invoice.buyer.email` | body | string or null | no | Default: `ap@engines.example`. | | `invoice.buyer.street` | body | string or null | no | Default: `Hauptstraße 5`. | | `invoice.buyer.vat_id` | body | string or null | no | Default: `DE987654321`. | | `invoice.buyer.country` | body | string | yes | Default: `DE`. | | `invoice.buyer.postal_code` | body | string | yes | Default: `80331`. | | `invoice.lines` | body | array of object | yes | | | `invoice.lines[].unit` | body | string | no | Default: `HUR`. | | `invoice.lines[].quantity` | body | number | yes | Default: `12`. | | `invoice.lines[].vat_rate` | body | number | yes | Default: `19`. | | `invoice.lines[].unit_price` | body | number | yes | Default: `95`. | | `invoice.lines[].description` | body | string | yes | Default: `Consulting`. | | `invoice.lines[].vat_category` | body | string or null | no | One of: S, Z, E, AE, K, G, O, L, M, null. | | `invoice.number` | body | string | yes | Default: `RE-2026-0042`. | | `invoice.seller.city` | body | string | yes | Default: `Berlin`. | | `invoice.seller.name` | body | string | yes | Default: `Callable Labs GmbH`. | | `invoice.seller.email` | body | string or null | no | Default: `billing@callable.example`. | | `invoice.seller.phone` | body | string or null | no | Default: `+49 30 1234567`. | | `invoice.seller.street` | body | string or null | no | Default: `Musterstraße 1`. | | `invoice.seller.vat_id` | body | string or null | no | VAT identifier (BT-31 / BT-48). Default: `DE123456789`. | | `invoice.seller.country` | body | string | yes | Default: `DE`. | | `invoice.seller.tax_number` | body | string or null | no | Seller's national tax number (BT-32). | | `invoice.seller.postal_code` | body | string | yes | Default: `10115`. | | `invoice.seller.contact_name` | body | string or null | no | Default: `Ada Lovelace`. | | `invoice.seller.registration_id` | body | string or null | no | | | `invoice.seller.electronic_address` | body | string or null | no | | | `invoice.payment` | body | object or null | no | | | `invoice.currency` | body | string | no | Default: `EUR`. | | `invoice.due_date` | body | string or null (date) | no | Default: `2026-10-23`. | | `invoice.issue_date` | body | string (date) | yes | Default: `2026-09-23`. | | `invoice.buyer_reference` | body | string or null | no | Default: `PO-7781`. | | `standard` | body | string | no | One of: zugferd, facturx, xrechnung, peppol. Default: `zugferd`. | #### Quickstart Create a minimal e-invoice from the required invoice details and return it as XML. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/create-validate-parse-e-invoices/v1/einvoice/create" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "invoice": { "number": "RE-2026-0042", "issue_date": "2026-09-23", "currency": "EUR", "seller": { "name": "Callable Labs GmbH", "street": "Example Street 1", "city": "Berlin", "postal_code": "10115", "country": "DE", "vat_id": "DE123456789" }, "buyer": { "name": "Acme GmbH", "street": "Example Street 2", "city": "Munich", "postal_code": "80331", "country": "DE" }, "lines": [ { "description": "Consulting", "quantity": 12, "unit": "HUR", "unit_price": 95, "vat_rate": 19 } ] } }' ``` #### What you'll get back Returns a JSON object with fields such as `xml` and `format`; `xml` is the invoice XML, and `format` is the returned format. Other top-level fields like `bytes`, `cache`, `pages`, `engine`, `totals`, `data_uri`, `standard`, `warnings`, `queued_ms`, `render_ms`, `media_type`, and `engine_version` may also be present. ```json { "xml": "<Invoice>...</Invoice>", "format": "xml" } ``` ### Validate an e-invoice `POST https://api.eu.apyhub.com/callable-labs/create-validate-parse-e-invoices/v1/einvoice/validate` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | any | yes | The e-invoice to read or validate. Choose XML or Base64 from the dropdown and provide exactly one. | #### Quickstart Validate an e-invoice by sending the invoice XML in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/create-validate-parse-e-invoices/v1/einvoice/validate" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><rsm:CrossIndustryInvoice xmlns:rsm=\"urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100\" xmlns:ram=\"urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100\" xmlns:udt=\"urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100\"><rsm:ExchangedDocumentContext><ram:GuidelineSpecifiedDocumentContextParameter><ram:ID>urn:cen.eu:en16931:2017</ram:ID></ram:GuidelineSpecifiedDocumentContextParameter></rsm:ExchangedDocumentContext><rsm:ExchangedDocument><ram:ID>INV-001</ram:ID><ram:TypeCode>380</ram:TypeCode><ram:IssueDateTime><udt:DateTimeString format=\"102\">20261007</udt:DateTimeString></ram:IssueDateTime></rsm:ExchangedDocument></rsm:CrossIndustryInvoice>" }' ``` #### What you'll get back Returns a JSON object with fields such as `valid` (boolean), `checks` (array), `errors` (array), `syntax` (`cii` or `ubl`), `profile` (string), `standard` (`xrechnung`, `peppol`, `facturx`, `en16931`, or `unknown`), `warnings` (array), `container` (`xml` or `pdf`), `document_type` (`invoice` or `credit_note`), and `specification_id` (string). ```json { "valid": false, "standard": "facturx", "profile": "Factur-X / ZUGFeRD EN 16931", "syntax": "cii", "document_type": "invoice", "specification_id": "urn:cen.eu:en16931:2017", "container": "xml", "checks": [ { "name": "xsd", "title": "XML Schema (CII D16B (Factur-X EN16931))", "passed": false, "errors": 1, "warnings": 0 }, { "name": "en16931", "title": "EN 16931 business rules (CEN)", "version": "1.3.16", "passed": false, "errors": 7, "warnings": 0 } ], "errors": [ { "rule": "XSD", "check": "xsd", "message": "Element '{urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100}ApplicableHeaderTradeAgreement': This element is not expected. Expected is ( {urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100}IncludedSupplyChainTradeLineItem ).", "location": "line 1" }, { "rule": "BR-08", "check": "en16931", "message": "[BR-08]-An Invoice shall contain the Seller postal address (BG-5).", "location": "/*:CrossIndustryInvoice[namespace-uri()='urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100']" }, { "rule": "BR-09", "check": "en16931", "message": "[BR-09]-The Seller postal address (BG-5) shall contain a Seller country code (BT-40).", "location": "/*:CrossIndustryInvoice[namespace-uri()='urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100']" }, { "rule": "BR-10", "check": "en16931", "message": "[BR-10]-An Invoice shall contain the Buyer postal address (BG-8).", "location": "/*:CrossIndustryInvoice[namespace-uri()='urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100']" }, { "rule": "BR-11", "check": "en16931", "message": "[BR-11]-The Buyer postal address shall contain a Buyer country code (BT-55).", "location": "/*:CrossIndustryInvoice[namespace-uri()='urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100']" }, { "rule": "BR-16", "check": "en16931", "message": "[BR-16]-An Invoice shall have at least one Invoice line (BG-25).", "location": "/*:CrossIndustryInvoice[namespace-uri()='urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100']" }, { "rule": "BR-CO-15", "check": "en16931", "message": "[BR-CO-15]-Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).", "location": "/*:CrossIndustryInvoice[namespace-uri()='urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100']" }, { "rule": "BR-CO-26", "check": "en16931", "message": "[BR-CO-26]-In order for the buyer to automatically identify a supplier, the Seller identifier (BT-29), the Seller legal registration identifier (BT-30) and/or the Seller VAT identifier (BT-31) shall be present.", "location": "/*:CrossIndustryInvoice[namespace-uri()='urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100']/*:SupplyChainTradeTransaction[namespace-uri()='urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100']/*:ApplicableHeaderTradeAgreement[namespace-uri()='urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100']/*:SellerTradeParty[namespace-uri()='urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100']" } ], "warnings": [] } ``` ### Read an e-invoice into JSON `POST https://api.eu.apyhub.com/callable-labs/create-validate-parse-e-invoices/v1/einvoice/parse` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | any | yes | The e-invoice to read. Choose XML or Base64 from the dropdown and provide exactly one. | #### Quickstart Send the e-invoice as XML text or a base64-encoded XML/PDF so the API can parse the document. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/create-validate-parse-e-invoices/v1/einvoice/parse" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><rsm:CrossIndustryInvoice xmlns:rsm=\"urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100\" xmlns:ram=\"urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100\" xmlns:udt=\"urn:un:unece:uncefact:data:standard:UnqualifiedDataType:100\"><rsm:ExchangedDocumentContext><ram:GuidelineSpecifiedDocumentContextParameter><ram:ID>urn:cen.eu:en16931:2017</ram:ID></ram:GuidelineSpecifiedDocumentContextParameter></rsm:ExchangedDocumentContext><rsm:ExchangedDocument><ram:ID>INV-001</ram:ID><ram:TypeCode>380</ram:TypeCode><ram:IssueDateTime><udt:DateTimeString format=\"102\">20261007</udt:DateTimeString></ram:IssueDateTime></rsm:ExchangedDocument></rsm:CrossIndustryInvoice>" }' ``` #### What you'll get back Returns a JSON object with fields such as `notes` (array of strings), `syntax` (`cii` or `ubl`), `totals` (object), `invoice` (object), `profile` (string), `standard` (`xrechnung`, `peppol`, `facturx`, `en16931`, or `unknown`), `container` (`xml` or `pdf`), `document_type` (`invoice` or `credit_note`), and `specification_id` (string). ```json { "standard": "facturx", "profile": "Factur-X / ZUGFeRD EN 16931", "syntax": "cii", "document_type": "invoice", "specification_id": "urn:cen.eu:en16931:2017", "container": "xml", "invoice": { "type": "invoice", "number": "INV-001", "issue_date": "2026-10-07", "currency": "EUR", "seller": { "name": "ABC GmbH" }, "buyer": { "name": "XYZ GmbH" }, "lines": [] }, "totals": { "line_total": null, "tax_total": null, "total": null, "amount_due": null, "vat": [] }, "notes": [] } ``` ## About [Callable Labs](https://callablelabs.com) · [Quickstart](https://callablelabs.com/docs/document-generation-api/quickstart?via=apyhub) · [API reference](https://callablelabs.com/docs/document-generation-api/reference?via=apyhub) ## What it does E-Invoice Suite creates, validates, and reads EN 16931 e-invoices in JSON, XML, or PDF form. Send invoice data to generate a ZUGFeRD/Factur-X PDF/A-3 file, XRechnung XML, or Peppol BIS Billing 3.0 XML; send an XML or base64-encoded XML/PDF back to validate or parse it. When you create an invoice, the input includes the invoice header, seller, buyer, line items, and optional payment and reference fields such as currency, issue_date, due_date, buyer_reference, order_reference, and vat_exemption_reason. The response includes the rendered file as XML or a data URI, plus totals, file size, page count for PDF output, warnings, and processing metadata such as cache, engine, and render timing. Use validation when you need to check an incoming document against XSD, EN 16931, XRechnung, or Peppol rules. The response tells you whether the document is valid and returns the checks performed, structured errors and warnings, the detected syntax, container, profile, standard, document type, and specification ID. Use parsing when you need invoice data back in JSON. E-Invoice Suite returns the invoice object, totals, notes for content not represented in the core invoice fields, and the detected syntax, container, profile, standard, document type, and specification ID. That makes it useful for accounting pipelines, procurement systems, and public-sector invoicing flows where you need both compliant output and reliable document inspection. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/callable-labs/service/create-validate-parse-e-invoices * * * --- title: Generate Image Foreground Mask API slug: foreground-mask url: https://apyhub.com/callable-labs/service/foreground-mask provider: Callable Labs categories: [Artificial Intelligence, Image Processing] tags: [image-masking, subject-detection, image-segmentation, computer-vision] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 600 --- # Generate Image Foreground Mask API Callable Labs · Quickstart · API reference What it does Generate Image Foreground Mask API lets you isolate a subject from an image and return either a mask or a background-removed image. Send a public image URL or base64-encoded image data, and choose whether you want JSON metadata or image bytes… ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/callable-labs/foreground-mask/v1/background/mask` | What it does Generates a subject mask for an input image. The request accepts an image source and o… | 600 | ## Endpoint reference ### Get the subject mask `POST https://api.eu.apyhub.com/callable-labs/foreground-mask/v1/background/mask` · 600 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `crop` | body | boolean | no | Crop the result to the subject's bounding box. Default: `false`. Default: `false`. | | `image` | body | any | yes | Image source object. Provide exactly one of `url` or `base64`; see nested fields. | | `format` | body | string | no | Output format. Allowed values: `json`, `png`. Default: `json`. `json` returns metadata plus a PNG data URI; `png` returns the 8-bit grayscale mask. One of: json, png. Default: `json`. | | `padding` | body | integer | no | Pixels kept around the subject when `crop` is true. Default: `0`; minimum: `0`, maximum: `1000`. Default: `0`. | | `quality` | body | string | no | Output quality. Allowed values: `best`, `fast`. Default: `best`. `best` prioritizes detail; `fast` is suitable for previews. One of: best, fast. Default: `best`. | | `max_size` | body | any | no | Longest side of the output in pixels. Default: original size; minimum: `64`, maximum: `4096`. Default: `null`. | #### Quickstart Send a public image URL to remove its background and return mask metadata in JSON. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/foreground-mask/v1/background/mask" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "image": { "url": "https://assets.apyhub.com/samples/cat.jpg" } }' ``` #### What you'll get back Returns a JSON object with these top-level fields: `format` and `media_type` are strings, `width` and `height` are output dimensions in pixels, `bytes` is the payload size, `data_uri` is a `data:<media_type>;base64,...` string, `bbox` is either an object with `x`, `y`, `width`, and `height` or `null`, `foreground_ratio` is a number between 0 and 1, and `quality` is `"best"` or `"fast"`. ```json { "format": "json", "media_type": "image/png", "width": 800, "height": 600, "bytes": 124532, "data_uri": "data:image/png;base64,iVBORw0KGgoAAA...", "bbox": { "x": 120, "y": 45, "width": 540, "height": 510 }, "foreground_ratio": 0.42, "quality": "best" } ``` ## About [Callable Labs](https://callablelabs.com) · [Quickstart](https://callablelabs.com/docs/background-removal-api/quickstart?via=apyhub) · [API reference](https://callablelabs.com/docs/background-removal-api/reference?via=apyhub) ## What it does Generate Image Foreground Mask API lets you isolate a subject from an image and return either a mask or a background-removed image. Send a public image URL or base64-encoded image data, and choose whether you want JSON metadata or image bytes back. Use the subject mask endpoint when you need a grayscale cutout for compositing, edge cleanup, or downstream image analysis. The response includes the output format, media type, width, height, byte size, data URI, subject bounding box, foreground ratio, and the quality setting used. If nothing is found, `bbox` is `null`. Use the background-removal endpoint when you need a ready-to-use subject image. You can crop to the subject's bounding box, add padding, limit the output size, and pick `best` or `fast` quality. Output can be `json`, `png`, `webp`, or `jpeg`; JPEG requires an opaque background color in `#RRGGBB` form. This is a good fit for product photos, profile pictures, asset pipelines, and any workflow that needs transparent backgrounds or a consistent subject crop. Both endpoints accept images up to 20 MB and return a data URI alongside the image metadata, so you can pass results straight into your storage, preview, or rendering pipeline. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/callable-labs/service/foreground-mask * * * --- title: Remove Image Background with Advanced Controls API slug: background-removal url: https://apyhub.com/callable-labs/service/background-removal provider: Callable Labs categories: [Image Processing] tags: [background-removal, image-segmentation, image-cutout, png-transparency] auth: api_key version: v1 service_type: sync endpoints: 1 atoms: 800 --- # Remove Image Background with Advanced Controls API Callable Labs · Quickstart · API reference What it does Remove Image Background with Advanced Controls API removes the background from an image and returns the cut-out subject in the format you request. Send an image by public URL or base64, and choose whether you want JSON metadata, PNG, WebP, or… ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/callable-labs/background-removal/v1/background/remove` | What it does Removes the background from an input image and returns result metadata plus the proces… | 800 | ## Endpoint reference ### Remove the background `POST https://api.eu.apyhub.com/callable-labs/background-removal/v1/background/remove` · 800 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `crop` | body | boolean | no | Crop the result to the subject's bounding box. Default: `false`. Default: `false`. | | `image` | body | any | yes | Image source. Provide one of `image.url` or `image.base64`. | | `format` | body | string | no | Output encoding. Allowed values: `json`, `png`, `webp`, `jpeg`. Default: `json`. `json` returns metadata plus a PNG data URI. `png` and `webp` return the image bytes. `jpeg` needs an opaque `backgrou… | | `padding` | body | integer | no | Pixels kept around the subject when `crop` is true. Default: `0`. Minimum: `0`. Maximum: `1000`. Default: `0`. | | `quality` | body | string | no | Processing quality. Allowed values: `best`, `fast`. Default: `best`. `best` prioritizes detail. `fast` is suitable for previews. One of: best, fast. Default: `best`. | | `max_size` | body | any | no | Longest side of the output in pixels. Default: null (original size). Minimum: `64`. Maximum: `4096`. Default: `null`. | | `background` | body | string | no | Background color to place the subject on. Default: `transparent`. Allowed values: `transparent` or a hex color in `#RRGGBB` format. Default: `transparent`. Example: `transparent`. | #### Quickstart Remove the background from an image URL and return the result as JSON metadata. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/background-removal/v1/background/remove" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "image": { "url": "https://assets.apyhub.com/samples/cat.jpg" } }' ``` #### What you'll get back Returns a JSON object with `format`, `media_type`, `width`, `height`, `bytes`, `data_uri`, `bbox`, `foreground_ratio`, and `quality`. - `format` (`string`): encoding of `data_uri` - `media_type` (`string`): the output media type - `width` / `height` (`integer`): output dimensions in pixels - `bytes` (`integer`): output size in bytes - `data_uri` (`string`): a `data:<media_type>;base64,…` payload - `bbox` (`object` or `null`): subject bounding box in the original image - `foreground_ratio` (`number`): share of the original image covered by the subject - `quality` (`string`): `best` or `fast` ```json { "format": "json", "media_type": "image/png", "width": 1200, "height": 900, "bytes": 123456, "data_uri": "data:image/png;base64,...", "bbox": { "x": 120, "y": 80, "width": 900, "height": 700 }, "foreground_ratio": 0.42, "quality": "best" } ``` ## About [Callable Labs](https://callablelabs.com) · [Quickstart](https://callablelabs.com/docs/background-removal-api/quickstart?via=apyhub) · [API reference](https://callablelabs.com/docs/background-removal-api/reference?via=apyhub) ## What it does Remove Image Background with Advanced Controls API removes the background from an image and returns the cut-out subject in the format you request. Send an image by public URL or base64, and choose whether you want JSON metadata, PNG, WebP, or JPEG output. Use `crop` to trim the result to the subject's bounding box, and `padding` to keep extra pixels around it when cropping. You can also set `quality` to `best` or `fast`, limit the output with `max_size`, and place the subject on a transparent background or a solid `#RRGGBB` color. JPEG output requires an opaque background, while `json` returns metadata plus a PNG data URI. The response includes the output `format`, `media_type`, `width`, `height`, `bytes`, `data_uri`, `quality`, and `foreground_ratio`. It also returns the subject `bbox` in the original image when one is found, or `null` when nothing is detected. Use it for product photos, profile images, marketplace listings, and any workflow that needs a clean foreground subject without manual editing. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/callable-labs/service/background-removal * * * --- title: "Brazilian Boleto Validation & Bank Lookup API" slug: brazilian-boleto-validation-bank-lookup url: https://apyhub.com/dam4g/service/brazilian-boleto-validation-bank-lookup provider: DAM4G APIs categories: [Data Validation, Finance] tags: [boleto-validation, brasil-payments, barcode-validation, digitable-line, invoice-validation] auth: api_key version: 0.1.0 service_type: sync endpoints: 3 atoms: 10 --- # Brazilian Boleto Validation & Bank Lookup API Validate boleto barcodes or digitable lines and get parsed payment details, status checks, and error messages for Brazilian slips. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dam4g/brazilian-boleto-validation-bank-lookup/v1/validate` | What it does Checks whether a Brazilian boleto is valid using the official FEBRABAN check-digit alg… | 10 | | POST | `https://api.eu.apyhub.com/dam4g/brazilian-boleto-validation-bank-lookup/v1/validate` | What it does Performs the same validation as Validate a Boleto (GET), but accepts the boleto code i… | 10 | | GET | `https://api.eu.apyhub.com/dam4g/brazilian-boleto-validation-bank-lookup/v1/banks/:code` | What it does Looks up a Brazilian bank by its 3-digit COMPE code and returns its name. Use this whe… | 10 | ## Endpoint reference ### Validate a boleto `GET https://api.eu.apyhub.com/dam4g/brazilian-boleto-validation-bank-lookup/v1/validate` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `code` | query | string | no | | #### Quickstart Validate a boleto by its digitable line. ```bash curl -X GET "https://api.eu.apyhub.com/dam4g/brazilian-boleto-validation-bank-lookup/v1/validate?code=21290001192110001210904475617405975870000002000" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back You will receive whether the boleto is valid, its type and input format, the issuing bank, currency, amount, due date and overdue status, the boleto as a barcode and as a digitable line, and the results of each check with any errors or warnings. #### Response Example ```json { "valid": true, "type": "bank_slip", "input_format": "digitable_line", "barcode": "21299758700000020000001121100012100447561740", "digitable_line": "21290001192110001210904475617405975870000002000", "digitable_line_formatted": "21290.00119 21100.012109 04475.617405 9 75870000002000", "checks": { "length": true, "characters": true, "field_check_digits": true, "barcode_check_digit": true }, "errors": [], "warnings": [], "bank": { "code": "212", "name": "Banco Original" }, "currency": "BRL", "segment": null, "amount_cents": 2000, "amount": "20.00", "due_date": "2018-07-16", "due_date_status": "ok", "overdue": true } ``` ### Validate a boleto `POST https://api.eu.apyhub.com/dam4g/brazilian-boleto-validation-bank-lookup/v1/validate` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `code` | body | string | yes | | #### Quickstart Validate a boleto by its digitable line. ```bash curl -X POST "https://api.eu.apyhub.com/dam4g/brazilian-boleto-validation-bank-lookup/v1/validate" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "code": "21299758700000020000001121100012100447561740" }' ``` #### What you'll get back You will receive whether the boleto is valid, its type and input format, the issuing bank, currency, amount, due date and overdue status, the boleto as a barcode and as a digitable line, and the results of each check with any errors or warnings. #### Response Example ```json { "valid": true, "type": "bank_slip", "input_format": "digitable_line", "barcode": "21299758700000020000001121100012100447561740", "digitable_line": "21290001192110001210904475617405975870000002000", "digitable_line_formatted": "21290.00119 21100.012109 04475.617405 9 75870000002000", "checks": { "length": true, "characters": true, "field_check_digits": true, "barcode_check_digit": true }, "errors": [], "warnings": [], "bank": { "code": "212", "name": "Banco Original" }, "currency": "BRL", "segment": null, "amount_cents": 2000, "amount": "20.00", "due_date": "2018-07-16", "due_date_status": "ok", "overdue": true } ``` ### Look up a bank by its 3-digit COMPE code `GET https://api.eu.apyhub.com/dam4g/brazilian-boleto-validation-bank-lookup/v1/banks/:code` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `code` | path | string | yes | | #### Quickstart Look up the bank with COMPE code `212`. ```bash curl -X GET "https://api.eu.apyhub.com/dam4g/brazilian-boleto-validation-bank-lookup/v1/banks/:code" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back You will receive the bank code you sent and the matching bank name. #### Response Example ```json { "code": "212", "name": "Banco Original" } ``` ## About ## What it does Boleto Validator checks whether a Brazilian boleto is valid and extracts the payment details encoded in its barcode or digitable line. A **boleto (boleto bancário)** is a common payment method in Brazil, used for bills, invoices, online purchases, utility bills, taxes, fines, and other payments. Send a `code` containing either a barcode or a digitable line, and the API validates its check digits using FEBRABAN algorithms. It returns whether the boleto is `valid`, along with the `detected type,input_format, bank, segment`, `currency`, `amount`, `amount_cents`, `due_date`, `due_date_status`, and `overdue` status. It also returns the `barcode`, `digitable_line`, and `digitable_line_formatted` when available, along with a `checks` object and any detected `errors` or `warnings`. The API supports both `bank_slip` and `collection` boletos, making it suitable for validating standard bank slips, utility bills, taxes, fines, and other payment documents. You can use it to verify a payment slip before displaying it to a customer, reconcile checkout details, or process incoming bills. Since it accepts either format and can return both, it also works as a barcode-to-digitable-line and digitable-line-to-barcode converter. The service also includes a Bank Lookup API that identifies a Brazilian bank by its 3-digit COMPE code (3-digit number used to identify a bank in Brazil.). Send a code such as 212 for Banco do Brasil or 341 for Itaú Unibanco to retrieve the corresponding bank name. COMPE codes are used in Brazilian payment systems, including boleto barcodes, bank account details, and transfers. This endpoint helps you display readable bank names instead of raw numeric codes. Validation is performed through local calculations without contacting banks or external systems, enabling fast responses without sending payment data to external services. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dam4g/service/brazilian-boleto-validation-bank-lookup * * * --- title: "Image & PDF OCR to Markdown API" slug: ocr-pdf-to-markdown url: https://apyhub.com/callable-labs/service/ocr-pdf-to-markdown provider: Callable Labs categories: [Data Extraction, File Conversion] tags: [ocr, pdf-to-markdown, image-to-text, document-parsing] auth: api_key version: 0.1.0 service_type: sync endpoints: 2 atoms: 400 --- # Image & PDF OCR to Markdown API Extract text, tables, and blocks from PDFs or images as Markdown, text, or JSON. Useful for document ingestion, receipts, scans, and screenshots. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/callable-labs/ocr-pdf-to-markdown/v1/ocr/document` | What it does Reads one page of a PDF, scanned or digital, and returns it as Markdown, plain text, t… | 400 | | POST | `https://api.eu.apyhub.com/callable-labs/ocr-pdf-to-markdown/v1/ocr/image` | What it does Reads one photo, scan, or screenshot and returns its content as Markdown, plain text,… | 400 | ## Endpoint reference ### Read a PDF page `POST https://api.eu.apyhub.com/callable-labs/ocr-pdf-to-markdown/v1/ocr/document` · 400 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `dpi` | body | integer | no | Resolution used to render the page. Range: `72-300`. Default: `200`. The rendered page is capped at 25 megapixels; if the requested `dpi` would exceed this, a lower `dpi` is used automatically. Defau… | | `mode` | body | string | no | Reading mode: `auto` for varied documents, `layout` for structured blocks, or `plain` for a single text block. Default: `auto`. One of: auto, layout, plain. Default: `auto`. | | `page` | body | integer | no | The 1-based page number to read. Range: `1-1000`. Default: `1`. Default: `1`. | | `charts` | body | boolean | no | Whether to convert bar, line, and pie charts into data tables. Default: `true`. Default: `true`. | | `format` | body | string | no | Response format: `json` (full result), `markdown` (page as `text/markdown`), or `text` (page as `text/plain`). Default: `json`. One of: json, markdown, text. Default: `json`. | | `document` | body | any | yes | The PDF to read. Provide exactly one of `document.url` or `document.base64`. | | `include_blocks` | body | boolean | no | Whether to include `blocks` in the JSON response. Default: `true`. Default: `true`. | #### Quickstart Read page 1 of a PDF from a public URL. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/ocr-pdf-to-markdown/v1/ocr/document" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "document": { "url": "https://assets.apyhub.com/samples/sample.pdf" }, "page": 1, "dpi": 200, "format": "json", "mode": "auto", "include_blocks": true, "charts": true }' ``` Expect JSON with recognized `markdown`, `text`, `blocks`, `tables`, and `page` metadata. ##### What you'll get back You will receive the page's content as Markdown and plain text, typed blocks with bounding boxes in reading order, any tables found, page information including the total page count and the resolution used, the reading mode used, model, cache, and timing information. ```json { "markdown": "Dummy PDF file\n", "text": "Dummy PDF file", "blocks": [ { "type": "text", "label": "text", "order": 0, "bbox": [153, 193, 506, 246], "content": "Dummy PDF file", "html": null, "markdown": null, "latex": null } ], "tables": [], "page": { "width": 1653, "height": 2339, "index": 1, "count": 1, "dpi": 200 }, "mode": "layout", "coverage": null, "model": { "layout": "PP-DocLayoutV3@241f8bd", "vlm": "PaddleOCR-VL-1.6@c5630ab" }, "cache": "hit", "timing": { "fetch_ms": 320, "decode_ms": 0, "queued_ms": 0, "ocr_ms": 0 } } ``` ### Read an image (OCR to Markdown) `POST https://api.eu.apyhub.com/callable-labs/ocr-pdf-to-markdown/v1/ocr/image` · 400 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | body | string | no | Reading mode: `auto` for varied documents, `layout` for structured blocks, or `plain` for a single text block. Default: `auto`. One of: auto, layout, plain. Default: `auto`. | | `image` | body | any | yes | The image to read. Provide exactly one of `image.url` or `image.base64`. | | `charts` | body | boolean | no | Whether to convert bar, line, and pie charts into data tables. Default: `true`. Default: `true`. | | `format` | body | string | no | Response format: `json` (full result), `markdown` (page as `text/markdown`), or `text` (page as `text/plain`). Default: `json`. One of: json, markdown, text. Default: `json`. | | `include_blocks` | body | boolean | no | Whether to include `blocks` in the JSON response. Default: `true`. Default: `true`. | #### Quickstart Set `APY_TOKEN` to your ApyHub API key. Replace the image URL with a public image you are authorized to process. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/ocr-pdf-to-markdown/v1/ocr/image" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "image": { "url": "https://assets.apyhub.com/samples/ReceiptSwiss.jpg" }, "format": "json", "mode": "auto", "include_blocks": true }' ``` Expect JSON with `markdown`, `text`, `blocks`, `tables`, and `page`. Review receipt amounts manually. For a local file, encode it with Python `base64` and supply `image.base64` instead of `image.url`. ## About [Callable Labs](https://callablelabs.com) · [Quickstart](https://callablelabs.com/docs/pdf-to-markdown-api/quickstart?via=apyhub) · [API reference](https://callablelabs.com/docs/pdf-to-markdown-api/reference?via=apyhub) ### What it does Image & PDF OCR to Markdown reads a single image or a single PDF page and returns its content as Markdown, plain text, or structured JSON. Send a photo, scan, or screenshot by public URL or base64 to the image endpoint, or a scanned or digital PDF by public URL or base64 to the document endpoint along with the page you want, and get clean, layout-aware output back in 100+ languages. Use it when you need accurate text and structure from receipts, invoices, forms, reports, research papers, or screenshots. The JSON response includes `markdown`, `text`, `blocks`, `tables`, and `page`, so you get the reading order, page dimensions, typed blocks with bounding boxes, and every detected table as HTML, Markdown, and cell rows without building your own OCR pipeline. Formulas come back as LaTeX, and bar, line, and pie charts can be turned into data tables. For PDFs, you choose the `page` to read (1-based), set `dpi` between 72 and 300 for rendering resolution, and use `page.count` from the response to walk through the rest of the document one page at a time. Both endpoints let you switch `mode` between `auto`, `layout`, and `plain`, pick a `format` of `json`, `markdown`, or `text`, turn block output on or off with `include_blocks`, and disable chart-to-table conversion with `charts`. ### Limits Some limits apply to both endpoints, and some apply to only one. | Input | Limit | Applies to | | --- | --- | --- | | PDFs | Up to 20 MiB and 1,000 pages; password-protected PDFs are not supported; one page per request. | Read a PDF Page | | PDF resolution | `dpi` 72–300 (default 200), at most 25 megapixels per rendered page. If the requested `dpi` would exceed 25 megapixels, the service automatically uses a lower `dpi` instead of failing. Always read the actual value from `page.dpi` in the response. | Read a PDF Page | | Images | Up to 20 MiB and 40 megapixels; PNG, JPEG, WebP, GIF, BMP, or TIFF; only the first frame of multi-frame images is read. | Read an Image | | URLs | Public http(s) only, up to 2,048 characters and 3 redirects; private and internal addresses are refused. | Both endpoints | | Base64 | Up to 20 MB decoded. Base64 encoding adds about one third to the request size. | Both endpoints | | Request time | Up to 55 seconds; very complex inputs may time out. | Both endpoints | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/callable-labs/service/ocr-pdf-to-markdown * * * --- title: "Domain Pricing, TLD & Registrar Information" slug: domain-pricing-tld-registrar-information url: https://apyhub.com/tlderscom/service/domain-pricing-tld-registrar-information provider: tlders categories: [Developer Tools, E-commerce Quick Tools, Standard Data] tags: [domains, tld, domain-pricing, registrar-pricing, domain-search] auth: api_key version: 1.0.0 service_type: sync endpoints: 18 atoms: 10 --- # Domain Pricing, TLD & Registrar Information Domain availability API that checks up to 100 names per call, compares TLD prices across registrars, and returns WHOIS, DNS, SSL and uptime data. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/tlds/list` | What it does Returns a filtered, sorted list of TLDs together with pricing and registrar informatio… | 10 | | GET | `https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/tlds/:tld` | What it does Returns the current pricing information for a single TLD, identified by the tld path p… | 10 | | GET | `https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/tlds/:tld/history` | What it does Returns the price history for a single TLD, grouped per registrar. The request identif… | 10 | | GET | `https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/compare/prices` | What it does Compares registrar prices across the TLDs you provide in the tlds query parameter and… | 10 | | GET | `https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/registrars/list` | What it does Returns the list of tracked registrars as a JSON object containing a data array. Each… | 10 | | GET | `https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/registrars/:slug` | What it does Returns detailed information for a single registrar identified by its slug, including… | 10 | | GET | `https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/all/prices` | What it does Returns every current price in one call, keyed by registrar slug and then by TLD. Use… | 10 | | GET | `https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/get/promos` | What it does Returns the active promo codes and the price after applying each code. The response is… | 10 | | GET | `https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/domain/info/:domain` | What it does Checks a domain in one call and returns WHOIS, DNS, SSL, and website status informatio… | 10 | | GET | `https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/check/domain` | What it does Checks whether a domain is available by looking it up live using RDAP, with WHOIS fall… | 10 | | POST | `https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/check/domains/availability` | What it does Checks the availability of up to 100 domains in one request. Returns a result for each… | 10 | | GET | `https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/domain/:domain/whois` | What it does Retrieves registration data for a domain using RDAP, with WHOIS fallback when applicab… | 10 | | GET | `https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/domain/:domain/dns` | What it does Retrieves DNS records for the specified domain and returns them grouped by record type… | 10 | | GET | `https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/domain/:domain/ssl` | What it does Retrieves SSL certificate details for a domain, including issuer, validity period, rem… | 10 | | GET | `https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/domain/:domain/status` | What it does Checks whether a website is online for the given domain and returns a JSON object desc… | 10 | | GET | `https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/key/details` | What it does Returns the current API key’s plan, status, expiry, and today’s usage information as a… | 10 | | GET | `https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/pricing/status` | What it does Returns the current pricing coverage status as a JSON object wrapped in data. The resp… | 10 | | GET | `https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/demo/sample` | What it does Returns a JSON object containing pricing data in data and additional information in me… | 10 | ## Endpoint reference ### List TLDs & Cheapest Prices `GET https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/tlds/list` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `q` | query | string | no | | | `sort` | query | string | no | One of: popularity, price_asc, price_desc, tld. Default: `popularity`. | | `type` | query | string | no | | | `limit` | query | integer | no | | | `offset` | query | integer | no | Default: `0`. | | `category` | query | string | no | | #### Quickstart List TLDs, filtered and sorted with optional query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/tlds/list?q=com&sort=popularity&limit=1&offset=0" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back A JSON object with a `data` array of TLDs and a `meta` object with pagination info. Each TLD includes `type`, `category`, `isRestricted`, `popularityRank`, `registrarCount` and the cheapest register, renew, transfer and three-year prices (each `null` when no registrar publishes one). Prices are USD per year. ```json { "data": [ { "id": "com", "tld": "com", "type": "gtld", "category": [], "isRestricted": false, "popularityRank": 1, "registrarCount": 120, "cheapestRegister": { "price": 9.98, "registrar": { "name": "Porkbun", "slug": "porkbun" } }, "cheapestRenew": { "price": 9.98, "registrar": { "name": "Porkbun", "slug": "porkbun" } }, "cheapestTransfer": { "price": 9.98, "registrar": { "name": "Porkbun", "slug": "porkbun" } }, "cheapestThreeYear": { "price": 29.94, "registrar": { "name": "Porkbun", "slug": "porkbun" } } } ], "meta": { "limit": 1, "total": 12, "offset": 0 } } ``` ### Get TLD Prices by Registrar `GET https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/tlds/:tld` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `tld` | path | string | yes | Example: `com`. | #### Quickstart Get every registrar's current price for one TLD. Set the `tld` path value (for example `com`) without a leading dot. ```bash curl -X GET "https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/tlds/:tld" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back A JSON object with a `data` object containing the TLD's metadata, summary `priceStats`, and a `currentPrices` array with one entry per registrar. A price of `0` means unknown. Returns `404` if the TLD is not tracked. ```json { "data": { "tld": "com", "type": "gtld", "category": [], "registryOperator": "Verisign", "launchDate": null, "isRestricted": false, "idnSupported": true, "dnssecSupported": true, "currentPrices": [ { "registrar": { "name": "Porkbun", "slug": "porkbun", "logoUrl": "https://example.com/porkbun.png", "whoisPrivacyIncluded": true }, "priceRegister": 11.08, "priceRenew": 11.08, "priceTransfer": 11.08, "currency": "USD", "fetchedAt": "2026-09-30T02:00:00Z" } ], "priceStats": { "average": { "register": 12.4, "renew": 14.1, "transfer": 12.9 }, "median": { "register": 11.5, "renew": 13.2, "transfer": 11.9 } } } } ``` ### Get TLD Price History `GET https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/tlds/:tld/history` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `tld` | path | string | yes | Example: `com`. | #### Quickstart Fetch the TLD price history for a domain extension like `com`. ```bash curl -X GET "https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/tlds/:tld/history" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a top-level `data` array. Each item contains a `registrar` object with `name` and `slug`, and a `points` array of price records with `fetchedAt`, `priceRegister`, and `priceRenew`. ```json { "data": [ { "registrar": { "name": "Porkbun", "slug": "porkbun" }, "points": [ { "fetchedAt": "2024-01-01T00:00:00Z", "priceRegister": 9.99, "priceRenew": 11.99 } ] } ] } ``` ### Compare TLD Prices `GET https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/compare/prices` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `tlds` | query | string | yes | Comma-separated, up to 20. Example: `com,io,net`. | #### Quickstart Compare registrar prices across several TLDs (up to 20) in one request. ```bash curl -X GET "https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/compare/prices?tlds=com,io,net" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back A JSON object with a `data` array, one item per TLD, each with a `prices` array of registrar prices (USD per year; `0` = unknown). Abbreviated example: ```json { "data": [ { "tld": "com", "type": "gtld", "category": [], "isRestricted": false, "prices": [ { "registrar": { "name": "Porkbun", "slug": "porkbun", "logoUrl": "https://example.com/porkbun.png", "whoisPrivacyIncluded": true }, "priceRegister": 11.08, "priceRenew": 11.08, "priceTransfer": 11.08, "currency": "USD", "fetchedAt": "2026-09-30T02:00:00Z" } ] } ] } ``` ### List Registrars `GET https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/registrars/list` · 10 atoms · accepts `application/json` #### Quickstart Fetch the list of tracked registrars. ```bash curl -X GET "https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/registrars/list" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back A JSON object with a `data` array. Each item has the registrar's `id`, `name`, `slug`, `logoUrl`, `trackedTlds` (number of TLDs tracked), `affiliateNetwork` and `whoisPrivacyIncluded` (`true`, `false` or `null` if unknown). Use a `slug` with the other registrar endpoints. ```json { "data": [ { "id": "1", "name": "Porkbun", "slug": "porkbun", "logoUrl": "https://example.com/porkbun.png", "trackedTlds": 150, "affiliateNetwork": "cj", "whoisPrivacyIncluded": true } ] } ``` ### Get Registrar Details `GET https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/registrars/:slug` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `slug` | path | string | yes | Example: `porkbun`. | #### Quickstart Get details for a registrar by its slug. ```bash curl -X GET "https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/registrars/:slug" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. The `data` object includes registrar details such as `name`, `slug`, `logoUrl`, `pageUrl`, `reviews`, `lastUpdated`, `trackedTlds`, `activePromos`, `affiliateNetwork`, `whoisPrivacyIncluded`, and `cheapestRegistrations`. ```json { "data": { "name": "Porkbun", "slug": "porkbun", "logoUrl": "https://example.com/logo.png", "pageUrl": "https://example.com/registrars/porkbun", "reviews": { "count": 120, "averageRating": 4.8 }, "lastUpdated": "2026-01-01T12:00:00Z", "trackedTlds": 500, "activePromos": [], "affiliateNetwork": "none", "whoisPrivacyIncluded": true, "cheapestRegistrations": [] } } ``` ### Get All Registrar & TLD Prices `GET https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/all/prices` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `tlds` | query | string | no | Example: `com,io,ai`. | | `format` | query | string | no | Comma-separated TLDs without dots One of: compact, full. Default: `compact`. | | `registrars` | query | string | no | Comma-separated registrar slugs Example: `porkbun,dynadot`. | #### Quickstart Fetch current prices for selected registrars and TLDs, in the default compact format. ```bash curl -X GET "https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/all/prices?registrars=porkbun&tlds=com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back A JSON object with a `data` object (registrar slug → TLD → `[register, renew, transfer]` in USD per year) and a `meta` object with counts. A `0` means the price is not published. ```json { "data": { "porkbun": { "com": [11.08, 11.08, 11.08] } }, "meta": { "format": "compact", "currency": "USD", "registrars": 1, "tlds": 1, "prices": 1 } } ``` ### Get Active Promo Codes `GET https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/get/promos` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `tlds` | query | string | no | Example: `com,io`. | | `type` | query | string | no | One of: register, renew, transfer. | | `limit` | query | integer | no | Default: `50`. | | `offset` | query | integer | no | Default: `0`. | | `verified` | query | boolean | no | | | `registrars` | query | string | no | Example: `namecheap,spaceship`. | #### Quickstart List active promo codes, optionally filtered by registrar, TLD and price type. ```bash curl -X GET "https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/get/promos?registrars=namecheap&tlds=com&limit=1" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back A JSON object with a `data` array of promo codes. Each item shows the code, what it applies to, the registrar, and the price before and after the code (USD). ```json { "data": [ { "code": "COM67", "tld": "com", "priceTld": "com", "appliesTo": "register", "priceType": "register", "discountType": "price", "discountValue": 3.6, "discountLabel": "$3.60 with code", "regularPrice": 10.28, "priceAfterCode": 3.6, "savingPercent": 65, "isVerified": true, "lastVerifiedAt": "2026-09-29T08:00:00Z", "startsAt": null, "expiresAt": null, "usageLimit": null, "registrar": { "name": "Namecheap", "slug": "namecheap", "logoUrl": "https://example.com/namecheap.png" } } ] } ``` ### Get Complete Domain Information `GET https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/domain/info/:domain` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `domain` | path | string | yes | Domain name, e.g. example.com (Unicode domains are accepted) Example: `example.com`. | #### Quickstart Get WHOIS, DNS, SSL and website status for a domain in one call. Set the `domain` path value, for example `example.com`. ```bash curl -X GET "https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/domain/info/:domain" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back A JSON object with a `data` object containing `domain`, `whois`, `dns`, `ssl` and `status`. Abbreviated example: ```json { "data": { "domain": "example.com", "whois": { "domain": "example.com", "registered": true, "source": "rdap", "registrar": "Example Registrar, Inc.", "expiresAt": "2027-08-13T04:00:00Z", "daysUntilExpiry": 317, "nameservers": ["ns1.example.com", "ns2.example.com"] }, "dns": { "A": [{ "name": "example.com", "type": "A", "ttl": 3600, "data": "93.184.216.34" }] }, "ssl": { "domain": "example.com", "valid": true, "daysRemaining": 61 }, "status": { "domain": "example.com", "online": true, "statusCode": 200 } } } ``` ### Check Domain Availability `GET https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/check/domain` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `domain` | query | string | yes | Example: `example.com`. | #### Quickstart Check whether a domain is available by passing the domain name as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/check/domain?domain=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object containing `domain` (`string`), `expires` (`string` or `null`), `available` (`boolean` or `null`), and `registrar` (`string` or `null`). ```json { "data": { "domain": "apyhub.com", "available": false, "registrar": "Porkbun LLC", "expires": "2028-11-17T15:51:44Z" } } ``` ### Check Multiple Domains `POST https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/check/domains/availability` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `domains` | body | array of string | yes | Example: `["example.com","mybrand.io"]`. | #### Quickstart Check up to 100 domains at once by sending them as a JSON array. ```bash curl -X POST "https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/check/domains/availability" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"domains":["apyhub.com","mybrand.io"]}' ``` #### What you'll get back A JSON object with a `data` array (one result per input) and a `meta` object with `total`, `available`, `taken` and `unknown` counts. ```json { "data": [ { "input": "apyhub.com", "domain": "apyhub.com", "available": false, "registrar": "Porkbun LLC", "expires": "2028-11-17T15:51:44Z" }, { "input": "mybrand.com", "domain": "mybrand.com", "available": false, "registrar": "Register.com - Network Solutions, LLC", "expires": "2026-11-29T15:37:30Z" } ], "meta": { "total": 2, "available": 0, "taken": 2, "unknown": 0 } } ``` ### Get Domain Registration Details `GET https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/domain/:domain/whois` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `domain` | path | string | yes | Example: `example.com`. | #### Quickstart Look up registration data for a domain. Set the `domain` path value, for example `example.com`. ```bash curl -X GET "https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/domain/:domain/whois" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back A JSON object with a `data` object containing the registrar, dates, status codes and nameservers. `source` is `rdap` or `whois` depending on which answered; `raw` is only set when WHOIS answered. ```json { "data": { "domain": "example.com", "registered": true, "source": "rdap", "registrar": "Example Registrar, Inc.", "createdAt": "1995-08-14T04:00:00Z", "updatedAt": "2026-08-14T07:01:31Z", "expiresAt": "2027-08-13T04:00:00Z", "daysUntilExpiry": 317, "status": ["client delete prohibited", "client transfer prohibited"], "nameservers": ["ns1.example.com", "ns2.example.com"], "dnssec": true, "raw": null } } ``` ### Get DNS Records `GET https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/domain/:domain/dns` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `types` | query | string | no | Example: `A,MX,TXT`. | | `domain` | path | string | yes | Example: `example.com`. | #### Quickstart Look up DNS records for a domain, optionally filtering by record types. ```bash curl -X GET "https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/domain/:domain/dns?types=A,MX,TXT" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. `data.domain` is the domain you queried, and `data.records` is an object mapping each record type to an array of DNS record objects. ```json { "data": { "domain": "example.com", "records": { "A": [ { "ttl": 3600, "data": "93.184.216.34", "name": "example.com", "type": "A" } ] } } } ``` ### Get SSL Certificate Details `GET https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/domain/:domain/ssl` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `domain` | path | string | yes | Example: `example.com`. | #### Quickstart Check the SSL status for a domain by passing it in the URL path. ```bash curl -X GET "https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/domain/:domain/ssl" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. Inside `data`, the response includes the domain check result fields such as `domain` and may include `valid`, `error`, certificate details, and expiry information. ```json { "data": { "domain": "apyhub.com", "valid": true, "error": null, "issuer": "Google Trust Services", "subject": "apyhub.com", "validFrom": "2026-08-30T12:40:27.000Z", "validTo": "2026-11-28T13:40:25.000Z", "daysRemaining": 59, "altNames": [ "apyhub.com", "*.apyhub.com" ], "protocol": "TLSv1.3" } } ``` ### Check Website Status `GET https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/domain/:domain/status` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `domain` | path | string | yes | Example: `example.com`. | #### Quickstart Check whether a domain is online by passing the domain in the path. ```bash curl -X GET "https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/domain/:domain/status" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. That `data` object includes `domain` as a string, `online` as a boolean, and other response details such as `error`, `server`, `finalUrl`, `redirects`, `statusCode`, and `responseTimeMs`. ```json { "data": { "domain": "apyhub.com", "online": true, "statusCode": 200, "finalUrl": "https://apyhub.com/", "redirects": [], "responseTimeMs": 149, "server": "cloudflare", "error": null } } ``` ### Get API Key & Usage Details `GET https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/key/details` · 10 atoms · accepts `application/json` #### Quickstart Fetch your API key information. ```bash curl -X GET "https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/key/details" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object containing your key details. The `data` object includes `plan`, `usage`, `status`, `expiresAt`, and `keyPrefix`. ```json { "data": { "plan": "yearly", "usage": { "used": 120, "limit": 1000, "resetsAt": "2026-01-01T00:00:00Z", "remaining": 880 }, "status": "active", "expiresAt": "2026-12-31T23:59:59Z", "keyPrefix": "apy_abc" } } ``` ### Get Pricing Status & Coverage `GET https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/pricing/status` · 10 atoms · accepts `application/json` #### Quickstart Check the service status with a simple GET request. ```bash curl -X GET "https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/pricing/status" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. Inside `data`, `status` is a string, `tracked` is an object with integer counts for `tlds`, `prices`, `registrars`, and `activePromos`, `lastUpdated` is a string or null in date-time format, and `updateSchedule` is a string. ```json { "data": { "status": "ok", "tracked": { "tlds": 1234, "prices": 567, "registrars": 89, "activePromos": 12 }, "lastUpdated": "2026-09-28T12:00:00Z", "updateSchedule": "daily" } } ``` ### Get Free Pricing Sample `GET https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/demo/sample` · 10 atoms · accepts `application/json` #### Quickstart Fetch the demo endpoint with your API token. ```bash curl -X GET "https://api.eu.apyhub.com/tlderscom/domain-pricing-tld-registrar-information/demo/sample" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with: - `data` — an object whose keys map to objects with arbitrary nested properties - `meta` — an object that may include: - `note` — a string - `format` — a string ```json { "data": {}, "meta": { "note": "Example response", "format": "json" } } ``` ## About ***What it does*** This domain availability API checks whether a domain is free to register and what it costs across registrars. Send one name as a `domain` query parameter, or post up to 100 names in a `domains` array for a bulk check. Each result returns `available`, the current `registrar` and the `expires` date, from a live RDAP lookup with WHOIS fallback. The pricing endpoints compare TLD prices in USD per year. List TLDs with the cheapest register, renew, transfer and three-year prices, compare up to 20 TLDs in one call, pull price history per registrar, or fetch active promo codes with the price after each code. For registered domains, the WHOIS and DNS endpoints return registration dates, nameservers, DNSSEC status and records grouped by type. Other calls check the SSL certificate and whether the website is online, or return all four in one domain info request. Use the domain availability API to power domain search in a signup or website builder flow, suggest cheaper extensions when a .com is taken, monitor expiry and certificate renewal across a domain portfolio, or build a registrar price comparison tool. Before buying an existing domain, check its search history with the [Domain Analysis API](https://apyhub.com/se-ranking/service/domain-analysis). Use the [Similar Sites API](https://apyhub.com/dosvak/service/similar-domains) to see who already operates in the same space, and the [Tech Stack Detection API](https://apyhub.com/chisleroff/service/detect-tech-stack) to see what a live site runs on. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/tlderscom/service/domain-pricing-tld-registrar-information * * * --- title: Food Ingredient Information API slug: food-ingredient-information-api url: https://apyhub.com/skycraft/service/food-ingredient-information-api provider: Skycraft categories: [Image Processing] tags: [ingredient-search, nutrition-data, food-substitutes, recipe-ingredients, grocery-mapping] auth: api_key version: 2.0.2 service_type: sync endpoints: 8 atoms: 20 --- # Food Ingredient Information API Ingredient API to search foods, get nutrition per amount, find substitutes, and map recipe ingredients to grocery products by UPC. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/search` | What it does Searches for food ingredients by a query string and returns a paginated JSON object co… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/:id/information` | What it does Retrieves information for a specific ingredient by its id. You can optionally supply u… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/:id/substitutes` | What it does Retrieves substitute ingredients for a specific ingredient ID. The response returns a… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/recipes/:id/ingredientWidget.png` | What it does Returns the ingredient widget image for a recipe identified by its numeric id. You can… | 20 | | POST | `https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/map` | What it does Maps a list of ingredient names to grocery products. You send the ingredients and serv… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/substitutes` | What it does Returns ingredient substitute information for a given ingredient name. You provide the… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/:id/amount` | What it does Computes the amount of the ingredient identified by id for a requested nutrient and ta… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/autocomplete` | What it does Returns a JSON array of ingredient suggestions matching the query search term. Each it… | 20 | ## Endpoint reference ### Ingredient Search `GET https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/search` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `sort` | query | string | no | Example: `calories`. | | `query` | query | string | yes | Example: `burger`. | | `number` | query | integer | no | Default: `10`. Example: `10`. | | `offset` | query | integer | no | | | `language` | query | string | no | One of: en, de. Example: `en`. | | `addChildren` | query | boolean | no | Example: `true`. | | `intolerances` | query | string | no | Example: `egg`. | | `maxFatPercent` | query | number | no | Example: `90`. | | `minFatPercent` | query | number | no | Example: `10`. | | `sortDirection` | query | string | no | Example: `asc`. | | `maxCarbsPercent` | query | number | no | Example: `90`. | | `metaInformation` | query | boolean | no | Example: `false`. | | `minCarbsPercent` | query | number | no | Example: `10`. | | `maxProteinPercent` | query | number | no | Example: `90`. | | `minProteinPercent` | query | number | no | Example: `10`. | #### Quickstart Search for ingredients by a keyword query and return the first page of matching results. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/search?query=burger" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `results`, `offset`, `number`, and `totalResults` fields. `results` is an array of ingredient objects, each with `id`, `name`, and `image`; `offset` and `number` describe the page, and `totalResults` is the total number of matches. ```json { "number": 10, "offset": 0, "results": [ { "id": 123, "name": "Burger", "image": "burger.png" } ], "totalResults": 1 } ``` ### Get Ingredient Information `GET https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/:id/information` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | path | string | yes | Example: `9266`. | | `unit` | query | string | no | Example: `grams`. | | `amount` | query | number | no | Example: `150`. | #### Quickstart Fetch ingredient information for a specific ingredient ID, with optional unit and amount query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/:id/information?unit=grams&amount=150" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with fields such as `id`, `name`, `original`, `originalName`, `amount`, `unit`, `unitShort`, `unitLong`, `possibleUnits`, `estimatedCost`, `consistency`, `aisle`, `image`, and `meta`. It may also include a nested `nutrition` object with `nutrients`, `properties`, `caloricBreakdown`, and `weightPerServing`. ```json { "id": 12135, "original": "nuts", "originalName": "nuts", "name": "nuts", "amount": 150, "unit": "grams", "unitShort": "g", "unitLong": "grams", "possibleUnits": ["handful", "g", "ounce", "oz", "cup", "serving", "tablespoon"], "estimatedCost": { "value": 182.14, "unit": "cents" }, "consistency": "solid", "shoppingListUnits": ["ounces", "pounds"], "aisle": "Nuts", "image": "nuts-mixed.jpg", "meta": [], "nutrition": { "nutrients": [ {"name": "Calories", "amount": 891, "unit": "kcal", "percentOfDailyNeeds": 44.55}, {"name": "Protein", "amount": 25.95, "unit": "g", "percentOfDailyNeeds": 51.9}, {"name": "Carbohydrates", "amount": 38.03, "unit": "g", "percentOfDailyNeeds": 12.68}, {"name": "Fat", "amount": 77.18, "unit": "g", "percentOfDailyNeeds": 118.73}, {"name": "Fiber", "amount": 13.5, "unit": "g", "percentOfDailyNeeds": 54} ], "properties": [ {"name": "Glycemic Index", "amount": 29.67, "unit": ""}, {"name": "Glycemic Load", "amount": 7.28, "unit": ""}, {"name": "Nutrition Score", "amount": 27.72, "unit": "%"} ], "flavonoids": [], "caloricBreakdown": { "percentProtein": 10.92, "percentFat": 73.08, "percentCarbs": 16 }, "weightPerServing": { "amount": 150, "unit": "g" } }, "categoryPath": ["snack"] } ``` ### Get Ingredient Substitutes by ID `GET https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/:id/substitutes` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | path | string | yes | Example: `1001`. | #### Quickstart Fetch the substitutes for a food ingredient by ID. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/:id/substitutes" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `ingredient` and `message` string fields, plus a `substitutes` array of strings. ```json { "ingredient": "sugar", "substitutes": ["honey", "maple syrup"], "message": "Substitutes found" } ``` ### Ingredients by ID Image `GET https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/recipes/:id/ingredientWidget.png` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | path | string | yes | Example: `1082038`. | | `measure` | query | string | no | One of: us, metric. Example: `metric`. | #### Quickstart Fetch the recipe ingredient widget image for a recipe ID. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/recipes/:id/ingredientWidget.png" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a binary image response (`string` with `format: binary`) ### Map Ingredients to Grocery Products `POST https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/map` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `servings` | body | number | yes | | | `ingredients` | body | array of string | yes | | #### Quickstart Map a list of ingredients to product matches by sending the required `ingredients` and `servings` fields. ```bash curl -X POST "https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/map" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "ingredients": ["tomato", "mozzarella"], "servings": 2 }' ``` #### What you'll get back Returns a JSON array of objects. Each item includes `original`, `originalName`, `ingredientImage`, `meta` (an array of strings), and `products` (an array of product objects with `id`, `title`, and `upc`). ```json [ { "original": "tomato", "originalName": "Tomato", "ingredientImage": "https://example.com/tomato.png", "meta": ["fresh"], "products": [ { "id": 123, "title": "Fresh Tomato", "upc": "012345678905" } ] } ] ``` ### Get Ingredient Substitutes `GET https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/substitutes` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `ingredientName` | query | string | yes | Example: `butter`. | #### Quickstart Look up ingredient substitutes by passing the ingredient name as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/substitutes?ingredientName=butter" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `ingredient` and `message` string fields, plus a `substitutes` array of strings. ```json { "ingredient": "butter", "substitutes": ["margarine", "ghee"], "message": "Substitutes found successfully" } ``` ### Compute Ingredient Amount `GET https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/:id/amount` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | path | string | yes | Example: `9266`. | | `unit` | query | string | no | Example: `oz`. | | `target` | query | integer | yes | Example: `2`. | | `nutrient` | query | string | yes | Example: `protein`. | #### Quickstart Get the amount for a food ingredient by ID, using the required nutrient and target query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/:id/amount?target=2&nutrient=protein" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `amount` as a number and `unit` as a string. ```json { "amount": 0.7, "unit": "oz" } ``` ### Autocomplete Ingredient Search `GET https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/autocomplete` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `query` | query | string | yes | Example: `burger`. | | `number` | query | integer | no | Default: `10`. Example: `10`. | | `language` | query | string | no | One of: en, de. Example: `en`. | | `intolerances` | query | string | no | Example: `egg`. | | `metaInformation` | query | boolean | no | Example: `false`. | #### Quickstart Search for matching ingredient names with the required `query` parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/food-ingredient-information-api/food/ingredients/autocomplete?query=burger" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON array of ingredient objects. Each object includes the required `name` and `image` fields, and may also include `id`, `aisle`, and `possibleUnits`. ```json [ { "id": 1001, "name": "butter", "aisle": "Dairy", "image": "butter.jpg", "possibleUnits": ["stick", "tablespoon"] } ] ``` ## About ## What it does The ingredient API gives food apps one place to search ingredients, pull their nutrition, and find alternatives. Search by name with `query`, or use the autocomplete endpoint for type-ahead fields, then fetch full details by `id`. Ingredient Information returns calories, macros, glycemic index and a caloric breakdown for any `amount` and `unit`, plus aisle, estimated cost and possible units. Eight endpoints cover the rest of the flow. Get Ingredient Substitutes returns alternatives by name or `id`, such as margarine or ghee for butter. Compute Ingredient Amount works backward from a nutrient target, for example how much of an ingredient gives 10 g of protein. Map Ingredients to Grocery Products turns a recipe's ingredient list and `servings` into matching products with UPC codes. The ingredient widget endpoint renders a recipe's ingredient list as a PNG in US or metric units. Search can filter by `intolerances` and by fat, carb and protein percentage, in English or German. Use the ingredient API in meal planners and diet trackers that need nutrition per portion, recipe apps that suggest ingredient substitution for allergies or missing items, and grocery and delivery apps that turn a recipe into a shopping cart. Parse free-text recipes into structured ingredients first with the [Ingredient Parser API](https://apyhub.com/ingredients/service/parse-ingredients). For recipe discovery, use the [Food Search API](https://apyhub.com/skycraft/service/food-search-trivia-api), and suggest a bottle for the finished dish with the [Wine Pairing API](https://apyhub.com/skycraft/service/wine-pairing-recommendations-api). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/skycraft/service/food-ingredient-information-api * * * --- title: "Food Search & Trivia API" slug: food-search-trivia-api url: https://apyhub.com/skycraft/service/food-search-trivia-api provider: Skycraft categories: [Artificial Intelligence] tags: [food-search, recipe-discovery, food-videos, image-classification, chatbot, content-search] auth: api_key version: 2.0.2 service_type: sync endpoints: 9 atoms: 20 --- # Food Search & Trivia API Search food content, classify food images, and get food chatbot responses. Returns recipes, videos, trivia, jokes, and structured search results. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/trivia/random` | What it does Returns a random food trivia item as a JSON object. Response Returns a JSON object wit… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/jokes/random` | What it does Returns a random food joke as a JSON object containing a single text string. Response… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/converse/suggest` | What it does Returns conversation suggestion data for a given query string. The endpoint accepts a… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/images/classify` | What it does Classifies an image from a URL and returns the predicted food category together with a… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/images/analyze` | What it does Analyzes an image provided by URL and returns identified category information, nutriti… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/converse` | What it does Sends a text query to the chatbot and returns a JSON object containing the chatbot’s a… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/search` | What it does Searches the food catalog for items matching a query string and returns a JSON object… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/site/search` | What it does Searches site content for the supplied query string and returns matching results group… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/videos/search` | What it does Searches for food-related videos using query parameters and returns a JSON object cont… | 20 | ## Endpoint reference ### Random Food Trivia `GET https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/trivia/random` · 20 atoms · accepts `application/json` #### Quickstart Get a random food trivia fact. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/trivia/random" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a required `text` string field containing the trivia fact. ```json { "text": "Bananas are berries, but strawberries are not." } ``` ### Random Food Joke `GET https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/jokes/random` · 20 atoms · accepts `application/json` #### Quickstart Fetch a random food joke with your API token. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/jokes/random" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `text` string field containing the joke. ```json { "text": "Why did the tomato turn red? Because it saw the salad dressing." } ``` ### Conversation Suggests `GET https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/converse/suggest` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `query` | query | string | yes | Example: `tell`. | | `number` | query | number | no | Example: `5`. | #### Quickstart Use the `query` parameter to get food conversation suggestions. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/converse/suggest?query=tell" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with two top-level fields: `suggests` and `words`. - `words` is an array of strings. - `suggests` is an object with a required `_` field, where `_` is an array of objects; each object contains a `name` string. ```json { "suggests": { "_": [ { "name": "pizza" } ] }, "words": [ "pizza", "pasta" ] } ``` ### Image Classification by URL `GET https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/images/classify` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `imageUrl` | query | string | yes | Example: `https://spoonacular.com/recipeImages/635350-240x150.jpg`. | #### Quickstart Classify a food image by passing its image URL as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/images/classify?imageUrl=https://assets.apyhub.com/samples/recipe.jpg" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `category` string and a `probability` number. ```json { "category": "pizza", "probability": 0.98 } ``` ### Image Analysis by URL `GET https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/images/analyze` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `imageUrl` | query | string | yes | Example: `https://spoonacular.com/recipeImages/635350-240x150.jpg`. | #### Quickstart Analyze a food image by passing its image URL as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/images/analyze?imageUrl=https://assets.apyhub.com/samples/recipe.jpg" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with three top-level fields: `nutrition` (an object with nutrition estimates), `category` (an object with the predicted food category), and `recipes` (an array of matching recipe objects). ```json { "nutrition": { "recipesUsed": 0, "calories": { "value": 0, "unit": "kcal", "confidenceRange95Percent": { "min": 0, "max": 0 }, "standardDeviation": 0 }, "fat": { "value": 0, "unit": "g", "confidenceRange95Percent": { "min": 0, "max": 0 }, "standardDeviation": 0 }, "protein": { "value": 0, "unit": "g", "confidenceRange95Percent": { "min": 0, "max": 0 }, "standardDeviation": 0 }, "carbs": { "value": 0, "unit": "g", "confidenceRange95Percent": { "min": 0, "max": 0 }, "standardDeviation": 0 } }, "category": { "name": "dessert", "probability": 0.98 }, "recipes": [] } ``` ### Talk to Chatbot `GET https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/converse` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | query | string | yes | Example: `donut recipes`. | | `contextId` | query | string | no | Example: `342938`. | #### Quickstart Ask the endpoint a food-related question by passing the required `text` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/converse?text=donut%20recipes" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with an `answerText` string and a `media` array. `answerText` contains the reply text, and each item in `media` is an object that may include `link`, `image`, and `title`. ```json { "answerText": "Here are some donut recipes you can try.", "media": [ { "link": "https://example.com/donut-recipes", "title": "Donut recipes" } ] } ``` ### Search All Food `GET https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/search` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `query` | query | string | yes | Example: `apple`. | | `number` | query | integer | no | Default: `10`. Example: `10`. | | `offset` | query | integer | no | | #### Quickstart Search for foods by query string using the required `query` parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/search?query=apple" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `query` (string), `totalResults` (integer), `limit` (integer), `offset` (integer), and `searchResults` (array). `searchResults` contains objects with `name` and `totalResults`, and each result item may include fields like `id`, `link`, `name`, `type`, `image`, `content`, `kvtable`, and `relevance`. ```json { "query": "apple", "totalResults": 1, "limit": 10, "offset": 0, "searchResults": [ { "name": "Apple", "totalResults": 1, "results": [ { "id": 1, "name": "Apple" } ] } ] } ``` ### Search Site Content `GET https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/site/search` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `query` | query | string | yes | Example: `past`. | #### Quickstart Search for food-related matches by query string. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/site/search?query=past" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with four required top-level arrays: `Articles`, `Grocery Products`, `Menu Items`, and `Recipes`. Each array contains result objects with at least a `name` field, and may also include `id`, `link`, `type`, `image`, `content`, `kvtable`, and `relevance`. ```json { "Articles": [], "Grocery Products": [], "Menu Items": [], "Recipes": [] } ``` ### Search Food Videos `GET https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/videos/search` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `diet` | query | string | no | Example: `vegetarian`. | | `type` | query | string | no | Example: `main course`. | | `query` | query | string | yes | Example: `burger`. | | `number` | query | integer | no | Default: `10`. Example: `10`. | | `offset` | query | integer | no | | | `cuisine` | query | string | no | Example: `italian`. | | `maxLength` | query | number | no | Example: `999`. | | `minLength` | query | number | no | Example: `0`. | | `excludeIngredients` | query | string | no | Example: `eggs`. | | `includeIngredients` | query | string | no | Example: `tomato,cheese`. | #### Quickstart Search for food-related videos with a required query string. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/food-search-trivia-api/food/videos/search?query=burger" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `videos` and `totalResults` fields. `videos` is an array of video objects, and each video includes `title`, `length`, `rating`, `shortTitle`, `thumbnail`, `views`, and `youTubeId`; `totalResults` is the total number of matching videos. ```json { "videos": [ { "title": "How to Make a Burger", "length": 180, "rating": 4.8, "shortTitle": "Burger", "thumbnail": "https://example.com/thumb.jpg", "views": 125000, "youTubeId": "abc123" } ], "totalResults": 1 } ``` ## About ## What it does Food Search gives you food discovery, media lookup, and conversational food responses in one API. Send a search query, image URL, or text prompt, and get structured results back for recipes, menu items, grocery products, videos, trivia, jokes, and chatbot answers. Use `/food/search` to search across food content with `query`, and optionally `number` and `offset`. Use `/food/site/search` to look up site content by `query` across Recipes, Articles, Menu Items, and Grocery Products. For richer discovery, `/food/videos/search` supports `query` plus filters like `diet`, `type`, `cuisine`, `includeIngredients`, `excludeIngredients`, `minLength`, `maxLength`, `number`, and `offset`, returning video metadata and `totalResults`. If you work with images, `/food/images/classify` accepts an `imageUrl` and returns a `category` with `probability`. `/food/images/analyze` also takes `imageUrl`, and returns `nutrition`, `category`, and matching `recipes`. For text-based workflows, `/food/detect` accepts a body with `text` and returns `annotations`, while `/food/converse` and `/food/converse/suggest` provide `answerText`, `media`, `suggests`, and `words` for food-focused chat flows. You can also generate lightweight engagement content with `/food/trivia/random` and `/food/jokes/random`, both returning a single `text` field. This makes Food Search useful for recipe apps, content sites, assistants, and product experiences that need food search, classification, and conversational output without building the logic yourself. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/skycraft/service/food-search-trivia-api * * * --- title: "Wine Pairing & Recommendations API" slug: wine-pairing-recommendations-api url: https://apyhub.com/skycraft/service/wine-pairing-recommendations-api provider: Skycraft categories: [E-commerce Quick Tools, Smart Generation] tags: [wine-pairing, food-pairing, wine-recommendations, sommelier, menu-planning] auth: api_key version: 2.0.2 service_type: sync endpoints: 4 atoms: 20 --- # Wine Pairing & Recommendations API Wine pairing API that suggests wines for a dish and dishes for a wine, with descriptions and rated wine picks you can filter by price. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/skycraft/wine-pairing-recommendations-api/food/wine/dishes` | What it does Returns dish pairing suggestions for a wine. You provide the wine query parameter, and… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/wine-pairing-recommendations-api/food/wine/recommendation` | What it does Returns wine recommendations for a given wine query, with optional filters for result… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/wine-pairing-recommendations-api/food/wine/pairing` | What it does Returns wine pairing suggestions for a food item. You provide the food to pair, and th… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/wine-pairing-recommendations-api/food/wine/description` | What it does Returns a textual description for the wine specified in the wine query parameter. Quer… | 20 | ## Endpoint reference ### Dish Pairing for Wine `GET https://api.eu.apyhub.com/skycraft/wine-pairing-recommendations-api/food/wine/dishes` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `wine` | query | string | yes | Example: `malbec`. | #### Quickstart Fetch wine dish pairings for a wine query. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/wine-pairing-recommendations-api/food/wine/dishes?wine=malbec" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with required `pairings` and `text` fields. `pairings` is an array of strings, and `text` is a non-empty string. ```json { "pairings": ["grilled steak", "mushroom risotto"], "text": "Best paired with rich, savory dishes." } ``` ### Wine Recommendation `GET https://api.eu.apyhub.com/skycraft/wine-pairing-recommendations-api/food/wine/recommendation` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `wine` | query | string | yes | Example: `merlot`. | | `number` | query | number | no | Default: `10`. Example: `3`. | | `maxPrice` | query | number | no | Example: `50`. | | `minRating` | query | number | no | Example: `0.7`. | #### Quickstart Find wine recommendations for a wine name by passing it as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/wine-pairing-recommendations-api/food/wine/recommendation?wine=merlot" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `recommendedWines` array and a `totalFound` integer. Each item in `recommendedWines` is an object with `id`, `title`, `averageRating`, `description`, `imageUrl`, `link`, `price`, `ratingCount`, and `score`. ```json { "totalFound": 1, "recommendedWines": [ { "id": 123, "title": "Merlot Reserve", "averageRating": 4.6, "description": "A smooth red wine with cherry and plum notes.", "imageUrl": "https://example.com/wine.jpg", "link": "https://example.com/wine/123", "price": "$24.99", "ratingCount": 128, "score": 0.91 } ] } ``` ### Wine Pairing `GET https://api.eu.apyhub.com/skycraft/wine-pairing-recommendations-api/food/wine/pairing` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `food` | query | string | yes | Example: `steak`. | | `maxPrice` | query | number | no | Example: `50`. | #### Quickstart Get a wine pairing recommendation for a food item using the required `food` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/wine-pairing-recommendations-api/food/wine/pairing?food=steak" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `pairedWines` (an array of strings), `pairingText` (a string), and `productMatches` (an array of objects). Each product match includes `id`, `title`, `averageRating`, `imageUrl`, `link`, `price`, `ratingCount`, and `score`. ```json { "pairedWines": ["cabernet sauvignon", "merlot"], "pairingText": "Rich red wines pair well with steak.", "productMatches": [ { "id": 12345, "title": "Cabernet Sauvignon", "averageRating": 4.7, "imageUrl": "https://example.com/wine.jpg", "link": "https://example.com/product/12345", "price": "$24.99", "ratingCount": 128, "score": 0.98 } ] } ``` ### Wine Description `GET https://api.eu.apyhub.com/skycraft/wine-pairing-recommendations-api/food/wine/description` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `wine` | query | string | yes | Example: `merlot`. | #### Quickstart Look up a wine description by passing the wine name as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/wine-pairing-recommendations-api/food/wine/description?wine=merlot" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `wineDescription` string field containing the description of the wine. ```json { "wineDescription": "Merlot is a dry red wine which is smooth and medium bodied." } ``` ## About ## What it does The wine pairing API matches wines to food and food to wines. Send a `food` query such as `steak` and get back `pairedWines`, a plain-language `pairingText`, and `productMatches` with title, price, rating and link. Send a `wine` query such as `merlot` and get back the dishes that go with it. Four endpoints cover the full flow. Wine Pairing takes a dish and returns wine styles plus product matches, with an optional `maxPrice`. Dish Pairing for Wine returns `pairings` for a given wine. Wine Recommendation returns ranked `recommendedWines` with `averageRating`, `ratingCount`, `price` and `score`, filtered by `maxPrice`, `minRating` and `number` (up to 100). Wine Description returns a short `wineDescription` you can show next to a product. Use the wine pairing API to add food and wine pairing to recipe apps and meal planners, show a suggested bottle on restaurant menus and ordering flows, recommend wines at checkout in grocery and wine shops, and power a sommelier-style assistant in chat. Online wine retailers can pull descriptions and dish suggestions into product pages without writing tasting notes by hand. Pair it with the [Food Ingredient Information API](https://apyhub.com/skycraft/service/food-ingredient-information-api) for ingredient search, nutrition and substitutes, and the [Ingredient Parser API](https://apyhub.com/ingredients/service/parse-ingredients) to turn free-text recipes into structured ingredients before you pick a wine. For recipe discovery and food trivia, use the [Food Search API](https://apyhub.com/skycraft/service/food-search-trivia-api). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/skycraft/service/wine-pairing-recommendations-api * * * --- title: World News API slug: world-news-api url: https://apyhub.com/skycraft/service/world-news-api provider: Skycraft categories: [Artificial Intelligence, Data Extraction, Geolocation] tags: [news, media-monitoring, content-extraction, news-search, headline-data, sentiment-analysis] auth: api_key version: 2.2.0 service_type: sync endpoints: 9 atoms: 20 --- # World News API Search, extract, and retrieve news articles by URL, IDs, or source filters. Get titles, authors, summaries, publish dates, sentiment, and links. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/skycraft/world-news-api/extract-news` | What it does Extracts structured information from a news article URL. It returns the article’s core… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/world-news-api/search-news-sources` | What it does Searches for news sources matching a provided name and returns a JSON object containin… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/world-news-api/geo-coordinates` | What it does Resolves a geographic location string into coordinates. The response returns the match… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/world-news-api/search-news` | What it does Searches for news articles using the provided query parameters and returns a paginated… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/world-news-api/top-news` | What it does Returns the top news for the requested source country and language, with an optional d… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/world-news-api/extract-news-links` | What it does Extracts news links from a provided URL and returns them in a JSON object. The endpoin… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/world-news-api/feed.rss` | What it does Converts a news website URL into an RSS feed representation. It accepts the website UR… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/world-news-api/retrieve-front-page` | What it does Retrieves a newspaper front page for the specified query criteria and returns it in a… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/world-news-api/retrieve-news` | What it does Retrieves one or more news articles by their IDs and returns them in a JSON object und… | 20 | ## Endpoint reference ### Extract News `GET https://api.eu.apyhub.com/skycraft/world-news-api/extract-news` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | yes | Example: `https://www.bbc.com/news/world-us-canada-59340789`. | | `analyze` | query | boolean | no | Example: `true`. | #### Quickstart Fetch article metadata and extracted content from a news page by passing its URL as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/world-news-api/extract-news?url=https%3A%2F%2Fwww.bbc.com%2Fnews%2Fworld-us-canada-59340789" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with optional top-level fields such as `url`, `text`, `image`, `title`, `video`, `author`, `images`, `videos`, `authors`, `language`, and `publish_date`. ```json { "url": "https://www.bbc.com/news/world-us-canada-59340789", "title": "Example headline", "author": "BBC News", "language": "en", "publish_date": "2021-11-18T12:00:00Z" } ``` ### Search News Sources `GET https://api.eu.apyhub.com/skycraft/world-news-api/search-news-sources` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `name` | query | string | yes | Example: `bbc`. | #### Quickstart Find news sources by name with a simple GET request; this example looks up `bbc`. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/world-news-api/search-news-sources?name=bbc" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `sources` array and an `available` integer. Each item in `sources` is an object that may include `url`, `name`, and `language`. ```json { "sources": [ { "url": "https://www.bbc.com/news", "name": "BBC News", "language": "en" } ], "available": 1 } ``` ### Get Geo Coordinates `GET https://api.eu.apyhub.com/skycraft/world-news-api/geo-coordinates` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `location` | query | string | yes | Example: `Tokyo, Japan`. | #### Quickstart Look up the weather/news location for a city by passing its `location` as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/world-news-api/geo-coordinates?location=Tokyo%2C%20Japan" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with optional `city` as a string, `latitude` as a number, and `longitude` as a number. ```json { "city": "Tokyo", "latitude": 35.6895, "longitude": 139.6917 } ``` ### Search News `GET https://api.eu.apyhub.com/skycraft/world-news-api/search-news` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `sort` | query | string | no | Example: `publish-time`. | | `text` | query | string | no | Example: `tesla`. | | `number` | query | integer (int32) | no | Example: `10`. | | `offset` | query | integer (int32) | no | Example: `0`. | | `authors` | query | string | no | Example: `John Doe`. | | `entities` | query | string | no | Example: `ORG:Tesla,PER:Elon Musk`. | | `language` | query | string | no | Example: `en`. | | `categories` | query | string | no | Example: `politics,sports`. | | `news-sources` | query | string | no | Example: `https://www.bbc.co.uk`. | | `max-sentiment` | query | number (double) | no | Example: `0.8`. | | `min-sentiment` | query | number (double) | no | Example: `-0.8`. | | `sort-direction` | query | string | no | Example: `ASC`. | | `source-country` | query | string | no | Example: `us`. | | `location-filter` | query | string | no | Example: `51.050407, 13.737262, 20`. | | `text-match-indexes` | query | string | no | Example: `title,content`. | | `latest-publish-date` | query | string | no | Example: `2022-04-22 16:12:35`. | | `earliest-publish-date` | query | string | no | Example: `2022-04-22 16:12:35`. | #### Quickstart Search for recent world news matching a keyword, using the required API token header and a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/world-news-api/search-news?text=tesla&number=10" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `news` as an array of news items, plus `number`, `offset`, and `available` as integers. Each item in `news` can include fields like `id`, `url`, `text`, `image`, `title`, `video`, `authors`, `summary`, `category`, `language`, `sentiment`, `publish_date`, and `source_country`. ```json { "news": [ { "id": 123, "url": "https://example.com/article", "title": "Tesla shares rise after earnings", "authors": ["John Doe"], "sentiment": 0.7, "publish_date": "2022-04-22 16:12:35" } ], "number": 10, "offset": 0, "available": 124 } ``` ### Top News `GET https://api.eu.apyhub.com/skycraft/world-news-api/top-news` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `date` | query | string | no | Example: `2024-05-30`. | | `language` | query | string | yes | Example: `en`. | | `headlines-only` | query | boolean | no | Example: `false`. | | `source-country` | query | string | yes | Example: `us`. | #### Quickstart Fetch top news for a country and language using the required query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/world-news-api/top-news?source-country=us&language=en" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `country` and `language` string fields, and `top_news`, an array of objects. Each `top_news` item contains a `news` array of article objects with fields like `id`, `url`, `text`, `image`, `title`, `author`, `authors`, `summary`, and `publish_date`. ```json { "country": "us", "language": "en", "top_news": [ { "news": [ { "id": 123, "url": "https://example.com/story", "title": "Sample headline", "publish_date": "2024-05-30" } ] } ] } ``` ### Extract News Links `GET https://api.eu.apyhub.com/skycraft/world-news-api/extract-news-links` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | yes | Example: `https://www.bbc.com/news/world-us-canada-59340789`. | | `analyze` | query | boolean | no | Example: `true`. | #### Quickstart Fetch news links for a source URL by passing the required `url` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/world-news-api/extract-news-links?url=https%3A%2F%2Fwww.bbc.com%2Fnews%2Fworld-us-canada-59340789" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `news_links` array of strings, where each item is a news link URL or `null`. ```json { "news_links": [ "https://www.example.com/news/story-1", null ] } ``` ### News Website to RSS Feed `GET https://api.eu.apyhub.com/skycraft/world-news-api/feed.rss` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | yes | Example: `https://www.bbc.com/`. | | `extract-news` | query | boolean | no | Example: `true`. | #### Quickstart Fetch news from a URL by passing the required `url` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/world-news-api/feed.rss?url=https://www.bbc.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back ```bash <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:atom="http://www.w3.org/2005/Atom"> <channel> <title><![CDATA[BBC Home - Breaking News, World News, US News, Sports, Business, Innovation, Climate, Culture, Travel, Video & Audio]]> https://www.bbc.com/ Thu, 24 Sep 2026 08:58:35 +0000 <![CDATA[20260714 Nonnamaxxing Tourists Are Paying To Travel Like Grandmothers]]> https://www.bbc.com/travel/article/20260714-nonnamaxxing-tourists ... ``` ### Retrieve Newspaper Front Page `GET https://api.eu.apyhub.com/skycraft/world-news-api/retrieve-front-page` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `date` | query | string | no | Example: `2024-07-09`. | | `source-name` | query | string | no | Example: `herald-sun`. | | `source-country` | query | string | no | Example: `au`. | #### Quickstart Fetch the front page news details for a given date, source name, and source country. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/world-news-api/retrieve-front-page?date=2024-07-09&source-name=herald-sun&source-country=au" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `front_page` object. The `front_page` object contains nullable string fields for `date`, `name`, `image`, `country`, and `language`. ```json { "front_page": { "date": "2024-07-09", "name": "Herald Sun", "image": "https://example.com/front-page.jpg", "country": "au", "language": "en" } } ``` ### Retrieve News Articles by Ids `GET https://api.eu.apyhub.com/skycraft/world-news-api/retrieve-news` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `ids` | query | string | yes | Example: `2352,2354`. | #### Quickstart Fetch one or more news items by their comma-separated IDs. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/world-news-api/retrieve-news?ids=2352,2354" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `news` array. Each item in `news` is an object with fields such as `id`, `url`, `text`, `image`, `title`, `authors`, `summary`, `category`, `language`, `sentiment`, `publish_date`, and `source_country`. ```json { "news": [ { "id": 2352, "url": "https://example.com/news/2352", "text": "Article text here", "image": "https://example.com/image.jpg", "title": "Sample headline", "authors": ["Jane Doe"], "summary": "Short summary", "category": "world", "language": "en", "sentiment": 0.5, "publish_date": "2026-09-10T12:00:00Z", "source_country": "US" } ] } ``` ## About ## What it does World News API lets you search, extract, and retrieve news data from URLs, article IDs, and source names. Send a news URL, a query, or a country/language filter, and get back article text, titles, authors, summaries, publish dates, sentiment, and related links where available. Use it to build news monitoring, media intelligence, and content aggregation features. The Search News endpoint supports filters such as `text`, `authors`, `entities`, `language`, `categories`, `news-sources`, `source-country`, sentiment ranges, and publish-date bounds, with paging through `number` and `offset`. Top News returns current headlines for a required `source-country` and `language`, with an optional `date` and `headlines-only` flag. If you already have an article identifier, Retrieve News Articles by Ids returns matching items in a `news` array. Extract News and Extract News Links work from a single article URL: one returns article content and metadata, while the other returns extracted links. Search News Sources helps you find outlets by name, and Retrieve Newspaper Front Page returns front-page metadata for a source and date. World News API is a good fit when you need structured news records for dashboards, alerts, ranking, or downstream enrichment without scraping each publisher format yourself. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/skycraft/service/world-news-api * * * --- title: Convert Speech to Text with (Whisper Large-v3) slug: whisper-speech-to-text url: https://apyhub.com/mastera-ai/service/whisper-speech-to-text provider: MasterA AI categories: [Audio Processing] tags: [speech-to-text, transcription, audio, whisper, ai] auth: api_key version: v1 service_type: sync endpoints: 1 atoms: 425 --- # Convert Speech to Text with (Whisper Large-v3) Transcribe audio to text with OpenAI Whisper large-v3 on a dedicated GPU. Auto language detection, fast synchronous response, no polling required. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/mastera-ai/whisper-speech-to-text/v1/whisper/transcribe` | What it does Transcribes speech in an audio file to text using OpenAI Whisper large-v3 (faster-whis… | 425 | ## Endpoint reference ### Transcribe audio to text `POST https://api.eu.apyhub.com/mastera-ai/whisper-speech-to-text/v1/whisper/transcribe` · 425 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Audio file to transcribe (WAV, MP3, M4A and most common formats). Maximum file size: 10 MB. | #### Quickstart ```bash curl -X POST "https://api.eu.apyhub.com/mastera-ai/whisper-speech-to-text/v1/whisper/transcribe" \ -H "apy-token: $APY_TOKEN" \ -F "file=@recording.wav" ``` #### What you'll get back ```json { "text": "The quick brown fox jumps over the lazy dog. This is an audit test recording.", "language": "en", "duration": 5.92 } ``` ## About ## What it does Whisper Speech to Text transcribes speech in an audio file using OpenAI Whisper large-v3. Upload a WAV, MP3, M4A, or other common audio file as the `file` field of a `multipart/form-data` request, and the transcript comes back in a single synchronous call. There are no job IDs and no polling. The response is a small JSON object with three fields. `text` holds the transcript, or an empty string when no speech is found. `language` is the auto-detected language as an ISO 639-1 code, such as `en`. `duration` is the length of the input audio in seconds, which is useful for logging usage or checking what was processed. Use it for voice notes, call and meeting transcription, subtitle drafts, podcast and video indexing, voice-driven search, and any workflow that needs recorded speech as searchable text. Language detection is automatic, so you don't need to know the spoken language in advance. A file that can't be decoded as audio returns `400`, and a request without a `file` field returns `422`. > **Note:** Runs OpenAI Whisper large-v3 (faster-whisper) on a dedicated NVIDIA RTX 5080 GPU. Response time scales with audio length: a few seconds for short clips and around 8 seconds for a one-minute recording. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/mastera-ai/service/whisper-speech-to-text * * * --- title: Chat Completion with Qwen3-Next-80B slug: chat-completion-with-ministral-7b url: https://apyhub.com/mastera-ai/service/chat-completion-with-ministral-7b provider: MasterA AI categories: [Artificial Intelligence] tags: [llm-chat, chat-completions, text-generation, generative-ai, qwen] auth: api_key version: v1 service_type: sync endpoints: 1 atoms: 50 alias: chat-completion-with-ministral-8b --- # Chat Completion with Qwen3-Next-80B Generate AI-powered chat responses with the Qwen3-Next-80B API. Create chatbots, answer questions, and generate content with a simple API integration. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/mastera-ai/chat-completion-with-ministral-7b/v1/mistral/chat/completions` | What it does OpenAI-compatible chat completions, powered by Qwen3-Next-80B-A3B-Instruct. Send model… | 50 | ## Endpoint reference ### Chat completion (Qwen3-Next-80B) `POST https://api.eu.apyhub.com/mastera-ai/chat-completion-with-ministral-7b/v1/mistral/chat/completions` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `model` | body | string | yes | Must be qwen3-next-80b One of: qwen3-next-80b. Example: `qwen3-next-80b`. | | `messages` | body | array of object | yes | OpenAI-style chat messages. Supports system, user, and assistant roles. | | `messages[].role` | body | string | yes | One of: system, user, assistant. | | `messages[].content` | body | string | yes | | | `max_tokens` | body | integer | no | Maximum tokens to generate. Prompt plus max_tokens must fit the 32,768-token context window. Default: `512`. Example: `200`. | | `temperature` | body | number | no | Sampling temperature. Default: `0.7`. Example: `0.7`. | #### Quickstart ```bash curl -X POST "https://api.eu.apyhub.com/mastera-ai/chat-completion-with-ministral-7b/v1/mistral/chat/completions" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "model": "qwen3-next-80b", "messages": [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Write a short haiku about the ocean."} ], "max_tokens": 200, "temperature": 0.7 }' ``` Note: `model` stays `mistral-7b` in the request for backward compatibility; the response reports the real serving model, `qwen3-next-80b`. #### What you'll get back ```json { "id": "chatcmpl-ae8e9f07da25157e", "object": "chat.completion", "created": 1790318354, "model": "qwen3-next-80b", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Deep blue whisper\nSalt-kissed waves embrace\nEternal tide.", "refusal": null, "annotations": null, "audio": null, "function_call": null, "tool_calls": [], "reasoning": null }, "logprobs": null, "finish_reason": "stop", "stop_reason": null, "token_ids": null, "routed_experts": null } ], "service_tier": null, "system_fingerprint": "b1-8144f31", "usage": { "prompt_tokens": 18, "total_tokens": 34, "completion_tokens": 16, "prompt_tokens_details": null }, "prompt_logprobs": null, "prompt_token_ids": null, "prompt_text": null, "kv_transfer_params": null } ``` ## About ## What it does Chat Completion generates replies from a conversation, with the same request and response shape as the OpenAI Chat Completions API. Send a `messages` array of `system`, `user`, and `assistant` turns with `model` set to `qwen3-next-80b`, and the generated reply comes back in a single synchronous call. There are no job IDs and no polling. You can tune each call with `max_tokens` (default 512) and `temperature` (0 to 2, default 0.7). The reply is in `choices[].message.content`. The `finish_reason` field is `stop` or `length`, so you can tell when output was cut off. A `usage` object gives prompt, completion, and total token counts for tracking consumption. Use it for chatbots and conversational agents, drafting and rewriting copy, summarising short text, Q&A over content you pass in, and other general language tasks. > **Note:** Upgraded 2026-10-05 — this endpoint now runs on **Qwen3-Next-80B-A3B-Instruct** (Apache 2.0), a substantially larger and more capable model than the previous Ministral-7B backend. The endpoint, request format, and `model` value (`mistral-7b`) are unchanged for backward compatibility. Typical response time is a few seconds, depending on `max_tokens`. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/mastera-ai/service/chat-completion-with-ministral-7b * * * --- title: GameBrain API slug: gamebrain-api url: https://apyhub.com/skycraft/service/gamebrain-api provider: Skycraft categories: [Data Extraction, Developer Tools] tags: [video-games, game-search, gaming, game-data] auth: api_key version: 1.0.2 service_type: sync endpoints: 5 atoms: 20 --- # GameBrain API Search games, fetch detailed metadata, find similar titles, and load game news. Useful for catalogs, recommendations, autocomplete, and editorial tools. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/skycraft/gamebrain-api/games` | What it does Searches for games using the provided query, paging, sorting, and filter parameters, t… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/gamebrain-api/games/suggestions` | What it does Returns game suggestions matching a query string, limited by the requested number of r… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/gamebrain-api/games/details/:id` | What it does Retrieves the details for a single game identified by its numeric id. The response ret… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/gamebrain-api/games/:id/similar` | What it does Returns a list of games similar to the game identified by the path id. The number of r… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/gamebrain-api/games/:id/news` | What it does Retrieves news items for a specific game, identified by its numeric id, with paginatio… | 20 | ## Endpoint reference ### Search Games `GET https://api.eu.apyhub.com/skycraft/gamebrain-api/games` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `sort` | query | string | yes | Example: `computed_rating`. | | `limit` | query | integer (int32) | yes | Default: `10`. Example: `10`. | | `query` | query | string | yes | Example: `rpg for PC`. | | `offset` | query | integer (int32) | yes | Default: `0`. Example: `0`. | | `filters` | query | string | yes | Default: `[]`. Example: `[{"key":"platform","values":[{"value":"pc"}],"connection":"OR"},{"key":"genre",…`. | | `sort-order` | query | string | yes | Default: `asc`. Example: `asc`. | | `generate-filter-options` | query | boolean | yes | Default: `true`. Example: `false`. | #### Quickstart Search for games with the required query parameters and return the first page of results. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/gamebrain-api/games?query=rpg%20for%20PC&offset=0&limit=10&filters=%5B%5D&sort=computed_rating&sort-order=asc&generate-filter-options=true" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `limit`, `query`, `offset`, `results`, `sorting`, `total_results`, `filter_options`, `sorting_options`, and `active_filter_options` fields. - `limit`, `offset`, and `total_results` are integers. - `query` is the search string you sent. - `results` is an array of game objects. - `sorting` is an object with `key` and `direction`. - `filter_options`, `sorting_options`, and `active_filter_options` are arrays describing available and active filters/sorting. ```json { "sorting": { "key": null, "direction": null }, "active_filter_options": [ { "key": "genre", "connection": "AND", "values": [ { "match": "rpg", "value": "role_playing" } ] }, { "key": "platform", "connection": "AND", "values": [ { "match": "pc", "value": "pc" } ] } ], "query": "rpg for pc", "total_results": 47198, "limit": 3, "offset": 0, "results": [ { "id": 104935, "year": 2023, "name": "Baldur's Gate 3", "genre": "Tactical Role Playing", "image": "https://img.gamebrain.co/games/267/baldurs_gate_3_larian_2023_93.webp", "link": "https://gamebrain.co/game/baldurs-gate-3", "rating": { "mean": 0.9589789637681159, "count": 708249 }, "adult_only": true, "screenshots": [ "https://img.gamebrain.co/games/195/baldurs_gate_3_larian_2020_112.jpg" ], "micro_trailer": "https://cdn.akamai.steamstatic.com/steam/apps/256932354/microtrailer.webm", "gameplay": "https://www.youtube-nocookie.com/embed/FXyldfVAF9A", "short_description": null } ], "sorting_options": [ { "name": "Rating", "sort": "DESC", "key": "computed_rating" }, { "name": "Price", "sort": "ASC", "key": "price" }, { "name": "Release Date", "sort": "DESC", "key": "release_date" } ] } ``` ### Get Game Suggestions `GET https://api.eu.apyhub.com/skycraft/gamebrain-api/games/suggestions` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer (int32) | yes | Default: `10`. Example: `10`. | | `query` | query | string | yes | Example: `gt`. | #### Quickstart Search for games by query and limit the number of matches returned. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/gamebrain-api/games/suggestions?query=gt&limit=10" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `results` array. Each item in `results` is an object that may include `id`, `link`, `name`, `year`, `genre`, `image`, `rating` (with `mean` and `count`), and `adult_only`. ```json { "results": [ { "id": 123, "link": "https://example.com/game/123", "name": "Example Game", "year": 2024, "genre": "Action", "image": "https://example.com/image.jpg", "rating": { "mean": 4.5, "count": 120 }, "adult_only": false } ] } ``` ### Get Game Details `GET https://api.eu.apyhub.com/skycraft/gamebrain-api/games/details/:id` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | path | integer (int32) | yes | | #### Quickstart Fetch a game by its numeric `id` path parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/gamebrain-api/games/details/:id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with fields such as `id` (integer), `link` (URI), `name` (string), and `short_description` (string), along with other optional game metadata when available. ```json { "id": 104935, "name": "Baldur's Gate 3", "image": "https://img.gamebrain.co/games/267/baldurs_gate_3_larian_2023_93.webp", "image_aspect_ratio": 1.0, "gameplay": "https://www.youtube-nocookie.com/embed/FXyldfVAF9A", "link": "https://gamebrain.co/game/baldurs-gate-3", "x_url": "https://twitter.com/baldursgate3", "rating": { "mean": 0.9589789637681159, "count": 708249, "mean_players": 0.967813, "count_players": 708180, "mean_critics": 0.9501449275362318, "count_critics": 69 }, "description": "An ancient evil has returned to Baldur's Gate, intent on devouring it from the inside out. The fate of Faerun lies in your hands. Alone, you may resist. But together, you can overcome.", "short_description": "An ancient evil has returned to Baldur's Gate, intent on devouring it from the inside out. The fate of Faerun lies in your hands. Alone, you may resist. But together, you can overcome.", "release_date": "2023-12-08", "developer": "Larian Studios", "platforms": [ { "value": "gog_com", "name": "Gog Com" }, { "value": "pc", "name": "PC" } ], "genres": [ { "value": "role_playing", "name": "Role Playing" } ], "genre": "Tactical Role Playing", "adult_only": true, "screenshots": [ "https://img.gamebrain.co/games/195/baldurs_gate_3_larian_2020_112.jpg" ], "videos": [ "https://www.youtube-nocookie.com/embed/t0uYhTLPGLQ" ], "twitch_videos": [ { "id": "AbnegatePlayfulPelicanVoHiYo-5roWs9yGqWTZsxot", "url": "https://www.twitch.tv/cohhcarnage/clip/AbnegatePlayfulPelicanVoHiYo-5roWs9yGqWTZsxot", "creator_name": "TheCombatantWombat", "view_count": 229815 } ], "offers": [ { "price": { "value": 59.99, "currency": "USD", "initial": 59.99, "discount_percent": 0.0 }, "store_name": "steam", "platform": "PC", "url": "https://store.steampowered.com/app/1086940" } ], "micro_trailer": "https://cdn.akamai.steamstatic.com/steam/apps/256932354/microtrailer.webm" } ``` ### Get Similar Games `GET https://api.eu.apyhub.com/skycraft/gamebrain-api/games/:id/similar` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | path | integer (int32) | yes | Example: `104935`. | | `limit` | query | integer (int32) | yes | Default: `10`. Example: `10`. | #### Quickstart Fetch game records for a specific `id`, with `limit` sent as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/gamebrain-api/games/:id/similar?limit=10" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `results` array. Each item in `results` is an object that may include fields like `id`, `link`, `name`, `year`, `genre`, `image`, `rating`, `gameplay`, `adult_only`, `screenshots`, `micro_trailer`, and `short_description`. ```json { "results": [ { "id": 378311, "year": 2017, "name": "Divinity: Original Sin 2", "genre": "Tactical Role Playing", "image": "https://img.gamebrain.co/games/668/divinity_original_sin_2_larian_2017_7.webp", "link": "https://gamebrain.co/game/divinity-original-sin-2", "rating": { "mean": 0.9363501136069805, "count": 89618 }, "adult_only": true, "screenshots": [ "https://img.gamebrain.co/games/718/divinity_original_sin_ii_larian_2018_5.jpg" ], "micro_trailer": "https://video.akamai.steamstatic.com/store_trailers/435150/121883/ccbcafb42a53360716b3c81a97ef8398bb580cc0/1750530604/dash_h264.mpd", "gameplay": "https://video.akamai.steamstatic.com/store_trailers/435150/121883/ccbcafb42a53360716b3c81a97ef8398bb580cc0/1750530604/dash_h264.mpd", "short_description": null } ] } ``` ### Get Game News `GET https://api.eu.apyhub.com/skycraft/gamebrain-api/games/:id/news` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | path | integer (int32) | yes | Example: `104935`. | | `limit` | query | integer (int32) | yes | Default: `10`. Example: `10`. | | `offset` | query | integer (int32) | yes | Default: `0`. Example: `0`. | #### Quickstart Fetch the news list for a given game ID, using the required `id` path parameter and pagination query params. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/gamebrain-api/games/:id/news" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `news` array. Each item in `news` is an object with `title`, `url`, `source`, and `published` fields; `image` may also be present. ```json { "news": [ { "title": "Baldur's Gate 3 dev worries for Fallout: New Vegas studio Obsidian as Bethesda takes over management", "url": "https://www.gamesradar.com/games/fallout/baldurs-gate-3-publishing-lead-worries-for-fallout-new-vegas-dev-obsidian-as-bethesda-takes-over-management-of-the-studio-says-he-cant-imagine-that-feels-great", "source": "gamesradar.com", "image": "https://cdn.mos.cms.futurecdn.net/Dff8hpPZC9qpm7ZSGunL7N-1920-80.jpg", "published": "2026-09-23" }, { "title": "GTA 6 won't beat the GOTY record set by Baldur's Gate 3 and Clair Obscur: Expedition 33", "url": "https://www.gamesradar.com/games/grand-theft-auto/gta-6-will-not-be-eligible-to-complete-baldurs-gate-3-and-clair-obscur-expedition-33s-big-5-goty-sweep-in-the-2026-7-season", "source": "gamesradar.com", "image": "https://cdn.mos.cms.futurecdn.net/oFV96Lzam6D6cjSoxVEn9h-1920-80.jpg", "published": "2026-09-22" } ] } ``` ## About ## What it does GameBrain lets you search for games, fetch full game details, get similar titles, and pull related news in one place. Send a game ID or a search query, and get back structured game metadata that you can use in catalogs, recommendation features, storefronts, or content pages. Use **Search Games** to query by text and refine results with filters, sorting, offset, and limit. The response includes matching games plus total counts, sorting details, active filters, and optional filter and sorting options. **Get Game Details** returns the fields you need for a single title, including name, link, tags, genre, image, x_url, genres, offers, rating, themes, videos, gameplay, playtime, developer, platforms, play_modes, description, screenshots, release_date, micro_trailer, official_stores, short_description, and adult_only. When you need discovery data, **Get Similar Games** returns a results list with IDs, names, years, genres, images, ratings, gameplay links, screenshots, micro trailers, adult-only flags, and short descriptions. **Get Game Suggestions** is a lighter lookup for autocomplete-style matching, and **Get Game News** returns news items with title, url, source, published date, and optional image for a game ID. GameBrain is a fit for game search experiences, recommendation widgets, editorial tooling, and product pages that need up-to-date game metadata without scraping multiple sources. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/skycraft/service/gamebrain-api * * * --- title: Art Search API slug: art-search-api url: https://apyhub.com/skycraft/service/art-search-api provider: Skycraft categories: [Data Extraction] tags: [artwork-search, art-catalog, museum-data, metadata-search, image-metadata] auth: api_key version: 1.0.0 service_type: sync endpoints: 3 atoms: 20 --- # Art Search API Search artworks by query, type, origin, material, technique, and date range. Retrieve artwork details or a random record with image, title, dates, and description. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/skycraft/art-search-api/artworks` | What it does Searches for artworks using the provided query filters and returns a paginated list of… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/art-search-api/artworks/retrieve/:id` | What it does Retrieves a single artwork by its numeric ID and returns the artwork record as a JSON… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/art-search-api/artworks/random` | What it does Returns a random artwork as a JSON object, including its numeric identifier, date rang… | 20 | ## Endpoint reference ### Search Artworks `GET https://api.eu.apyhub.com/skycraft/art-search-api/artworks` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `type` | query | string | no | Example: `painting`. | | `query` | query | string | yes | Example: `landscape paintings`. | | `number` | query | integer (int32) | no | Example: `10`. | | `offset` | query | integer (int32) | no | Example: `0`. | | `origin` | query | string | no | Example: `Italy`. | | `material` | query | string | no | Example: `ivory`. | | `max-ratio` | query | number (double) | no | Example: `1.5`. | | `min-ratio` | query | number (double) | no | Example: `0.8`. | | `technique` | query | string | no | Example: `etching`. | | `latest-end-date` | query | integer (int32) | no | Example: `1760`. | | `earliest-end-date` | query | integer (int32) | no | Example: `1751`. | | `latest-start-date` | query | integer (int32) | no | Example: `1755`. | | `earliest-start-date` | query | integer (int32) | no | Example: `1750`. | #### Quickstart Search the art catalog with a simple query and return the first results. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/art-search-api/artworks?query=landscape%20paintings&number=10" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `number` and `offset` integers, an `available` integer, and an `artworks` array of objects. Each artwork object includes `id` as an integer, plus `image` and `title` strings that may be null. ```json { "number": 10, "offset": 0, "available": 124, "artworks": [ { "id": 12345, "image": "https://example.com/art.jpg", "title": "Landscape with Trees" } ] } ``` ### Retrieve Artwork by Id `GET https://api.eu.apyhub.com/skycraft/art-search-api/artworks/retrieve/:id` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | path | string | yes | The numeric id of the artwork. Example: `25377196`. | #### Quickstart Fetch an art listing by its path `id`. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/art-search-api/artworks/retrieve/:id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields: `id` (integer), `image` (string or null), `title` (string or null), `end_date` (integer), `start_date` (integer), and `description` (string or null). ```json { "id": 26226350, "image": "https://example.com/art.jpg", "title": "Sunset Study", "end_date": 1717200000, "start_date": 1714608000, "description": "A contemporary landscape artwork." } ``` ### Random Artwork `GET https://api.eu.apyhub.com/skycraft/art-search-api/artworks/random` · 20 atoms · accepts `application/json` #### Quickstart Fetch the art search result with no request body. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/art-search-api/artworks/random" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields: `id` as an integer, `image`, `title`, and `description` as nullable strings, and `start_date` and `end_date` as integers. ```json { "id": 123, "image": "https://example.com/art.jpg", "title": "Sunset Over Water", "end_date": 1717200000, "start_date": 1717113600, "description": "A landscape artwork." } ``` ## About ## What it does Art Search lets you search artworks by query, type, origin, material, technique, and date range, then fetch a specific artwork or a random one by ID. Use it when you need a simple art catalog lookup layer without building your own metadata index. Send search filters like `query`, `type`, `origin`, `material`, `technique`, `number`, `offset`, and date bounds such as `earliest-start-date` or `latest-end-date`. The search response returns `number`, `offset`, `available`, and an `artworks` array with each item's `id`, `image`, and `title`, so you can page through results and render lightweight previews. If you already have an artwork ID, retrieve the full record with `id`. That response includes `id`, `image`, `title`, `start_date`, `end_date`, and `description`. The random artwork endpoint returns the same object shape, which is useful for discovery features, featured picks, or QA fixtures. Use Art Search when you need to browse museum-style records, power an internal art catalog, or surface artwork details in a gallery app, marketplace, or editorial workflow. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/skycraft/service/art-search-api * * * --- title: Big Book API slug: big-book-api url: https://apyhub.com/skycraft/service/big-book-api provider: Skycraft categories: [Standard Data] tags: [books, authors, catalog-search, isbn, book-recommendations] auth: api_key version: 1.0 service_type: sync endpoints: 4 atoms: 20 --- # Big Book API Search authors and books, fetch book details by ID, and find similar titles. Use it for catalog search, filters, and book recommendations. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/skycraft/big-book-api/search-authors` | What it does Searches the author catalogue by name and returns the matching authors with their ids.… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/big-book-api/search-books` | What it does Searches books by ISBN, OCLC, free-text query, genre, author, rating and publication y… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/big-book-api/:id` | What it does Retrieves information for a specific book identified by its id. Path Parameter(s) \| At… | 20 | | GET | `https://api.eu.apyhub.com/skycraft/big-book-api/:id/similar` | What it does Finds books similar to the one identified by the id path parameter. Use the optional n… | 20 | ## Endpoint reference ### Search Authors `GET https://api.eu.apyhub.com/skycraft/big-book-api/search-authors` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `name` | query | string | no | Example: `Morgan Housel`. | | `number` | query | number | no | Example: `10`. | | `offset` | query | number | no | Example: `0`. | #### Quickstart Fetch a book result by passing the required query parameters in the URL. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/big-book-api/search-authors?name=Morgan%20Housel&number=10&offset=0" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object containing a list of matching authors. ```json { "authors": [ { "id": 22313234, "name": "Morgan Housel" } ] } ### Search Books `GET https://api.eu.apyhub.com/skycraft/big-book-api/search-books` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `isbn` | query | string | no | Only the book matching the specified ISBN-13 will be returned. Example: `9781781257654`. | | `oclc` | query | string | no | Only the book matching the specified OCLC number will be returned. Example: `864418200`. | | `sort` | query | string | no | The field used to sort the search results. One of: publish-date, rating. Example: `rating`. | | `query` | query | string | no | The search query used to find books by text or meaning. Example: `books about wizards`. | | `genres` | query | string | no | A comma-separated list of genres. Only books belonging to the specified genres will be returned. Example: `nonfiction`. | | `number` | query | number | no | The number of books to return. The allowed range is 1 to 100. Example: `10`. | | `offset` | query | number | no | The number of books to skip before returning results. The allowed range is 0 to 1000. Example: `0`. | | `authors` | query | string | no | A comma-separated list of author IDs or names. Only books from the specified authors will be returned. Example: `J.K. Rowling`. | | `max-rating` | query | number | no | The maximum rating a book can have. The value must be between 0 and 1. Example: `0.99`. | | `min-rating` | query | number | no | The minimum rating a book must have. The value must be between 0 and 1. Example: `0.8`. | | `group-results` | query | boolean | no | Whether to group similar editions of the same book into a single result. Example: `false`. | | `sort-direction` | query | string | no | The direction in which the search results should be sorted. One of: ASC, DESC. Example: `DESC`. | | `latest-publish-year` | query | number | no | The latest publication year to include in the search results. Example: `2023`. | | `earliest-publish-year` | query | number | no | The earliest publication year to include in the search results. Example: `2022`. | #### Quickstart Search the book catalog with a few common query filters. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/big-book-api/search-books?query=books%20about%20wizards&sort=rating&number=10" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object containing the matching books along with pagination and rating information. ```json { "available": 6260, "number": 10, "offset": 0, "books": [ [ { "id": 13043102, "title": "Crimson Tide Madness", "subtitle": "Great Eras in Alabama Football (Golden Ages of College Sports)", "image": "https://covers.openlibrary.org/b/id/1942923-M.jpg", "authors": [ { "id": 13043088, "name": "Wilton Sharpe" } ], "rating": { "average": 1 } } ] ], "expires": 1790771703776 } ### Get Book Information `GET https://api.eu.apyhub.com/skycraft/big-book-api/:id` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | path | string | yes | Example: `15912250`. | #### Quickstart Fetch a book by its `id` by putting the path parameter in the URL. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/big-book-api/:id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object containing detailed information about the requested book. ```json { "id": 13043102, "title": "Crimson Tide Madness", "subtitle": "Great Eras in Alabama Football (Golden Ages of College Sports)", "image": "https://covers.openlibrary.org/b/id/1942923-M.jpg", "identifiers": { "open_library_id": "OL5821286W", "isbn_10": "1581825803", "isbn_13": "1581825803" }, "authors": [ { "id": 13043088, "name": "Wilton Sharpe" } ], "publish_date": 2007, "number_of_pages": 272, "description": "A Tradition of Greatness Twelve national championships, twenty-one SEC championships, twenty College Football Hall of Famers, and the most legendary coach in college football history.", "rating": { "average": 1 } } ### Find Similar Books `GET https://api.eu.apyhub.com/skycraft/big-book-api/:id/similar` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | path | string | yes | Example: `15912250`. | | `number` | query | number | no | Example: `10`. | #### Quickstart Fetch the book by its required path `id`, with the optional `number` query parameter if needed. ```bash curl -X GET "https://api.eu.apyhub.com/skycraft/big-book-api/:id/similar" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object containing books similar to the requested book. ```json { "similar_books": [ { "id": 20920732, "title": "Always Alabama", "subtitle": "A History of Crimson Tide Football", "image": "https://covers.openlibrary.org/b/id/475562-M.jpg" }, { "id": 20107962, "title": "Crimson Nation", "subtitle": "The Shaping of the South's Most Dominant Football Team", "image": "https://covers.openlibrary.org/b/id/750106-M.jpg" } ] } ## About ## What it does Book Search API provides access to a catalog of books and authors. It allows you to search for authors, search and filter books, retrieve detailed information for a specific book, and find books similar to a given title. Use it when you need book catalog data for reading applications, book discovery and search, recommendation features, library tools, catalog enrichment, or internal knowledge systems. Search Authors lets you find authors by name with optional pagination using `number` and `offset`. Search Books supports free-text search and filtering by ISBN, OCLC number, author, genre, rating, publication year, result grouping, sorting, and pagination. Get Book Information retrieves detailed information for a specific book, including its title, subtitle, cover image, external identifiers, authors, publication details, description, and rating. Find Similar Books returns a list of books related to a specified book, with an optional `number` parameter to control the number of results. The API returns structured JSON responses that can be used directly in search interfaces, book discovery workflows, recommendation systems, and catalog enrichment pipelines. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/skycraft/service/big-book-api * * * --- title: Validate Brazilian CNH Number API slug: check-cnh url: https://apyhub.com/dam4g/service/check-cnh provider: DAM4G APIs categories: [Data Validation] tags: [cnh-validation, brazilian-documents, identity-validation, document-validation] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Validate Brazilian CNH Number API Validate a Brazilian CNH number and get back is_valid, input_value, document_type, and formatted_value for form checks and data cleanup. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dam4g/check-cnh/cnh/:number` | What it does Checks a CNH number and returns a validation result for the supplied value. The respon… | 10 | ## Endpoint reference ### Validate CNH `GET https://api.eu.apyhub.com/dam4g/check-cnh/cnh/:number` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `number` | path | string | yes | Number | #### Quickstart Validate a CNH number by passing it in the path. ```bash curl -X GET "https://api.eu.apyhub.com/dam4g/check-cnh/cnh/:number" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `document_type`, `input_value`, `is_valid`, and `formatted_value` fields. `document_type` and `input_value` are strings, `is_valid` is a boolean, and `formatted_value` is either a string or `null`. ```json { "document_type": "cnh", "input_value": "02650306461", "formatted_value": null, "is_valid": true } ``` ## About ## What it does CNH Validator checks a Brazilian driver’s licence number and returns a simple validation result. Send the `number` path parameter, and get back whether it is valid, the original `input_value`, the `document_type`, and a `formatted_value` when one is available. Use this when you need to verify a CNH before storing it in a CRM, onboarding a driver, or accepting licence details in a form. The response is minimal and predictable, which makes it easy to plug into request validation, account creation flows, or back-office review steps. CNH Validator is designed for straightforward yes/no verification with just enough context to handle the result cleanly. If the number is valid, you can keep moving; if not, you can reject the record or prompt for correction. Because the output includes the exact value you sent, it is easy to log, audit, or compare against user input without extra parsing. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dam4g/service/check-cnh * * * --- title: Validate Brazilian CNPJ Number API slug: check-cnpj url: https://apyhub.com/dam4g/service/check-cnpj provider: DAM4G APIs categories: [Data Validation] tags: [cnpj, brazil, company-registration, document-validation, identity-check] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Validate Brazilian CNPJ Number API Validate Brazilian CNPJ numbers and get the original value, document type, validity flag, and formatted value for clean downstream handling. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dam4g/check-cnpj/cnpj/:number` | What it does Checks whether a supplied CNPJ number is valid and returns a validation result object.… | 10 | ## Endpoint reference ### Validate CNPJ `GET https://api.eu.apyhub.com/dam4g/check-cnpj/cnpj/:number` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `number` | path | string | yes | Number | #### Quickstart Check a CNPJ by sending the required `number` path value in the URL. ```bash curl -X GET "https://api.eu.apyhub.com/dam4g/check-cnpj/cnpj/:number" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `document_type`, `input_value`, and `is_valid` fields, plus an optional `formatted_value` field. `document_type` and `input_value` are strings, `is_valid` is a boolean, and `formatted_value` is either a string or `null`. ```json { "document_type": "cnpj", "input_value": "11222333000181", "formatted_value": "11.222.333/0001-81", "is_valid": true } ``` ## About ## What it does CNPJ Validator checks whether a Brazilian company registration number is valid. Send a `number` string, and get back a validation result with `is_valid`, `input_value`, `document_type`, and optional `formatted_value`. Use it when you need to verify business IDs before creating customer records, processing onboarding data, or cleaning up imported spreadsheets. It gives you a simple pass/fail result without requiring you to implement CNPJ checksum logic in your own application. The response is built for straightforward automation: `input_value` reflects what you sent, `document_type` identifies the document being checked, and `formatted_value` may return a normalized version when available. That makes it useful for form validation, account setup flows, and back-office data quality checks where you want to reject malformed CNPJ values early. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dam4g/service/check-cnpj * * * --- title: Validate Brazilian CPF Number API slug: check-cpf url: https://apyhub.com/dam4g/service/check-cpf provider: DAM4G APIs categories: [Data Validation] tags: [cpf-validation, brazil, tax-id, identity-validation, document-validation] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Validate Brazilian CPF Number API CPF validation API that checks a Brazilian CPF number and returns is_valid plus a formatted value (111.444.777-35) for signup and checkout forms. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dam4g/check-cpf/cpf/:number` | What it does Validates a CPF number passed in the path and returns a JSON object describing the val… | 10 | ## Endpoint reference ### Validate CPF `GET https://api.eu.apyhub.com/dam4g/check-cpf/cpf/:number` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `number` | path | string | yes | Number | #### Quickstart Validate a CPF by passing the `number` path parameter in the URL. ```bash curl -X GET "https://api.eu.apyhub.com/dam4g/check-cpf/cpf/:number" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `is_valid` as a boolean, `input_value` as a string, `document_type` as a string, and `formatted_value` as a string or `null`. ```json { "document_type": "cpf", "input_value": "11144477735", "formatted_value": "111.444.777-35", "is_valid": true } ``` ## About ## What it does The CPF validation API checks whether a Brazilian CPF (Cadastro de Pessoas Físicas) number is valid. Pass the CPF as the `number` path parameter and get back `is_valid`, the `input_value` you sent, the `document_type`, and a `formatted_value` such as `111.444.777-35` when one is available. Brazilian developers often search for this as a validador de CPF. Use the CPF validation API in account signup, checkout, and payment forms, where Brazilian e-commerce and fintech flows ask for a CPF on almost every transaction. It also fits payroll and HR records, seller onboarding on commerce platforms, and bulk cleanup of CPF numbers already stored in your database. The `formatted_value` field gives you one display format to store and show, whatever way the user typed the number. Checking at the form catches typos before an invoice, a boleto, or a call to a paid identity provider depends on the value. This API checks the number itself. It does not query Receita Federal for the holder's name or registration status, so pair it with a lookup provider when you need to confirm who owns the CPF. Brazilian forms usually ask for more than one document. Validate company tax IDs with the [CNPJ Validation API](https://apyhub.com/dam4g/service/check-cnpj), driver's licence numbers with the [CNH Validation API](https://apyhub.com/dam4g/service/check-cnh), and mobile numbers with the [Phone Number Validation API](https://apyhub.com/creightonnick0/service/validate-phone-number). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dam4g/service/check-cpf * * * --- title: "Diagram, Math and Code Render API" slug: diagram-math-code-render-api url: https://apyhub.com/callable-labs/service/diagram-math-code-render-api provider: Callable Labs categories: [Developer Tools, Smart Generation] tags: [code-rendering, diagram-rendering, math-rendering, mermaid, graphviz, tex, mermaid-api, graphviz-api, d2-diagram, vega-lite, latex-to-svg, mathjax, code-to-image, code-screenshot, syntax-highlighting, diagram-render] auth: api_key version: 1.0.0 service_type: sync endpoints: 3 atoms: 50 --- # Diagram, Math and Code Render API Render Mermaid, Graphviz, D2 and Vega-Lite diagrams, LaTeX math and highlighted code to PNG, SVG or PDF with one API call. Free tier on ApyHub. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/callable-labs/diagram-math-code-render-api/code` | What it does Renders source code with Pygments highlighting and returns the rendered output plus me… | 50 | | POST | `https://api.eu.apyhub.com/callable-labs/diagram-math-code-render-api/diagram` | What it does Renders diagram-as-code source into an output image or JSON response. You send the dia… | 50 | | POST | `https://api.eu.apyhub.com/callable-labs/diagram-math-code-render-api/math` | What it does Renders a TeX expression into the requested output format using the fields in the requ… | 50 | ## Endpoint reference ### Render source code `POST https://api.eu.apyhub.com/callable-labs/diagram-math-code-render-api/code` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `scale` | body | number | no | Zoom the output 0.5–4×. Ignored when `width` is set. Raster and PDF output is capped at 8192×8192 px on the hosted plans (WebP 4096×4096); SVG has no ceiling. Default: `1`. Example: `2`. | | `theme` | body | string | no | Pygments style name. Curated: `default`, `friendly`, `monokai`, `dracula`, `github-dark`, `solarized-dark`, `solarized-light`, `nord`, `one-dark`, `gruvbox-dark`; any other Pygments style name is acc… | | `title` | body | any | no | Filename shown in the window bar (implies `window`). Example: `app.py`. | | `width` | body | any | no | Target width in pixels (16–4096); height follows the aspect ratio and must stay within the same pixel ceiling. Overrides `scale`. Example: `1024`. | | `format` | body | string | no | Output format. `json` returns a PNG data URI plus metadata and is the default; `svg`/`png`/`pdf`/`jpeg`/`webp` return the bytes. One of: json, svg, png, pdf, jpeg, webp. Default: `json`. Example: `sv… | | `source` | body | string | yes | Source code. ≤ 64 KiB via POST, ≤ 8 KiB via GET, ≤ 2000 lines. Long listings fit as `format=svg` (no pixel ceiling); raster output is limited to 8192×8192 px (~380 lines at 1×). Example: `def add(a,… | | `window` | body | boolean | no | Draw a macOS-style window title bar. Default: `false`. | | `download` | body | boolean | no | Send `Content-Disposition: attachment` so browsers save the file. Default: `false`. | | `language` | body | any | no | Pygments language name, e.g. `python`; auto-detected when omitted. Example: `python`. | | `background` | body | any | no | Background colour as `#rrggbb`/`#rgb`, a CSS name, or `transparent` for none. Example: `#ffffff`. | | `line_numbers` | body | boolean | no | Print a line-number gutter. Default: `false`. | #### Quickstart Render a small snippet of source code with the default JSON output. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/diagram-math-code-render-api/code" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "source": "def add(a, b):\n return a + b" }' ``` #### What you'll get back Returns a JSON object with rendering metadata such as `cache`, `width`, `engine`, `format`, `height`, `data_uri`, `warnings`, `queued_ms`, `render_ms`, `media_type`, and `engine_version`. The example output below shows the typical shape. ```json { "format": "png", "media_type": "image/png", "width": 220, "height": 74, "data_uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAANwAAABKCAYAAADQZTrfAAAJfElEQVR4nO2df2wUxxXHHy3IrhL7LGzHCDu1GtMYGzWoP1JoRY1KkmtwZFSFH4USKkFjnLRYUCkoqerS1iFSJYigNU0JtFSV1ZpiK6pAgLiWRqKosR3+sSNMKIoqA65CIpDPVtA5SnTZ7ziz2dvbM3vL3uDY30+08u7O7uy7y3znvXl7M8xMJBJJIYQY4TNCCDEGBUeIQSg4QgxCwRFiEAqOEINQcIQYhIIjxCAUHCEGoeAIMQgFR4hBKDhCDELBEWIQCo4Qg1BwhBiEgiPEIBQcIQah4AgxCAVHiEEoOEIMQsERYhAKLgRG4gmZbExGmwgFd1vETl2Uby3ZJ4cO9cpkAzbBNthIJg85EdzA+bdl3dp2CUL3a4PStLlT3Y8NdeUKP3a2/iomXZ19aedxDnZu3PigbNr0dTGJH7thE2yDjV72kzvDTMkBIyNjSjhZ32eFQWggj0Tvl5qaMnWusDBfcoUfOwcGrqXZADufb/2H/HzHI7Lph4vENH7sLozk27bB1mi0Wp0jd5bQBIdGeOHCNSkoyMt4DXrm0dExdU3tgjnp5VbjHhlJyO4XV0hQrl4ZlqGhuNqHaN2NzI+dPd2D9v1exGIXJWn9N5HYdB2ZPmtY6OcsWlzpWQ4b9+49o2xetXphWvnIyKi8efGizK+2BFlYICS3hCI4NPLH6v8gBYV5GT3S3j1nrHFFj9TWzpGrV4fl3nuLpOPwBvt+iARCALoRAS/RZAKh0/ZnjqnGNzDwtkQin5OOjiekwnqWXztx/6lTbyo7ATqAtM97NW6Xu4Gg161rl7j1F8+4YHUiaOi7djdI2CCsTCZFfZ8R6zvq6Njg+V2Nf+dxzzqe+9kOOf2vV2XLj56S5h8/JSS3hCI49KA1tWVy+G/jAjr0xx4Vxmjg2X5jXfPvs1tU40ejrK8/qASCxtjV1a/KNWu/98n4BKJc/I1KX3agHuf19csPquTBjl9EfdsJm46feFJ5Jdi5ZEmbZEO31VmUl0esOhrtOiFyjKfC9nRbt9apz2p/n119WYe4Dz/0bSvqGFV/Se4Jx8NZvediR0jj7v0RKsLraE+DXhjX615320/q1IZxCXrt/w22SBAgJDQ+7SEXWA0cz87GTnX+Y2HAzkyeLBPR71SrzRnaAoy7wkZ3LLCzoqIo0DMe/+4KtREz5CRp4gYNHSL4QuXOlPNbt9VJmCAchIfS4xmEWmiIfskUdmUDPFpTU5cV6iWzejaZHhgRHIAIdCiXCyA0bH39z9jjGIwbu7v9Z0sLC/PkdlFha809cuDgGvucu6Mh05fQ3sM5kwvuRAPCOCQPnL9+gDiCvDqY6PkIWZ1Jg56eQc/rvPaBnShx2OkMCzUVFRH1ebztGEsJQyf6xccrfz+qtqAgbNWMjmZ+DmyFzZ51DP1f/tz+F5WtJLknFA+Hl6x4fzZjxvh7s07Xi1aMNcqt/+HI3uF9EEI3ZAJPfJxYCAPUC+8CO2qtxAiekUwGs7OpqVN1Euet8NDr9QESPXgWki7uJAXu+5OVqIEA8IzXJuhUfvfSflm2LHiyorU1Zo9TB85fk5dfXp12Dbw8srJerwTAT60sZe/r55TgmKXMPZ9taWn5pdwmVfNKVCNH746w7OmnvymlpXenZBfXP/FVGUt8IO+++54qe+GFejuJ4gSN1G9WMuU+y7M1NCxQ9cNzLV1apTb07DoJ4sfOVasW2nVgv6qqWHkst60Yn6HBv//+h1JrvbrIyx/vu1BXaeldMjb2oTreZo1T1WeyhOj0vmjgL+75rZWRXS0186slW1An7IfY8Bl2WC/h8fns+i3Pun//f9SrGHzXzrKUegoKpKSkxMqkPiqlJSVCcssM/guowUGCpNV6rQAxIcuaDT295+QHG5+U07ETUlE+V8JGj18hxFy+eCfZQcHdIf55+lU1fnupbY+Q6QMFR4hBOD2HEINQcIQYhIIjxCAUHCEGoeAIMQgFR4hBKDhCDELBeXDm8hnpu8aFd25FpgWWSGYoOA+if43K9tPbhUwMfscZxhzC6YSx+XAmgGeK5EWkMlIp/e/0q3N1n6/zvA7gOmzu8yCeiNvHqHNh2UIZTgyrep33DcYH1fbAPQ9IUX5RynF8LK72ndc769D3u+3wi16UCWRaROhWXL9+XXp7e2X58uUSFOfCTPzd5sRMKcHBM6GhX45fluGx8bliW762RXY/vFvtI0xc88oa1cg1LUta1Kbv1/S902cfQ7Sx78eUUHDOeU/7G+2y8+xOVY7r9DGeu+/cPnVNUV6RHFl5RJXrOmCn7hRQfuCxA7Lifv9LHTgXO8Js+toFZRkXEZqIGzduyMmTJwMLDrPq165tV7MXYMedWjrw08KUCynRiNF4IQB4DTR6LbDNxzcrD9OzsUcSzyWk4YsNShx6vOYUEu7Vxxu+lP1MdXhH2LDroV1K/G2vpy9G5CzX4vQDJp5esbazZ5vVLHrMcsd8OCyFZxrMSDh8eIOyAyuTORdlIulMKQ8H4EW0p4BQICgdtsFroRzhIWh+sFmOXTqmxIFzWmy4RwsuKLgXz8IGMWlvpoGNuhxe0RnO3grMzXMvmAQPl814qq1tvAO4efNmyvHcuXNl5cqVvuvBnEHtVTEJeLscU6EuQ0tvppzgnEBwaNAI3zRo2Pm/Tg27MNYKG4znNEcePzLhM5zX+kGtUN3UqWak6+UcrjiWW/DDvHnz1F+M4YaGhuzj2bNnS1C08HKxQtlUYUoLzisZocdjQUDyBCAs1eh9XeaF9qhhgbU2IbD+Nz7JpDrX8vSDHrNdunTptpMmxD/T6rUAxIfwUovk6H+P2iGnG+d1Gi0chKEow4Z9Z5kJvJb/81rsyATOhZr0v9SDZSyIN1Paw7nBuKrxeKPM//18e0yHcNM9VtMZxjl7x8M1p1fEtRCpLtPnTIJxExbMfb41prKDCC2TyWDziMvLy6W5uVmCgsciY4q1Y7Dy9SLX2i0klVAWEZpMOJMibnAe5WV3l0nZXWXS+OVG2fdoenYwel9UCVJf76xTjwmri6vVPsSJepzgXpRlGpvhPMqd4a5+lh+QNME6Km+9dV3y8mbK+vVfkaqqEs/Fjm7FrFmzpLi4WIKCRAnEBluWLr1Pnn12mb2gEkmHSywQYhD+tIsQg1BwhBiEgiPEIBQcIQah4AgxCAVHiEEoOEIMQsERYhAKjhCDUHCEGISCI8QgFBwhBqHgCDEIBUeIQSg4QgxCwRFiEAqOEINQcIQY5CPGUk75WjjpmAAAAABJRU5ErkJggg==", "warnings": [], "engine": "code", "engine_version": "2.21.0", "cache": "hit", "render_ms": 0, "queued_ms": 0 } ``` ### Render a diagram `POST https://api.eu.apyhub.com/callable-labs/diagram-math-code-render-api/diagram` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `scale` | body | number | no | Zoom the output 0.5–4×. Ignored when `width` is set. Raster and PDF output is capped at 8192×8192 px on the hosted plans (WebP 4096×4096); SVG has no ceiling. Default: `1`. Example: `2`. | | `theme` | body | any | no | Engine-specific theme. Mermaid: `default\|base\|dark\|forest\|neutral`. D2: a numeric theme id — `0` (neutral default), `1`, `3`, `4`, `5`, `8`, `101`, `200` (dark), `300`, `301`. Vega-Lite: `default\|dar… | | `width` | body | any | no | Target width in pixels (16–4096); height follows the aspect ratio and must stay within the same pixel ceiling. Overrides `scale`. Example: `1024`. | | `engine` | body | string | yes | Diagram engine: `mermaid`, `graphviz`, `d2` or `vegalite` (Vega-Lite JSON spec). One of: mermaid, graphviz, d2, vegalite. Example: `mermaid`. | | `format` | body | string | no | Output format. `json` returns a PNG data URI plus metadata and is the default; `svg`/`png`/`pdf`/`jpeg`/`webp` return the bytes. One of: json, svg, png, pdf, jpeg, webp. Default: `json`. Example: `sv… | | `layout` | body | any | no | Graphviz layout (`dot\|neato\|fdp\|sfdp\|circo\|twopi`) or D2 layout (`dagre\|elk`). Mermaid and Vega-Lite ignore it. Example: `dot`. | | `source` | body | string | yes | Diagram source: Mermaid text, DOT, D2 or a Vega-Lite JSON spec. ≤ 64 KiB via POST, ≤ 8 KiB via GET. Vega-Lite specs must inline their data (`url` is refused); Graphviz attributes that read local file… | | `download` | body | boolean | no | Send `Content-Disposition: attachment` so browsers save the file. Default: `false`. | | `background` | body | any | no | Background colour as `#rrggbb`/`#rgb`, a CSS name, or `transparent` for none. Example: `#ffffff`. | #### Quickstart Render a simple Mermaid diagram from source and get back a JSON response. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/diagram-math-code-render-api/diagram" \ -H 'apy-token: $APY_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "engine": "mermaid", "source": "graph TD; A[Start] --> B{Ready?}; B -->|yes| C[Ship]; B -->|no| A;", "format": "json" }' ``` #### What you'll get back Returns a JSON object with fields such as `cache` (string), `width` (integer), `engine` (string), `format` (string), `height` (integer), `data_uri` (string), `warnings` (array of strings), `queued_ms` (integer), `render_ms` (integer), `media_type` (string), and `engine_version` (string). ```json { "format": "png", "media_type": "image/png", "width": 123, "height": 367, "data_uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHsAAAFvCAYAAABq97RGAAAc3klEQVR4nO2dCXQUZbbHb1bJwqLsEQQSSWaEBCQgNCigLIpDfMCgo8gyM28UZN7McQQ5HOc9Wc7AOEB4PvSwqGeGTXR4HmAIw0MgQ0BJQBKGZUQTCQqBhEBYlCxACHn3X6FCd5OEdNLVXd/yO6dOdVdXVXL6V/d+9/uquiqQNMoQSBpl0LIVQstWCC1bIbRshdCyFSLYk5WXTPvmoYDKgHjS+J+AoMO/Se7ytSebeCQ7JCRgT+sO4RWk8TMBVJRXgqzc2pOtPJJdcb3y3kHPtQ8M0Mnfr1RUVNL/Lsi9QR6itSmElq0QWrZCaNkKoWUrhJatEFq2QmjZCqFlK4SWrRBatkJo2QqhZSuElq0QWrZCaNkKoWUrhEdXqtiBw4ezKCNjN504kW28T0hIpOjoOOrffxBp6kaoyE5OnkMzZkxm4ZkUHw/JsbR3bxrNmTPNZb0nn+xNa9a8R94GBxr2jbmICBPZ+IK3b0+hKVNeo9Gjx7l8dvZsPmnujjCyjxypiiakbHfatYuqfr12bVVEHz2aVf0aWaBHj0TjoNi06ePqJgCMGvUCNwGDXfaHg6pt26p9btr0EZWUXDHWQ/MBdu7cYuwfDB060uXv2xlhZMfExBpzfOEQVxuVlbfn5muTHTu2sPAzhnxQWJjPTcB0Gj/+ZZow4WWX9QICiI4fz3bJIpW3doi5+75FQBjZiD6HYxBt3LiOZaQY8h2OwVyg9eLXt6Md0hDRKNycBZqfuYP9rF37/h2fodlYuvRDl31HRDQ1DoRhw5LqPODsilDV+OzZyUaKRUrHtHx5srEcB8KsWYvqtY/i4iucxnM4qguMyMYcy3Jzs13E4mBxfi8DwnW9hg9PMiaANhjC09PTjIPAXF4bWA8VPdKwKRKiq+bFLutCtmwIPaiCwmj69NnG6/T0tLuuD9Hx8b1ow4Y0WrhwhTFNmTKNVEG4yHYnMrKpyxyg/+0OIhiTe7fNrPJVQJjIxiAJIhNtqwnSOJYB5+5T27btjardeV0cDBERkUZXygRFGAq++oL9AnS7zPQvEkJ1vVCFo212BgIx0OIsG5U1ulRTp75ovDe7VkjZODgwCgb5aLuxfPnyxfX6H9BsYF848MwRugULVghTmQd4svK7r31T8bOZD/r1V5yIZlTQJjgInFO4J9uL2H0C5q84/yO5a4gn2wnXZiO6GjNi1djtRUaf4lQILVshtGyF0LIVQstWCC1bIbRshdCyFULLVggtWyG0bIXQshVCy1YILVshtGyF8Ph89vGs7z285EHjbW7ebNgvFDySXRkU9Hzm9qKBZHMqK28GHS9Mm9C13RMr67tNeUVpxMmiL0a1b9FtR8Q9rc+R3QkOTCMPkTJGExMTf8KzKVlZWUn13aZPnz5jbt68+UFgYOC5sLCwEXv27PmWJEPKNjsgIOAJnv7h4TbxLPpeFh5XVlb26YgRI+4hyZBSdmVl5ZCgoKBUD7dxOP1wr+v58+c9OlhEQDrZnMJb8Sxq//79R+q7zbPPPhvKkR3j/CtNft+fU/tmkgjpZHMqHsKiPIrqgoKCeBYc5ryM0zn2NfiRRx5JJkmQMY33YXHbPNmgvLy8K29zn/vyioqKprz8148++ui9JAHC/9bLHY7If+PZMk+2YaEPILIDAqo7J6U8zQ8NDf1benr6v0gSpIrsgQMHduTU+w13uXI92Y4PkH/xdv/FsgdERkYinRfx69UyiQZSRXZpaenjLMnjAZHMzMytPNtqvufCbB3LH8AvPyaJkK3Nxs3QdlMj4ZR+jNvrESQZssnuyP3rXdRIeARtJ3n4nEsRkEb2gAEDojgiH9q3b9931Eg+++yzAt7Xgw6H40GSCGlkX716FW3sXvIS3Pbv4S6Z7U/6eII0slmOg6cM8hK8r+08dSWJkEl2FFfQn5OX4H39k1P5GJIIaWSzmLFPP/30QfISPLb+De/z3ltj7VIghey+ffvifhn/nD179k3yIpwt/hoSEtKHJEEK2Tdu3OjDYg6Q9ynifT9CkiCFbBRSPO0n7/NPnh4mSZClzR7A49tfkZfhA0jLtiEJfAKj3hcr1JcDBw7k8axIllOcwsvGKBdXzafT0tKukjWU8oDNQyQBwsvmExZxPB7u0cUKHnKM07kUsoU/xclR/WOerIpq8BX+BkmA8JHNImJ45tHFCp7AUf01j6Z1IAmQoUB7kIUcJ4tg0ae40tdp3A6w6FCW8Q1ZBA+qfMezziQBwstm0Y9mZmbmOV0s6BH5+fmtWGhoXeu89NJLZatXr+4+ePDgi+Qh165du9C1a9drZAOEls0nKXC397MsusEPXuKx735czdd5m+IRI0Z826VLl5/dc889eeQhYWFhW3hmi6fMCd1mBwcHR7Foy7/I8vLysEuXLjUnwRE6srmPfT/PzpDFcERfKS0tjSTBEVo2p9/m3PU6RBYTGhp6paysrBkJjtBpnCO7PctuQhYTERFxkQtBjx7RYEdEr8absewfyHoqdWT7HwiwXDYXgtdliGyhZXMlbqnsnTt3djx06FBLll3OTUZIXeuRAAidxnEChIVfIi+xYcOG2A8++GDaU089tXLfvn1DLl++bEhs3rx5Ud++fYuc18VB8Pbbb086d+6c8VDPxYsXU/fu3VNfffXVLVFRUaVkQ0RP461ZttcP2D179iQlJCRksPjf/epXv0q+fv166MGDB9s5rzNv3rzXeHk4Pt+6devkgQMHrs/Ozu7/xz/+8TmyKULL5sgOqMATzbxMdHT0oZkzZ6YiQseMGZMTGxv7dVFRUQvz8yVLljhKSkpajR07dj0+xzKs36NHj9Tc3FwHop5siOhtdiBPXr18GPTr18+l7965c+cC5/cs3riW3BRt0rNnT+PhnydOnLClbNG7XnwGMtDrst3hDOISFFevXg3jMfVa2+Xvv/8+nGyI0LI5qkt5CiLrcZHdpEmTMh4vr1UoF3S6QPM23Pfls5M3Ishi3JsKM12j7XZevmvXrv4c8WXcDJwmGyJ6GkcEWZ4yuep2OaDQVm/evDknNTX1OW6/W7L8nG3btg05ffp0T1TluutlDV6V3axZs7I2bdrkYO68nE+EBLZq1eqC87KVK1cmc/X9j1OnTsWtWrVqKrphzz777DJU5WRThI5sHtm6yMWT19rsoUOH5vF0x03u+AC4/vzzz6e5L587d24KCYTQkc3t9TWW3YYsBhcv8DntMhIc0fvZGMK0/PfTOBESHh7ui7NrliL6CNoFrsgtH8DgfvMDYWFhtiy6PEH0atwnkc1pvBn3nYWPbKFl8+DGea6CC6gRcGa4yKNwda5TWFjYlMnm9TyObj5QrpNNEPqxEXzasRmfCDmVmZnZgixi8ODBTYqLiy/y37DlEKgnCN1m79+/H6k1YMCAAU3JIngcvJ2n9y+3KzL8sO8MC7mfLIIzRyf+G8JfRgyEl81Rd9rKX1niXuQ8O0USIMMP+44HBQVZFtnMA/w3pJAtQxo/zSNpVt52EtehefwbLzsiw++zT/AUTRbBUX0fZ44TJAEyPEnAUtmcOXpxkSaFbOEjOyQkBHddsOwkBcuOPnDggJZtBzIyMvAD+XiHw3EfeZnExERL79fia2S56V02bpFFXobb6k7crZPmMY1SyOZUm8OyY8nL8D6789i58OexTWSJ7KMchZ3J+yBbZJMkSCEbD27jCOxFXoa7XT/myes3wPUXUjzEjUUf45nX71XGopvwgSSNbCkiG49jZDHf4dHI5CVwJ2KuBeL4zFohSYJMD3FrfvLkyQTyEmVlZd1Y9pckETLJPspy4sl7dOcUrh+8akc4je/jmddOdbJoPJ7xC5IImSL7BEe2156wx/t6gmffkkRIE9lNmjQ5UlpaarTZffr06RgcHIxTk1d4OPWo83r4AT/NoSCaRRV3uQ1mPO/jKEmE0LJRfZ85cyYWz8y8evUqnrDbrHfv3uyzEr8WwSq/5slF2Op5p1aENguccH3ezTX89uWa9vvYY4+15wJt361xd2kQWnZBQUE7HtLcwy/v5b62y2fc5l7myHQpsFb94eR7DzwUMSF+YMsmR/dcmMDvadJ/drpD+LVr15AhfPG7b58idJv9+eef48bvn7iLvkVBaGho9ROBnEXjPeZ4j+XuG96q6qVK4UD4Ao3PNb+Mh6Q6X+h/697juWlpaZfxwl20SW3CtWwbwxE8gaquWDHALzdY+Aa8rk20SS3C43l7LduO7N2798uQkJA/sWSjoOLILOTXGXcTbVKD8PjOnTtLJ1uaIiQvLy+rQ4cOCSw5gaPyy6lJ67vWR7RJ207hwddKb3RzxI3vkZWzKWjnzp3vkmRIVXFyN2xDVFTUv495bPbNboldnqivaBMIL78a1DWsolNJ2hd/XUKSIfQP+2pi1bzv3n/gx5HjPRXtDHfLrp46VrKmpm6ZyMg0XFpVjDVSNKirWyYy0kR2fYsxT5AtwqWQbYVoE5mECy/bStEmsggXWrYvRJsc3X3h6umvS1ZP+H2nySQowsr2pWgT0YULKdsfok1EFi6cbH+KNhFVuFCy7SDaREThwsi2k2gT0YQLIduOok1EEm572XYWbSKKcFvLFkG0iQjCbStbJNEmdhduS9kiijaxs3DbyRZZtIldhdtKtgyiTewo3DYXL8gkGsQPatnk/h9FTFwz/+Rysgm2iGzZRDtzhCP8THbJqglvdJpCfsbvsmUWbWIX4X6VrYJoEzsI95tslUSb+Fu4X2SrKNrEn8J9Lltl0Sb+Eu5T2Vr0bfwh3Geyteg78bVwn8jWomvHl8Itl61F3x1fCbdUthZdf3wh3LKxcS3aMxIwlh4bMWn1vJPLyCIsiWwtuuEcSeOzZdklKyf+vtMr5GW8LluLbjxWCfeqbC3ae1gh3GuytWjv423hXpGtRVuHN4U3WrYWbT3eEt4o2Vq07/CG8AbL1qJ9T2OFN0i27KJzc6se5RUT4/WHADaaxgj3WLYVordvT6GdO7dUv2/bNoqn9jR06Ehq1y6KfM3rr1dd/btw4QpPNqMdO7bwlFL93uEYTKNHv0DepqHCPRoutSqiCwsL6PDhLKqsJGM6ezafNmxYR5MmPUPp6WkkAvj/ly1bRNHRsRQfn0jh4ZG0fHkyrVnj/VupJQxu2aRDXMTPPR1arffN5X2Rup0jqbj4Ck2cmERr175P/fsPJrsTExNLq1enUGRk0+plr7wyjjIydtOECd6/yRKE8wzCqb4RXi/Z/mij8aWhzTxyJOuOz9aufc9Yjmjq0SPRSPfDhydVf47M8OGH73Pbm2O0v9gPZEye/JqLDIB9fPjhe8Yc62EdZ7D9ihWLjeXubfjGjeuM7WbPTr5jvwD3PccjLKzCU+F1pnE8PMWfxVhJSTFFRES6LJszZ7qR4h2OQbRgwQojZSYnz3FJl2gW8CWPGvW8sQ7mhw9n0tSpL7rsC6JmzJhspNxZsxYZ682ZM83Y3gSCcfBs3PjRHf8fsk5NkgH+JxwoVkS1M56k9Doje8W0E09EdQt/wVeinaMYxQ6+rPHjb39Z6elpxrR06YfVUYbIBps2fVT9xWKZubyKREpISDRqADMbAEQ02lhEpgmKQxwAKBBNhg1LMvaPpsWUi6IS72sqwHDg4fNp02b5pAmC8JB7Ap9753e5X//mv2P+p7b16pQ9ZXFMKkf2R3h4ii+Em1WwybBhI10iAwcDvmxEvPOBgWX44p1FgvT03XTihOsTkbGduQ7Wdz6YAD5zzyb4P9B0pKenVTcX6D3gQHFP7ThAse6UKa+5NC1Wcqs6X1+XaHDXNhu3cMRTchjLhX/6aaYxxxeGtInoRuSYXyjaYEh1PyjcwfYzZkwxpCFS0V5HRLimW+wH4DN33AWi+wfhmzZ9bAhEWseBgsh1p7i42JhHR/umj+5JN6xeBZovhQN82dOnzzaicM6c17nK3Wwshzx8hjReF0ijWBfVsTOIOBMzHeMAck+1aLOd0zhAKkd6x4GEgxD7rylyIyMjjSYDc6vxtL9d7342hONmrbhpK/kIpNjCwnyj/QNIsfiyzRGu2kCadxeISHQHQt33hajF33QHfxvrmxmnthSNgxFdSKtH3xoysOLRoIqvheMLxReMqheMHj3OeJ+cPNdoj02QAVD9miDqzAIPQLTz5yY4mNAPhkCkdYieO/f1O9psEzQp2C/WHTWq5pExZJUnn+xd48HlLXwyggZ8Ldw9upcuXUdt2rQzukj4UjGhDb9y5YfqbaZMmcbrtDe6Wvgc644f/9Id+8bBhP1jpOunP33cqNbRpastKpHKAdK0P4ZxgU/Hxk3scDIEkYuCyLWbdZuqlFxQ6+fOVA2qxNbabzb3hwMChZmvKm1n/HLWy0S105wY0MEB5l74+QJvnM9u1INXfV2l+ws0E2a/HiNtvsYWV6qYqHB+G80FikNft9W2ugbNRF+54n1seXWpiRbuPWx93bhJ1YPUWPggLbyhCPGLEJM1806u6PCjiIlauOcI9VsvEy3cc6wUDSz9fbYWXn+sFg0sv/OCFn53fCEa+OSeKlp47fhKNPDZ3ZK08DvxpWjg0/ugaeG38bVo4PM7HGrh/hEN/HLvUpWF+0s08NtdiVUU7k/RwK/3G1dJuL9FA78/SUAF4XYQDWzxjBAIx8NTEiQUbhfRwDaPesJTcu6Pi5gkk3A7iQa2eq6XTMLtJhrY7ol9Mgi3o2hgO9lAZOF2FQ1sKRuIKNzOooFtZQORhNtdNLC1bCCCcBFEA9vLBnYWLopoIIRsYEfhIokGwsgGdhIummgglGxgB+EiigbCyQaG8FgWPtj3wkUVDSx7+o+V4HFI+MLxxZMPEVk0EDKyTXCjN9zwzRcRLrpoILRs4AvhMogGwssGVgqXRTSQQjawQrhMooE0soE3hcsmGkglG3hDuIyigXSyQWOEyyoaSCkbNES4zKKBtLKBJ8JlFw2klg3qI1wF0UB62aAu4aqIBkrIBjUJV0k0UEY2cBaummiglGwA4S3ahI6/fO76WpVEgyBSjLwfPu9dkH8uf+6ysS+RYjTqrsSiklOQ+h0piJAXL2gahpatEFq2QmjZCqFcgRYYGFheWVmp5EGunOybN2+GkKKo2PX6nhQcTAIqym5OiqILNIVQsUDDcxx1GlcBLtCakaLoNK4QWrZCKJfGAwICrnG7rdtsFeDRs3sqKipIRXQaVwgV0/h1nvTYuApwGg/liVREp3GF0LIVQsXh0hucxnXXSwV4uFTJK2qBTuMKIWQ6O3/+/EiO0ChqACkpKSMxT0pK2kINgJuB/NatWzdoW3+jI1shlGu/goKCynWBpgg8Lq7sBYc6jSuElq0QyqXxkJCQMlIU5WSXl5eHkaIILfvQoUMt33777UnPPPPMljFjxuQ4f7ZkyRLHwYMHHStXrlxsLvvLX/7SMy0tzXH58uXmq1evdnTp0uXwq6++uiUqKqrUXOfdd991pKenD+F1OuJ9ixYt8oYNG7blF7/4xSESHKFl9+zZ88L169fDt23bNsRd9meffTayXbt235jv33rrrSF79ux5rlu3btmJiYk5TZs2Pfz3v//9uenTp8euW7fuD1gHB8PWrVt/3rt37y287/VYlpOT0/HKlStSZAPh03i/fv1SWfbPEeWQj2UbNmyILSkpafX444+vwvv8/PzwjIyMkZDI61/DsqeffvrQww8/nPfGG2/MRxb47W9/m/Htt992RCTPnTs3xelP5JAkCF+Njx079jCKLhbc31y2a9eu/uHh4RfMaN+3b18HbqvD27RpU3T8+PH2mHBAnDhxoiVvW1pUVNQK67Vq1aoI6XvGjBnP7dy5syNJhvCRjfY2Li4u/auvvurHb1MQxbm5uY6BAweuN9fhqI/DHCnaadPqg+Ps2bMdMEd0Q/yxY8ccixcvHvLOO++UdurU6dAvf/nLLWbWEBkpqvFx48alcjoegja3sLCwJZZNnDgxw/ycC7G8zMxMmj9//ht5eXkOLKvtRMitFJ6CyOZtYjn9J3ER2NK50BMVKQZVEHWconNYjCMrK+uJmJiYDOcKG20z5s6p/m4MHTo0b+bMmak9evRIPXfuXBxJgDQjaL169Uo/ffp0z1uFWbrzZzgYunfvnsqROpKr9K6XLl0yqmtE75tvvjnSbJ/5dRK6Xij2zM+5fe+BA4kkQKrz2Vyszcf8k08+eaOm7dD94ugfzcVa9ckQVN9ckC3DAYHCLDs7u7/zwAtEc198pdlmi3w+W5oRNERjaWlpS+fCzB2k5ZSUlDBej4vwkC/d++YLFizAtuuxLy7UwpHKSSKkkf3nP/95JLpgzoVZbXC3rJwLtFpT860oFr76dkd42Whn0Rbj9VNPPbXSuTCrieDg4Ov64gVB4VSczpGYHR0dfaE+feEbN26EkqIILxuCZRjw8AX64gWFUK7t4pMhM/Bj/C+++OJPpBgq/joijPvopCI6jSuEcrJxo1qe3SAF0TeqVQidxhVCy1YIfQtqhdC3oFYIncYVQsX7oF3WZ70UgUW3IEXRaVwhVEzjJTqNKwKLjiBF0QWaQugCTSGUOML79u17nk+AtOKoxokQRLexHHOWX3TgwIHWpABKVOMsdDPmeIIAbj8N4ZjwmoX/jRRBCdkhISELWOrpGj46zZ8tJEVQQvbevXuzeZYaFBRUvQwpnKdPb32mBMoMqrDYBZy2q3/OExgYmKdSVANlZO/fv/8YC07lCaKxaLtKUQ2UGi4NDg5+i2eI7tMc6cpdStygrtfS6Tk/qawMHFkp4JNV8i5mPol5x/t6f0qCwQdowE2q2Pyb5Lj/owbQoEGVgOCgj7v3bxEZ2iSIRKM3jTBfvkKCca2sgr5Kv/Qiv2zQw2MbJpvHJjrHN6Pwpso+gcEvlHx/g77ed7nBjxvUpzgVQstWCC1bIbRshdCyFULLVggtWyG0bIXQshVCy1YILVshtGyF0LIVQstWCC1bIbRshZBadm5uNp09m1+v9TDJjpCXmhQXX6FNmz6i9PTd1ZJiYuIoISGRRo16ntq1q3qixPLli41lEya8XOf+sB5YuHAFyYyQsufOnU7Hj2fT8OFJNHnya1RScoWOHMli+bvI4RhULbu+DBs2klRAONmHD2cZ07RpswzZJv37D6YpU6YZUe8pzvuRGWGvGGzbtubojYxseseyjRs/orVr3zMOBHyOAwUHh8ny5cnGHAcLQNOwYsVibhJeMJoLHFzAzCQ1/Q0REE5227btjTlkjB//MksbVOf6GRm7KSIikt58c5HxHmKTk+cYbbkpLTfX9dkwxcXFhmAsHz/+JUNwYWEBLVo0m+f5tGCBmG27cNU42mNE5tmzZ2jOnGn05JO9acaMyUb01pTCi4t/oFmzFlGPHonGhNdYD2383UD7P3r0OKP4M5uJqoNAzMpdyK4X0unq1SmGdBRX6F4hYqdOffGOrlZ0dKxL2jWLN/dorolhw5Lu+LugPgeKHRG2nw2B+PKnT59dLR4pFm2zM4hKb4M0LyLSDKpAPNpztK1WExkZSSIinOzaulZYDtEoxrzFjh0pLu+3b696j+JORISrxtHWopoePnxk9ZeOtGqmbxRU3iI9Pc0o/BISevGBdNboAeBvWtE0+AIhu1748hFla9bcbp8hAV0iVNwmMTGx1V01Z7Cu83KsVxOovnfs2FLdD0cxaPbFRUQ42aimUZTVh9rEuI+B17YeBm5kGi/XpzgVQstWCP1r+hpAG472v7a2XFS07BrAgI1zoScLOo0rhJatEFq2QmjZCqFlK4SWrRBatkJo2QqhZSuElq0QWrZCaNkK0aATIcGBgRf3/a2wPCAw4CZpfEZlRWVgYFDgD9RAGiS7vIQeP1tS1ps0PicwKOgANRAln0mpKrrNVggtWyG0bIXQshVCy1YILVsh/h9RL5x/SvzW6gAAAABJRU5ErkJggg==", "warnings": [], "engine": "mermaid", "engine_version": "11.17.2", "cache": "hit", "render_ms": 0, "queued_ms": 0 } ``` ### Render a TeX expression `POST https://api.eu.apyhub.com/callable-labs/diagram-math-code-render-api/math` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `tex` | body | string | yes | TeX source, e.g. `\frac{a}{b}` or `\int_0^\infty e^{-x}\,dx`. ≤ 64 KiB via POST, ≤ 8 KiB via GET. Example: `\frac{a}{b}`. | | `color` | body | any | no | Text colour as `#rrggbb`/`#rgb`. Example: `#1d4ed8`. | | `scale` | body | number | no | Zoom the output 0.5–4×. Ignored when `width` is set. Raster and PDF output is capped at 8192×8192 px on the hosted plans (WebP 4096×4096); SVG has no ceiling. Default: `1`. Example: `2`. | | `width` | body | any | no | Target width in pixels (16–4096); height follows the aspect ratio and must stay within the same pixel ceiling. Overrides `scale`. Example: `1024`. | | `format` | body | string | no | Output format. `json` returns a PNG data URI plus metadata and is the default; `svg`/`png`/`pdf`/`jpeg`/`webp` return the bytes. One of: json, svg, png, pdf, jpeg, webp. Default: `json`. Example: `sv… | | `display` | body | boolean | no | Display style (centred, larger) vs inline style. Default: `true`. | | `download` | body | boolean | no | Send `Content-Disposition: attachment` so browsers save the file. Default: `false`. | | `font_size` | body | integer | no | Font size in pixels (6–96). Default: `16`. Example: `20`. | | `background` | body | any | no | Background colour as `#rrggbb`/`#rgb`, a CSS name, or `transparent` for none. Example: `#ffffff`. | #### Quickstart Render a simple TeX expression as JSON using the required `tex` field. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/diagram-math-code-render-api/math" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "tex": "\\frac{a}{b}" }' ``` #### What you'll get back Returns a JSON object with fields such as `cache` (`hit` or `miss`), `width` and `height` (integers), `engine` and `engine_version` (strings), `format` and `media_type` (strings), `data_uri` (string), `warnings` (array of strings), `queued_ms` and `render_ms` (integers), and, when present, `width`/`height` reflect the rendered output size. ```json { "format": "png", "media_type": "image/png", "width": 18, "height": 33, "data_uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAhCAYAAADUIPtUAAABW0lEQVR4nO1Vy1XDMBAcggswJ67pAFMBzpFbOsBUQDqgBagAc+MGVIBTAU4FmBs3TAfsPq0iRehjvXCDeW/eOhvteD1eyQXiuCIuiCXxUeI9cXAXFhGRO+IpsSaOxJZ4QVznCC2JjQiNkhskdr6CA/jxJv/NrVwnsfYVzDy5UgSenPwZAt2EhOYSeytXw3TFj11NEWKBLyd3bQk1ML5tcQg/Pogr4jHxEuqVn8tvvsmDWxAyW6OCeUTtXe9bmBKajBl+Cf9Cadib9oZ4gjxsoOZtR6iFmpUcbCf8j84RHxcvwgZ7CPHmfIY5s6OIHf6Ddd1hDyFIN5spHaXM1uc0z1cVWxibIy58hfJqLWI8+Qtfh7GOaom3UNugIR7J9Q8UCSH2p7Vyn8j4rmm43zHt04CMjiop7LDbIaPPERqdyOBJf4c6biYLDVJUWt0sEfCHkXr9LYwnKwT8YXwDbINAQMEZMTgAAAAASUVORK5CYII=", "warnings": [], "engine": "mathjax", "engine_version": "3.2.2", "cache": "hit", "render_ms": 0, "queued_ms": 0 } ``` ## About [Callable Labs](https://callablelabs.com) · [Quickstart](https://callablelabs.com/docs/diagram-rendering-api/quickstart?via=apyhub) · [API reference](https://callablelabs.com/docs/diagram-rendering-api/reference?via=apyhub) ## What it does The Diagram API renders diagram-as-code into images. Send Mermaid, Graphviz, D2, or Vega-Lite `source` with the matching `engine`, and get back SVG, PNG, PDF, JPEG, or WebP. Two more endpoints in the same service render TeX math with MathJax and syntax-highlighted source code. Every endpoint accepts `format`, `scale` (0.5 to 4), `width`, and `background`. The default `json` format returns a `data_uri` plus metadata: width, height, engine version, cache status, warnings, and render timing. Set `download` to get the file bytes instead. Diagrams also take `theme` and `layout`; math takes `color`, `font_size`, and `display`; code takes `language`, `theme`, `line_numbers`, and a window `title` bar. Use it as the Mermaid to PNG or Mermaid to SVG step in a docs build, render architecture diagrams for pull requests, turn LaTeX math into PNG for emails and slides, or create code images for docs and social cards. AI agents can call the Diagram API through ApyHub MCP to turn the diagrams they write into images. Raster output tops out at 8192 by 8192 pixels (WebP at 4096), and Vega-Lite specs need their data inlined. Pairs well with: embed rendered SVGs in Markdown and export it with the [Convert Markdown to PDF API](https://apyhub.com/apyhub/service/convert-markdown-to-pdf), or place them in an HTML report and print it with the [Convert URL/HTML to PDF API](https://apyhub.com/dosvak/service/html-to-pdf-render). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/callable-labs/service/diagram-math-code-render-api * * * --- title: "Decode QR & Barcode API" slug: read-qr-barcode-image url: https://apyhub.com/callable-labs/service/read-qr-barcode-image provider: Callable Labs categories: [Data Extraction, Developer Tools, Image Processing] tags: [qr-code, barcode-scanning, data-extraction, scan-qr, decode-qr-image, barcode-image-reader, qr-code-reader-api, barcode-scanner-api] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 20 --- # Decode QR & Barcode API Decode QR codes and barcodes from an image URL or base64 payload. Returns decoded text, format, position, and parsed payloads when available. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/callable-labs/read-qr-barcode-image/decode` | What it does Decodes every QR code and barcode found in an image and returns the decoded symbols in… | 20 | ## Endpoint reference ### Read every QR code and barcode in an image `POST https://api.eu.apyhub.com/callable-labs/read-qr-barcode-image/decode` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `formats` | body | array of string | no | Restrict detection to these symbologies for speed and accuracy: `qr`, `microqr`, `datamatrix`, `pdf417`, `aztec`, `code128`, `code39`, `code93`, `ean13`, `ean8`, `upca`, `upce`, `itf`, `codabar`, `da… | | `multiple` | body | boolean | no | Return every symbol found (default true). Set false to return only the first symbol. Default: `true`. | #### Quickstart Decode a QR code or barcode from an image by sending either an image URL or base64 image data. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/read-qr-barcode-image/decode" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "image_url": "https://cdn.phototourl.com/free/2026-09-16-eaa7b05b-0601-419d-802f-9567cf8fda07.png" }' ``` #### What you'll get back Returns a JSON object with a `count` integer and a `results` array. `count` is the number of symbols decoded, and each item in `results` is an object with `format`, `text`, `content_type`, `position`, and `orientation` fields, plus optional decoded details like `parsed`, `ec_level`, `bytes_base64`, and `symbology_identifier`. ```json { "count": 1, "results": [ { "format": "qr", "text": "Hello ApyHub", "content_type": "text", "position": { "top_left": [1, 1], "top_right": [199, 0], "bottom_right": [200, 200], "bottom_left": [0, 199] }, "orientation": 0, "ec_level": "L", "symbology_identifier": "]Q1" } ] } ``` ## About [Callable Labs](https://callablelabs.com) · [Quickstart](https://callablelabs.com/docs/qr-code-api/quickstart?via=apyhub) · [API reference](https://callablelabs.com/docs/qr-code-api/reference?via=apyhub) ## What it does QR Code Scanner reads every QR code and barcode in an image and returns the decoded symbols in reader order. Send either `image_base64` or `image_url`, and optionally limit detection with `formats` or return only the first match with `multiple` set to `false`. Use it when you need to extract product labels from packaging photos, decode QR tickets from screenshots, or process receipts and shipping labels at scale. The reader supports common symbologies including QR, Data Matrix, PDF417, Aztec, Code 128, EAN-13, UPC-A, and more. The response includes a `count` plus a `results` array. Each result contains the decoded `text`, `format`, `content_type`, `position`, and `orientation`, along with optional `parsed` data for known payloads such as Wi-Fi, vCard, EPC, and crypto formats. QR symbols also include `ec_level`, and binary payloads can be returned as `bytes_base64` when the raw bytes differ from the text. If you are building document intake, inventory scanning, ticketing, or mobile image analysis, QR Code Scanner gives you the decoded content and symbol location from a single image request. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/callable-labs/service/read-qr-barcode-image * * * --- title: "Validate Payment & Generate QR API" slug: validate-standard-payload url: https://apyhub.com/callable-labs/service/validate-standard-payload provider: Callable Labs categories: [Data Validation, Developer Tools, Finance] tags: [qr-validation, payment-validation, gs1-digital-link, swiss-qr-bill, upi, EVMCo, Pix-BR-Code, SEPA, GS1] auth: api_key version: 1.0.0 service_type: sync endpoints: 3 atoms: 1-20 --- # Validate Payment & Generate QR API Validate GS1 and payment QR payloads, inspect parsed fields, and render scannable QR codes in common formats. Useful for checkout, invoicing, and test automation. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/callable-labs/validate-standard-payload/validate` | What it does Validates a single QR payment or GS1 payload against the selected standard and returns… | 10 | | POST | `https://api.eu.apyhub.com/callable-labs/validate-standard-payload/render` | What it does Validates a complete GS1 or payment payload against the selected standard and renders… | 20 | | GET | `https://api.eu.apyhub.com/callable-labs/validate-standard-payload/fixtures` | What it does Returns a list of official-source reference fixtures for the requested QR payment stan… | 1 | ## Endpoint reference ### Validate one GS1 or payment QR payload `POST https://api.eu.apyhub.com/callable-labs/validate-standard-payload/validate` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `payload` | body | string | yes | Complete raw payload to validate, exactly as encoded in the QR symbol or URI, 1 to 10,000 characters. Preserve newlines for EPC/SEPA and Swiss QR-bill payloads; whitespace and case are significant fo… | | `standard` | body | string | yes | Standard to validate the payload against. Only the selected scheme's rules run. Choose `gs1-digital-link`, `epc-sepa`, `swiss-qr-bill`, `pix-br-code`, `upi` or `emvco-mpm`. One of: gs1-digital-link,… | #### Quickstart Validate a QR payment payload by sending the standard and raw encoded payload in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/validate-standard-payload/validate" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "standard": "gs1-digital-link", "payload": "https://id.gs1.org/01/09506000134352/21/ABC123" }' ``` #### What you'll get back Returns a JSON object with `standard` and `specification` strings, a `valid` boolean, and optional `errors`, `warnings`, `fields`, and `normalized` fields. `valid` is `true` when no blocking validation errors were found. ```json { "standard": "gs1-digital-link", "valid": true, "normalized": "https://id.gs1.org/01/09506000134352/21/ABC123", "fields": { "domain": "id.gs1.org", "primary_ai": "01", "path_ais": { "21": "ABC123", "01": "09506000134352" }, "query_ais": {} }, "errors": [], "warnings": [], "specification": "GS1 Digital Link URI Syntax 1.7.0 (August 2026)" } ``` ### Generate a QR code from a validated payload `POST https://api.eu.apyhub.com/callable-labs/validate-standard-payload/render` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `dark` | body | string | no | Colour of the dark modules: a hex value such as `#1d4ed8`, an `rgb()` value or a CSS colour name. Default: `#000000`. Example: `#1d4ed8`. | | `size` | body | integer | no | Exact output width in pixels, 32 to 2048. Omit to use eight pixels per QR module. Example: `300`. | | `light` | body | string | no | Background colour. Use `transparent` or null for no background; some scanners rely on a light quiet zone, so verify transparent output. Default: `#ffffff`. | | `format` | body | string | no | Output format. `json` (default) returns a data URI plus metadata; `png`, `svg`, `jpeg`, `webp` and `pdf` return the image or document bytes with the matching content type. One of: json, png, svg, jpe… | | `payload` | body | string | yes | Complete raw payload exactly as encoded, 1 to 10,000 characters. EPC/SEPA and Swiss QR-bill are line-delimited: separate lines with a line feed inside the JSON string. Literal `\n` sequences are deco… | | `standard` | body | string | yes | Standard the payload must satisfy before it is rendered. Only the selected scheme's rules run, the same checks as `POST /v1/standards/validate`. If the payload fails, the response is `422 invalid_pay… | #### Quickstart Encode a raw GS1 or payment payload into a QR code with the default JSON response. ```bash curl -X POST "https://api.eu.apyhub.com/callable-labs/validate-standard-payload/render" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "body": { "standard": "gs1-digital-link", "payload": "https://id.gs1.org/01/09506000134352/21/ABC123", "format": "json" } }' ``` #### What you'll get back Returns a JSON object containing the rendered QR code as a PNG data URI together with metadata such as `format`, `media_type`, `width`, `height`, `version`, `content`, and `verified`. ```json { "format": "json", "image_format": "png", "media_type": "image/png", "width": 328, "height": 328, "data_uri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUgAAAFICAYAAAAyFGczAAAGPUlEQVR42u3dUYrDOBRE0cng/W/Zs4CB9ocQVU8657+T2HEuanhIv/d9338A+J9/3QIAgQQQSACBBBBIAIEEEEgAgQQQSACBBBBIAIEEQCABBBJAIAEEEkAgAQQSQCABBBJAIAEEEkAgARBIAIEEEEgAgQQQSACBBBBIAIEEOMGT/gC/3+/oG/y+79L1f/396v3d/frp+7f6+qdf//TfjxUkgEACCCSAQAIIJIBAAggkwPWe9g+YnoP6snsOb/ecW/vnT3++1ecv/fye/vuxggQQSACBBBBIAIEEEEgAgQS43jP9AtL78aWlP9/p+0G2z3H6/VhBAggkgEACCCSAQAIIJIBAAlzucQtmW93PcPXvd79+ej/M6XOIWEECCCSAQAIIJIBAAggkgEACHM4cZFj7nGC76XOYWEECCCSAQAIIJIBAAiCQAAIJsGT8HOT0c3e/pPd7bD93Ov3+q89fes7y9N+PFSSAQAIIJIBAAggkgEACCCTA8ernIO13mJ1znD7HuDrnl35/vx8rSACBBBBIAIEEEEgAgQRAIAH+9HttCDf7C9w8hzf99Xff3938PK0gAQQSQCABBBJAIAEEEgCBBPhT/Rzk6fvZ7b797edi7/7+p+/nmP79tD+fVpAAAgkgkAACCSCQAAIJIJAA14vPQU7fD7B9jnD1+tLS+02m/37395c+9zz9/FtBAggkgEACCCSAQAIIJIBAAoxXPwe5Kj3n1T7nNv37bb/++gCUz3laQQIIJIBAAggkgEACCCQAAgnw4fpzsdvntNr3M5x+f6ff//Sc7em/PytIAIEEEEgAgQQQSACBBBBIgHr1c5CfF1B+rvOq9jnF9v08b9/PcPf3d/r9tYIEEEgAgQQQSACBBBBIAIEEqPekP8DqnNTpc3LpOc/0fpLpz9/+/axKX3/7nKQVJIBAAggkgEACCCSAQAIIJEC9+Bzk7jmn1ddvn/NL39/2OcP0nOvtc5bp59MKEkAgAQQSQCABBBJAIAEEEuB49ftBtmvfDzJ9bnX69Z2bffbvwwoSQCABBBJAIAEEEkAgAQQS4Hq/Nzyo1L7fX/sc4e3nfk+/f+nnf/rzawUJIJAAAgkgkAACCSCQAAIJcL3n9AtMn2v8Zfp+mOlzpafP0U4/N/z0c7utIAEEEkAgAQQSQCABBBJAIAHqxfeD/PyA5fs5prWfO9y+39/0/SjT13f6ueFWkAACCSCQAAIJIJAAAgkgkAD14vtBpueopu/nl3796XN66fvbPse7+v7T5yStIAEEEkAgAQQSQCABBBJAIAHqjd8Pcrf2c5Onz2m2z1Hufn7th9l9f6wgAQQSQCABBBJAIAEEEkAgAepdvx/k7s/Xfq53+xzhqvZznafP+ToXG8C/2AAIJIBAAggkgEACCCRA2HP6Ba7Oae2eU9w9J2m/v7Ovb/p+nc7FBvAvNoBAAggkgEACIJAAAgmw6Pg5yN37ATpX+e79PFffP/18t99f52ID+BcbQCABBBJAIAEEEgCBBPjwuAV/m35ucft+e+1zqO3nnqf/Pj2HaQUJIJAAAgkgkAACCSCQAAIJcL34HOT0c5FX7T7Xevq51O3nPk9/PtNznFaQAAIJIJAAAgkgkAAIJIBAAiyKz0GePkfVvl/h9Ovb/fytvn/7udTTn38rSACBBBBIAIEEEEgAgQQQSIDr1Z+LPf1c5/T1756TTM8Jtp873X7/08+3FSSAQAIIJIBAAggkAAIJIJAAi57pF3D6ucnpc4un7yfYvp9j+/u3Px9WkAACCSCQAAIJIJAAAgkgkADXe9yCbqtzjtPnAHe7fU5095xt+vm1ggQQSACBBBBIAIEEEEgAgQQ4njnIctPnENvPzZ7++W+f47SCBBBIAIEEEEgAgQQQSACBBLje+DnI08/lTV//9DnG1dffvV9h+36ft/++rCABBBJAIAEEEkAgAQQSQCAB6v3e8KDT6ecuTz+Xevd+hO33f/X7mT7nePq511aQAAIJIJAAAgkgkAACCSCQAOPF5yABrCABBBJAIAEEEkAgARBIAIEEEEgAgQQQSACBBBBIAIEEEEgAgQQQSAAEEkAgAQQSQCABBBJAIAEEEkAgAQQSQCABBBJAIN0CAIEEEEgAgQTY6D+gk/yG825EywAAAABJRU5ErkJggg==", "warnings": [], "verified": true, "modules": { "width": 33, "height": 33 }, "version": 4, "error": "Q", "micro": false, "designator": "4-Q", "content": "https://id.gs1.org/01/09506000134352/21/ABC123" } ``` ### Get official-source reference fixtures `GET https://api.eu.apyhub.com/callable-labs/validate-standard-payload/fixtures` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `standard` | query | string | no | One of: gs1-digital-link, epc-sepa, swiss-qr-bill, pix-br-code, upi, emvco-mpm. | #### Quickstart Fetch reference QR payment fixtures for a standard like `upi` or `swiss-qr-bill`. ```bash curl -X GET "https://api.eu.apyhub.com/callable-labs/validate-standard-payload/fixtures?standard=upi" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON array of fixture objects. Each object includes `id`, `standard`, `title`, `payload`, `source`, and `note` fields, and may also include `expected_valid` to indicate the validator should accept the payload. ```json [ { "id": "upi-pay-basic", "standard": "upi", "title": "UPI pay deep link", "payload": "upi://pay?pa=callablelabs@upi&pn=Callable%20Labs&am=10.00&cu=INR&tn=API%20test", "expected_valid": true, "source": "https://www.npci.org.in/PDF/npci/upi/circular/2017/Circular%20on%20Non-compliance%20of%20UPI%20apps%20to%20Deeplinking%20specs%20Circular%2037-%201.11.2017.pdf", "note": "Conformance fixture derived from NPCI UPI Deep Linking 1.5.1 requirements." } ] ``` ## About [Callable Labs](https://callablelabs.com) · [Quickstart](https://callablelabs.com/docs/qr-code-api/quickstart?via=apyhub) · [API reference](https://callablelabs.com/docs/qr-code-api/reference?via=apyhub) ### What it does QR Standards Validator checks a raw payment or GS1 payload against a selected specification, then returns the parsed fields, validity result, and any blocking errors or non-blocking warnings. Send the exact encoded payload and choose one of the supported standards: `gs1-digital-link`, `epc-sepa`, `swiss-qr-bill`, `pix-br-code`, `upi`, or `emvco-mpm`. Use it when you need to verify a QR payload before you store it, generate it, or send it to a scanner or payment flow. The validation response includes the applied `standard`, a boolean `valid`, the exact `specification` version used, `normalized` output when a canonical form exists, structured `fields` parsed from the payload, plus `errors` and `warnings` for automation and debugging. The service also renders validated payloads as scannable QR codes with `POST /render`. Send the same `standard` and `payload`; the two endpoints run the same checks, so a payload that fails validation is rejected with `422 invalid_payload` and nothing is rendered. Rendering is plain and deterministic: `format` (`json`, `png`, `svg`, `jpeg`, `webp`, `pdf`), `size` (32–2048 px), `dark` and `light` colours. Error correction is fixed at level M and every code is scan-verified, so `verified` confirms the symbol decodes back to the payload. For styled codes, logos or typed content use the Scan-Checked QR & Barcode Studio API. Use the reference fixtures endpoint, `GET /fixtures`, to fetch official-source payload examples for testing. That helps you compare your implementation against published samples and confirm your validator or encoder behaves as expected. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/callable-labs/service/validate-standard-payload * * * --- title: WalletFinder - Historical On-Chain Trading Analytics slug: historical-chain-trading-analytics url: https://apyhub.com/walletfinderai/service/historical-chain-trading-analytics provider: Juan Montenegro categories: [Finance] tags: [crypto-wallets, wallet-discovery, trader-ranking, onchain-analytics, solana, ethereum] auth: api_key version: 1.0.0 service_type: sync endpoints: 5 atoms: 5-30 --- # WalletFinder - Historical On-Chain Trading Analytics Discover crypto wallets, trades, and raw swap events on Ethereum, Base, and Solana. Get profit, risk, and performance metrics for wallet analysis. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/walletfinderai/historical-chain-trading-analytics/discoverWallets` | What it does Returns a filtered and sorted list of discovered wallets. You control the chain, timef… | 10 | | GET | `https://api.eu.apyhub.com/walletfinderai/historical-chain-trading-analytics/discoverTrades` | What it does Returns a list of discovered trades filtered and sorted by the query parameters you pr… | 10 | | GET | `https://api.eu.apyhub.com/walletfinderai/historical-chain-trading-analytics/swaps` | What it does Returns raw swap event records for the specified chain, sorted according to the reques… | 30 | | GET | `https://api.eu.apyhub.com/walletfinderai/historical-chain-trading-analytics/walletOverview` | What it does Returns wallet overview data for the requested wallet address and timeframe, with an o… | 8 | | GET | `https://api.eu.apyhub.com/walletfinderai/historical-chain-trading-analytics/walletOverviewStats` | What it does Retrieves overview statistics for a wallet over a requested timeframe. The response re… | 5 | ## Endpoint reference ### Discover wallets `GET https://api.eu.apyhub.com/walletfinderai/historical-chain-trading-analytics/discoverWallets` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `page` | query | integer | no | Default: `1`. | | `chain` | query | string | yes | One of: ethereum, base, solana. | | `filter` | query | string | no | | | `sortBy` | query | string | yes | One of: walletAddress, tokens, totalProfit, potentialATHprofit, speed, alphaPerc, diamondTokens, gemPerc, winPerc, realAlphaPerc, scamPerc, averageXs, averageATHXs, lastBuy, lastInvestment, averageHO… | | `sortOrder` | query | string | yes | One of: asc, desc. | | `timeframe` | query | string | yes | One of: hour, day, week, month, month3, year. | | `showScamWallets` | query | string | no | One of: true, false. Default: `false`. | | `showRiskyWallets` | query | string | no | One of: true, false. Default: `false`. | #### Quickstart Get a sorted list of wallets for a chosen chain and timeframe. ```bash curl -X GET "https://api.eu.apyhub.com/walletfinderai/historical-chain-trading-analytics/discoverWallets?chain=ethereum&sortBy=totalProfit&sortOrder=desc&timeframe=day" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `wallets` array and a `totalRecords` integer. Each item in `wallets` is an object with wallet metrics such as `walletAddress`, `tokens`, `totalProfit`, `walletRiskStatus`, and related fields. ```json { "wallets": [ { "walletAddress": "0xabc123...", "tokens": 12, "totalProfit": 2450.5, "walletRiskStatus": "NORMAL" } ], "totalRecords": 1 } ``` ### Discover trades `GET https://api.eu.apyhub.com/walletfinderai/historical-chain-trading-analytics/discoverTrades` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `page` | query | integer | no | Default: `1`. | | `chain` | query | string | yes | One of: ethereum, base, solana. | | `filter` | query | string | no | | | `sortBy` | query | string | yes | One of: walletAddress, tokenAddress, tokenSymbol, tradeDate, block, firstBuy, maxATHProfit, ATHXs, investment, netProfit, netXs, riskPerc. | | `sortOrder` | query | string | yes | One of: asc, desc. | | `timeframe` | query | string | yes | One of: hour, day, week, month, month3, year. | | `tokenSymbol` | query | string | no | | | `showScamWallets` | query | string | no | One of: true, false. Default: `false`. | | `showRiskyWallets` | query | string | no | One of: true, false. Default: `false`. | | `showWrappedTokens` | query | string | no | One of: true, false. Default: `false`. | | `excludeStableCoins` | query | string | no | One of: true, false. Default: `true`. | #### Quickstart Fetch the first page of Ethereum trades for the last day, sorted by trade date. ```bash curl -X GET "https://api.eu.apyhub.com/walletfinderai/historical-chain-trading-analytics/discoverTrades?chain=ethereum&sortBy=tradeDate&sortOrder=desc&timeframe=day" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `trades` array and a `totalRecords` integer. Each item in `trades` is an object with trade details such as `walletAddress`, `tokenAddress`, `tokenSymbol`, `tradeDate`, and related metrics. ```json { "trades": [ { "walletAddress": "0x1234...abcd", "tokenAddress": "0xabcd...1234", "tokenSymbol": "USDC", "tradeDate": "2026-09-03 09:30:00", "investment": 1000, "netProfit": 250 } ], "totalRecords": 1 } ``` ### Raw swap events `GET https://api.eu.apyhub.com/walletfinderai/historical-chain-trading-analytics/swaps` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `chain` | query | string | yes | One of: ethereum, base, solana. | | `filter` | query | string | no | | | `sortBy` | query | string | yes | One of: _price_native_usd, amount_native, amount_token, amount_quote, block_number, gas_price_native, gas_used, interacted_with_address, pool_address, price_token_usd_robust_tick_1, price_token_usd_t… | | `sortOrder` | query | string | yes | One of: asc, desc. | #### Quickstart Fetch the latest raw swap events for a chain, sorted by the field you choose. ```bash curl -X GET "https://api.eu.apyhub.com/walletfinderai/historical-chain-trading-analytics/swaps?chain=ethereum&sortBy=timestamp&sortOrder=desc" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON array of event objects. Each object may include fields such as `side`, `timestamp`, `token_name`, `amount_token`, `amount_quote`, `block_number`, `pool_address`, `token_address`, `trader_address`, and `transaction_hash`. ```json [ { "side": "buy", "timestamp": 1710000000, "token_name": "Example Token", "amount_token": 100.5, "amount_quote": 2500.75, "block_number": 12345678, "pool_address": "0xabc123...", "token_address": "0xdef456...", "trader_address": "0x789abc...", "transaction_hash": "0xdeadbeef..." } ] ``` ### Wallet overview `GET https://api.eu.apyhub.com/walletfinderai/historical-chain-trading-analytics/walletOverview` · 8 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `chain` | query | string | no | One of: ethereum, base, solana. | | `timeframe` | query | string | yes | One of: hour, day, week, month, month3, year. | | `walletAddress` | query | string | yes | | #### Quickstart Fetch a wallet overview for a specific wallet address and timeframe. ```bash curl -X GET "https://api.eu.apyhub.com/walletfinderai/historical-chain-trading-analytics/walletOverview?walletAddress=0x8ba1f109551bD432803012645Ac136ddd64DBA72&timeframe=day" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object and a `chains` array. The `data` object includes wallet overview metrics such as `chain`, `speed`, `tokens`, `gemPerc`, `lastBuy`, `winPerc`, `riskPerc`, `alphaPerc`, `averageXs`, `averageHODL`, `totalProfit`, `averageATHXs`, `diamondTokens`, `inv_prof_hist`, `realAlphaPerc`, `walletAddress`, `lastInvestment`, `walletRiskStatus`, and `potentialATHprofit`. ```json { "data": { "chain": "ethereum", "speed": "fast", "tokens": 12, "walletAddress": "0x8ba1f109551bD432803012645Ac136ddd64DBA72" }, "chains": ["ethereum", "base", "solana"] } ``` ### Wallet overview stats `GET https://api.eu.apyhub.com/walletfinderai/historical-chain-trading-analytics/walletOverviewStats` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `chain` | query | string | no | One of: ethereum, base, solana. | | `timeframe` | query | string | yes | One of: hour, day, week, month, month3, year. | | `walletAddress` | query | string | yes | | #### Quickstart Fetch wallet overview stats for a wallet on the selected chain and timeframe. ```bash curl -X GET "https://api.eu.apyhub.com/walletfinderai/historical-chain-trading-analytics/walletOverviewStats?walletAddress=0x742d35Cc6634C0532925a3b844Bc454e4438f44e&timeframe=month&chain=ethereum" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object and a `chains` array. The `data` object includes wallet stats such as `chain`, `speed`, `tokens`, `gemPerc`, `lastBuy`, `winPerc`, `riskPerc`, `alphaPerc`, `averageXs`, `averageHODL`, `totalProfit`, `averageATHXs`, `diamondTokens`, `realAlphaPerc`, `walletAddress`, `lastInvestment`, `walletRiskStatus`, and `potentialATHprofit`; `chains` lists supported chain values. ```json { "data": { "chain": "ethereum", "speed": "fast", "tokens": 12, "walletAddress": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e" }, "chains": ["ethereum", "base", "solana"] } ``` ## About ## What it does Wallet Finder helps you discover and inspect trading wallets, trades, and raw swap activity across Ethereum, Base, and Solana. Send a chain plus a timeframe, and get ranked wallet or trade results back with profit, win rate, risk, and other trading signals. Use the Discover wallets endpoint to list wallets by metrics such as `tokens`, `totalProfit`, `potentialATHprofit`, `speed`, `alphaPerc`, `gemPerc`, `winPerc`, `realAlphaPerc`, `riskPerc`, `suspiciousTokenPerc`, or `walletRiskStatus`. You can filter results, choose ascending or descending sort order, and include or exclude scam and risky wallets. The response includes each wallet address plus the selected performance and risk fields, along with `totalRecords` for pagination. Use the Discover trades endpoint when you want token-level activity instead of wallet summaries. It supports sorting by fields like `tradeDate`, `block`, `investment`, `netProfit`, `netXs`, `ATHXs`, and `riskPerc`, and can filter by `tokenSymbol`. Each result includes the trader wallet address, token address, token symbol, profit and investment values, risk status, alert counts, and the token image URL when available. For deeper analysis, the Raw swap events endpoint returns low-level swap records sorted by block, timestamp, token, trader, or transaction hash. Each record includes swap side, amounts, price fields, pool and quote addresses, transaction hash, gas usage, and token metadata. Use Wallet overview or Wallet overview stats to fetch a single wallet’s metrics for a timeframe, including `inv_prof_hist` in the overview response and a compact stats payload in the stats endpoint. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/walletfinderai/service/historical-chain-trading-analytics * * * --- title: Generate Text to Video With LTX 2 Video (RTX 5090) slug: ltx-2-video-rtx-5090 url: https://apyhub.com/mastera-ai/service/ltx-2-video-rtx-5090 provider: MasterA AI categories: [Artificial Intelligence, Smart Generation] tags: [text-to-video, video-generation, ltx2] auth: api_key version: 1.0.0 service_type: job endpoints: 3 atoms: 1-10000 --- # Generate Text to Video With LTX 2 Video (RTX 5090) What it does This service turns a text prompt or a source photo into a short LTX-2 video on a dedicated NVIDIA RTX 5090, and gives you a task ID to track progress. Text to Video — Send a prompt, and optionally seed, model, length, quality, and resolution. Use the POST /v1/video/generate endpoint to… ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/mastera-ai/ltx-2-video-rtx-5090/v1/video/generate` | What it does Starts a text-to-video generation request using the LTX-2 model and returns a task ide… | 10000 | | GET | `https://api.eu.apyhub.com/mastera-ai/ltx-2-video-rtx-5090/v1/video/tasks/:task_id` | What it does Polls the status of an LTX-2 video generation task by taskid and returns the task’s cu… | 1 | | POST | `https://api.eu.apyhub.com/mastera-ai/ltx-2-video-rtx-5090/v1/video/i2v-ltx2` | What this endpoint does Image to Video Generator turns a photo into a short animated LTX-2 clip and… | 10000 | ## Endpoint reference ### Generate a short video (LTX-2, RTX 5090) `POST https://api.eu.apyhub.com/mastera-ai/ltx-2-video-rtx-5090/v1/video/generate` · 10000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `seed` | body | integer | no | Random seed for reproducible generation. Default: `0`. | | `model` | body | string | no | Video model to use. One of: ltx2. Default: `ltx2`. | | `length` | body | string | no | Approximate duration (3s, 5s or 10s). One of: 3s, 5s, 10s. Default: `5s`. | | `prompt` | body | string | yes | Text description of the video to generate. Example: `A red fox running through fresh snow, slow motion, cinematic lighting`. | | `quality` | body | string | no | Generation quality (inference steps). One of: fast, balanced, best. Default: `fast`. | | `resolution` | body | string | no | Output resolution (SD 480p / HD 720p). One of: sd, hd. Default: `sd`. | #### Quickstart Generate a short text-to-video task from a prompt. ```bash curl -X POST "https://api.eu.apyhub.com/mastera-ai/ltx-2-video-rtx-5090/v1/video/generate" \ -H 'apy-token: $APY_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "length": "3s", "model": "ltx2", "prompt": "A red fox running through fresh snow, slow motion, cinematic lighting", "quality": "fast", "resolution": "sd", "seed": 0 }' ``` #### What you'll get back Returns a JSON object with `status`, `message`, and `task_id` string fields. `status` indicates the job state, `message` contains a human-readable note, and `task_id` is the queued generation task identifier. ```json { "task_id": "67ddbf74b89f", "status": "queued", "message": "Video generation started. Poll GET /v1/video/tasks/{task_id}." } ``` ### Poll LTX-2 video status (RTX 5090) `GET https://api.eu.apyhub.com/mastera-ai/ltx-2-video-rtx-5090/v1/video/tasks/:task_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `task_id` | path | string | yes | | #### Quickstart Fetch the status of a video generation task by its `task_id`. ```bash curl -X GET "https://api.eu.apyhub.com/mastera-ai/ltx-2-video-rtx-5090/v1/video/tasks/:task_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields: `type` (string), `error` (string), `status` (`queued`, `generating`, `completed`, or `error`), `task_id` (string), `elapsed_s` (number), and `output_url` (string, present only when `status` is `completed`). ```json { "type": "ltx2", "status": "completed", "task_id": "ltx-task-123", "elapsed_s": 12.4, "output_url": "https://cdn.example.com/video.mp4" } ``` ### Generate a short video from photo (LTX-2 I2V, RTX 5090) `POST https://api.eu.apyhub.com/mastera-ai/ltx-2-video-rtx-5090/v1/video/i2v-ltx2` · 10000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `seed` | body | integer | no | Random seed for reproducible generation. Default: `0`. | | `image` | body | string | yes | Base64-encoded source image to animate. | | `length` | body | string | no | Output clip duration. One of: 3s, 5s, 10s. Default: `5s`. | | `prompt` | body | string | yes | The text description of the motion to generate. Example: `the subject slowly turns and smiles at the camera`. | | `quality` | body | string | no | Generation quality tier. One of: fast, balanced, best. Default: `fast`. | | `resolution` | body | string | no | Output resolution tier. One of: sd, hd. Default: `sd`. | #### Quickstart Start an image-to-video generation job with a source photo and a motion prompt. ```bash curl -X POST "https://api.eu.apyhub.com/mastera-ai/ltx-2-video-rtx-5090/v1/video/i2v-ltx2" \ -H 'apy-token: $APY_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "prompt": "the subject slowly turns and smiles at the camera", "image": "", "quality": "fast", "resolution": "sd", "length": "5s", "seed": 0 }' ``` #### What you'll get back Returns a JSON object with `status` (string), `message` (string), and `task_id` (string) fields. ```json { "task_id": "67ddbf74b89f", "status": "queued", "message": "Video generation started. Poll GET /v1/video/tasks/{task_id}." } ​``` ## About ## What it does This service turns a text prompt or a source photo into a short LTX-2 video on a dedicated NVIDIA RTX 5090, and gives you a task ID to track progress. **Text to Video** — Send a `prompt`, and optionally `seed`, `model`, `length`, `quality`, and `resolution`. Use the `POST /v1/video/generate` endpoint to start the job. `length` supports `3s`, `5s`, or `10s`, `quality` can be `fast`, `balanced`, or `best`, and `resolution` can be `sd` or `hd`. **Image to Video** — Send an `image` (base64-encoded) and a `prompt` describing the motion, and optionally `seed`, `length` (`3s`, `5s`, or `10s`), `quality` (`fast`, `balanced`, or `best`), and `resolution` (`sd` or `hd`). Use the `POST /v1/video/i2v-ltx2` endpoint to animate a photo while keeping the composition of the source image — a good fit for ad mockups, product demos, and social content. Both endpoints respond with `status`, `message`, and `task_id` so you can store the job and poll later. Poll the shared `GET /v1/video/tasks/:task_id` endpoint until the job reaches `completed` or `error`. The status response includes `type`, `status`, `task_id`, `elapsed_s`, and, when generation finishes, an `output_url` for the final MP4. If something fails, check the `error` field on the task response. This service is a good fit for ad mockups, concept previews, social clips, and internal creative iteration where a short video draft is enough — whether starting from a text description or animating an existing photo. > **Notes**: Text-to-video and image-to-video with LTX-2 19B (distilled) on a dedicated NVIDIA RTX 5090. Text-to-video generates a ~5-second cinematic clip in ~30-60 seconds; image-to-video generates a ~5-second clip in ~30-60 seconds. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/mastera-ai/service/ltx-2-video-rtx-5090 * * * --- title: Generate Text to Video With LTX Video (RTX 5090) slug: ltx-video-rtx-5080 url: https://apyhub.com/mastera-ai/service/ltx-video-rtx-5080 provider: MasterA AI categories: [Artificial Intelligence, Smart Generation] tags: [text-to-video, video-generation, ltx, ke] auth: api_key version: 1.0.0 service_type: job endpoints: 3 atoms: 1-7200 --- # Generate Text to Video With LTX Video (RTX 5090) Generate short MP4 clips from a text prompt, or animate a photo, with LTX-Video 13B on a dedicated RTX 5090. Async jobs, 4 to 5 second clips. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/mastera-ai/ltx-video-rtx-5080/v1/ltx/generate` | What it does Generates a short video from a text prompt and starts the job asynchronously. The requ… | 7200 | | GET | `https://api.eu.apyhub.com/mastera-ai/ltx-video-rtx-5080/v1/tasks/:task_id` | What it does Polls the status of an LTX text-to-video task using the task identifier in the path. T… | 1 | | POST | `https://api.eu.apyhub.com/mastera-ai/ltx-video-rtx-5080/v1/ltx/i2v` | What this endpoint does Image to Video Generator turns a photo into a short animated MP4 using LTX… | 7200 | ## Endpoint reference ### Generate a short video (LTX, RTX 5090) `POST https://api.eu.apyhub.com/mastera-ai/ltx-video-rtx-5080/v1/ltx/generate` · 7200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `cfg` | body | number | no | Guidance scale (1.0 recommended for the distilled model). Default: `1`. | | `seed` | body | integer | no | Random seed for reproducible generation. Default: `0`. | | `steps` | body | integer | no | Number of inference steps. Default: `8`. | | `width` | body | integer | no | Output video width in pixels. Default: `768`. | | `height` | body | integer | no | Output video height in pixels. Default: `512`. | | `length` | body | integer | no | Video duration in frames (25 fps). 97 frames is ~4s. Snapped to a valid n*8+1 value. Default: `97`. | | `prompt` | body | string | yes | The text description of the video to generate. Example: `Ocean waves at sunset, cinematic, slow camera pan`. | | `negative_prompt` | body | string | no | What to avoid in the generated video. Default: ``. | #### Quickstart Start a text-to-video generation job with a prompt. ```bash curl -X POST "https://api.eu.apyhub.com/mastera-ai/ltx-video-rtx-5080/v1/ltx/generate" \ -H 'apy-token: $APY_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "prompt": "Ocean waves at sunset, cinematic, slow camera pan", "negative_prompt": "", "width": 768, "height": 512, "length": 97, "steps": 8, "cfg": 1 }' ``` #### What you'll get back Returns a JSON object with `status` (string), `message` (string), and `task_id` (string) fields. `status` indicates the job state, `message` provides a human-readable note, and `task_id` is the identifier for the queued generation task. ```json { "task_id": "61442d82a33e", "status": "processing", "message": "Video generation started. Poll GET /v1/tasks/{task_id} for result." } ``` ### Poll LTX video status (RTX 5090) `GET https://api.eu.apyhub.com/mastera-ai/ltx-video-rtx-5080/v1/tasks/:task_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `task_id` | path | string | yes | | #### Quickstart Check the status of a video-generation task by its `task_id`. ```bash curl "https://api.eu.apyhub.com/mastera-ai/ltx-video-rtx-5080/v1/tasks/:task_id" \ -H 'apy-token: $APY_TOKEN' ``` #### What you'll get back Returns a JSON object with these top-level fields when available: `type` (`string`), `error` (`string`), `status` (`string`), `message` (`string`), `task_id` (`string`), and `output_url` (`string`). ```json { "type": "ltx_t2v", "status": "completed", "task_id": "task-123", "output_url": "https://example.com/video.mp4" } ``` ### Generate a short video from photo (LTX I2V, RTX 5090) `POST https://api.eu.apyhub.com/mastera-ai/ltx-video-rtx-5080/v1/ltx/i2v` · 7200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `seed` | body | integer | no | Random seed for reproducible generation. Default: `0`. | | `image` | body | string | yes | Base64-encoded source image to animate. | | `prompt` | body | string | yes | The text description of the motion to generate. Example: `the subject slowly turns and smiles at the camera`. | | `quality` | body | string | no | Generation quality tier. One of: fast, balanced, best. Default: `fast`. | | `resolution` | body | string | no | Output resolution tier. One of: sd, hd. Default: `sd`. | | `negative_prompt` | body | string | no | What to avoid in the generated video. Default: ``. | #### Quickstart Start an image-to-video generation job with a source photo and a motion prompt. ```bash curl -X POST "https://api.eu.apyhub.com/mastera-ai/ltx-video-rtx-5080/v1/ltx/i2v" \ -H 'apy-token: $APY_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "prompt": "the subject slowly turns and smiles at the camera", "image": "", "quality": "fast", "resolution": "sd", "negative_prompt": "", "seed": 0 }' ``` #### What you'll get back Returns a JSON object with `status` (string), `message` (string), and `task_id` (string) fields. `status` indicates the job state, `message` provides a human-readable note, and `task_id` is the identifier for the queued generation task. ```json { "task_id": "506338b47997", "status": "processing", "message": "Video generation started. Poll GET /v1/tasks/{task_id} for result." } ``` ## About ## What it does This service turns a text prompt or a source photo into a short MP4 video using LTX video generation on a dedicated NVIDIA RTX 5080. **Text to Video** — Send a `prompt`, and you can optionally tune `cfg`, `seed`, `steps`, `width`, `height`, `length`, and `negative_prompt` to control guidance, reproducibility, frame count, and output size. Use the `POST /v1/ltx/generate` endpoint to start the job. **Image to Video** — Send an `image` (base64-encoded) and a `prompt` describing the motion, and optionally tune `quality` (`fast`, `balanced`, or `best`), `resolution` (`sd` or `hd`), `negative_prompt`, and `seed`. Use the `POST /v1/ltx/i2v` endpoint to animate a photo while keeping the composition of the source image. Use it to animate a product photo, portrait, or scene image into a short cinematic clip. Both endpoints start a generation task and return a `status`, `message`, and `task_id`. Use the shared `GET /v1/tasks/:task_id` endpoint to check progress until the job reaches `completed` or `error`. When the video is ready, the task status response includes an `output_url` to the finished MP4. Use this service when you need short motion clips from a script, product concept, storyboard note, or scene description — or when you want to bring a still image to life. It is a fit for prototyping video ideas, creating demo assets, animating product photos, or generating synthetic motion content without a manual editing workflow. Because outputs are task-based, you can kick off generation and poll asynchronously while your app continues other work. That makes it easy to slot into content pipelines, creative tools, or internal review systems where you need a generated clip and a reliable completion signal. > **Notes**: Text-to-video and image-to-video with LTX-Video 13B (distilled) on a dedicated NVIDIA RTX 5080. Text-to-video generates a ~4-second cinematic clip in ~30 seconds; image-to-video generates a ~5-second clip in ~20-40 seconds depending on quality/resolution tier. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/mastera-ai/service/ltx-video-rtx-5080 * * * --- title: Generate Text to Image Job API slug: image-generation url: https://apyhub.com/mastera-ai/service/image-generation provider: MasterA AI categories: [Artificial Intelligence, Image Processing, Smart Generation] tags: [image-generation, text-to-image, flux, sdxl, ai-art] auth: api_key version: 2.0.0 service_type: job endpoints: 3 atoms: 0-120 --- # Generate Text to Image Job API Generate images from text prompts with Flux.1-Schnell or SDXL-Turbo. Poll the task status for progress, errors, and the finished output URL. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/mastera-ai/image-generation/v1/flux/generate` | What it does Starts a text-to-image generation request using Flux.1-Schnell. You send a prompt plus… | 120 | | POST | `https://api.eu.apyhub.com/mastera-ai/image-generation/v1/sdxl/generate` | What it does Starts an ultra-fast text-to-image generation request using SDXL-Turbo from a text pro… | 100 | | GET | `https://api.eu.apyhub.com/mastera-ai/image-generation/v1/tasks/:task_id` | What it does Polls the status of an image generation task by taskid and returns the task’s current… | 0 | ## Endpoint reference ### Text-to-Image (Flux.1-Schnell) `POST https://api.eu.apyhub.com/mastera-ai/image-generation/v1/flux/generate` · 120 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `seed` | body | integer | no | Random seed for reproducible generation. Default: `0`. | | `steps` | body | integer | no | Number of inference steps. Default: `4`. | | `width` | body | integer | no | Output image width in pixels. Default: `1024`. | | `height` | body | integer | no | Output image height in pixels. Default: `768`. | | `prompt` | body | string | yes | The text description of the image to generate. Example: `A serene mountain lake at sunset, oil painting style`. | #### Quickstart Start an image generation job by sending a prompt and the default image settings. ```bash curl -X POST "https://api.eu.apyhub.com/mastera-ai/image-generation/v1/flux/generate" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "prompt": "A serene mountain lake at sunset, oil painting style", "seed": 0, "steps": 4, "width": 1024, "height": 768 }' ``` #### What you'll get back Returns a JSON object with `status`, `message`, and `task_id` string fields. `status` indicates the job state, `message` explains that generation has started, and `task_id` is the ID you can use to check the result later. ```json { "status": "processing", "message": "Generation started. Poll GET /v1/tasks/{task_id} for result.", "task_id": "a1b2c3d4e5f6" } ``` ### Ultra-fast Text-to-Image (SDXL-Turbo) `POST https://api.eu.apyhub.com/mastera-ai/image-generation/v1/sdxl/generate` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `seed` | body | integer | no | Random seed for reproducible generation. Default: `0`. | | `steps` | body | integer | no | Number of inference steps (1-4 recommended for Turbo). Default: `4`. | | `width` | body | integer | no | Output image width in pixels (SDXL-Turbo is tuned for 512). Default: `512`. | | `height` | body | integer | no | Output image height in pixels (SDXL-Turbo is tuned for 512). Default: `512`. | | `prompt` | body | string | yes | The text description of the image to generate. Example: `A red sports car on a coastal road, golden hour`. | | `negative_prompt` | body | string | no | What to avoid in the generated image. Default: ``. | #### Quickstart Start an image generation task by sending a prompt. ```bash curl -X POST "https://api.eu.apyhub.com/mastera-ai/image-generation/v1/sdxl/generate" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "prompt": "A red sports car on a coastal road, golden hour" }' ``` #### What you'll get back Returns a JSON object with `status`, `message`, and `task_id` string fields. `status` shows the task state, `message` gives a short note, and `task_id` is the ID you can use to poll for the result. ```json { "status": "processing", "message": "Generation started. Poll GET /v1/tasks/{task_id} for result.", "task_id": "a1b2c3d4e5f6" } ``` ### Poll task status `GET https://api.eu.apyhub.com/mastera-ai/image-generation/v1/tasks/:task_id` · 0 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `task_id` | path | string | yes | | #### Quickstart Check the status of a task by its `task_id`. ```bash curl -X GET "https://api.eu.apyhub.com/mastera-ai/image-generation/v1/tasks/:task_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with optional top-level fields such as `type`, `error`, `status`, `message`, `task_id`, and `output_url`, depending on the task state. ```json { "type": "flux_t2i", "status": "completed", "message": "Task completed successfully.", "task_id": "a1b2c3d4e5f6", "output_url": "https://example.com/generated-image.png" } ``` ## About ## What it does GPU Image Generation creates images from text prompts and returns a task you can poll for progress. Use it when you need fast, model-backed image generation without managing your own inference stack. Send a `prompt` and, optionally, `seed`, `steps`, `width`, and `height` to the Flux.1-Schnell endpoint or the SDXL-Turbo endpoint. The Turbo variant also accepts `negative_prompt` so you can steer the output away from unwanted elements. Both generation endpoints respond with `status`, `message`, and `task_id`, which you use with `GET /tasks/:task_id` to check progress. Polling `/tasks/:task_id` returns the current `status`, a human-readable `message`, the `task_id`, and, when the task is complete, an `output_url` for the generated file. If the task fails, the same status response includes `error`. This service fits product features like prompt-based asset creation, concept mockups, social content generation, or internal design tooling where developers need an image job API with asynchronous results and reproducible seeds. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/mastera-ai/service/image-generation * * * --- title: AI-ready Clean Data Extractor API slug: webpage-extractor-api url: https://apyhub.com/apyhub/service/webpage-extractor-api provider: ApyHub categories: [Data Extraction, SEO] tags: [web-scraping, page-extraction, content-parsing, html-extraction, article-extraction] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 50 --- # AI-ready Clean Data Extractor API Clean Data Extractor: a web data extraction API that turns any URL into structured JSON with tables, links, headings and Markdown. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/webpage-extractor-api` | What it does Extracts structured content from a webpage given its URL and returns a JSON object con… | 50 | ## Endpoint reference ### Extract structured content from a webpage `POST https://api.eu.apyhub.com/apyhub/webpage-extractor-api` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | HTTP/HTTPS URL of the page to scrape Example: `https://www.bbc.com/news/articles/cz72j8eex4eo`. | #### Quickstart Fetch structured content from a webpage by sending its URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/webpage-extractor-api" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://apyhub.com"}' ``` #### What you'll get back Returns a JSON object with a `data` object containing the extracted page content. The `data` object can include fields like `title`, `summary`, `links`, `images`, `tables`, `headings`, `sections`, `metadata`, and `page_type`, along with other structured content from the page. ```json { "data": { "title": "Example page title", "summary": "Short page summary", "page_type": "article" } } ``` ## About ## What it does The Clean Data Extractor is a web data extraction API that turns any web page into clean, structured data an LLM, search index, or pipeline can use. Send a page `url` in a POST body and get back a `data` object with `title`, `author`, `published_date`, `summary`, `headings`, `sections`, and the page content as `clean_markdown` and `raw_markdown`. It pulls out the parts of a page that are hard to scrape: `tables` as headers and rows, `links` tagged as internal or external, `images` with alt text, and `code_blocks`. `clean_markdown` drops cookie banners and header navigation, while `raw_markdown` keeps the full page. A `quality` object returns a score from 0 to 1 with warnings for pages that only partly extracted, and `metadata` adds language, word count, and read time. Use the score to decide which pages to keep. Use the Clean Data Extractor to feed web pages into RAG and embeddings, give AI agents readable page content, import docs and help centers into a knowledge base, or collect tables and links for research and SEO audits. As a website content extractor it returns one consistent JSON shape for every page, so your parser stays the same across sites. AI agents can call it through ApyHub MCP to read a page mid-task. To find every page on a site first, run the [Sitemap Extraction API](https://apyhub.com/apyhub/service/extract-sitemap-from-url-api). For article body text with author and date only, use the [Article Extractor API](https://apyhub.com/namastesumalya/service/extract-article-content), and for plain visible text, the [Extract Text from Website API](https://apyhub.com/apyhub/service/extract-visible-text-from-a-webpage). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/webpage-extractor-api * * * --- title: Extract Sitemap from URL API slug: extract-sitemap-from-url-api url: https://apyhub.com/apyhub/service/extract-sitemap-from-url-api provider: ApyHub categories: [Data Extraction, Developer Tools, SEO] tags: [sitemap, url-extraction, seo, website-crawling, xml-parsing] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 1-50 --- # Extract Sitemap from URL API Extract URLs from a website's sitemaps, with optional sitemap metadata and async job polling. Built for SEO audits, crawl seeds, and inventory. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/extract-sitemap-from-url-api/extract` | What it does Extracts all URLs discovered from a website’s sitemaps. It accepts either a website UR… | 50 | | GET | `https://api.eu.apyhub.com/apyhub/extract-sitemap-from-url-api/jobs/:jobId` | What it does Polls the status of a sitemap extraction job using the jobId in the path. The success… | 1 | ## Endpoint reference ### Extract all URLs from a website's sitemaps `POST https://api.eu.apyhub.com/apyhub/extract-sitemap-from-url-api/extract` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Website URL or direct sitemap URL. If the path ends in .xml, .xml.gz, or contains "sitemap" it is used directly; otherwise robots.txt is consulted and /sitemap.xml is tried as a fallback. Example: `h… | | `mode` | query | string | no | One of: async. | | `maxUrls` | query | integer | no | | | `includeMetadata` | query | string | no | One of: true, 1. | #### Quickstart Fetch URLs from a sitemap or website by sending the target URL in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-sitemap-from-url-api/extract" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://apyhub.com"}' ``` #### What you'll get back Returns a JSON object with `success` and `data` fields. On a completed extraction, `data` contains the extracted URLs plus optional metadata and summary information; in async mode, `data` contains a `jobId`, `status`, and `message`. ```json { "success": true, "data": { "urls": ["https://example.com/page-one"], "partial": false } } ``` ### Poll sitemap extraction job status `GET https://api.eu.apyhub.com/apyhub/extract-sitemap-from-url-api/jobs/:jobId` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `jobId` | path | string | yes | | #### Quickstart Fetch the status for a sitemap extraction job by replacing `jobId` in the path. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/extract-sitemap-from-url-api/jobs/:jobId" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `success` and `data` fields. `success` is a boolean, and `data` is an object whose shape depends on the job status: it may include `jobId`, `status`, and either `message` for `pending`/`running`, or `urls` and related result fields for `done`, or `error` for `failed`. ```json { "success": true, "data": { "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "status": "pending", "message": "Job is still processing" } } ``` ## About ## What it does Sitemap Extractor finds and returns the URLs exposed by a website’s sitemap files. Send a website URL or a direct sitemap URL, and it will resolve the sitemap source, process sitemap indexes and nested sitemaps, and give you back the collected URLs. Use it when you need a crawl seed list, want to audit what a site exposes to search engines, or need to compare sitemap coverage against live pages. The request accepts a `url` in the body, with optional `mode=async`, `maxUrls`, and `includeMetadata`. If you pass `includeMetadata`, the response can include each URL with `lastmod`, `priority`, and `changefreq`; otherwise you get plain URL strings. The response also includes extraction metadata such as the source URL, how the sitemap was discovered, processed sitemap lists, and a summary with counts like `uniqueUrls`, `totalUrlsFound`, `duplicatesRemoved`, and whether a limit was reached. If extraction is running asynchronously, the initial response gives you a `jobId`, and you can poll the job endpoint until it returns `done` or `failed`. Sitemap Extractor is a good fit for SEO tools, site monitoring, content inventory, and any workflow that needs a structured list of URLs from one site. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/extract-sitemap-from-url-api * * * --- title: Domain Availability API slug: domain-availability-api url: https://apyhub.com/apyhub/service/domain-availability-api provider: ApyHub categories: [Data Validation, Developer Tools, SEO] tags: [domain-availability, domain-check, domain-validation, dns, registrar] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 25 --- # Domain Availability API Check whether a domain is available, taken, or indeterminate. Validate candidate names inside signup flows, registrars, and domain search tools. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/domain-availability-api` | What it does Checks whether a domain name is available. The request sends a domain string, and the… | 25 | ## Endpoint reference ### Check domain availability `POST https://api.eu.apyhub.com/apyhub/domain-availability-api` · 25 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `domain` | body | string | yes | The domain name to check (e.g. example.com). Must be a valid domain format — lowercase letters, digits, and hyphens; the name part must be 1–63 characters and cannot start or end with a hyphen; the T… | #### Quickstart Check whether a domain is available by sending the domain name in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/domain-availability-api" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"domain":"example.com"}' ``` #### What you'll get back Returns a JSON object with a `data` boolean field — `true` means the domain is available, `false` means it’s taken, and `null` means the API could not determine the result. ```json { "data": true } ``` ## About ## What it does Domain Availability checks whether a domain name is available, taken, or indeterminate. Send a `domain` string such as `example.com`, and it returns a single `data` value: `true`, `false`, or `null`. Use it when you need to validate a candidate domain during signup, domain search, registrar workflows, or product naming tools. The input must be a valid domain format with a lowercase name part made of letters, digits, and hyphens, and a TLD of at least two letters. The service normalises the domain to lowercase before checking it. The response is intentionally compact so you can wire it straight into automation or UI logic. `true` means the domain appears available, `false` means it is already taken, and `null` means the check could not determine a result. If you are building a domain picker, registration flow, or SEO tool, this endpoint gives you a simple availability signal without extra metadata to parse. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/domain-availability-api * * * --- title: Broken Link Checker API slug: broken-link-checker-api url: https://apyhub.com/apyhub/service/broken-link-checker-api provider: ApyHub categories: [Developer Tools, SEO] tags: [broken-links, link-checker, seo, website-audit, dead-links] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 50 --- # Broken Link Checker API Scan any webpage URL for broken links. Returns link statuses, redirect chains, response times, and a summary count for site audits and QA. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/broken-link-checker-api` | What it does Checks all links found on a webpage identified by its URL and returns a JSON object wi… | 50 | ## Endpoint reference ### Check all links on a webpage `POST https://api.eu.apyhub.com/apyhub/broken-link-checker-api` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | HTTP/HTTPS URL of the page whose links should be checked Example: `https://example.com`. | #### Quickstart Check a single page for broken links by sending its URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/broken-link-checker-api" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://example.com"}' ``` #### What you'll get back Returns a JSON object with a `data` object containing `summary`, `details`, and `meta`. - `data.summary` is an object with `totalLinks`, `ok`, `broken`, `redirects`, `slowLinks`, and `errors` counts. - `data.details` is an array of link-check result objects. - `data.meta` is an object with `sourceUrl`, `linksChecked`, and `limitApplied`. ```json { "data": { "summary": { "totalLinks": 0, "ok": 0, "broken": 0, "redirects": 0, "slowLinks": 0, "errors": 0 }, "details": [], "meta": { "sourceUrl": "https://example.com", "linksChecked": 0, "limitApplied": false } } } ``` ## About ## What it does Broken Link Checker scans a webpage and returns the status of the links it finds. Send a page URL, and you get a breakdown of which links are ok, broken, redirected, slow, or failed with errors. Use it when you need to audit a page before publishing, monitor content quality on a site, or catch dead internal and external links in documentation, marketing pages, or help centers. The request body only needs the page `url`. The response includes a `summary` with `totalLinks`, `ok`, `broken`, `redirects`, `slowLinks`, and `errors`. It also returns `details` for each checked link, including the link `url`, `type` (`internal` or `external`), `status`, `finalUrl` when a redirect occurs, `statusCode`, `responseTime`, `redirectChain`, `slow`, and `error` when present. The `meta` object shows the `sourceUrl`, how many links were `linksChecked`, and whether `limitApplied` was set when the page had more than 200 links and the list was capped. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/broken-link-checker-api * * * --- title: AI-Generated Image Detection API slug: detect-ai-generated-image url: https://apyhub.com/anyimagedetector/service/detect-ai-generated-image provider: AnyImageDetector categories: [Artificial Intelligence, Image Processing] tags: [ai-image-detection, image-classification, synthetic-media, content-moderation, computer-vision] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 1000 --- # AI-Generated Image Detection API Classify a public JPG, PNG, or WebP URL as likely AI-generated, human-made, or uncertain. Returns ai_score, confidence, and a source breakdown. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/anyimagedetector/detect-ai-generated-image` | What it does Detects whether a publicly reachable image is likely AI-generated. You send an image U… | 1000 | ## Endpoint reference ### Detect whether an image is likely AI-generated `POST https://api.eu.apyhub.com/anyimagedetector/detect-ai-generated-image` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `imageUrl` | body | string (uri) | yes | Publicly reachable JPG, PNG, or WebP URL. Example: `https://imagedetector.online/imgs/generated/sample-portrait-384.webp`. | #### Quickstart Check whether an image URL looks AI-generated by sending the required `imageUrl`. ```bash curl -X POST "https://api.eu.apyhub.com/anyimagedetector/detect-ai-generated-image" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"imageUrl":"https://images.unsplash.com/photo-1503023345310-bd7c1de61c7d"}' ``` #### What you'll get back Returns a JSON object with four top-level fields: `verdict` (string) indicating the detector's conclusion, `ai_score` (number) as the AI-likeness score from 0 to 1, `confidence` (string) for the confidence level, and `source_breakdown` (array) reserved for per-generator scores and currently empty. ```json { "verdict": "likely_ai", "ai_score": 0.87, "confidence": "high", "source_breakdown": [] } ``` ## About ## What it does AI Image Detection checks whether a publicly reachable JPG, PNG, or WebP image is likely AI-generated. Send an `imageUrl` and get back a verdict you can use to flag synthetic images in uploads, moderation flows, or content review pipelines. The response includes a numeric `ai_score` from 0 to 1, a `confidence` level of `low`, `medium`, or `high`, and a `verdict` of `likely_ai`, `likely_human`, or `uncertain`. It also returns `source_breakdown`, which is currently an empty array and reserved for future per-generator scores. Use AI Image Detection when you need a fast first pass on user-submitted imagery, marketplace listings, social posts, or verification flows where synthetic content should be reviewed differently from camera-captured images. The API is narrow by design: one image URL in, one classification result out. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/anyimagedetector/service/detect-ai-generated-image * * * --- title: Convert Timezone and Meeting Planner API slug: timezone-conversion url: https://apyhub.com/creightonnick0/service/timezone-conversion provider: nick creighton categories: [Geolocation, Standard Data] tags: [timezone-conversion, dst, iana-timezone, meeting-planner, time-zones] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Convert Timezone and Meeting Planner API Convert local datetimes across IANA time zones with DST-aware offsets, or plan meetings across zones. Returns source, UTC, and target times. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/creightonnick0/timezone-conversion` | What it does Converts or plans time across time zones using DST-aware timezone data. The request bo… | 10 | ## Endpoint reference ### DST-correct timezone conversion + multi-zone meeting planner. `POST https://api.eu.apyhub.com/creightonnick0/timezone-conversion` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | body | string | no | convert \| meeting \| now Example: `convert`. | | `to_tz` | body | string | no | Target IANA zone(s), comma-separated (convert mode) Example: `Europe/London,Asia/Tokyo`. | | `zones` | body | string | no | Comma-separated IANA zones (meeting / now modes) Example: `America/New_York,Europe/London,Asia/Tokyo`. | | `from_tz` | body | string | no | Source IANA timezone (convert mode) Example: `America/New_York`. | | `work_end` | body | integer | no | Working-day end hour, 1-24 (meeting mode, default 17) Example: `17`. | | `now_epoch` | body | integer | no | now/meeting modes: unix seconds to pin the reference instant (default: the actual current time) Example: `1786000000`. | | `work_start` | body | integer | no | Working-day start hour, 0-23 (meeting mode, default 9) Example: `9`. | | `datetime_str` | body | string | no | The local datetime, ISO 8601 (convert mode) Example: `2026-07-15T14:00:00`. | #### Quickstart Convert one local date/time from a source timezone into UTC and the requested target timezones. ```bash curl -X POST "https://api.eu.apyhub.com/creightonnick0/timezone-conversion" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "mode": "convert", "from_tz": "America/New_York", "to_tz": "Europe/London,Asia/Tokyo", "datetime_str": "2026-07-15T14:00:00" }' ``` #### What you'll get back Returns a JSON object with `utc`, `source`, and `targets` objects, plus a `mode` string. Each timezone object includes fields like `date`, `time`, `datetime`, `utc_offset`, and `tz_abbreviation`, describing the converted instant. ```json { "utc": { "date": "2026-07-15", "time": "18:00:00", "is_dst": true, "weekday": "Wednesday", "datetime": "2026-07-15T18:00:00Z", "utc_offset": "+00:00", "tz_abbreviation": "UTC", "utc_offset_minutes": 0 }, "mode": "convert", "source": { "tz": "America/New_York", "date": "2026-07-15", "time": "14:00:00", "is_dst": true }, "targets": { "Europe/London": { "date": "2026-07-15", "time": "19:00:00" }, "Asia/Tokyo": { "date": "2026-07-16", "time": "03:00:00" } } } ``` ## About ## What it does Timezone Converter turns a local datetime into one or more target time zones, with DST-aware offsets and abbreviations. It also supports meeting planning across multiple IANA zones and a current-time lookup for a pinned instant. Send `mode` with `convert`, `meeting`, or `now`. In `convert` mode, provide `from_tz`, `to_tz`, and `datetime_str` to translate a local ISO 8601 datetime from one IANA timezone into target zones. In `meeting` and `now` modes, pass `zones`; optionally pin the reference instant with `now_epoch`, and set `work_start` and `work_end` for meeting planning. The response includes structured timezone results for the source, UTC, and each requested target zone. For each zone, you get `date`, `time`, `datetime`, `weekday`, `is_dst`, `utc_offset`, `utc_offset_minutes`, and `tz_abbreviation`. That makes it useful when you need to show local times in scheduling tools, coordinate distributed teams, or convert appointment times without hard-coding offset logic. Use Timezone Converter when your app stores times in one region but displays them in another, or when you need to compare working hours across offices in different time zones. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/creightonnick0/service/timezone-conversion * * * --- title: Pixelize Face API slug: pixelize url: https://apyhub.com/apyhub/service/pixelize provider: ApyHub categories: [Image Processing, "Security & Privacy", Smart Generation] tags: [face-blur, anonymisation, image-redaction, privacy, image-processing] auth: api_key version: 1.0 service_type: sync endpoints: 4 atoms: 50 --- # Pixelize Face API Face pixelation API: send an image file or URL, get back a copy with each face pixelated, or a message when no faces are found. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/pixelize/file/url` | What it does Uploads an image file for processing and returns either a presigned S3 URL for the pix… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/pixelize/url/download` | What it does Downloads a pixelized version of an image from a publicly accessible URL. You send the… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/pixelize/url` | What it does Takes a publicly accessible image URL and processes the image for pixelization. On suc… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/pixelize/file` | What it does Uploads an image file for pixelization processing. The success response is a JSON obje… | 50 | ## Endpoint reference ### Upload image file → S3 presigned URL `POST https://api.eu.apyhub.com/apyhub/pixelize/file/url` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Image file to process. Supported formats: JPEG, PNG, GIF. | #### Quickstart Upload an image file to pixelize it. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/pixelize/file/url" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" ``` #### What you'll get back Returns a JSON object with either a `url` string field containing the pixelized image URL, or a `message` string field with a status/error message. ```json { "url": "https://apyhub-outgoing.s3.amazonaws.com/pixelize/c60cd4f195514f4897eab87839ac48e4_pixelized_20260720_210917%20%281%29.jpg?AWSAccessKeyId=AKIARJOHWS6LWTUUGYPI&Signature=CkLp1vNYME0lrUMSMWVllE06E9w%3D&Expires=1786375119" } ``` ### Image URL → pixelized image download `POST https://api.eu.apyhub.com/apyhub/pixelize/url/download` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image_url` | body | string (uri) | yes | Publicly accessible image URL. Supported formats: JPEG, PNG, GIF. Example: `https://assets.apyhub.com/samples/sample.jpg`. | #### Quickstart Download an image from a public URL and process it with Pixelize. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/pixelize/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"image_url":"https://assets.apyhub.com/samples/sample.jpg"}' ``` #### What you'll get back Returns a JSON object with an optional `message` string field describing the result. ```json { "message": "No faces detected in the provided image." } ``` ### Image URL → S3 presigned URL `POST https://api.eu.apyhub.com/apyhub/pixelize/url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image_url` | body | string (uri) | yes | Publicly accessible image URL. Supported formats: JPEG, PNG, GIF. Example: `https://assets.apyhub.com/samples/sample.jpg`. | #### Quickstart Send a public image URL to pixelize it. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/pixelize/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"image_url":"https://assets.apyhub.com/samples/sample.jpg"}' ``` #### What you'll get back Returns a JSON object with either a `url` string for the pixelized image, or a `message` string if the image could not be processed. ```json { "url": "https://s3.amazonaws.com/bucket/pixelized_photo.jpg" } ``` Or: ```json { "message": "No faces detected in the provided image." } ``` ### Upload image file → pixelized image download `POST https://api.eu.apyhub.com/apyhub/pixelize/file` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Image file to process. Supported formats: JPEG, PNG, GIF. | #### Quickstart Upload an image file to pixelize it. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/pixelize/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.png" ``` #### What you'll get back Returns a JSON object with a `message` string field describing the result. ```json { "message": "No faces detected in the provided image." } ``` ## About ## What it does The Face Pixelation API finds the faces in a photo and returns a copy with each face pixelated. Send a JPEG, PNG, or GIF as a `file` upload (up to 100 MB) or as a public `image_url`, and get back a presigned `url` to the processed image. The link stays valid for one hour, so download or store the image if you need it longer. When the image has no faces, the response returns a `message` such as `No faces detected in the provided image.` instead of a `url`. Check which field is present and your code knows whether anything was redacted. Detection and pixelation run in one call, with no settings to tune. Use the face pixelation API to pixelate faces in user-submitted photos before they go public, redact bystanders in street, event, or real estate images, anonymize faces in support screenshots and datasets, or apply a privacy step during content moderation. It works as a face anonymization step for any pipeline that publishes images of people. To check images for explicit content in the same flow, add the [Explicit Image Detection API](https://apyhub.com/apyhub/service/detect-explicit-or-sensitive-content). If you need face positions without changing the image, use the [Face Detection API](https://apyhub.com/apyhub/service/detect-human-faces). To blur faces or cover them with black boxes instead, the [Face Blur API](https://apyhub.com/dosvak/service/blur-faces) offers those modes. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/pixelize * * * --- title: Language Dictionary API slug: language-list url: https://apyhub.com/apyhub/service/language-list provider: ApyHub categories: [Developer Tools, Standard Data] tags: [language, dictionary, iso-639, language-codes, reference-data] auth: api_key version: 1.0 service_type: sync endpoints: 1 atoms: 5 --- # Language Dictionary API Get every ISO 639-1 language as JSON with its two-letter code, English name and native name, like de, German, Deutsch. Built for language pickers. Free tier. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/apyhub/language-list` | What it does Returns a JSON object containing a data array of ISO 639-1 languages. Each array item… | 5 | ## Endpoint reference ### List all ISO 639-1 languages `GET https://api.eu.apyhub.com/apyhub/language-list` · 5 atoms · accepts `application/json` #### Quickstart Fetch the list of languages with a simple GET request. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/language-list" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` array field. Each item in `data` is an object with `key` (ISO 639-1 two-letter code), `value` (language name in English), and `native` (language name in the language itself). ```json { "data": [ { "key": "de", "value": "German", "native": "Deutsch" } ] } ``` ## About ## What it does The Language Dictionary API gives you the full list of ISO 639-1 languages as JSON. One request returns every language with its two-letter code, its English name and its native name, so you can build language pickers and translate language codes into readable names without maintaining your own list. It is a single GET request with no parameters. The response is a `data` array with one object per language: `key` holds the ISO 639-1 code, `value` the name in English and `native` the name in the language itself. For German that is `de`, `German` and `Deutsch`. The native name is what makes a language picker work for everyone. A Greek speaker looks for `Ελληνικά`, not `Greek`, and a Japanese speaker for `日本語`. Showing both names lets users find their language whatever language your interface is in. Common uses include language selectors in apps, sign-up forms and user profiles, showing a readable name for language codes stored in your database, validating language codes sent to your API, and labelling content, subtitles and translations by language. Because it is a small reference list, you can fetch it once and cache it in your app. To find out which language a piece of text is written in, use the [Language Detection API](https://apyhub.com/apyhub/service/detect-language), which returns the same ISO 639-1 codes. To see every likely language with a probability, use the [Detect Text Language Probabilities API](https://apyhub.com/dosvak/service/detect-text-language). For country names and codes to go with your language list, use the [Countries Dictionary API](https://apyhub.com/apyhub/service/list-all-countries), and for currencies, the [Currencies Dictionary API](https://apyhub.com/apyhub/service/list-all-currencies). You can try it right here in the playground. Start for free with 5 API calls a day, no card required, and see the full list before you commit. The API is also available through [ApyHub MCP](https://apyhub.com/mcp), so AI agents can look up language codes and names directly instead of relying on memory. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/language-list * * * --- title: Public Holidays API slug: public-holidays url: https://apyhub.com/apyhub/service/public-holidays provider: ApyHub categories: [HR, Standard Data, Travel] tags: [public-holidays, holiday-calendar, country-data, business-days, reference-data] auth: api_key version: 1.0 service_type: sync endpoints: 2 atoms: 10 --- # Public Holidays API Get the public holidays for a country and year as clean JSON with dates and names. Built for business-day math, scheduling, payroll and leave calendars. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/apyhub/public-holidays/holidays` | What it does Returns the public holidays for a specified country, optionally filtered by year. Quer… | 10 | | GET | `https://api.eu.apyhub.com/apyhub/public-holidays` | What it does Returns a JSON object containing a data array of strings listing the countries support… | 10 | ## Endpoint reference ### List public holidays for a country and year `GET https://api.eu.apyhub.com/apyhub/public-holidays/holidays` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `year` | query | integer | no | Example: `2025`. | | `country` | query | string | yes | Example: `DE`. | #### Quickstart Fetch public holidays for a country, optionally filtered by year. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/public-holidays/holidays?country=DE&year=2025" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` array. Each item in the array is an object with `date` and `name` fields for a holiday. ```json { "data": [ { "date": "2025-01-01", "name": "Neujahrstag" } ] } ``` ### List countries supported by the holidays endpoint `GET https://api.eu.apyhub.com/apyhub/public-holidays` · 10 atoms · accepts `application/json` #### Quickstart Fetch the list of public holidays for the selected country. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/public-holidays" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` array of strings, where each string is a public holiday entry. ```json { "data": ["New Year's Day", "Independence Day", "Christmas Day"] } ``` ## About ## What it does The Public Holidays API returns the official public holidays for a country and year. Send a country code, add a year if you need one, and get back every holiday as a date and a name in clean JSON, ready to drop into your scheduling or calendar logic. There are two endpoints. The `/holidays` endpoint takes a required `country` code, such as `DE`, and an optional `year`, and returns a `data` array where each holiday has a `date` in `YYYY-MM-DD` format and a `name`. Holiday names come in the country's primary language, so Germany's New Year's Day is returned as `Neujahrstag`. The second endpoint lists every supported country, so you can build a country selector or check a code before you look it up. Common uses include skipping public holidays when calculating delivery dates, SLAs and payment deadlines, blocking out non-working days in booking and scheduling tools, pre-filling leave and payroll calendars for teams in different countries, and showing region-aware holiday calendars in your product. Pulling the dates from an API keeps them current, so you are not maintaining a hard-coded list of bank holidays every year. If you need to count the working days between two dates, use the [Working Day Calculator](https://apyhub.com/apyhub/service/count-working-days) or the [Business Days Calculator](https://apyhub.com/creightonnick0/service/business-day-math). For time zone data to go with your country calendars, use the [Timezones Dictionary](https://apyhub.com/apyhub/service/list-timezones). You can try it right here in the playground. Start for free with 5 API calls a day, no card required, and look up the holidays for your own countries before you commit. The API is also available through [ApyHub MCP](https://apyhub.com/mcp), so AI agents can check public holidays directly when they plan or schedule work. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/public-holidays * * * --- title: Basic OG Image Generator API slug: generate-og-image url: https://apyhub.com/apyhub/service/generate-og-image provider: ApyHub categories: [Marketing, Smart Generation] tags: [open-graph, image-generation, social-preview, og-image, branding] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 50 --- # Basic OG Image Generator API Generate Open Graph PNGs from JSON with title, subtitle, description, and brand colours. Returns a file or signed URL for social preview cards. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/generate-og-image/download` | What it does Generates an Open Graph image and returns it as a PNG download. You provide the card c… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/generate-og-image/link` | What it does Generates an Open Graph image from the request body fields and returns a JSON object c… | 50 | ## Endpoint reference ### Generate Open Graph image (download PNG) `POST https://api.eu.apyhub.com/apyhub/generate-og-image/download` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `title` | body | string | yes | Primary headline drawn on the card. Example: `mono-go API`. | | `bgColor` | body | string | no | Background color as #RRGGBB (default #111827). Example: `#111827`. | | `subtitle` | body | string | no | Optional secondary line drawn in the accent color. Example: `Open Graph preview`. | | `textColor` | body | string | no | Title text color as #RRGGBB (default #F9FAFB). Example: `#F9FAFB`. | | `accentColor` | body | string | no | Accent bar and subtitle color as #RRGGBB (default #3B82F6). Example: `#3B82F6`. | | `description` | body | string | no | Optional body text, word-wrapped (~55 chars/line). Example: `Generate social preview cards from JSON.`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Generate an Open Graph image from a title and download the resulting file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-og-image/download?output=file" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "title": "mono-go API" }' \ -o open-graph-image.png ``` #### What you'll get back Returns the generated Open Graph image as a binary file response. The example above saves the downloaded file locally as `open-graph-image.png`. ### Generate Open Graph image (signed URL) `POST https://api.eu.apyhub.com/apyhub/generate-og-image/link` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `title` | body | string | yes | Primary headline drawn on the card. Example: `mono-go API`. | | `bgColor` | body | string | no | Background color as #RRGGBB (default #111827). Example: `#111827`. | | `subtitle` | body | string | no | Optional secondary line drawn in the accent color. Example: `Open Graph preview`. | | `textColor` | body | string | no | Title text color as #RRGGBB (default #F9FAFB). Example: `#F9FAFB`. | | `accentColor` | body | string | no | Accent bar and subtitle color as #RRGGBB (default #3B82F6). Example: `#3B82F6`. | | `description` | body | string | no | Optional body text, word-wrapped (~55 chars/line). Example: `Generate social preview cards from JSON.`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Generate an Open Graph image URL from a title. ```bash id="r8v5kd" curl -X POST "https://api.eu.apyhub.com/apyhub/generate-og-image/link?output=url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "title": "mono-go API" }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the pre-signed PNG URL. ```json id="4h2mqp" { "data": "https://apyhub-outgoing.s3.eu-west-1.amazonaws.com/mono-go/og_image_generator/general/og_image_generator_2026-08-10_d6b8f2ee.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIARJOHWS6LWTUUGYPI%2F20260810%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20260810T140607Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&response-content-disposition=inline&response-content-type=image%2Fpng&X-Amz-Signature=01dec36a7fb4b0184e2310ba2002fd68eb9757676919e405df845599b3806af6" } ``` ## About ## What it does Open Graph Image Generator creates social preview images from JSON. Send a required `title`, and optionally add `subtitle`, `description`, `bgColor`, `textColor`, and `accentColor` to control the layout and branding of the card. Use `/download` when you want the PNG file itself. Use `/link` when you want a signed URL to the uploaded image. Both endpoints generate the same Open Graph-style image, so you can choose the response shape that fits your publishing flow. The `title` becomes the primary headline on the card. `subtitle` and `description` let you add supporting copy, while the color fields accept `#RRGGBB` values so you can match your brand palette. If you are generating share images for blog posts, product launches, docs pages, or invite links, this gives you a direct way to produce consistent preview assets from backend code. Open Graph Image Generator is a good fit for CMS pipelines, social sharing workflows, and any app that needs predictable preview images without a manual design step. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/generate-og-image * * * --- title: Convert MP3 to AAC API slug: convert-mp3-to-aac url: https://apyhub.com/apyhub/service/convert-mp3-to-aac provider: ApyHub categories: [Audio Processing, File Conversion, File Manipulation] tags: [mp3-to-aac, audio-conversion, aac, media-transcoding, audio-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 100 --- # Convert MP3 to AAC API Convert MP3 files or public MP3 URLs to AAC. Returns a binary file or a signed download URI for media pipelines and streaming workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-mp3-to-aac/multi-part/link` | What it does Converts an uploaded MP3 audio file to AAC and returns a signed URL to the generated A… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-mp3-to-aac/url/download` | What it does Converts an MP3 file available at a public URL into AAC and returns the converted file… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-mp3-to-aac/url/link` | What it does Converts an MP3 file available at a public URL into AAC and returns the converted file… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-mp3-to-aac/multi-part/download` | What it does Converts an uploaded MP3 audio file to AAC and returns the converted file as a binary… | 100 | ## Endpoint reference ### MP3 to AAC (multipart, signed URL) `POST https://api.eu.apyhub.com/apyhub/convert-mp3-to-aac/multi-part/link` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | MP3 audio file (max 100 MB). Magic-byte validated. | | `output` | query | string | no | Example: `my-song`. | #### Quickstart Upload an MP3 file to convert it to AAC. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-mp3-to-aac/multi-part/link" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.mp3" ``` #### What you'll get back Returns a JSON object with a `data` string field containing the URI of the generated AAC file. ```json { "data": "https://apyhub-outgoing.s3.eu-west-1.amazonaws.com/mono-go/audio-converter/general/audio_2026-08-10_32d890eb.aac?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIARJOHWS6LWTUUGYPI%2F20260810%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20260810T135114Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&response-content-disposition=inline&response-content-type=audio%2Faac&X-Amz-Signature=83d98ecc19bc61f20d3d4a19ef48abe0d3d3e9568c5126bc61da362e528bbbe1" } ``` ### MP3 to AAC (URL, download) `POST https://api.eu.apyhub.com/apyhub/convert-mp3-to-aac/url/download` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL of the source MP3 file. Example: `https://assets.apyhub.com/samples/sample.mp3`. | | `output` | query | string | no | Example: `my-song`. | #### Quickstart Convert an MP3 from a public URL into AAC and download the resulting file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-mp3-to-aac/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.mp3"}' ``` #### What you'll get back Returns a binary file response (`string` with `format: binary`), which is the converted AAC audio content. ### MP3 to AAC (URL, signed URL) `POST https://api.eu.apyhub.com/apyhub/convert-mp3-to-aac/url/link` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL of the source MP3 file. Example: `https://assets.apyhub.com/samples/sample.mp3`. | | `output` | query | string | no | Example: `my-song`. | #### Quickstart Convert a public MP3 file to AAC by sending its URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-mp3-to-aac/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.mp3" }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the URI of the generated AAC file. ```json { "data": "https://apyhub-outgoing.s3.eu-west-1.amazonaws.com/mono-go/audio-converter/general/audio_2026-08-10_f830e1c4.aac?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIARJOHWS6LWTUUGYPI%2F20260810%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20260810T135239Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&response-content-disposition=inline&response-content-type=audio%2Faac&X-Amz-Signature=72b82ec52f7618f91b518b7ab9a9d35f2f87fcb0fe95cdde7c0801e8ba325c5a" } ``` ### MP3 to AAC (multipart, download) `POST https://api.eu.apyhub.com/apyhub/convert-mp3-to-aac/multi-part/download` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | MP3 audio file (max 100 MB). Magic-byte validated. | | `output` | query | string | no | Example: `my-song`. | #### Quickstart Upload an MP3 file to convert it to AAC; this example names the output `my-song`. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-mp3-to-aac/multi-part/download?output=my-song" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/song.mp3" ``` #### What you'll get back Returns a binary file response containing the converted AAC audio. ## About ## What it does MP3 to AAC Converter turns an MP3 file or a public MP3 URL into an AAC audio file. Send either a binary MP3 upload or a publicly accessible `url`, and you get the converted audio back as a downloadable file or a signed `data` URI, depending on the endpoint you use. The service exposes four conversion paths: multipart upload with signed URL output, multipart upload with binary download output, URL input with signed URL output, and URL input with binary download output. In all multipart variants, you can also pass an `output` query value to name the result. Uploaded files are limited to 100 MB and are magic-byte validated. Use MP3 to AAC Converter when you need a consistent AAC asset for playback workflows, storage optimisation, or downstream media pipelines that require AAC instead of MP3. It fits nicely into media ingestion, asset normalisation, and user-upload processing flows where the source file may come from your app or an externally hosted MP3. The response is intentionally simple: either a binary AAC file or a JSON object with a `data` field containing the output URI. That makes it easy to hand the converted file to your storage layer, CDN, or media processing job without extra parsing. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-mp3-to-aac * * * --- title: Phonetic Text Search API slug: phonetic-match url: https://apyhub.com/apyhub/service/phonetic-match provider: ApyHub categories: [Data Validation, Developer Tools] tags: [phonetic-matching, fuzzy-search, soundex, metaphone, deduplication] auth: api_key version: 1.0 service_type: sync endpoints: 1 atoms: 25 --- # Phonetic Text Search API Compare a source word against candidates using Metaphone or Soundex. Returns matching words with shared phonetic codes for deduping and search. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/phonetic-match` | What it does Matches a source word against a list of candidate words using a phonetic algorithm. It… | 25 | ## Endpoint reference ### Phonetic matching `POST https://api.eu.apyhub.com/apyhub/phonetic-match` · 25 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `source` | body | string | yes | The reference word to match against. Example: `smith`. | | `algorithm` | body | string | no | metaphone (default) uses Double Metaphone primary code. soundex uses the standard Soundex algorithm. One of: metaphone, soundex. Default: `metaphone`. | | `candidates` | body | array of string | yes | Example: `["smyth","smithe","jones","schmidt"]`. | #### Quickstart Match a source word against a list of candidate spellings using the default phonetic algorithm. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/phonetic-match" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"source":"smith","candidates":["smyth","smithe","jones","schmidt"]}' ``` #### What you'll get back Returns a JSON object with a `data` array. Each item in the array is an object with `code` and `match` fields, where `code` is the phonetic code shared by the source word and the matching candidate. ```json { "data": [ { "code": "SM0", "match": "smyth" }, { "code": "SM0", "match": "smithe" } ] } ``` ## About ## What it does Phonetic Matching compares a reference word against a list of candidate strings and returns the ones that sound alike. Send a `source`, a `candidates` array, and optionally choose `algorithm` as `metaphone` or `soundex`. Use `metaphone` for Double Metaphone primary-code matching, or `soundex` for the standard Soundex algorithm. The response returns a `data` array of matches, with each item including the shared phonetic `code` and the matching `match` string. This is useful when exact spelling is unreliable: deduplicating names, finding likely alternatives in search, or normalizing user-entered records where typos and transliterations are common. If you need to compare a single word against a curated candidate list and keep only the phonetically similar results, Phonetic Matching gives you a compact output you can filter directly. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/phonetic-match * * * --- title: Best Match Text Search API slug: best-match-text-search url: https://apyhub.com/apyhub/service/best-match-text-search provider: ApyHub categories: [Developer Tools] tags: [fuzzy-matching, string-similarity, levenshtein, text-search, autocomplete] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 25 --- # Best Match Text Search API Rank candidate strings against a source string using Levenshtein distance. Built for typo correction, deduplication, and closest-match lookup. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/best-match-text-search` | What it does Ranks the provided candidate strings against a source string and returns the matches o… | 25 | ## Endpoint reference ### Best-match against candidates `POST https://api.eu.apyhub.com/apyhub/best-match-text-search` · 25 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | body | integer | no | Max results to return. 0 means all. Default: `0`. Example: `3`. | | `source` | body | string | yes | The reference string to match against. Example: `apple`. | | `candidates` | body | array of string | yes | Candidate strings to rank. Example: `["ape","applet","banana","apply"]`. | #### Quickstart Rank a list of candidate strings by how closely they match a source string. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/best-match-text-search" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "source": "apple", "candidates": ["ape", "applet", "banana", "apply"] }' ``` #### What you'll get back Returns a JSON object with a `data` array. Each item in `data` is an object with `match` as a string and `distance` as an integer, where `distance` is the Levenshtein distance from the source. ```json { "data": [ { "match": "applet", "distance": 1 }, { "match": "apply", "distance": 2 }, { "match": "ape", "distance": 2 } ] } ``` ## About ## What it does Text Match Ranking compares a source string against a list of candidate strings and returns them ordered by Levenshtein distance. Send a `source`, a `candidates` array, and an optional `limit`; get back a `data` array of matches with their `distance` values. Use it when you need to find the closest spelling, product name, or user-entered value without building your own fuzzy matching logic. The response is straightforward: each item includes the matched string and its edit distance from the source, so you can rank, filter, or display the best options in your app. Because the service works on plain strings, it fits deduplication workflows, search suggestions, typo correction, and lightweight record linking. If you are normalizing incoming text or comparing one value against a short candidate list, Text Match Ranking gives you the nearest matches in a format that is easy to sort and consume. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/best-match-text-search * * * --- title: Advanced Schedule Cron API slug: cron-next-run-calculator url: https://apyhub.com/creightonnick0/service/cron-next-run-calculator provider: nick creighton categories: [Developer Tools, Standard Data] tags: [cron, schedule-calculation, job-scheduling, time-utils, developer-tools] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Advanced Schedule Cron API Compute upcoming fire times for a 5-field cron expression. Returns next_runs, a count, the timezone, and the reference time used, all in UTC. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/creightonnick0/cron-next-run-calculator` | What it does Computes the next N UTC fire times for a cron expression. You provide a 5-field cron e… | 10 | ## Endpoint reference ### Compute the next N fire times of a cron expression (UTC). `POST https://api.eu.apyhub.com/creightonnick0/cron-next-run-calculator` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `count` | body | integer | no | How many upcoming run times to return (1-50, default 5) Example: `5`. | | `from_time` | body | integer | no | Unix seconds to compute from (defaults to a fixed reference) Example: `1700000000`. | | `expression` | body | string | yes | A 5-field cron expression (min hour dom month dow) Example: `0 9 * * 1-5`. | #### Quickstart Calculate the next cron run times from a cron expression. ```bash curl -X POST "https://api.eu.apyhub.com/creightonnick0/cron-next-run-calculator" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"expression":"0 9 * * 1-5"}' ``` #### What you'll get back Returns a JSON object with these top-level fields: `from` (string), `note` (string), `count` (integer), `timezone` (string), `next_runs` (array of strings), and `expression` (string). ```json { "from": "2023-11-14T22:13:20Z", "note": "Next scheduled run times", "count": 5, "timezone": "UTC", "next_runs": [ "2023-11-15T09:00:00Z", "2023-11-16T09:00:00Z" ], "expression": "0 9 * * 1-5" } ``` ## About ## What it does Cron Schedule Calculator computes the next fire times for a 5-field cron expression in UTC. Send an `expression`, and optionally a `count` and `from_time`, then get back upcoming run timestamps you can use for schedulers, job queues, and previewing recurring tasks. Use it when you need to confirm that a cron string does what you expect before shipping it into production. `count` controls how many upcoming runs you want returned, up to 50, and `from_time` lets you calculate from a specific Unix second instead of the default reference point. The response includes the original `expression`, the `count` used, the `timezone`, a `from` value, an optional `note`, and a `next_runs` array. That makes it straightforward to show upcoming executions in admin tools, validate user-entered schedules, or debug why a task is firing at a certain time. If your application accepts cron syntax from users or stores scheduled jobs internally, Cron Schedule Calculator gives you a simple way to turn that expression into concrete upcoming run times without guessing how the schedule will resolve. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/creightonnick0/service/cron-next-run-calculator * * * --- title: Validate Or Generate Barcode Check Digits API slug: validate-barcode-check-digits url: https://apyhub.com/creightonnick0/service/validate-barcode-check-digits provider: nick creighton categories: [Data Validation, Developer Tools, E-commerce Quick Tools] tags: [barcode-validation, check-digit, ean, upc, isbn, product-codes] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Validate Or Generate Barcode Check Digits API Validate or generate barcode check digits for EAN, UPC, and ISBN values. Returns validity and check-digit fields for product data accuracy. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/creightonnick0/validate-barcode-check-digits` | What it does Validates a barcode's check digit, or computes the check digit for a barcode body, for… | 10 | ## Endpoint reference ### Validate or generate barcode check digits (EAN/UPC/ISBN). `POST https://api.eu.apyhub.com/creightonnick0/validate-barcode-check-digits` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | body | string | no | Operation to perform on the barcode. One of: validate, generate, check_digit. Example: `validate`. | | `barcode` | body | string | yes | The barcode (full, for validate; body without check digit, for generate) Example: `4006381333931`. | #### Quickstart Validate a barcode check digit by sending the full barcode you want to check. ```bash curl -X POST "https://api.eu.apyhub.com/creightonnick0/validate-barcode-check-digits" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"barcode":"4006381333931"}' ``` #### What you'll get back ```json { "valid": true, "format": "EAN-13", "length": 13, "barcode": "4006381333931", "check_digit": 1, "expected_check_digit": 1 } ``` #### Generate a check digit (and the finished barcode) Send the barcode body without its check digit, and set `mode` to `generate`: ```bash curl -X POST "https://api.eu.apyhub.com/creightonnick0/validate-barcode-check-digits" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"barcode":"400638133393","mode":"generate"}' ``` ```json { "mode": "generate", "format": "EAN-13", "body": "400638133393", "check_digit": 1, "barcode": "4006381333931" } ``` #### Get just the check digit Same body, with `mode` set to `check_digit` — this skips assembling the full barcode and returns only the computed digit: ```bash curl -X POST "https://api.eu.apyhub.com/creightonnick0/validate-barcode-check-digits" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"barcode":"400638133393","mode":"check_digit"}' ``` ```json { "mode": "check_digit", "format": "EAN-13", "body": "400638133393", "check_digit": 1 } ``` ## About ## What it does Barcode Check Digit Validator checks or generates barcode check digits for EAN, UPC, and ISBN values. Send a `barcode` string, and use `mode` to validate a full code, generate a check digit for the body, or calculate the check digit directly. The response tells you whether the barcode is `valid` and may include the detected `format`, `length`, the normalized `barcode`, and check-digit fields such as `check_digit` and `expected_check_digit`. That makes it useful when you need to catch mistyped product codes, verify imported catalog data, or finish building a barcode before storing or printing it. Use it in inventory systems, product feeds, checkout flows, or admin tools where barcode accuracy matters. It gives you a small, focused validation step without having to implement barcode math in your own service. If you already have a full code, validate it. If you only have the body, generate the check digit and compare the result before moving the record downstream. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/creightonnick0/service/validate-barcode-check-digits * * * --- title: Validate Payment Card API slug: validate-card-number url: https://apyhub.com/creightonnick0/service/validate-card-number provider: nick creighton categories: [Data Validation, Finance, "Security & Privacy"] tags: [card-validation, luhn-check, payment-cards, network-detection, masking] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Validate Payment Card API Validate card numbers with Luhn and length checks, identify the network, and return masked or formatted values for safe handling. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/creightonnick0/validate-card-number` | What it does Validates a card number using the Luhn algorithm, detects the card network, and return… | 10 | ## Endpoint reference ### Validate a card number - Luhn + network detection + masking. `POST https://api.eu.apyhub.com/creightonnick0/validate-card-number` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `card_number` | body | string | yes | The card number (spaces and dashes are ignored) Example: `4242 4242 4242 4242`. | #### Quickstart Validate a card number by sending it in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/creightonnick0/validate-card-number" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"card_number":"4242 4242 4242 4242"}' ``` #### What you'll get back Returns a JSON object with these top-level fields, when available: `iin` (string), `note` (string), `last4` (string), `valid` (boolean), `length` (integer), `masked` (string), `network` (string), `formatted` (string), `luhn_valid` (boolean), and `length_valid` (boolean). ```json { "iin": "424242", "note": "Valid card number", "last4": "4242", "valid": true, "length": 16, "masked": "4242 42XX XXXX 4242", "network": "Visa", "formatted": "4242 4242 4242 4242", "luhn_valid": true, "length_valid": true } ``` ## About ## What it does Card Number Validator checks whether a payment card number is structurally valid, identifies the card network, and returns a masked representation for safer handling. Send a `card_number` in the request body. The value can include spaces or dashes; those are ignored during validation. The response includes `valid`, `luhn_valid`, and `length_valid` so you can see whether the number passes the checksum and length checks. You also get `network`, `iin`, `length`, `last4`, `formatted`, and `masked` when they can be derived, plus an optional `note` for additional context. Use Card Number Validator when you need to clean up user-entered payment data before storing it, flag obvious typos in checkout forms, or label card numbers by network in admin and support workflows. The masked and last-four outputs are useful when you want to display or log card details without exposing the full number. This service is for validation and normalization only. It does not perform authorization, issuer lookup, or account verification. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/creightonnick0/service/validate-card-number * * * --- title: Check WCAG Color Contrast API slug: color-contrast-checker url: https://apyhub.com/creightonnick0/service/color-contrast-checker provider: nick creighton categories: [Developer Tools] tags: [wcag, accessibility, color-contrast, design-tokens, ui-testing] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Check WCAG Color Contrast API Compare foreground and background colors and get the WCAG 2.1 contrast ratio, AA and AAA pass or fail, luminance values, and a recommendation. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/creightonnick0/color-contrast-checker` | What it does Checks the contrast between a foreground color and a background color, using the two i… | 10 | ## Endpoint reference ### WCAG 2.1 color-contrast ratio + AA/AAA pass-fail for a fg/bg pair. `POST https://api.eu.apyhub.com/creightonnick0/color-contrast-checker` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `bg` | body | string | yes | Background color (hex, rgb(), or CSS name) Example: `#ffffff`. | | `fg` | body | string | yes | Foreground / text color (hex, rgb(), or CSS name) Example: `#767676`. | #### Quickstart Check the contrast between a foreground and background color. ```bash curl -X POST "https://api.eu.apyhub.com/creightonnick0/color-contrast-checker" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "fg": "#767676", "bg": "#ffffff" }' ``` #### What you'll get back Returns a JSON object with contrast details for the two colors, including the top-level `bg`, `fg`, `passes`, `bg_luminance`, `fg_luminance`, `overall_level`, `contrast_ratio`, `recommendation`, and `contrast_ratio_display` fields. `passes` is itself an object with boolean checks for `AA_large_text`, `AAA_large_text`, `AA_normal_text`, and `AAA_normal_text`. ```json { "bg": "#ffffff", "fg": "#767676", "passes": { "AA_large_text": true, "AAA_large_text": true, "AA_normal_text": false, "AAA_normal_text": false }, "bg_luminance": 1, "fg_luminance": 0.18, "overall_level": "AA", "contrast_ratio": 4.48, "recommendation": "Use a darker foreground color for normal text.", "contrast_ratio_display": "4.48:1" } ``` ## About ## What it does Color Contrast Checker compares a foreground and background color and returns the WCAG 2.1 contrast result for that pair. Send a foreground color in `fg` and a background color in `bg`; each can be provided as a hex value, `rgb()` value, or CSS color name. The response includes the original `fg` and `bg` values, `contrast_ratio`, `contrast_ratio_display`, `overall_level`, and a `passes` object with AA/AAA results for normal and large text. You also get `fg_luminance`, `bg_luminance`, and a `recommendation` string to help you adjust a color combination that fails. Use Color Contrast Checker when you need to validate design tokens, review brand palettes, or check text colors before shipping a UI. It gives you a quick accessibility signal for buttons, labels, alerts, and any other foreground/background pairing where readability matters. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/creightonnick0/service/color-contrast-checker * * * --- title: Validate and Format Phone Number API slug: validate-phone-number url: https://apyhub.com/creightonnick0/service/validate-phone-number provider: nick creighton categories: [Data Validation] tags: [phone-validation, e164, phone-normalization, contact-data, data-validation] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Validate and Format Phone Number API Phone validation API that checks a number against per-country rules and returns E.164, national and international formats plus the country code. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/creightonnick0/validate-phone-number` | What it does Parses and validates a phone number, returning normalized formatting and country-relat… | 10 | ## Endpoint reference ### Parse & validate a phone number (E.164 + per-country rules). `POST https://api.eu.apyhub.com/creightonnick0/validate-phone-number` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `phone` | body | string | yes | The phone number (E.164 with + , or national format) Example: `+44 20 7946 0958`. | | `country` | body | string | no | ISO alpha-2 country hint (required for national-format numbers) Example: `GB`. | #### Quickstart Check whether a phone number is valid by sending it in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/creightonnick0/validate-phone-number" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"phone":"+44 20 7946 0958"}' ``` #### What you'll get back Returns a JSON object with these top-level fields: `e164` (`string`), `input` (`string`), `valid` (`boolean`), `country` (`string`), `calling_code` (`string`), `country_code` (`string`), `national_format` (`string`), `national_number` (`string`), and `international_format` (`string`). ```json { "e164": "+442079460958", "input": "+44 20 7946 0958", "valid": true, "country": "United Kingdom", "calling_code": "44", "country_code": "GB", "national_format": "020 7946 0958", "national_number": "2079460958", "international_format": "+44 20 7946 0958" } ``` ## About ## What it does The phone validation API checks whether a phone number is valid for its country and returns it in formats you can store and compare. Send `phone` in E.164 form (with the `+`) or in national format with an ISO alpha-2 `country` hint such as `GB` or `BR`. You get back `valid`, the normalized `e164` value, `national_format`, `international_format`, `national_number`, `calling_code`, `country_code` and the resolved `country`. Use this phone number validation API at signup and checkout to catch mistyped numbers before an SMS code or delivery update goes nowhere. The country hint lets users type numbers the way they write them locally, such as `020 7946 0958`, while your database keeps one consistent `e164` value. Normalizing to E.164 also makes contact data easier to work with. Deduplicate CRM records where the same person was saved as `+44 20 7946 0958` and `020 7946 0958`, match inbound calls to customer accounts, and clean phone columns before an import or migration. Validation here follows each country's numbering rules. It does not contact the carrier or confirm the line is active, so a `valid` result means a correctly structured number for that country. For carrier name, line type and time zone, use the [Phone Carrier Lookup API](https://apyhub.com/dosvak/service/phone-carrier-lookup). Signup forms usually collect more than a phone number, so pair it with the [Email Validation API](https://apyhub.com/apyhub/service/verify-email-validity-and-deliverability) and the [Address Validation API](https://apyhub.com/quadlem/service/address-validation). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/creightonnick0/service/validate-phone-number * * * --- title: Business Days Calculator API slug: business-day-math url: https://apyhub.com/creightonnick0/service/business-day-math provider: nick creighton categories: [Finance, Standard Data] tags: [business-days, holiday-calendar, date-calculation, workday, schedule-logic] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Business Days Calculator API Add or subtract business days, count them between dates, or check if a date is a business day, using real holidays for US, UK, CA, AU, DE, FR and IN. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/creightonnick0/business-day-math` | What it does Calculates business-day results using public-holiday calendars for the supported count… | 10 | ## Endpoint reference ### Business-day math with real public-holiday calendars (US/GB/CA/AU/DE/FR/IN). `POST https://api.eu.apyhub.com/creightonnick0/business-day-math` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `end` | body | string | no | Range end YYYY-MM-DD, exclusive (count mode) Example: `2026-12-28`. | | `date` | body | string | no | The base date YYYY-MM-DD (add / is_business_day modes) Example: `2026-12-23`. | | `days` | body | integer | no | Business days to add. Use a negative value to subtract (add mode). Example: `3`. | | `mode` | body | string | no | Operation mode. One of: add, count, is_business_day, holidays. Example: `add`. | | `year` | body | integer | no | Year for holidays mode. Example: `2026`. | | `start` | body | string | no | Range start YYYY-MM-DD (count mode). Example: `2026-12-21`. | | `country` | body | string | no | ISO country code for the holiday calendar. One of: US, GB, CA, AU, DE, FR, IN. Example: `US`. | #### Quickstart Add a small number of business days to a date. ```bash curl -X POST "https://api.eu.apyhub.com/creightonnick0/business-day-math" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"mode":"add","date":"2026-12-23","days":3,"country":"US"}' ``` >**Note**: Supported countries: US, GB, CA, AU, DE, FR, and IN. Holiday calendars: Public holidays are calculated for these countries using country-specific holiday rules. Countries outside this list are not currently supported. #### What you'll get back Returns a JSON object with these top-level fields: `mode` and `input` as strings, `result` and `country` as strings, `business_days` as an integer, `result_weekday` as a string, and `holidays_skipped` as an array of objects with `date` and `name` string fields. ```json { "mode": "add", "input": "2026-12-23", "result": "2026-12-28", "country": "US", "business_days": 3, "result_weekday": "Monday", "holidays_skipped": [] } ``` ## About ## What it does The Business Days Calculator API does date math that skips weekends and public holidays. Add or subtract business days from a date, count the business days between two dates, check whether a single date is a business day, or list a country's holidays for a year, all from one endpoint. It uses real public holiday calendars for seven countries: the United States (`US`), United Kingdom (`GB`), Canada (`CA`), Australia (`AU`), Germany (`DE`), France (`FR`) and India (`IN`). Pick what you want with the `mode` field: - `add` takes a `date` and a number of `days` and returns the resulting business day. Use a negative number to go backwards, for example to find the last business day before a deadline. - `count` takes a `start` and `end` date and returns the number of business days between them. The end date is not included in the count. - `is_business_day` takes a `date` and tells you whether it is a working day in that country. - `holidays` takes a `year` and returns that country's public holidays. All dates use `YYYY-MM-DD`. The response includes the `result` date, its `result_weekday`, the `business_days` count, and `holidays_skipped` with the date and name of every holiday the calculation stepped over, so you can show users why a deadline moved. Common uses include working out what date is 5, 10 or 30 business days from today, setting payment and settlement dates, calculating SLA and support deadlines, estimating shipping and delivery dates, and checking whether a bank or office will be open on a given day. To count working days between two dates with a full breakdown of weekends and holidays, you can also use the [Working Day Calculator](https://apyhub.com/apyhub/service/count-working-days), and the [Public Holidays API](https://apyhub.com/apyhub/service/public-holidays) lists holiday dates by country. For recurring jobs that should run on a schedule, see the [Advanced Schedule Cron API](https://apyhub.com/creightonnick0/service/cron-next-run-calculator). You can try it right here in the playground. Start for free with 5 API calls a day, no card required, and test it with your own dates before you commit. The API is also available through [ApyHub MCP](https://apyhub.com/mcp), so AI agents can work out business-day deadlines directly instead of guessing. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/creightonnick0/service/business-day-math * * * --- title: Ingredient Parser From Text API slug: parse-ingredients url: https://apyhub.com/ingredients/service/parse-ingredients provider: Ingredients API categories: [Data Extraction, Data Validation, E-commerce Quick Tools] tags: [ingredient-parsing, food-labeling, allergen-detection, additive-detection, dietary-analysis] auth: api_key version: 0.2.0 service_type: sync endpoints: 2 atoms: 10-60 --- # Ingredient Parser From Text API Ingredient parser API that turns a food label's ingredient text into the 14 EU allergens, E-number additives and vegan flags as JSON. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/ingredients/parse-ingredients/v1/parse` | What it does Parses a free-text ingredient list sent in the request body and returns a structured J… | 60 | | GET | `https://api.eu.apyhub.com/ingredients/parse-ingredients/v1/additives/:code` | What it does Looks up a single E-number by its code path parameter and returns the regulatory data… | 10 | ## Endpoint reference ### Parse an ingredient list `POST https://api.eu.apyhub.com/ingredients/parse-ingredients/v1/parse` · 60 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `lang` | body | string | no | One of: auto, it, en, fr, de, es. Default: `auto`. | | `text` | body | string | yes | Free-text ingredient list. Maximum 5000 characters — generous for any real product label; longer requests are rejected with 413 before any parsing happens. Example: `Wheat flour, sugar, palm oil, E32… | #### Quickstart Send the ingredient list text and language hint to parse common ingredients and allergens. ```bash curl -X POST "https://api.eu.apyhub.com/ingredients/parse-ingredients/v1/parse" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"lang":"auto","text":"Wheat flour, sugar, palm oil, E322 (soy lecithin), milk powder"}' ``` #### What you'll get back Returns a JSON object with these top-level fields: `cached` (`boolean` or `null`), `dietary` (`object`), `degraded` (`boolean`), `additives` (`array`), `allergens` (`array`), `llm_assisted` (`boolean`), `degraded_reason` (`string` or `null`), `allergens_traces` (`array`), and `unrecognized_ingredients` (`array`). >*Notes*: A HINT about the language of the INPUT `text`, used only to pick which language's dictionary terms to match against. It has NO effect on the response: `label` values, enum tokens and field names are always in English/stable form regardless of `lang`. `auto` (the default) checks all five supported languages and is the right choice whenever the input language isn't reliably known ahead of time. Not implemented, and deliberately out of scope for now: a separate `output_lang` parameter for localizing `label` values. The current design (stable `id` + English `label`) makes that a pure additive change later — clients that key off `id` today will not break if `output_lang` is added. ```json { "allergens": [ { "id": "gluten", "label": "Cereals containing gluten", "eu_index": 1, "confidence": 0.95, "source": "dictionary" }, { "id": "soy", "label": "Soybeans", "eu_index": 6, "confidence": 0.95, "source": "dictionary" }, { "id": "milk", "label": "Milk", "eu_index": 7, "confidence": 0.95, "source": "dictionary" } ], "allergens_traces": [], "additives": [ { "code": "E322", "name": "Lecithins", "name_it": "Lecitine", "category": [ "emulsifier" ], "recognized": true, "confidence": 1 } ], "dietary": { "vegan": "unlikely", "vegetarian": "likely", "contains_alcohol": false, "contains_palm_oil": true, "contains_added_sugars": true }, "unrecognized_ingredients": [], "llm_assisted": false, "degraded": false, "degraded_reason": null, "cached": true } ``` ### Direct E-number lookup (zero LLM) `GET https://api.eu.apyhub.com/ingredients/parse-ingredients/v1/additives/:code` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `code` | path | string | yes | | #### Quickstart Look up an E-number by code, using the code in the URL path. ```bash curl -X GET "https://api.eu.apyhub.com/ingredients/parse-ingredients/v1/additives/:code" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields: `code` (`string`), `name` (`string` or `null`), `name_it` (`string` or `null`), `category` (`array` of strings or `null`), `confidence` (`number`), and `recognized` (`boolean`). ```json { "code": "E322", "name": "Lecithins", "name_it": "Lecitine", "category": ["emulsifier"], "confidence": 1, "recognized": true } ``` ## About ## What it does The ingredient parser API turns a free-text ingredient list from a food label into structured data. Send `text` (up to 5,000 characters) with an optional `lang` hint (`it`, `en`, `fr`, `de`, `es` or `auto`), and get back allergens, additives and dietary signals in a stable JSON format with English labels. Allergens map to the 14 EU allergen categories, each with an `eu_index`, a `confidence` score and a `source`. Confirmed allergens go in `allergens`, and "may contain traces of" clauses go in a separate `allergens_traces` list. Additives come back with their E-number `code`, official EU name, functional `category` such as emulsifier, and a `recognized` flag. The `dietary` object marks vegan and vegetarian as likely or unlikely and flags alcohol, palm oil and added sugars. Fragments the parser can't match are listed in `unrecognized_ingredients`. A second endpoint looks up a single E-number such as `E322` directly. Use the ingredient parser API to fill allergen fields in grocery and delivery catalogs, check food labels for compliance before products go live, power allergy and diet filters in shopping apps, and enrich product feeds that carry raw ingredient text. To get ingredient text off a photographed label, run it through the [Image OCR API](https://apyhub.com/apyhub/service/extract-text-from-image) first. To pull it from a retailer's product page, use the [Product Data Extraction API](https://apyhub.com/chisleroff/service/extract-product-information). For nutrition and substitutes per ingredient, add the [Ingredient API](https://apyhub.com/skycraft/service/food-ingredient-information-api). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/ingredients/service/parse-ingredients * * * --- title: Text Similarity Search API slug: text-similarity-search url: https://apyhub.com/apyhub/service/text-similarity-search provider: ApyHub categories: [Artificial Intelligence, Developer Tools] tags: [text-similarity, string-comparison, fuzzy-matching, duplicate-detection, search-ranking] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 25 --- # Text Similarity Search API Compare a source and target string and get a similarity score from 0 to 1. Built for fuzzy matching, duplicate checks, and text ranking. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/text-similarity-search` | What it does Computes a similarity score between two input strings and returns the score as a float… | 25 | ## Endpoint reference ### Compute string similarity `POST https://api.eu.apyhub.com/apyhub/text-similarity-search` · 25 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `source` | body | string | yes | First string to compare. Example: `kitten`. | | `target` | body | string | yes | Second string to compare. Example: `sitting`. | #### Quickstart Compare two strings for similarity. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/text-similarity-search" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"source":"kitten","target":"sitting"}' ``` #### What you'll get back Returns a JSON object with a `data` number field — a float similarity score between `0` and `1`, rounded to 3 decimal places. ```json { "data": 0.571 } ``` ## About ## What it does Text Similarity Search compares two strings and returns a similarity score between 0 and 1. Send a `source` string and a `target` string in the request body, then get back `data` as a floating-point score rounded to 3 decimal places. Use Text Similarity Search when you need to measure how closely two pieces of text match without doing a full semantic analysis. It works well for duplicate detection, fuzzy matching, near-duplicate content checks, and simple comparison tasks in search or review workflows. The response is intentionally compact: one numeric score that you can sort, threshold, or log. That makes it easy to plug into systems that need a quick similarity check for user-submitted text, product titles, tags, or short descriptions. If you need a lightweight way to compare strings and make a yes/no or ranked decision from the result, Text Similarity Search gives you a direct score you can use immediately. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/text-similarity-search * * * --- title: Text Distance Search API slug: text-distance-search url: https://apyhub.com/apyhub/service/text-distance-search provider: ApyHub categories: [Developer Tools] tags: [levenshtein, string-matching, fuzzy-search, text-similarity, developer-tools] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 25 --- # Text Distance Search API Compare two strings with Levenshtein distance. Send a source and target, get an integer edit distance for fuzzy matching and typo checks. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/text-distance-search` | What it does Computes the Levenshtein edit distance between two input strings and returns the dista… | 25 | ## Endpoint reference ### Compute Levenshtein distance `POST https://api.eu.apyhub.com/apyhub/text-distance-search` · 25 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `source` | body | string | yes | First string to compare. Example: `kitten`. | | `target` | body | string | yes | Second string to compare. Example: `sitting`. | #### Quickstart Compare two strings by sending them as JSON and get back their edit distance. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/text-distance-search" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"source":"kitten","target":"sitting"}' ``` #### What you'll get back Returns a JSON object with a `data` integer field — the Levenshtein edit distance between `source` and `target` (for example, `kitten` → `sitting` returns `3`). ```json { "data": 3 } ``` ## About ## What it does Text Distance Search computes the Levenshtein edit distance between two strings. Send a `source` string and a `target` string, and get back a single integer in `data` showing how many insertions, deletions, or substitutions are needed to turn one into the other. Use Text Distance Search when you need fuzzy matching or similarity scoring for user-entered text. It’s a practical fit for deduplicating names, catching typos in search queries, comparing product titles, or ranking candidate matches when exact string equality is too strict. The request body is minimal: `source` and `target`. The response is equally direct: `data` contains the edit distance as an integer. If you are building search, validation, or cleanup workflows, this gives you a simple distance metric you can use to sort, filter, or threshold string comparisons. Because the output is just the distance value, it is easy to plug into existing logic without mapping extra metadata or parsing a complex structure. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/text-distance-search * * * --- title: Ranked Text Search API slug: ranked-text-search url: https://apyhub.com/apyhub/service/ranked-text-search provider: ApyHub categories: [Developer Tools, SEO] tags: [fuzzy-search, text-matching, levenshtein, autocomplete, ranking, unicode-normalization] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 25 --- # Ranked Text Search API Rank fuzzy matches for a search term against space-separated text. Returns matches with Levenshtein distance for typo-tolerant search. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/ranked-text-search` | What it does Performs a ranked fuzzy search by comparing a source string against a space-separated… | 25 | ## Endpoint reference ### Ranked fuzzy search `POST https://api.eu.apyhub.com/apyhub/ranked-text-search` · 25 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | body | integer | no | Max results to return. 0 means all. Default: `0`. Example: `3`. | | `offset` | body | integer | no | Skip first N ranked results. Default: `0`. Example: `0`. | | `source` | body | string | yes | The search term. Example: `ing`. | | `target` | body | string | yes | Space-separated words to search within. Example: `finding things bring sing ring`. | | `accent-insensitive` | query | boolean | no | Default: `false`. Example: `true`. | | `unicode-normalized` | query | boolean | no | Default: `false`. Example: `true`. | #### Quickstart Search for the term `ing` inside a ranked list of words. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/ranked-text-search" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"source":"ing","target":"finding things bring sing ring"}' ``` #### What you'll get back Returns a JSON object with a `data` array. Each item has a `match` string and a `distance` integer, where `distance` is the Levenshtein distance from the source. ```json { "data": [ { "match": "bring", "distance": 2 }, { "match": "sing", "distance": 2 }, { "match": "ring", "distance": 3 } ] } ``` ## About ## What it does Ranked Text Search gives you fuzzy matching over a list of space-separated words. Send a search term in `source` and the candidate text in `target`, and it returns ranked matches with their Levenshtein `distance` from the source. Use `limit` to cap how many results come back and `offset` to skip ranked entries. If you need broader matching, you can also enable `accent-insensitive` or `unicode-normalized` handling in the query. Ranked Text Search is useful when you need to compare a user query against tokenized text, such as searching short labels, finding near-matches in product titles, or normalizing typos in autocomplete and lookup flows. The response is a `data` array of objects, each with a `match` string and its numeric `distance`. It is a small, focused utility for ordered fuzzy lookup when you want a ranked list rather than a simple yes-or-no match. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/ranked-text-search * * * --- title: Differentiate Text API slug: compare-text-or-code-snippets url: https://apyhub.com/apyhub/service/compare-text-or-code-snippets provider: ApyHub categories: [Developer Tools] tags: [text-diff, code-diff, snippet-comparison, change-tracking, diff-analysis] auth: api_key version: 1.0 service_type: sync endpoints: 1 atoms: 40 --- # Differentiate Text API Compare two text or code snippets and get ordered diff segments plus addition, deletion, and unchanged counts for review and change tracking. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/compare-text-or-code-snippets` | What it does Compares two text or code snippets and returns a diff breakdown plus summary statistic… | 40 | ## Endpoint reference ### Compare two text or code snippets `POST https://api.eu.apyhub.com/apyhub/compare-text-or-code-snippets` · 40 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | body | string | no | Comparison granularity. char for typos / short strings, word for sentences and paragraphs (default), line for code, configs, and other multi-line content. One of: char, word, line. Default: `word`. | | `text1` | body | string | yes | Original text or code snippet. Capped at 1 MiB. Example: `I love eating apples`. | | `text2` | body | string | yes | New text or code snippet. Capped at 1 MiB. Example: `I love eating oranges`. | #### Quickstart Compare two texts or code snippets by sending both inputs in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/compare-text-or-code-snippets" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "text1": "I love eating apples", "text2": "I love eating oranges" }' ``` #### What you'll get back Returns a JSON object with a `data` object. `data` includes `mode` (the normalized comparison mode used), `diffs` (ordered diff segments with `op` and `text`), and `stats` with `additions`, `deletions`, and `unchanged`. ```json { "data": { "mode": "word", "diffs": [ { "op": "equal", "text": "I love eating " }, { "op": "delete", "text": "apples" }, { "op": "insert", "text": "oranges" } ], "stats": { "additions": 1, "deletions": 1, "unchanged": 3 } } } ``` ## About ## What it does Text Diff Comparator compares two text or code snippets and returns an ordered diff, plus simple change counts. Send `text1` and `text2`, and optionally set `mode` to `char`, `word`, or `line` depending on whether you're checking typos, prose, or multi-line code and config files. Use `word` mode for sentences and paragraphs, `line` mode for source files, JSON, YAML, and other structured text, and `char` mode when small edits matter. The response includes the normalised `mode` used for comparison, a `diffs` array with `equal`, `insert`, and `delete` segments, and `stats` with `additions`, `deletions`, and `unchanged` counts. This is useful for review workflows, content editors, code inspection tools, and any integration that needs to explain what changed between two versions without doing its own diffing. Because the diff segments are returned in order, you can render side-by-side comparisons, highlight edits inline, or compute summary metrics from the same response. If you need a straightforward way to compare revisions and inspect the exact segments that differ, Text Diff Comparator gives you the result in a compact, machine-readable format. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/compare-text-or-code-snippets * * * --- title: Working Day Calculator API slug: count-working-days url: https://apyhub.com/apyhub/service/count-working-days provider: ApyHub categories: [HR, Standard Data] tags: [working-days, holiday-calculation, date-range, business-days, calendar] auth: api_key version: 1.0 service_type: sync endpoints: 1 atoms: 15 --- # Working Day Calculator API Count the working days between two dates for a country, with weekends and public holidays excluded. Get a JSON breakdown for payroll, SLAs and scheduling. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/apyhub/count-working-days` | What it does Calculates the number of working days between two dates for a given country. The respo… | 15 | ## Endpoint reference ### Count working days between two dates `GET https://api.eu.apyhub.com/apyhub/count-working-days` · 15 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `end` | query | string (date) | yes | Example: `2025-01-31`. | | `start` | query | string (date) | yes | Example: `2025-01-01`. | | `country` | query | string | yes | Example: `DE`. | #### Quickstart Count the working days between two dates for a country. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/count-working-days?country=DE&start=2025-01-01&end=2025-01-31" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object containing `holidays`, `weekends`, `total_days`, and `working_days` integer fields. ```json { "data": { "holidays": 1, "weekends": 8, "total_days": 31, "working_days": 22 } } ``` ## About ## What it does The Working Day Calculator API counts the business days between two dates for a country. Send a country code, a start date and an end date, and get back the number of working days with weekends and that country's public holidays already excluded. It is one GET endpoint with three required parameters: `country`, such as `DE`, and `start` and `end` dates in `YYYY-MM-DD` format. The response gives you the full breakdown in a `data` object: `total_days` for the calendar days in the range, counting both the start and end date, `weekends` for the Saturdays and Sundays, `holidays` for the public holidays that fall on a weekday, and `working_days` for the Monday to Friday days that remain. For January 2025 in Germany, that is 31 total days, 8 weekend days, 1 holiday and 22 working days. Common uses include calculating pay periods and prorated salaries in payroll, measuring SLA and support response windows in business days, estimating delivery and lead times, counting leave days in HR tools, and setting deadlines that skip non-working days. Because the holidays come from each country's calendar, you do not have to maintain your own holiday list for every market you operate in. To see which dates are holidays, not just how many there are, use the [Public Holidays API](https://apyhub.com/apyhub/service/public-holidays). For more business-day math, try the [Business Days Calculator](https://apyhub.com/creightonnick0/service/business-day-math). If your team works across regions, the [Convert Timezone and Meeting Planner](https://apyhub.com/creightonnick0/service/timezone-conversion) helps you find times that work for everyone. You can try it right here in the API playground. Start for free with 5 API calls a day, no card required, and check the working days for your own dates before you commit. The API is also available through [ApyHub MCP](https://apyhub.com/mcp), so AI agents can count working days directly when they plan deadlines or schedules. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/count-working-days * * * --- title: Validate EU VAT Batch API slug: validate-vat-batch url: https://apyhub.com/apyhub/service/validate-vat-batch provider: ApyHub categories: [Data Validation, Finance] tags: [vat-validation, vat-number, tax-validation, batch-validation, eu-vat] auth: api_key version: 1.0 service_type: sync endpoints: 1 atoms: 100 --- # Validate EU VAT Batch API Validate up to 10 EU VAT numbers in one request, each with its own result. Failed lookups are flagged separately from invalid numbers. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/validate-vat-batch` | What it does Validates a batch of VAT numbers sent in the request body and returns a result item fo… | 100 | ## Endpoint reference ### Validate VAT numbers in batch `POST https://api.eu.apyhub.com/apyhub/validate-vat-batch` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `vat_numbers` | body | array of string | yes | Example: `["DE345789108","GB123456789","FR12345678901"]`. | #### Quickstart Check a batch of VAT numbers by sending them as a JSON array. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/validate-vat-batch" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"vat_numbers":["DE345789108","GB123456789","FR12345678901"]}' ``` #### What you'll get back Returns a JSON object with a `data` array. Each item in `data` is an object with `vat` (the VAT number checked), `valid` (a boolean), and optionally `error` when lookup fails for that item. ```json { "data": [ { "vat": "NL862735944B01", "valid": true }, { "vat": "GB123456789", "valid": false }, { "vat": "FR12345678901", "valid": true } ] } ``` ## About ## What it does The Batch VAT Validation API checks up to 10 EU VAT numbers in one request. Send an array, get an array back, one result per number, in the order you sent them. Each result carries the VAT number and a `valid` flag. When a lookup fails rather than returns a verdict, that item also carries an `error`. This matters more than it sounds. An invalid number means reject the customer. A failed lookup means try again later. Treating the second as the first is how good customers get blocked. Use it wherever VAT numbers arrive in groups. Importing a supplier list. Cleaning up a CRM. Re-checking stored customers on a schedule, because VAT registrations get cancelled and nobody tells you. Checking one number instead? Use the [Validate EU VAT API](https://apyhub.com/apyhub/service/validate-vat-number). Need the registered company name and address behind the number? Use the [VAT Company Lookup API](https://apyhub.com/apyhub/service/lookup-vat-company). One call of 10 costs less than ten single calls, so batch where you can. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/validate-vat-batch * * * --- title: VAT Company Lookup API slug: lookup-vat-company url: https://apyhub.com/apyhub/service/lookup-vat-company provider: ApyHub categories: [Data Validation, Finance] tags: [vat-validation, vat-lookup, company-registry, tax-validation, business-verification] auth: api_key version: 1.0 service_type: sync endpoints: 1 atoms: 50 --- # VAT Company Lookup API Send an EU VAT number and get the registered company name, address and country back. Everything an invoice needs, in one call. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/lookup-vat-company` | What it does Looks up company information for a VAT number and returns a JSON object containing the… | 50 | ## Endpoint reference ### Look up company info for a VAT number `POST https://api.eu.apyhub.com/apyhub/lookup-vat-company` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `vat` | body | string | yes | VAT number including 2-letter country code prefix. Example: `NL862735944B01`. | #### Quickstart Look up a company by VAT number using a simple JSON request. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/lookup-vat-company" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"vat":"NL862735944B01"}' ``` #### What you'll get back Returns a JSON object with a `data` object. The `data` object can include `name` (string), `valid` (boolean), `address` (string), `vat_number` (string), and `country_code` (string). ```json { "data": { "name": "ACME GmbH", "valid": true, "address": "Musterstraße 1, 10115 Berlin", "vat_number": "345789108", "country_code": "DE" } } ``` ## About ## What it does The VAT Lookup API turns a VAT number into a company. Send the number with its country prefix, get back the registered name, the registered address, the country code, and whether the number is valid. This is what an invoice needs. In most EU countries a compliant B2B invoice has to carry the customer's registered legal name and address, not the trading name they typed into your signup form. Pull them from the number and the invoice is right the first time. It also catches the mismatch worth catching. When the returned company name looks nothing like the account name in front of you, someone has entered a VAT number that is not theirs. That is worth a flag in onboarding, before the reverse charge gets applied to the wrong entity. Three places it fits: B2B signup, supplier onboarding, and invoice generation. Prefill the fields, keep the record, move on. Only need a yes or no? The [Validate EU VAT API](https://apyhub.com/apyhub/service/validate-vat-number) is the cheaper call. Checking a list? The [Validate EU VAT Batch API](https://apyhub.com/apyhub/service/validate-vat-batch) takes up to 10 at a time. Need beneficial owners and filings as well? The [Company KYB Lookup API](https://apyhub.com/quadlem/service/company-kyb-lookup) goes deeper. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/lookup-vat-company * * * --- title: Generate SVG Badge API slug: generate-svg-badge url: https://apyhub.com/apyhub/service/generate-svg-badge provider: ApyHub categories: [Developer Tools, Smart Generation] tags: [svg, badge-generation, status-badges, developer-tools, markdown-assets] auth: api_key version: 1.0 service_type: sync endpoints: 2 atoms: 60 --- # Generate SVG Badge API Generate SVG badges from a label and message, with optional colours. Download the SVG or get a signed URL for READMEs, docs, and CI status. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/generate-svg-badge/download` | What it does Generates an SVG badge file from the provided badge text and optional color values, th… | 60 | | POST | `https://api.eu.apyhub.com/apyhub/generate-svg-badge/link` | What it does Generates a signed URL for an SVG badge. The request body supplies the badge label and… | 60 | ## Endpoint reference ### Generate SVG badge (download) `POST https://api.eu.apyhub.com/apyhub/generate-svg-badge/download` · 60 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `label` | body | string | yes | Example: `build`. | | `message` | body | string | yes | Example: `passing`. | | `label_color` | body | string | no | Example: `555`. | | `message_color` | body | string | no | Example: `4c1`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Generate a badge SVG and download it as a file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-svg-badge/download?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"label":"build","message":"passing"}' ``` #### What you'll get back Returns a binary file containing the generated SVG badge. ### Generate SVG badge (signed URL) `POST https://api.eu.apyhub.com/apyhub/generate-svg-badge/link` · 60 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `label` | body | string | yes | Example: `build`. | | `message` | body | string | yes | Example: `passing`. | | `label_color` | body | string | no | Example: `555`. | | `message_color` | body | string | no | Example: `4c1`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Create an SVG badge link by sending the required label and message, with an optional output name in the query string. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-svg-badge/link?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"label":"build","message":"passing"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the generated badge URI. ```json { "data": "https://apyhub-outgoing.s3.eu-west-1.amazonaws.com/mono-go/badge_generator/general/badge_generator_2026-08-07_e07459ee.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIARJOHWS6LWTUUGYPI%2F20260807%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20260807T133021Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&response-content-disposition=inline&response-content-type=image%2Fsvg%2Bxml&X-Amz-Signature=6131bde37cd0f16cfe13b00ccc2058fb0a5ae42aefdd697ce60bec96f00deffd" } ``` ## About ## What it does SVG Badge Generator creates simple SVG status badges from a label and message, with optional label and message colors. Send `label` and `message` in the request body to generate a badge for build status, package state, documentation coverage, or any other short label/value pair you want to display in a repo, README, or dashboard. Use `label_color` and `message_color` when you need to match your product or project theme. The service supports two response styles: `POST /download` returns the SVG as binary content, and `POST /link` returns a signed URL in `data` so you can reference the generated badge elsewhere. SVG badges are useful when you need lightweight, text-based visuals that stay sharp at any size and render well in GitHub READMEs, docs sites, CI output pages, and internal tools. Because the inputs are just strings, you can generate badges dynamically from pipeline results, environment labels, release states, or other short status values without managing image assets. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/generate-svg-badge * * * --- title: Generate Radar Chart API slug: generate-simple-radar-chart url: https://apyhub.com/apyhub/service/generate-simple-radar-chart provider: ApyHub categories: [Image Processing, Smart Generation] tags: [radar-chart, data-visualization, chart-generation, image-generation, reporting] auth: api_key version: 1.0 service_type: sync endpoints: 2 atoms: 60 --- # Generate Radar Chart API Generate radar chart images or pre-signed links from titles, labels, and series data. Built for score comparisons, dashboards, and reports. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/generate-simple-radar-chart/download` | What it does Generates a radar chart image from the chart configuration in the request body and ret… | 60 | | POST | `https://api.eu.apyhub.com/apyhub/generate-simple-radar-chart/link` | What it does Generates a radar chart link from the chart configuration in the request body. The end… | 60 | ## Endpoint reference ### Generate radar chart image `POST https://api.eu.apyhub.com/apyhub/generate-simple-radar-chart/download` · 60 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `theme` | body | string | no | Chart theme. One of: light, dark. Default: `light`. Example: `light`. | | `title` | body | string | yes | Example: `Team Performance Scores`. | | `labels` | body | array of string | yes | Axis labels for the radar chart. | | `series` | body | array of object | yes | | | `series[].name` | body | string | yes | Example: `Team A`. | | `series[].color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `series[].values` | body | array of number | yes | | | `options.width` | body | integer | no | Example: `700`. | | `options.height` | body | integer | no | Example: `700`. | | `options.max_value` | body | number | no | Example: `10`. | | `output` | query | string | no | Example: `team-performance-radar-chart`. | #### Quickstart Create a simple radar chart image from a title, labels, and one data series. ```bash id="n1k8vd" curl -X POST "https://api.eu.apyhub.com/apyhub/generate-simple-radar-chart/download?output=file" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "title": "Team Performance Scores", "labels": ["Speed", "Quality", "Communication"], "series": [ { "name": "Team A", "values": [8, 7, 9] } ] }' \ -o radar-chart.png ``` #### What you'll get back Returns the generated radar chart image as a binary file response. The example above saves the downloaded file locally as `radar-chart.png`. ### Generate radar chart link `POST https://api.eu.apyhub.com/apyhub/generate-simple-radar-chart/link` · 60 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `theme` | body | string | no | Chart theme. One of: light, dark. Default: `light`. Example: `light`. | | `title` | body | string | yes | Example: `Team Performance Scores`. | | `labels` | body | array of string | yes | | | `series` | body | array of object | yes | | | `series[].name` | body | string | yes | Example: `Team A`. | | `series[].color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `series[].values` | body | array of number | yes | | | `options.width` | body | integer | no | Example: `700`. | | `options.height` | body | integer | no | Example: `700`. | | `options.max_value` | body | number | no | Example: `10`. | | `output` | query | string | no | Example: `team-performance-radar-chart`. | #### Quickstart Generate a simple radar chart from a title, labels, and one or more series. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-simple-radar-chart/link?output=file" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "title": "Team Performance Scores", "labels": ["Speed", "Quality", "Communication", "Reliability", "Ownership"], "series": [ { "name": "Team A", "color": "3B82F6", "values": [8, 7, 9, 8, 7] } ] }' ``` #### What you'll get back Returns a JSON object with a `data` string field — a pre-signed URL pointing to the generated chart image. ```json { "data": "https://apyhub-outgoing.s3.eu-west-1.amazonaws.com/mono-go/chart_generator/general/chart_generator_2026-08-07_85427a07.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIARJOHWS6LWTUUGYPI%2F20260807%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20260807T132324Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&response-content-disposition=inline&response-content-type=image%2Fsvg%2Bxml&X-Amz-Signature=859b3a9eff85be2ea7146d8d7322a54da62c21ef4b1b2d7edc8355235d7a9f52" } ``` ## About ## What it does Radar Chart Generator turns a title, axis labels, and one or more series into a radar chart image or a shareable chart link. Send the chart data in the request body and choose light or dark theme, optional width and height, and an optional max_value. Use it when you need to visualize comparative scores across several dimensions: team performance, product benchmarking, feature coverage, or survey results. Each series needs a name and values, and you can add a hex color for each series to control how it appears on the chart. The chart title and labels define the output, so the structure stays predictable for dashboards and reporting pipelines. The service exposes two outputs. POST /download returns a binary chart image for direct download. POST /link returns a pre-signed URL in a data field, which is useful when you want to store, embed, or hand off the generated image without streaming it immediately. If you're building internal analytics, customer reports, or comparison views, Radar Chart Generator gives you a consistent way to render the same chart data as either an image file or a hosted link. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/generate-simple-radar-chart * * * --- title: Generate HeatMap Chart API slug: generate-simple-heatmap-chart url: https://apyhub.com/apyhub/service/generate-simple-heatmap-chart provider: ApyHub categories: [Image Processing, Smart Generation] tags: [calendar-heatmap, data-visualization, chart-generation, image-generation, time-series] auth: api_key version: 1.0 service_type: sync endpoints: 2 atoms: 60 --- # Generate HeatMap Chart API Calendar Heatmap API: send dated values and a title, get an SVG calendar heatmap as a file or signed URL for activity reports. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/generate-simple-heatmap-chart/download` | What it does Generates a calendar heatmap chart image from the supplied data and title, then return… | 60 | | POST | `https://api.eu.apyhub.com/apyhub/generate-simple-heatmap-chart/link` | What it does Generates a calendar heatmap chart link from the provided title, dated data points, an… | 60 | ## Endpoint reference ### Generate calendar heatmap chart image `POST https://api.eu.apyhub.com/apyhub/generate-simple-heatmap-chart/download` · 60 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `data` | body | array of object | yes | | | `data[].date` | body | string (date) | yes | Date in YYYY-MM-DD format. Example: `2026-06-01`. | | `data[].value` | body | number | yes | Example: `3`. | | `title` | body | string | yes | Example: `Daily User Activity`. | | `options.color_low` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.color_med` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.color_high` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.color_empty` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.color_med_low` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `output` | query | string | no | Example: `daily-user-activity-heatmap-chart`. | #### Quickstart Generate and download a simple heatmap chart image from a small date/value dataset. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-simple-heatmap-chart/download?output=daily-user-activity-heatmap-chart" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "title": "Daily User Activity", "data": [ { "date": "2026-06-01", "value": 3 }, { "date": "2026-06-02", "value": 7 }, { "date": "2026-06-03", "value": 12 } ] }' ``` #### What you'll get back Returns a binary file response which you can save directly to disk. ### Generate calendar heatmap chart link `POST https://api.eu.apyhub.com/apyhub/generate-simple-heatmap-chart/link` · 60 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `data` | body | array of object | yes | | | `data[].date` | body | string (date) | yes | Date in YYYY-MM-DD format. Example: `2026-06-01`. | | `data[].value` | body | number | yes | Example: `3`. | | `title` | body | string | yes | Example: `Daily User Activity`. | | `options.color_low` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.color_med` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.color_high` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.color_empty` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.color_med_low` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `output` | query | string | no | Example: `daily-user-activity-heatmap-chart`. | #### Quickstart Generate a simple heatmap chart from a title and date/value data points. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-simple-heatmap-chart/link?output=daily-user-activity-heatmap-chart" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"title":"Daily User Activity","data":[{"date":"2026-06-01","value":3},{"date":"2026-06-02","value":7},{"date":"2026-06-03","value":12}]}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed URI for the generated chart image. ```json { "data": "https://apyhub-outgoing.s3.eu-west-1.amazonaws.com/mono-go/chart_generator/general/chart_generator_2026-08-07_a84eb504.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIARJOHWS6LWTUUGYPI%2F20260807%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20260807T131605Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&response-content-disposition=inline&response-content-type=image%2Fsvg%2Bxml&X-Amz-Signature=ab454ac962c26ecaebaffca14110374ee658808bcd7de47371ed84aa374ca70b" } ``` ## About ## What it does The Calendar Heatmap API turns dated numeric data into a calendar heatmap chart. Send a `title` and a `data` array of `{ date, value }` points, and get back an SVG chart image, either as a file from `/download` or as a pre-signed URL in the `data` field from `/link`. Each point needs a `date` in `YYYY-MM-DD` format and a numeric `value`. Values map to a color scale you can set in `options` with `color_low`, `color_med_low`, `color_med`, `color_high`, and `color_empty`, each a 6-character hex code without the `#`. Pre-signed links expire after 15 minutes, so download or store the image if you need it longer. Use the calendar heatmap API to build a GitHub-style contribution graph, show daily sign-ins, orders, or support tickets in a weekly report, or add an activity heatmap to an email digest or customer dashboard. It works as a server-side heatmap generator for any metric you count per day. It draws date-based calendar heatmaps; matrix and map-style heatmaps sit outside its scope. Convert the chart with the [SVG to PNG API](https://apyhub.com/apyhub/service/svg-to-png-conversion) when an email client or document tool needs a raster image, then bundle it into a report with the [Image to PDF API](https://apyhub.com/apyhub/service/convert-image-to-pdf). For category totals in the same report, use the [Bar Graph API](https://apyhub.com/apyhub/service/generate-bar-graph). AI agents can generate these heatmaps through ApyHub MCP. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/generate-simple-heatmap-chart * * * --- title: Generate Donut Graph API slug: simple-donut-chart-generation url: https://apyhub.com/apyhub/service/simple-donut-chart-generation provider: ApyHub categories: [Smart Generation] tags: [donut, chart, generate, graph] auth: api_key version: 1.0 service_type: sync endpoints: 2 atoms: 60 --- # Generate Donut Graph API Generate donut chart images from a title and labeled data. Returns a binary image or a pre-signed URL for dashboards, reports, and breakdowns. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/simple-donut-chart-generation/download` | What it does Generates a donut chart image from the request body and returns it as binary data. The… | 60 | | POST | `https://api.eu.apyhub.com/apyhub/simple-donut-chart-generation/link` | What it does Generates a donut chart and returns a pre-signed URL for the generated chart image. Re… | 60 | ## Endpoint reference ### Generate donut chart image `POST https://api.eu.apyhub.com/apyhub/simple-donut-chart-generation/download` · 60 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `data` | body | array of object | yes | | | `data[].color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `data[].label` | body | string | yes | Example: `Active`. | | `data[].value` | body | number | yes | Example: `72`. | | `theme` | body | string | no | Chart theme. One of: light, dark. Default: `light`. Example: `light`. | | `title` | body | string | yes | Example: `Subscription Status Breakdown`. | | `slices` | body | array of object | no | Alias for data. Use either data or slices, not both. | | `slices[].color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `slices[].label` | body | string | yes | Example: `Active`. | | `slices[].value` | body | number | yes | Example: `72`. | | `output` | query | string | no | Example: `subscription-status-donut-chart`. | #### Quickstart Create a donut chart image from a title and slice data, then download the generated binary file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/simple-donut-chart-generation/download?output=subscription-status-donut-chart" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "title": "Subscription Status Breakdown", "data": [ { "label": "Active", "value": 72, "color": "10B981" }, { "label": "Trial", "value": 18, "color": "3B82F6" }, { "label": "Cancelled", "value": 10, "color": "EF4444" } ] }' ``` #### What you'll get back Returns a binary file (`string` with `format: "binary"`), which is the generated donut chart image. ### Generate donut chart link `POST https://api.eu.apyhub.com/apyhub/simple-donut-chart-generation/link` · 60 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `data` | body | array of object | yes | | | `data[].color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `data[].label` | body | string | yes | Example: `Active`. | | `data[].value` | body | number | yes | Example: `72`. | | `theme` | body | string | no | Chart theme. One of: light, dark. Default: `light`. Example: `light`. | | `title` | body | string | yes | Example: `Subscription Status Breakdown`. | | `slices` | body | array of object | no | Alias for data. Use either data or slices, not both. | | `slices[].color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `slices[].label` | body | string | yes | Example: `Active`. | | `slices[].value` | body | number | yes | Example: `72`. | | `output` | query | string | no | Example: `subscription-status-donut-chart`. | #### Quickstart Generate a donut chart image link from a title and chart data. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/simple-donut-chart-generation/link?output=subscription-status-donut-chart" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "title": "Subscription Status Breakdown", "data": [ { "color": "10B981", "label": "Active", "value": 72 }, { "color": "3B82F6", "label": "Trial", "value": 18 }, { "color": "EF4444", "label": "Cancelled", "value": 10 } ] }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed URI for the generated chart image. ```json { "data": "https://apyhub-outgoing.s3.eu-west-1.amazonaws.com/mono-go/chart_generator/general/chart_generator_2026-08-07_9f50ff77.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIARJOHWS6LWTUUGYPI%2F20260807%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20260807T130606Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&response-content-disposition=inline&response-content-type=image%2Fpng&X-Amz-Signature=eebbdbf6e5651b9e222d2b4e2da92f0d4ad500057415f364097d98e14fa73563" } ``` ## About ## What it does Donut Chart Generator creates a donut chart from your data and returns either a downloadable chart image or a pre-signed image link. Send a title, a data array, and an optional theme; each data item can include a label, value, and hex color. Use `data` to define the chart segments. Each item must include `label` and `value`, and `color` is optional as a 6-character hex string without the `#`. The `theme` can be `light` or `dark`, with `light` as the default. The service also accepts `slices` as a deprecated alias for `data`, so you can keep older integrations working while you migrate. Choose `POST /download` when you want the generated chart image itself. It returns a binary response suitable for direct file handling. Choose `POST /link` when you want a JSON response containing a `data` field with a pre-signed URL to the generated chart image. This is useful when you need charts for dashboards, reports, status pages, or automated notifications where the visualization is built from live application data. You control the title and segment labels, so the chart can reflect subscription breakdowns, sales mix, usage tiers, or any other labeled distribution. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/simple-donut-chart-generation * * * --- title: DNS Batch Lookup API slug: dns-batch-lookup url: https://apyhub.com/apyhub/service/dns-batch-lookup provider: ApyHub categories: [Developer Tools] tags: [dns-lookup, dns, batch-lookup, domain-resolution, ptr-lookup, mx-records] auth: api_key version: 1.0 service_type: sync endpoints: 1 atoms: 100 --- # DNS Batch Lookup API Batch resolve domains or IPs for A, AAAA, MX, NS, TXT, CNAME, and PTR records. Returns per-row status plus record data for every query. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/dns-batch-lookup` | What it does Performs up to 25 DNS lookups in a single request. You send a list of queries, and the… | 100 | ## Endpoint reference ### Batch DNS lookups (max 25) `POST https://api.eu.apyhub.com/apyhub/dns-batch-lookup` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `queries` | body | array of object | yes | | | `queries[].host` | body | string | yes | Domain, FQDN, or IP (for PTR). | | `queries[].type` | body | string | no | Omit for A. One of: A, AAAA, MX, NS, TXT, CNAME, PTR. Default: `A`. | #### Quickstart Look up DNS records for one or more hosts in a single batch request. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/dns-batch-lookup" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "queries": [ { "host": "google.com" } ] }' ``` #### What you'll get back Returns a JSON object with a `data` object. Inside `data`, `results` is an array of DNS lookup results; each item includes `status`, `host`, and `type`, and may also include record-specific fields like `addresses`, `mx`, `names`, `ptr`, `txt`, or `error` depending on the query. ```json { "data": { "results": [ { "status": "OK", "host": "apyhub.com", "type": "A", "addresses": [ "188.114.96.3", "188.114.97.3" ] }, { "status": "OK", "host": "google.com", "type": "A", "addresses": [ "172.217.22.14" ] } ] } } ``` ## About ## What it does DNS Batch Lookup lets you send up to 25 host lookups in one request and get a per-row DNS answer back. Use it when you need to resolve domains or IPs for PTR lookups without making one network call at a time. Each query in the `queries` array accepts a `host` and an optional `type`. Supported record types are `A`, `AAAA`, `MX`, `NS`, `TXT`, `CNAME`, and `PTR`; omit `type` to query `A`. The response returns `data.results`, where every result includes `status`, `host`, and `type`. Depending on the record type, you may also get `addresses`, `names`, `txt`, `mx`, or `ptr`. For failed rows, `status` is `ERROR` and an `error` field explains the failure. The `status` field helps you distinguish between a valid answer (`OK`), a non-existent name (`NXDOMAIN`), an existing name with no records of the requested type (`NODATA`), and row-level batch failures (`ERROR`). That makes it straightforward to normalize DNS checks in onboarding flows, security tooling, inventory audits, or infrastructure monitoring. If you need to validate multiple domains, inspect mail exchanger records, or reverse-resolve IP addresses in bulk, DNS Batch Lookup keeps the response structured and easy to process. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/dns-batch-lookup * * * --- title: Convert WebP to PNG API slug: webp-to-png-conversion url: https://apyhub.com/apyhub/service/webp-to-png-conversion provider: ApyHub categories: [File Conversion] tags: [webp-conversion, png-conversion, image-transformation, image-format, file-conversion] auth: api_key version: 1.0 service_type: sync endpoints: 4 atoms: 30 --- # Convert WebP to PNG API Convert WebP images to PNG from file uploads or image URLs. Download the PNG directly or get a signed URL for the converted file. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/webp-to-png-conversion/multi-part/download` | What it does Converts an uploaded WebP file to PNG and returns the converted file as binary content… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/webp-to-png-conversion/multi-part/link` | What it does Uploads a WebP file as multipart form data, converts it to PNG, and returns a signed U… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/webp-to-png-conversion/url/download` | What it does Converts a WebP image fetched from a public URL into a PNG file and returns the result… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/webp-to-png-conversion/url/link` | What it does Fetches a WebP image from a public URL, converts it to PNG, and returns a JSON object… | 30 | ## Endpoint reference ### Convert WebP to PNG (multipart upload, download file) `POST https://api.eu.apyhub.com/apyhub/webp-to-png-conversion/multi-part/download` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Upload a WebP file and optionally name the download via `output`. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/webp-to-png-conversion/multi-part/download?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.webp" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the converted PNG output. Since the response is binary, there is no JSON object to sample here. ### Convert WebP to PNG (multipart upload, return signed URL) `POST https://api.eu.apyhub.com/apyhub/webp-to-png-conversion/multi-part/link` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Upload a WEBP file to convert it to PNG, and optionally name the output via the `output` query parameter. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/webp-to-png-conversion/multi-part/link?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.webp" ``` #### What you'll get back Returns a JSON object with a `data` string field containing the resulting file URI. ```json { "data": "https://apyhub-outgoing.s3.eu-west-1.amazonaws.com/mono-go/image-processor/general/image_2026-08-07_a49e3037.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIARJOHWS6LWTUUGYPI%2F20260807%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20260807T123841Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&response-content-disposition=inline&response-content-type=image%2Fpng&X-Amz-Signature=0af6a52eb5b6988238714ec9b6642783958e664bc3d0bffa061d02719fc147b1" } ``` ### Convert WebP to PNG (fetch by URL, download file) `POST https://api.eu.apyhub.com/apyhub/webp-to-png-conversion/url/download` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL of the WebP image to convert. Example: `https://assets.apyhub.com/samples/sample.webp`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Convert a public WebP image URL to PNG by sending the image URL in the JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/webp-to-png-conversion/url/download?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.webp"}' ``` #### What you'll get back Returns a binary file containing the converted PNG image. ### Convert WebP to PNG (fetch by URL, return signed URL) `POST https://api.eu.apyhub.com/apyhub/webp-to-png-conversion/url/link` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL of the WebP image to convert. Example: `https://assets.apyhub.com/samples/sample.webp`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Convert a public WebP image URL to PNG by sending its URL in the JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/webp-to-png-conversion/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.webp"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the PNG file URL. ```json { "data": "https://apyhub-outgoing.s3.eu-west-1.amazonaws.com/mono-go/image-processor/general/image_2026-08-07_9203c793.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIARJOHWS6LWTUUGYPI%2F20260807%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20260807T123933Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&response-content-disposition=inline&response-content-type=image%2Fpng&X-Amz-Signature=7795ee3653b3b30f79b8b2c3ba48568fb8a5c300076cbc4442a35163e243e125" } ``` ## About ## What it does WebP to PNG Converter turns a WebP image into a PNG, either from a multipart file upload or from a publicly accessible image URL. You can choose to download the converted file directly or receive a signed URL in the response. Use the multipart endpoints when you already have the image in your request body: send `file`, and optionally set `output` as a query parameter. Use the URL endpoints when the source image is already hosted elsewhere: send `url` in the body, plus the optional `output` query parameter. The download endpoints return binary PNG data. The link endpoints return an object with a `data` field containing a URI. This is a fit for image pipelines that need PNG output for browser compatibility, design tooling, or downstream processing that does not handle WebP reliably. It is also useful when you need to convert remote assets without downloading and re-uploading them yourself. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/webp-to-png-conversion * * * --- title: Convert WebP to JPEG API slug: webp-to-jpeg-conversion url: https://apyhub.com/apyhub/service/webp-to-jpeg-conversion provider: ApyHub categories: [File Conversion, File Manipulation] tags: [webp-conversion, jpeg-conversion, image-conversion, image-processing, file-conversion] auth: api_key version: 1.0 service_type: sync endpoints: 4 atoms: 30 --- # Convert WebP to JPEG API Convert WebP images to JPEG from a URL or multipart upload. Returns a binary file or a signed download URL for downstream use. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/webp-to-jpeg-conversion/url/link` | What it does Converts a WebP image fetched from a public URL into JPEG format and returns the resul… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/webp-to-jpeg-conversion/multi-part/download` | What it does Converts an uploaded WebP file to a JPEG file and returns the converted file as binary… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/webp-to-jpeg-conversion/multi-part/link` | What it does Converts an uploaded WebP file to JPEG and returns a signed URL in the response. The r… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/webp-to-jpeg-conversion/url/download` | What it does Converts a WebP image fetched from a public URL into a JPEG file and returns the conve… | 30 | ## Endpoint reference ### Convert WebP to JPEG (fetch by URL, return signed URL) `POST https://api.eu.apyhub.com/apyhub/webp-to-jpeg-conversion/url/link` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL of the WebP image to convert. Example: `https://assets.apyhub.com/samples/sample.webp`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Convert a publicly accessible WebP image from a URL to JPEG. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/webp-to-jpeg-conversion/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.webp"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the URI of the converted JPEG file. ```json { "data": "https://apyhub-outgoing.s3.eu-west-1.amazonaws.com/mono-go/image-processor/general/image_2026-08-07_e31eef47.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIARJOHWS6LWTUUGYPI%2F20260807%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20260807T122633Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&response-content-disposition=inline&response-content-type=image%2Fjpeg&X-Amz-Signature=f4928ac6fe65c7c547dd010620526b47c18290057dcd9b25253aa8d409aa9a84" } ``` ### Convert WebP to JPEG (multipart upload, download file) `POST https://api.eu.apyhub.com/apyhub/webp-to-jpeg-conversion/multi-part/download` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Upload a WebP file to convert it and download the JPEG result. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/webp-to-jpeg-conversion/multi-part/download" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.webp" ``` #### What you'll get back Returns a binary file containing the converted JPEG image. ### Convert WebP to JPEG (multipart upload, return signed URL) `POST https://api.eu.apyhub.com/apyhub/webp-to-jpeg-conversion/multi-part/link` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Upload a WebP file link and get back a JPEG download URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/webp-to-jpeg-conversion/multi-part/link?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.webp" ``` #### What you'll get back Returns a JSON object with a `data` string field containing the resulting file URI. ```json { "data": "https://apyhub-outgoing.s3.eu-west-1.amazonaws.com/mono-go/image-processor/general/image_2026-08-07_2d086ed6.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIARJOHWS6LWTUUGYPI%2F20260807%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20260807T122758Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&response-content-disposition=inline&response-content-type=image%2Fjpeg&X-Amz-Signature=dcd75b4ce48d6e366fc4fa1e9e9ef3eeb9b3b19e8ee3842b77eb856e3035e126" } ``` ### Convert WebP to JPEG (fetch by URL, download file) `POST https://api.eu.apyhub.com/apyhub/webp-to-jpeg-conversion/url/download` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL of the WebP image to convert. Example: `https://assets.apyhub.com/samples/sample.webp`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Convert a public WebP image URL to JPEG and download the result. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/webp-to-jpeg-conversion/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.webp"}' ``` #### What you'll get back Returns a binary file response containing the converted JPEG image. ## About ## What it does WebP to JPEG Converter turns WebP images into JPEG files. You can send a publicly accessible image URL and get back a signed download URL, or upload a file with multipart form data and either download the converted JPEG directly or receive a signed URL. Use the URL-based endpoints when the image already lives on a public asset host. Send `url` in the request body, and the response returns `data` as a URI. Use the multipart endpoints when you have the file locally and want either a binary JPEG response or a signed URL for later download. This is a straightforward fit for pipelines that need JPEG output for older browsers, CMS imports, email templates, or systems that do not accept WebP. Keep the conversion step isolated, and pass the converted image into the rest of your workflow without adding custom image handling code. WebP to JPEG Converter keeps the interface narrow: the request body contains either `url` or `file`, and the response is either a binary file or a `data` URI, depending on the route you choose. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/webp-to-jpeg-conversion * * * --- title: Convert WebP to AVIF API slug: webp-to-avif-conversion url: https://apyhub.com/apyhub/service/webp-to-avif-conversion provider: ApyHub categories: [File Conversion, File Manipulation] tags: [webp-conversion, avif, image-conversion, image-processing, file-conversion] auth: api_key version: 1.0 service_type: sync endpoints: 4 atoms: 30 --- # Convert WebP to AVIF API Convert WebP images to AVIF from a public URL or multipart upload. Returns binary file downloads or a signed URL for the converted image. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/webp-to-avif-conversion/url/download` | What it does Converts a WebP image fetched from a publicly accessible URL into an AVIF file and ret… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/webp-to-avif-conversion/url/link` | What it does Converts a WebP image fetched from a publicly accessible URL into AVIF, then returns t… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/webp-to-avif-conversion/multi-part/download` | What it does Converts an uploaded WebP file to AVIF and returns the converted file as a binary resp… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/webp-to-avif-conversion/multi-part/link` | What it does Converts an uploaded WebP file to AVIF and returns a signed URL in the response. The r… | 30 | ## Endpoint reference ### Convert WebP to AVIF (fetch by URL, download file) `POST https://api.eu.apyhub.com/apyhub/webp-to-avif-conversion/url/download` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL of the WebP image to convert. Example: `https://assets.apyhub.com/samples/sample.webp`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Convert a WebP image from a public URL to AVIF by sending the source URL in the JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/webp-to-avif-conversion/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.webp"}' ``` #### What you'll get back Returns a binary file response containing the converted AVIF output. ### Convert WebP to AVIF (fetch by URL, return signed URL) `POST https://api.eu.apyhub.com/apyhub/webp-to-avif-conversion/url/link` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL of the WebP image to convert. Example: `https://assets.apyhub.com/samples/sample.webp`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Convert a public WebP image URL to AVIF by sending the image URL in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/webp-to-avif-conversion/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.webp"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the resulting AVIF file URL. ```json { "data": "https://apyhub-outgoing.s3.eu-west-1.amazonaws.com/mono-go/image-processor/general/image_2026-08-07_cf9f3365.avif?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIARJOHWS6LWTUUGYPI%2F20260807%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20260807T121820Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&response-content-disposition=inline&response-content-type=image%2Favif&X-Amz-Signature=d1199c81abb9826d98ffecb1b1755209881fc5266219bb0ed09d6f343c8b0254" } ``` ### Convert WebP to AVIF (multipart upload, download file) `POST https://api.eu.apyhub.com/apyhub/webp-to-avif-conversion/multi-part/download` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Upload a WebP file to download its AVIF conversion. This example includes the required file upload and the optional output name query parameter. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/webp-to-avif-conversion/multi-part/download?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.webp" ``` #### What you'll get back Returns a binary file which is the converted AVIF download. ### Convert WebP to AVIF (multipart upload, return signed URL) `POST https://api.eu.apyhub.com/apyhub/webp-to-avif-conversion/multi-part/link` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Upload a WebP file from your machine and get back an AVIF file URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/webp-to-avif-conversion/multi-part/link?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.webp" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI to the converted file. ```json { "data": "https://apyhub-outgoing.s3.eu-west-1.amazonaws.com/mono-go/image-processor/general/image_2026-08-07_7fc14914.avif?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIARJOHWS6LWTUUGYPI%2F20260807%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20260807T122308Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&response-content-disposition=inline&response-content-type=image%2Favif&X-Amz-Signature=434ea2270546bc21021a1488a6cfd8337337c4abc26a396d2e07b8fefa71e675" } ``` ## About ## What it does WebP to AVIF Converter turns a WebP image into an AVIF file. Send either a public image URL or a multipart file upload, and get back the converted image as a download or a signed URL. Use the URL-based endpoints when the source image is already hosted publicly. Send `body.url`, and choose the `output` query parameter if you want a named output. The service returns either binary file data or a JSON response with a `data` URI, depending on the endpoint you call. Use the multipart endpoints when you already have the file in your request. Send `body.file`, and again choose between direct download and signed-link responses. That makes it easy to plug into upload flows, media pipelines, or server-side image jobs where you want AVIF output without handling conversion locally. Typical uses include optimizing product images, preparing web assets for modern browsers, or converting uploaded WebP files before storage or delivery. The API is limited to WebP input and AVIF output, so the request and response format stay predictable. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/webp-to-avif-conversion * * * --- title: Convert SVG to PNG API slug: svg-to-png-conversion url: https://apyhub.com/apyhub/service/svg-to-png-conversion provider: ApyHub categories: [File Conversion, File Manipulation] tags: [svg-conversion, png-conversion, image-transformation, file-conversion, vector-images] auth: api_key version: 1.0 service_type: sync endpoints: 4 atoms: 30 --- # Convert SVG to PNG API Convert SVGs from a URL or multipart upload into PNG. Returns binary output or a signed download URL for previews and image delivery. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/svg-to-png-conversion/url/download` | What it does Converts an SVG file available at a public URL into a PNG and returns the generated fi… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/svg-to-png-conversion/url/link` | What it does Converts an SVG available at a URL into a PNG image. The request sends the SVG URL, an… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/svg-to-png-conversion/multi-part/download` | What it does Uploads an SVG image as multipart form data and converts it to a PNG file for download… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/svg-to-png-conversion/multi-part/link` | What it does Converts an uploaded SVG file to PNG and returns a JSON object containing a signed URL… | 30 | ## Endpoint reference ### Convert SVG to PNG (URL, download) `POST https://api.eu.apyhub.com/apyhub/svg-to-png-conversion/url/download` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | no | Publicly accessible URL of the SVG to convert. Example: `https://assets.apyhub.com/samples/sample.svg`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Convert an SVG from a public URL into a PNG by sending the source URL in JSON. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/svg-to-png-conversion/url/download?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.svg"}' ``` #### What you'll get back Returns the PNG file as binary data. ### Convert SVG to PNG (URL, signed URL) `POST https://api.eu.apyhub.com/apyhub/svg-to-png-conversion/url/link` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | no | Publicly accessible URL of the SVG to convert. Example: `https://assets.apyhub.com/samples/sample.svg`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Convert a public SVG URL to a PNG link by sending the SVG URL in the JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/svg-to-png-conversion/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.svg"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI for the generated PNG. ```json { "data": "https://apyhub-outgoing.s3.eu-west-1.amazonaws.com/mono-go/image-processor/general/svg-png_2026-08-07_32d46571.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIARJOHWS6LWTUUGYPI%2F20260807%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20260807T121222Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&response-content-disposition=inline&response-content-type=image%2Fpng&X-Amz-Signature=36960ccf538afc215a4f441803e4175bb43dbb846b9b607ff4a6bbd389803ebd" } ``` ### Convert SVG to PNG (multipart, download) `POST https://api.eu.apyhub.com/apyhub/svg-to-png-conversion/multi-part/download` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | no | | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Upload an SVG image to download the PNG conversion. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/svg-to-png-conversion/multi-part/download" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.svg" ``` #### What you'll get back Returns a binary file containing the generated PNG image. ### Convert SVG to PNG (multipart, signed URL) `POST https://api.eu.apyhub.com/apyhub/svg-to-png-conversion/multi-part/link` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | no | | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Upload an SVG file to get back a PNG link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/svg-to-png-conversion/multi-part/link?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.svg" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI for the generated PNG. ```json { "data": "https://apyhub-outgoing.s3.eu-west-1.amazonaws.com/mono-go/image-processor/general/svg-png_2026-08-07_d0ffb6b9.png?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIARJOHWS6LWTUUGYPI%2F20260807%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20260807T121402Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&response-content-disposition=inline&response-content-type=image%2Fpng&X-Amz-Signature=3a3f7bd81a8472fd07571a38f13fd64a4ec95679fa6f625a8a36e05f307f159d" } ``` ## About ## What it does SVG to PNG Converter turns an SVG into a PNG from either a public URL or an uploaded file. Send the source image, choose whether you want a binary download or a signed URL, and get the converted PNG back. Use the `/url/download` and `/url/link` endpoints when the SVG is hosted at a publicly accessible URL. The request body takes `url`, and you can also pass `output` in the query. The download variant returns binary PNG data, while the link variant returns an object with a `data` field containing a URI. Use the `/multi-part/download` and `/multi-part/link` endpoints when you already have the SVG as multipart form data. These endpoints accept an `image` file in the body, plus the same optional `output` query field. The response format again depends on the endpoint: binary PNG for download, or a signed PNG URL in `data`. This is a good fit for generating preview images, rendering vector artwork into raster assets for systems that expect PNG, or converting uploaded design files into a format that's easier to store and deliver. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/svg-to-png-conversion * * * --- title: Convert JPEG to AVIF API slug: convert-jpeg-to-avif-api url: https://apyhub.com/apyhub/service/convert-jpeg-to-avif-api provider: ApyHub categories: [File Conversion, File Manipulation] tags: [jpeg-conversion, avif, image-conversion, image-processing, file-conversion] auth: api_key version: 1.0 service_type: sync endpoints: 4 atoms: 30 --- # Convert JPEG to AVIF API Convert JPEG images to AVIF from a public URL or multipart upload. Returns binary output or a signed download link for lighter web delivery. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-jpeg-to-avif-api/url/download` | What it does Converts a JPEG image fetched from a public URL into an AVIF file and returns the resu… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/convert-jpeg-to-avif-api/url/link` | What it does Converts a JPEG image fetched from a public URL into AVIF and returns the result as a… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/convert-jpeg-to-avif-api/multi-part/download` | What it does Converts an uploaded JPEG file to AVIF and returns the converted file as a binary resp… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/convert-jpeg-to-avif-api/multi-part/link` | What it does Converts an uploaded JPEG file to AVIF and returns a signed URL to the converted resul… | 30 | ## Endpoint reference ### Convert JPEG to AVIF (fetch by URL, download file) `POST https://api.eu.apyhub.com/apyhub/convert-jpeg-to-avif-api/url/download` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | no | Publicly accessible URL of the JPEG image to convert. Example: `https://assets.apyhub.com/samples/sample.jpg`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Convert a JPEG from a public URL to AVIF by sending the source URL in the JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-jpeg-to-avif-api/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.jpg"}' ``` #### What you'll get back Returns a binary file stream. The response body is the generated AVIF file. ### Convert JPEG to AVIF (fetch by URL, return signed URL) `POST https://api.eu.apyhub.com/apyhub/convert-jpeg-to-avif-api/url/link` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | no | Publicly accessible URL of the JPEG image to convert. Example: `https://assets.apyhub.com/samples/sample.jpg`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Convert a JPEG from a public URL to AVIF by sending the image URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-jpeg-to-avif-api/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.jpg"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the URI of the converted AVIF file. ```json { "data": "https://apyhub-outgoing.s3.eu-west-1.amazonaws.com/mono-go/image-processor/general/image_2026-08-07_e948c39a.avif?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIARJOHWS6LWTUUGYPI%2F20260807%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20260807T114923Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&response-content-disposition=inline&response-content-type=image%2Favif&X-Amz-Signature=fe8fe7e1b917f9ae75aafae1cc7c0d58a283b0936a506830be7c48308c2d022c" } ``` ### Convert JPEG to AVIF (multipart upload, download file) `POST https://api.eu.apyhub.com/apyhub/convert-jpeg-to-avif-api/multi-part/download` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | yes | The source image file in JPEG/JPG format. Mandatory. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Upload a JPEG file and optionally name the output file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-jpeg-to-avif-api/multi-part/download?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.jpg" ``` #### What you'll get back Returns a binary file (`string` with `format: "binary"`) — the converted AVIF image. ### Convert JPEG to AVIF (multipart upload, return signed URL) `POST https://api.eu.apyhub.com/apyhub/convert-jpeg-to-avif-api/multi-part/link` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | yes | The source image file in JPEG/JPG format. Mandatory. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Upload a JPEG file to generate an AVIF link, optionally naming the output with the `output` query parameter. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-jpeg-to-avif-api/multi-part/link?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.jpg" ``` #### What you'll get back Returns a JSON object with a `data` string field containing the generated AVIF file URL. ```json { "data": "https://apyhub-outgoing.s3.eu-west-1.amazonaws.com/mono-go/image-processor/general/my-invite.avif" } ``` ## About ## What it does JPEG to AVIF Converter turns a JPEG image into an AVIF file from either a public URL or a multipart upload. You choose whether you want the converted image returned as binary download data or as a signed URL in the response. Use the URL-based endpoints when the source image is already hosted somewhere accessible on the web. Send the `url` in the request body, and you can also pass an `output` query value. If you prefer to upload the image directly, use the multipart endpoints and provide the required `file` field. This is a fit for image delivery pipelines where AVIF reduces payload size without changing your source asset flow. For example, you can convert product images, editorial images, or uploaded media before storing or serving them in a browser-friendly format. The responses stay simple: the download variants return binary AVIF content, and the link variants return an object with a `data` field containing a signed URI. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-jpeg-to-avif-api * * * --- title: "Convert Date & Time Formats API" slug: convert-date-time url: https://apyhub.com/creightonnick0/service/convert-date-time provider: nick creighton categories: [Developer Tools, Geolocation, Standard Data] tags: [date-time, timestamp-conversion, timezone, iso-8601, epoch] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Convert Date & Time Formats API Convert ISO strings, unix epochs, or the current time into UTC, localized, and relative formats. Returns weekday, week number, and epoch values. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/creightonnick0/convert-date-time` | What it does Converts a date/time input into multiple output formats, including UTC representations… | 10 | ## Endpoint reference ### Convert epoch/ISO time to many formats + timezone + relative time. `POST https://api.eu.apyhub.com/creightonnick0/convert-date-time` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `tz` | body | string | no | IANA timezone for localized output Example: `America/New_York`. | | `value` | body | string | no | ISO 8601 string, unix epoch, or now Example: `2026-08-02T12:00:00Z`. | #### Quickstart Convert an ISO 8601 date/time into UTC and a localized timezone format. ```bash curl -X POST "https://api.eu.apyhub.com/creightonnick0/convert-date-time" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "tz": "America/New_York", "value": "2026-08-02T12:00:00Z" }' ``` #### What you'll get back Returns a JSON object with fields for the converted date/time in UTC and the requested timezone, plus useful derived values like weekday, ISO week, relative time, and epoch timestamps. Top-level fields include `input` (string), `iso_utc` (string), `weekday` (string), `iso_week` (integer), `relative` (string), `human_utc` (string), `localized` (object with `tz`, `iso`, `human`, and `utc_offset`), `day_of_year` (integer), `epoch_millis` (integer), and `epoch_seconds` (integer). ```json { "input": "2026-08-02T12:00:00Z", "iso_utc": "2026-08-02T12:00:00.000Z", "weekday": "Sunday", "iso_week": 31, "relative": "in 6 months", "human_utc": "Sun, 02 Aug 2026 12:00:00 GMT", "localized": { "tz": "America/New_York", "iso": "2026-08-02T08:00:00.000-04:00", "human": "Sun, 02 Aug 2026 08:00:00 GMT-4", "utc_offset": "-04:00" }, "day_of_year": 215, "epoch_millis": 1785672000000, "epoch_seconds": 1785672000 } ``` ## About ## What it does Date Time Converter turns a single timestamp into the formats developers actually use. Send an ISO 8601 value, a unix epoch, or `now`, optionally include an IANA timezone, and get back normalized UTC time, human-readable output, relative time, and localized details. The response includes the original input, `iso_utc`, `weekday`, `iso_week`, `relative`, `human_utc`, `day_of_year`, `epoch_millis`, and `epoch_seconds`. When you pass `tz`, the `localized` object returns the timezone name, localized ISO string, localized human-readable string, and UTC offset. That makes it useful for log viewers, scheduling interfaces, analytics dashboards, and any system that needs to present the same moment in both machine-friendly and user-friendly forms. Use Date Time Converter when you need to parse incoming event times, display timestamps in a user's timezone, or compare stored values across systems that disagree on time format. It is a straightforward way to convert one date-time value into multiple representations without rebuilding the logic in your application. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/creightonnick0/service/convert-date-time * * * --- title: MIME Type Lookup from File Name API slug: mime-type-lookup url: https://apyhub.com/creightonnick0/service/mime-type-lookup provider: nick creighton categories: [Developer Tools, File Manipulation] tags: [mime-types, file-metadata, content-type, file-lookup, developer-tools] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # MIME Type Lookup from File Name API Map filenames or extensions to MIME types, or reverse a MIME type back to a filename-style value. Built for uploads, headers, and validation. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/creightonnick0/mime-type-lookup` | What it does Maps a filename or extension to its MIME type, or performs the reverse lookup when req… | 10 | ## Endpoint reference ### Map a filename/extension to its MIME type (and back). `POST https://api.eu.apyhub.com/creightonnick0/mime-type-lookup` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | body | string | no | forward (default) \| reverse Example: `forward`. | | `filename` | body | string | yes | A filename, extension, or (in reverse mode) a MIME type Example: `photo.webp`. | #### Quickstart Look up the MIME type for a filename by sending the required `filename` in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/creightonnick0/mime-type-lookup" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"filename":"photo.webp"}' ``` #### What you'll get back Returns a JSON object with a structured response. The output schema does not declare any top-level fields, so the exact response shape is not specified here. ```json { "mode": "forward", "input": "photo.webp", "extension": ".webp", "mime_type": "image/webp", "known": true, "is_text": false, "charset": null, "encoding": null, "canonical_extension": ".webp" } ``` ## About ## What it does MIME Type Lookup maps a filename or file extension to its MIME type, and can also work in reverse from a MIME type back to a filename-style value. Send a `filename` in the request body, and set `mode` to `forward` or `reverse` when you need the opposite lookup. Use it when you need to classify uploaded files, populate download headers, or validate file handling logic against the content type expected by your application. The service is useful anywhere file metadata is derived from a name, extension, or MIME string, especially in upload flows, storage systems, and integration code that needs a deterministic mapping. The request schema is small and explicit: the body requires `filename`, and `mode` is optional. The response is a structured JSON object, so you can inspect the lookup result in whatever shape the API returns without guessing at file parsing rules. If your system needs a quick MIME mapping step before processing, MIME Type Lookup keeps that logic in one place and avoids hard-coding extension tables in application code. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/creightonnick0/service/mime-type-lookup * * * --- title: Convert Number Bases API slug: convert-number-bases url: https://apyhub.com/creightonnick0/service/convert-number-bases provider: nick creighton categories: [Developer Tools] tags: [number-conversion, base-conversion, radix, integer-formatting, developer-tools] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Convert Number Bases API Convert integer strings between bases 2 and 36, with auto-detection for 0x, 0o, and 0b prefixes. Useful for radix formatting and mixed-base input. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/creightonnick0/convert-number-bases` | What it does Converts an integer string from one base to another, using the request body fields to… | 10 | ## Endpoint reference ### Convert integers between any bases (2-36). `POST https://api.eu.apyhub.com/creightonnick0/convert-number-bases` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `value` | body | string | yes | The number to convert (may include 0x/0o/0b prefix) Example: `0xff`. | | `to_base` | body | integer | no | Target base for the result, 2-36 (default 16) Example: `2`. | | `from_base` | body | integer | no | Base of the input, 2-36, or 0 to auto-detect (default 0) Example: `0`. | #### Quickstart Convert a number from one base to another by sending the value and target base. ```bash curl -X POST "https://api.eu.apyhub.com/creightonnick0/convert-number-bases" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"value":"0xff","to_base":2,"from_base":0}' ``` #### What you'll get back Returns the converted value in the requested base along with common number representations such as binary, octal, decimal, hexadecimal, bit length, and byte size. ```json { "input": "0xff", "decimal": 255, "binary": "11111111", "octal": "377", "hex": "ff", "to_base": 2, "result": "11111111", "bit_length": 8, "byte_size": 1, "is_negative": false } ``` ## About ## What it does Number Base Converter converts integers between bases 2 through 36. Send a string value, optionally set from_base, and choose a to_base for the output. It accepts common prefixes like `0x`, `0o`, and `0b`, so you can pass hexadecimal, octal, binary, or plain base-N strings without pre-processing them first. Use it when you need to normalize numeric identifiers, display values in a different radix, or support developer-facing inputs that may arrive in mixed formats. The input schema only requires `value`, with `to_base` and `from_base` available when you need to override the defaults. `from_base` can also be set to `0` to auto-detect the input base. The endpoint returns a structured JSON response. That makes it easy to chain into internal tools, code generators, validators, or admin workflows where numbers need to be reformatted before storage, comparison, or display. If your app handles bit flags, color codes, hashes, or low-level debugging values, Number Base Converter gives you a simple way to translate them without writing base conversion logic yourself. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/creightonnick0/service/convert-number-bases * * * --- title: JWT Decoder API slug: decode-jwt url: https://apyhub.com/creightonnick0/service/decode-jwt provider: nick creighton categories: [Developer Tools, "Security & Privacy"] tags: [jwt, token-decoding, authentication, security-tools, developer-tools] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # JWT Decoder API Decode a JWT and inspect its header, payload, and claims without verifying the signature. Built for debugging auth flows and token contents. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/creightonnick0/decode-jwt` | What it does Decodes a JWT without verifying its signature and returns the header, payload, algorit… | 10 | ## Endpoint reference ### Decode & inspect a JWT (header, payload, claims) without verifying. `POST https://api.eu.apyhub.com/creightonnick0/decode-jwt` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `token` | body | string | yes | The JWT to decode (three dot-separated base64url segments) Example: `eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIn0.sig`. | #### Quickstart Decode a JWT by sending it in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/creightonnick0/decode-jwt" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxIn0.sig"}' ``` #### What you'll get back Returns the decoded header and payload, the signing algorithm, human-readable timestamps for standard claims, and an `expired` flag — all without verifying the signature. ```json { "header": { "alg": "HS256" }, "payload": { "sub": "1" }, "algorithm": "HS256", "type": null, "signature": "sig", "readable_claims": {}, "expired": null, "seconds_until_expiry": null, "verified": false, "note": "Signature is NOT verified. This tool only decodes the token." } ``` ## About ## What it does JWT Decoder decodes and inspects a JSON Web Token without verifying its signature. Send a single `token` string in the request body, and get back a structured JSON response for reading the token header, payload, and claims. Use it when you need to debug authentication flows, inspect tokens from a client or gateway, or check what data is embedded in a bearer token before you wire up verification logic. Because it only decodes the token, it is useful for quick inspection during development and troubleshooting. The input is a three-part JWT in base64url form. The service does not ask for keys or secrets, and it does not perform signature validation. That makes it a lightweight utility for looking at token contents, not for trusting them. JWT Decoder fits into backend tooling, auth diagnostics, and API support workflows wherever you need to read a token’s structure fast. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/creightonnick0/service/decode-jwt * * * --- title: Generate IDs In Batch API slug: generate-id-batch url: https://apyhub.com/creightonnick0/service/generate-id-batch provider: nick creighton categories: [Developer Tools, "Security & Privacy"] tags: [uuid, ulid, nanoid, token-generation, identifier-generation] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Generate IDs In Batch API Generate batches of UUIDs, ULIDs, NanoIDs, hex strings, or short tokens in one call. Built for test data, fixtures, and temporary identifiers. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/creightonnick0/generate-id-batch` | What it does Generates a batch of identifiers in the format you choose. You can control how many ar… | 10 | ## Endpoint reference ### Generate UUID, ULID, NanoID, or short tokens in a batch. `POST https://api.eu.apyhub.com/creightonnick0/generate-id-batch` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | integer | no | Length for nanoid/hex/token (default 21) Example: `21`. | | `count` | body | integer | no | How many to generate (1-1000, default 1) Example: `5`. | | `format` | body | string | no | uuid4 \| uuid7 \| ulid \| nanoid \| hex \| token Example: `ulid`. | #### Quickstart Generate a batch of IDs with the default format by sending the required JSON fields. ```bash curl -X POST "https://api.eu.apyhub.com/creightonnick0/generate-id-batch" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"size":21,"count":5,"format":"ulid"}' ``` #### What you'll get back Returns the requested format, the count generated, the full list of identifiers, and the first identifier for convenience. ```json { "format": "ulid", "count": 5, "ids": [ "01J8X3ZK9M4P6QAY7B2R8VN0EW", "01J8X3ZK9NBTF5C1D9SXH3GJ4K", "01J8X3ZK9P7RT2M8VQ6YB0NC5W", "01J8X3ZK9Q3HS9K4WD1XF7RM2B", "01J8X3ZK9R8YN6T5PC2VG9WH3M" ], "first": "01J8X3ZK9M4P6QAY7B2R8VN0EW" } ``` ## About ## What it does Identifier Batch Generator creates batches of UUIDs, ULIDs, NanoIDs, hex strings, or short tokens from a single request. Send a `format`, plus optional `size` and `count`, and get back a structured JSON response suitable for fixtures, seed data, test records, or client-side temporary IDs. Use `count` to control how many identifiers you want, from 1 to 1000. Use `size` when generating `nanoid`, `hex`, or `token` values to set the length; it defaults to 21. The `format` field accepts `uuid4`, `uuid7`, `ulid`, `nanoid`, `hex`, or `token`, so you can match the identifier style your system already expects. This is a good fit for backend jobs, test setup scripts, and internal tooling where you need many unique values without writing your own generator. Keep your integration simple: choose the identifier type, set the batch size, and consume the JSON response in the same workflow that needs the IDs. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/creightonnick0/service/generate-id-batch * * * --- title: Convert Color Formats API slug: color-converter url: https://apyhub.com/creightonnick0/service/color-converter provider: nick creighton categories: [Developer Tools] tags: [color-conversion, css-colors, hex-rgb-hsl, palette-generation, accessibility] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Convert Color Formats API Convert a color string in hex, RGB, or HSL and get structured JSON back. Useful for palette generation, accessibility checks, and formatting. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/creightonnick0/color-converter` | What it does Converts a color into HEX, RGB, HSL, HSV, and CMYK formats. The response also includes… | 10 | ## Endpoint reference ### Convert a color `POST https://api.eu.apyhub.com/creightonnick0/color-converter` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `color` | body | string | yes | A color as hex (#rrggbb), rgb(), or hsl() Example: `#3498db`. | #### Quickstart Convert a color by sending it as JSON in the `color` field. ```bash curl -X POST "https://api.eu.apyhub.com/creightonnick0/color-converter" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"color":"#3498db"}' ``` #### What you'll get back Returns a JSON object containing the converted color in multiple formats, accessibility information, and generated color palettes. ```json { "input": "ffffff", "hex": "#ffffff", "rgb": { "r": 255, "g": 255, "b": 255 }, "rgb_string": "rgb(255, 255, 255)", "hsl": { "h": 0, "s": 0, "l": 100 }, "hsv": { "h": 0, "s": 0, "v": 100 }, "cmyk": { "c": 0, "m": 0, "y": 0, "k": 0 }, "luminance": 1, "readable_text_color": "black", "palette": { "complementary": "#ffffff", "analogous": [ "#ffffff", "#ffffff", "#ffffff" ], "triadic": [ "#ffffff", "#ffffff" ] } } ``` ## About ## What it does Color Converter takes a single color value and returns a structured JSON response for using that color across your product stack. Send a color in `#rrggbb`, `rgb()`, or `hsl()` format, and use the result to standardise design tokens, generate palette variants, or feed color data into UI tooling. Use Color Converter when you need to normalise user-supplied colors or move between common CSS color models without writing your own parsing logic. It is useful in design systems, theme editors, brand asset pipelines, and front-end tools that need consistent color handling. Because the endpoint accepts a single `color` value, it returns the color in multiple formats such as HEX, RGB, HSL, HSV, and CMYK, along with accessibility information and matching color palettes., it fits cleanly into validation steps, admin interfaces, and automation workflows where colors may arrive in mixed formats. The response includes color conversions, accessibility information, and generated color palettes that can be used directly in design and development workflows. If your app stores colors, renders previews, or checks contrast for accessible UI choices, Color Converter gives you a predictable way to transform and reuse color values without handling format conversions yourself. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/creightonnick0/service/color-converter * * * --- title: Market Trends and Growth Forecasting API slug: forecast-market-trends url: https://apyhub.com/namastesumalya/service/forecast-market-trends provider: Sumalya APIs categories: [Artificial Intelligence, Marketing] tags: [market-analysis, trend-forecasting, competitive-analysis, startup-research, growth-scoring] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 2000 alias: sumalya-market-trends-and-growth-forecasting-api --- # Market Trends and Growth Forecasting API Analyze a website for market trends, opportunity score, differentiation, and growth potential. Built for product research and competitor review. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/forecast-market-trends` | What it does Analyzes a website URL and returns a market forecast response with the analyzed URL, s… | 2000 | ## Endpoint reference ### Forecast market trends and growth for a given URL `POST https://api.eu.apyhub.com/namastesumalya/forecast-market-trends` · 2000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | The website URL representing the business or idea. Example: `https://notion.so`. | #### Quickstart Analyze a website URL with the required `url` field. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/forecast-market-trends" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://apyhub.com"}' ``` #### What you'll get back Returns a JSON object with top-level `url`, `tier`, and `timestamp` fields, plus a `forecasting` object. `forecasting` contains `keyTrends`, `marketScore`, `standOutScore`, `growthPotential`, `marketSentiment`, and `strategicAnalysis`. ```json { "url": "https://notion.so", "tier": "premium", "timestamp": "2026-03-29T19:04:07.946Z", "forecasting": { "keyTrends": [ "AI-driven Automation & Agents: A surging demand for embedded AI capabilities within productivity platforms." ], "marketScore": 90, "standOutScore": 88, "growthPotential": "Exponential", "marketSentiment": "Market sentiment is strongly positive, driven by demand for flexible, all-in-one workspace tools.", "strategicAnalysis": "Notion is executing a strong platform-expansion strategy, layering AI features atop its core collaborative document model." } } ``` ## About ## What it does Market Trend Forecast analyzes a business or idea from a website URL and returns a market outlook with trend signals, opportunity scoring, and a qualitative growth read. Send a URL in the request body, and the service returns the analyzed `url`, `tier`, `timestamp`, and a `forecasting` object. That forecasting payload includes `keyTrends`, `marketScore`, `standOutScore`, `growthPotential`, `marketSentiment`, and `strategicAnalysis`, so you can turn a single site into a structured market summary. Use it when you need a fast way to assess positioning for a startup, product page, or competitor site. For example, you can plug it into a lead-intake workflow to rank prospects, or use it during product research to compare how distinct an offering looks in a crowded category. Market Trend Forecast is built for lightweight market analysis from a public URL, making it useful anywhere you need an automated first pass on market opportunity and differentiation. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/forecast-market-trends * * * --- title: Content and Keyword Analysis API slug: analyze-content-keywords url: https://apyhub.com/namastesumalya/service/analyze-content-keywords provider: Sumalya APIs categories: [SEO] tags: [keyword-analysis, seo, content-audit, sentiment-analysis, readability] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 2000 alias: sumalya-content-and-keyword-analysis-api --- # Content and Keyword Analysis API Analyze a webpage for keywords, sentiment, readability, language, and word count. A single call covers SEO audits and editorial content reviews. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/analyze-content-keywords` | What it does Analyzes the content at a given URL and returns keyword, sentiment, readability, and t… | 2000 | ## Endpoint reference ### Analyze content and keywords for a given URL `POST https://api.eu.apyhub.com/namastesumalya/analyze-content-keywords` · 2000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | The website URL to analyze content from. Example: `https://example.com`. | #### Quickstart Analyze a webpage’s content keywords by sending its URL. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/analyze-content-keywords" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://apyhub.com"}' ``` #### What you'll get back Returns a JSON object with `url` and optional analysis details such as `tier`, `analysis`, and `technical`. The `analysis` object can include `keywords`, `sentiment`, and `readability`, while `technical` can include `language` and `wordCount`. ```json { "url": "https://example.com", "tier": "premium", "analysis": { "keywords": [ { "term": "Example", "score": 100 } ], "sentiment": "Neutral", "readability": { "tone": "Neutral and Informative", "level": "Easy to Read", "score": 78 } }, "technical": { "language": "en-US", "wordCount": 120 } } ``` ## About ## What it does Content Keyword Analyzer examines a webpage URL and returns a keyword-focused summary of the page. Send a URL, and you get back the analyzed URL plus structured content signals for search and content review. The response includes extracted keywords with relevance scores, overall sentiment, readability details, and technical metadata such as detected language and word count. It also includes a tier field so you can see the subscription level associated with the detail returned. Use Content Keyword Analyzer when you need to classify landing pages, check whether a page matches target search terms, or compare content quality across a set of URLs. It is useful for SEO workflows, content audits, and automated page triage where you need a quick signal from live web content. If you are building a content pipeline, this endpoint gives you the structured data needed to rank pages, spot topical gaps, or flag pages that are hard to read before they go live. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/analyze-content-keywords * * * --- title: Intelligent Competitor Mapping API slug: identify-competitors url: https://apyhub.com/namastesumalya/service/identify-competitors provider: Sumalya APIs categories: [Artificial Intelligence, Marketing] tags: [competitor-analysis, market-research, competitive-intelligence, website-analysis, sales-enrichment] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 2000 alias: sumalya-intelligent-competitor-mapping-api --- # Intelligent Competitor Mapping API Send a website URL and get its industry, niche and main competitors, each with an overlap score and a reason, plus a differentiation strategy. Try it free. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/identify-competitors` | What it does Identifies competitors for a given website URL and returns an analysis object describi… | 2000 | ## Endpoint reference ### Identify competitors for a given URL `POST https://api.eu.apyhub.com/namastesumalya/identify-competitors` · 2000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | The website URL for which competitors will be identified. Example: `https://slack.com`. | #### Quickstart Identify competitors for a website by sending its URL. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/identify-competitors" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://apyhub.com"}' ``` #### What you'll get back Returns a JSON object with fields such as `url` (`string`), `tier` (`string`), `timestamp` (`string`), and `marketAnalysis` (`object`). `marketAnalysis` contains `industry` (`string`), `competitors` (`array` of objects with `name`, `reason`, and `likelyOverlap`), `marketNiche` (`string`), and `differentiationStrategy` (`string`). ```json { "url": "https://slack.com", "tier": "premium", "timestamp": "2026-03-29T19:12:02.292Z", "marketAnalysis": { "industry": "AI Work Platform & Productivity Tools", "competitors": [ { "name": "Microsoft Teams", "reason": "Direct competitor offering integrated chat, video, and collaboration within the Microsoft 365 ecosystem.", "likelyOverlap": 95 } ], "marketNiche": "Enterprise Team Communication, Collaboration, and AI-powered Workflow Automation", "differentiationStrategy": "Slack can differentiate by deepening its AI-powered workflow automation and third-party app ecosystem." } } ``` ## About ## What it does The Intelligent Competitor Mapping API finds the competitors of any business from its website. Send a URL and get back the company's industry and market niche, a list of its main competitors with the reason each one competes and how much their audiences overlap, and a suggested way to stand out from them. It is one POST endpoint with a single `url` field. The results are in the `marketAnalysis` object: `industry` gives the broad classification, `marketNiche` the specific space the business operates in, and `competitors` a list where each rival has a `name`, a plain-language `reason` it was matched, and a `likelyOverlap` score from 0 to 100. `differentiationStrategy` adds a short recommendation on how the business could position itself against them. Sending `https://slack.com`, for example, returns Microsoft Teams with an overlap of 95. The analysis is generated by AI from what is publicly known about the business, so treat it as a fast starting point for research rather than a final market study. Sort by `likelyOverlap` to separate direct rivals from adjacent ones, and use `reason` to check each match before acting on it. Common uses include researching a prospect's competitors before a sales call, enriching company records in a CRM with industry, niche and main rivals, building a first competitive landscape for a new market, generating "alternatives to" and comparison page ideas, and monitoring how a client's competitive set changes over time. To compare two specific websites side by side, use the [Advanced Website Similarity Analysis API](https://apyhub.com/namastesumalya/service/analyze-website-similarity). For SEO data on a competitor's domain, such as traffic and rankings, use the [Advanced Domain Analysis API](https://apyhub.com/se-ranking/service/domain-analysis), and to see where the market is heading, try the [Market Trends and Growth Forecasting API](https://apyhub.com/namastesumalya/service/forecast-market-trends). You can try it right here in the playground. Start for free with 5 API calls a day, no card required, and find your own competitors before you commit. The API is also available through [ApyHub MCP](https://apyhub.com/mcp), so AI agents can map a company's competitors directly as part of account research or market analysis. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/identify-competitors * * * --- title: Convert Excel to PDF Job API slug: convert-excel-to-pdf url: https://apyhub.com/flowdocs/service/convert-excel-to-pdf provider: FlowDocs categories: [File Conversion] tags: [excel-to-pdf, spreadsheet-conversion, document-conversion, pdf-generation, file-conversion] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 1-100 --- # Convert Excel to PDF Job API Convert .xlsx, .xlsm, and .xls files into PDF as tracked jobs. Follow status, progress, and batch completion, then download the finished files. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/flowdocs/convert-excel-to-pdf` | What it does Converts one or more uploaded Excel files (.xlsx, .xlsm, .xls) to PDF. The request sub… | 100 | | GET | `https://api.eu.apyhub.com/flowdocs/convert-excel-to-pdf/status/:job_id` | What it does Checks the current status of an Excel-to-PDF conversion job, returning the job identif… | 1 | | GET | `https://api.eu.apyhub.com/flowdocs/convert-excel-to-pdf/download/:job_id` | What it does Downloads the finished PDF file for a previously created Excel-to-PDF job. The jobid p… | 10 | | GET | `https://api.eu.apyhub.com/flowdocs/convert-excel-to-pdf/overall-status` | What it does Returns the aggregate status for one or more Excel-to-PDF jobs identified by job IDs.… | 1 | ## Endpoint reference ### Convert Excel files (.xlsx, .xlsm, .xls) to PDF `POST https://api.eu.apyhub.com/flowdocs/convert-excel-to-pdf` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `files` | body | array of string | yes | Excel files to convert to PDF. | #### Quickstart Upload one or more Excel files to convert them to PDF in a batch. ```bash curl -X POST "https://api.eu.apyhub.com/flowdocs/convert-excel-to-pdf" \ -H "apy-token: $APY_TOKEN" \ -F "files=@/path/to/report.xlsx" ``` #### What you'll get back Returns a JSON object with a `batch_id` string and a `jobs` array. Each job in `jobs` is an object with `job_id`, `filename`, `status`, and `progress` fields. ```json { "batch_id": "a1b2c3d4e5f6a7b8", "jobs": [ { "job_id": "a1b2c3d4", "filename": "report.pdf", "status": "queued", "progress": 0 } ] } ``` ### Get the status of an Excel-to-PDF job `GET https://api.eu.apyhub.com/flowdocs/convert-excel-to-pdf/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | | #### Quickstart Check the status of a conversion job by its `job_id`. ```bash curl -X GET "https://api.eu.apyhub.com/flowdocs/convert-excel-to-pdf/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object matching one of three shapes, depending on the job type and state. The response always includes `job_id`, `status`, and `progress`; some shapes also include `error`, and batch responses include `batch`, `jobs`, `total_files`, and `completed_files`. ```json { "job_id": "job_123", "status": "processing", "progress": 45 } ``` ### Download a finished Excel-to-PDF output `GET https://api.eu.apyhub.com/flowdocs/convert-excel-to-pdf/download/:job_id` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | | #### Quickstart Download the generated PDF for a completed Excel-to-PDF job by replacing `job_id` in the path. ```bash curl -X GET "https://api.eu.apyhub.com/flowdocs/convert-excel-to-pdf/download/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns binary file content (`string` with `format: binary`), not JSON. ```text [pdf binary data] ``` ### Aggregate progress across Excel-to-PDF jobs `GET https://api.eu.apyhub.com/flowdocs/convert-excel-to-pdf/overall-status` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_ids` | query | string | yes | | #### Quickstart Check the overall status for one or more conversion jobs by passing their job IDs as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/flowdocs/convert-excel-to-pdf/overall-status?job_ids=job-123,job-456" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with required `status` and `progress` fields, plus optional `details`, `total_files`, and `completed_files` fields. `status` is one of `unknown`, `queued`, `processing`, `done`, or `failed`, and `progress` is an integer from 0 to 100. ```json { "status": "processing", "progress": 60, "details": [ { "job_id": "job-123", "status": "processing", "progress": 60 } ], "total_files": 2, "completed_files": 1 } ``` ## About ## What it does Excel to PDF converts one or more Excel files into PDF output you can download after the job finishes. Send `.xlsx`, `.xlsm`, or `.xls` files in the request body and get back a `batch_id` plus a list of jobs with each job’s `job_id`, `filename`, `status`, and `progress`. Use it when you need spreadsheet exports for sharing, archiving, or review without requiring the recipient to open Excel. The service is built for batch conversion, so you can submit multiple files at once and track them individually as they move from `queued` to `processing` and `done`. Poll `/status/:job_id` to check a single job or batch. For grouped work, the status response can include `total_files`, `completed_files`, and per-job progress. If you need a broader view across multiple jobs, `/overall-status` returns aggregate `status`, `progress`, and optional `details` for each job ID. When a conversion is complete, use `/download/:job_id` to fetch the finished PDF as binary output. That makes Excel to PDF a fit for document pipelines, report generation, and any workflow that needs spreadsheet content delivered in a fixed-format file. > **Note:** Pricing is 1 atom per page + 50. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/flowdocs/service/convert-excel-to-pdf * * * --- title: Convert PDF to Word Job API slug: convert-pdf-to-word url: https://apyhub.com/flowdocs/service/convert-pdf-to-word provider: FlowDocs categories: [File Conversion, File Manipulation] tags: [pdf-conversion, word-conversion, docx, document-conversion, file-conversion] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 1-100 --- # Convert PDF to Word Job API Convert PDF files to Word .docx outputs and track each job by status and progress. Supports single-file downloads and aggregated job monitoring. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/flowdocs/convert-pdf-to-word` | What it does Converts one or more PDF files into Word (.docx) files. You send the PDF files in the… | 100 | | GET | `https://api.eu.apyhub.com/flowdocs/convert-pdf-to-word/status/:job_id` | What it does Returns the current status for a PDF-to-Word job, using the jobid path parameter. The… | 1 | | GET | `https://api.eu.apyhub.com/flowdocs/convert-pdf-to-word/download/:job_id` | What it does Downloads the converted Word file for a completed PDF-to-Word job. The request identif… | 10 | | GET | `https://api.eu.apyhub.com/flowdocs/convert-pdf-to-word/overall-status` | What it does Aggregates the progress of one or more PDF-to-Word jobs and returns a combined status… | 1 | ## Endpoint reference ### Convert PDF files to Word (.docx) `POST https://api.eu.apyhub.com/flowdocs/convert-pdf-to-word` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `files` | body | array of string | yes | PDF files to convert to Word. | #### Quickstart Upload one or more PDF files to convert them to Word documents. ```bash curl -X POST "https://api.eu.apyhub.com/flowdocs/convert-pdf-to-word" \ -H "apy-token: $APY_TOKEN" \ -F "files=@/path/to/report.pdf" ``` #### What you'll get back Returns a JSON object with a `batch_id` string and a `jobs` array. Each item in `jobs` is an object with `job_id`, `filename`, `status`, and `progress` fields; `batch_id` is the parent batch id for the submit. ```json { "batch_id": "a1b2c3d4e5f6a7b8", "jobs": [ { "job_id": "a1b2c3d4", "filename": "report.pdf", "status": "queued", "progress": 0 } ] } ``` ### Get the status of a PDF-to-Word job `GET https://api.eu.apyhub.com/flowdocs/convert-pdf-to-word/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | | #### Quickstart Check the status of a conversion job by passing its `job_id` in the URL path. ```bash curl -X GET "https://api.eu.apyhub.com/flowdocs/convert-pdf-to-word/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object matching one of three status shapes. The response always includes `job_id`, `status`, and `progress`; it may also include `error`, and depending on the job type it can include `batch` with `total_files`, `completed_files`, and `jobs`, or `batch_id`. ```json { "job_id": "job_12345", "status": "processing", "progress": 60 } ``` ### Download a finished PDF-to-Word output `GET https://api.eu.apyhub.com/flowdocs/convert-pdf-to-word/download/:job_id` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | | #### Quickstart Download the converted Word file for a finished job by replacing `job_id` in the path. ```bash curl -X GET "https://api.eu.apyhub.com/flowdocs/convert-pdf-to-word/download/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the downloaded document. ```binary ...file contents... ``` ### Aggregate progress across PDF-to-Word jobs `GET https://api.eu.apyhub.com/flowdocs/convert-pdf-to-word/overall-status` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_ids` | query | string | yes | | #### Quickstart Check the overall status for one or more conversion jobs by passing their IDs as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/flowdocs/convert-pdf-to-word/overall-status?job_ids=job-123,job-456" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with required `status` and `progress` fields, plus optional `details`, `total_files`, and `completed_files`. - `status` is a string enum: `unknown`, `queued`, `processing`, `done`, or `failed`. - `progress` is an integer from `0` to `100`. ```json { "status": "processing", "progress": 60, "details": [ { "job_id": "job-123", "status": "processing", "progress": 60 } ], "total_files": 2, "completed_files": 1 } ``` ## About ## What it does PDF to Word Converter turns one or more PDF files into .docx documents. Send PDF binaries in the `files` array, then use the returned `batch_id` and per-file `jobs` to track conversion progress. Each submit response includes a parent `batch_id` plus a job entry for every file, with `job_id`, `filename`, `status`, and `progress`. That makes it easy to handle multi-file uploads and keep your own job queue in sync with the conversion state. Use `GET /status/:job_id` when you want the current state of a single job or batch. The status response can include overall progress, file counts, and a `jobs` list with child job progress. If you only need a high-level view across multiple jobs, `GET /overall-status` accepts `job_ids` and returns aggregate `status`, `progress`, and file totals. When a job finishes, `GET /download/:job_id` returns the converted Word file as binary output. That fits document workflows such as editing uploaded reports, converting scanned PDFs into shareable Office documents, or automating batch document migration. > **Note:** Pricing depends on page count and detected PDF type: native PDFs cost 2 atoms per page + 100, while scanned PDFs cost 5 atoms per page + 100. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/flowdocs/service/convert-pdf-to-word * * * --- title: Split Excel API slug: split-excel url: https://apyhub.com/flowdocs/service/split-excel provider: FlowDocs categories: [Developer Tools, File Manipulation] tags: [excel, spreadsheet, file-splitting, workbook-processing, batch-jobs] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 1-50 --- # Split Excel API Split .xlsx and .xlsm files into one workbook per value group. Track job status and progress, then download the finished split outputs. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/flowdocs/split-excel` | What it does Splits each uploaded Excel file into separate workbooks based on the values found in a… | 50 | | GET | `https://api.eu.apyhub.com/flowdocs/split-excel/status/:job_id` | What it does Returns the current status of an Excel split job. The response shape depends on whethe… | 1 | | GET | `https://api.eu.apyhub.com/flowdocs/split-excel/download/:job_id` | What it does Downloads the finished output file for a completed Excel split job. The request uses t… | 5 | | GET | `https://api.eu.apyhub.com/flowdocs/split-excel/overall-status` | What it does Returns the aggregate progress for one or more Excel split jobs. Provide the job ID(s)… | 1 | ## Endpoint reference ### Split Excel files into one workbook per value group in a column `POST https://api.eu.apyhub.com/flowdocs/split-excel` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `files` | body | array of string | yes | Excel files (.xlsx, .xlsm) to split. | | `sheet_index` | body | array of string | no | Sheet number per file (1-based), one value per uploaded file. | | `target_column_index` | body | array of string | no | Column number to split by per file (1-based), one value per uploaded file. | #### Quickstart Upload one or more Excel files to start a split job. ```bash curl -X POST "https://api.eu.apyhub.com/flowdocs/split-excel" \ -H "apy-token: $APY_TOKEN" \ -F "files=@/path/to/report.xlsx" ``` #### What you'll get back Returns a JSON object with a `batch_id` string and a `jobs` array. Each job is an object with `job_id`, `filename`, `status`, and `progress`, and may also include `batch_id`, `sheet_index`, and `target_column_index`. ```json { "batch_id": "a1b2c3d4e5f6a7b8", "jobs": [ { "job_id": "a1b2c3d4", "filename": "report.xlsx", "status": "queued", "progress": 0 } ] } ``` ### Get the status of an Excel split job `GET https://api.eu.apyhub.com/flowdocs/split-excel/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | | #### Quickstart Check the status of a split-excel-files job by replacing `:job_id` with your job ID in the endpoint URL. ```bash curl -X GET "https://api.eu.apyhub.com/flowdocs/split-excel/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object. The response is one of three shapes: a batch status object with `job_id`, `batch`, `status`, `progress`, `total_files`, `completed_files`, and `jobs`; a parent batch reference with `job_id`, `batch_id`, `status`, and `progress`; or a single job status object with `job_id`, `status`, and `progress`. ```json { "job_id": "job_12345", "status": "processing", "progress": 50 } ``` ### Download a finished Excel split output `GET https://api.eu.apyhub.com/flowdocs/split-excel/download/:job_id` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | | #### Quickstart Download the split Excel file for a completed job by replacing `job_id` in the path. ```bash curl -X GET "https://api.eu.apyhub.com/flowdocs/split-excel/download/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns the binary file contents directly, not a JSON object. The response schema is a string with `format: "binary"`. ```text ``` ### Aggregate progress across Excel split jobs `GET https://api.eu.apyhub.com/flowdocs/split-excel/overall-status` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_ids` | query | string | yes | | #### Quickstart Check the overall status for one or more split jobs by passing the required `job_ids` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/flowdocs/split-excel/overall-status?job_ids=job-123,job-456" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with required `status` and `progress` fields, plus optional `details`, `total_files`, and `completed_files`. - `status` is a string (`unknown`, `queued`, `processing`, `done`, or `failed`) - `progress` is an integer from 0 to 100 - `details` is an array of objects with `job_id`, `status`, and `progress` - `total_files` and `completed_files` are integers ```json { "status": "processing", "progress": 60, "details": [ { "job_id": "job-123", "status": "processing", "progress": 60 } ], "total_files": 2, "completed_files": 1 } ``` ## About ## What it does Excel Splitter takes one or more .xlsx or .xlsm files and splits each workbook into separate outputs based on the values in a chosen column. Send the files, plus a 1-based sheet index and 1-based target column index for each file, and you get a batch of split jobs back. Use it when you need to break a workbook into per-customer, per-region, per-team, or per-category files without doing the sorting manually. The response includes a batch_id and a jobs array with each job's job_id, filename, status, progress, sheet_index, and target_column_index, so you can track work at the file level. Poll /status/:job_id to check a single split job or batch, or use /overall-status with multiple job IDs to aggregate progress across them. When a job is finished, download the output workbook from /download/:job_id as binary content. Excel Splitter is a file automation tool for workflows where spreadsheets need to be partitioned consistently and repeated often. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/flowdocs/service/split-excel * * * --- title: Fix PDF Orientation API slug: auto-correct-pdf-pages url: https://apyhub.com/flowdocs/service/auto-correct-pdf-pages provider: FlowDocs categories: [Data Extraction, File Manipulation, Image Processing] tags: [pdf, ocr, document-processing, page-rotation, batch-jobs] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 1-50 --- # Fix PDF Orientation API Auto-rotate misaligned PDF pages using OCR and track progress by job. Returns job IDs, status, progress, and the corrected PDF download. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/flowdocs/auto-correct-pdf-pages` | What it does This endpoint submits one or more PDF files for OCR-based auto-rotation so their page… | 50 | | GET | `https://api.eu.apyhub.com/flowdocs/auto-correct-pdf-pages/status/:job_id` | What it does Returns the current status of an auto-correct PDF job or batch for the jobid supplied… | 1 | | GET | `https://api.eu.apyhub.com/flowdocs/auto-correct-pdf-pages/download/:job_id` | What it does Downloads the finished auto-correct PDF output for a completed job, identified by jobi… | 5 | | GET | `https://api.eu.apyhub.com/flowdocs/auto-correct-pdf-pages/overall-status` | What it does Returns the aggregate status and overall progress for one or more auto-correct PDF job… | 1 | ## Endpoint reference ### Auto-rotate PDF pages to correct orientation using OCR `POST https://api.eu.apyhub.com/flowdocs/auto-correct-pdf-pages` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `files` | body | array of string | yes | PDF files to auto-rotate. | #### Quickstart Upload one or more PDF files to start an auto-rotation batch. ```bash curl -X POST "https://api.eu.apyhub.com/flowdocs/auto-correct-pdf-pages" \ -H "apy-token: $APY_TOKEN" \ -F "files=@/path/to/report.pdf" ``` #### What you'll get back Returns a JSON object with a `batch_id` string and a `jobs` array. Each job is an object with `job_id`, `filename`, `status`, and `progress` fields. ```json { "batch_id": "a1b2c3d4e5f6a7b8", "jobs": [ { "job_id": "a1b2c3d4", "filename": "report.pdf", "status": "queued", "progress": 0 } ] } ``` ### Get the status of an auto-correct job `GET https://api.eu.apyhub.com/flowdocs/auto-correct-pdf-pages/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | | #### Quickstart Check the status of a job by replacing `:job_id` in the endpoint URL with your job ID. ```bash curl -X GET "https://api.eu.apyhub.com/flowdocs/auto-correct-pdf-pages/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object. Depending on the job state, the top-level fields include `job_id` (string), `status` (`queued`, `processing`, `done`, or `failed`), and `progress` (integer from 0 to 100). Some responses also include `batch` (boolean), `total_files` (integer), `completed_files` (integer), `jobs` (array of job objects), `batch_id` (string), and `error` (string or null). ```json { "job_id": "job_12345", "status": "processing", "progress": 60 } ``` ### Download a finished auto-correct output `GET https://api.eu.apyhub.com/flowdocs/auto-correct-pdf-pages/download/:job_id` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | | #### Quickstart Download the corrected PDF for a completed job by replacing `job_id` in the path. ```bash curl -X GET "https://api.eu.apyhub.com/flowdocs/auto-correct-pdf-pages/download/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) — the PDF download content itself. ```text (binary file content) ``` ### Aggregate progress across auto-correct jobs `GET https://api.eu.apyhub.com/flowdocs/auto-correct-pdf-pages/overall-status` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_ids` | query | string | yes | | #### Quickstart Check the overall status for one or more jobs by passing their `job_ids` as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/flowdocs/auto-correct-pdf-pages/overall-status?job_ids=job-123,job-456" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with required `status` and `progress` fields, plus optional `details`, `total_files`, and `completed_files`. - `status` is a string: `unknown`, `queued`, `processing`, `done`, or `failed` - `progress` is an integer from `0` to `100` ```json { "status": "processing", "progress": 60, "details": [ { "job_id": "job-123", "status": "processing", "progress": 60 } ], "total_files": 2, "completed_files": 1 } ``` ## About ## What it does PDF Auto Corrector auto-rotates PDF pages to correct orientation using OCR. Send one or more PDF files in `files`, and you get back a batch with a `batch_id` plus per-file job records showing `job_id`, `filename`, `status`, and `progress`. Use it when scanned documents come in sideways, upside down, or mixed across pages. The service is built for document workflows where page orientation needs to be fixed before indexing, review, or downstream extraction. Track work with `/status/:job_id` for an individual job or batch, or call `/overall-status` with multiple job IDs to see aggregate progress. When a job is finished, `/download/:job_id` returns the corrected PDF as binary output. PDF Auto Corrector fits into intake pipelines for invoices, forms, records, and archived scans where orientation errors would break OCR or make documents hard to read. > **Note:** Pricing is 1 atom per page + 50. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/flowdocs/service/auto-correct-pdf-pages * * * --- title: Deskew PDF API slug: deskew-pdf-pages url: https://apyhub.com/flowdocs/service/deskew-pdf-pages provider: FlowDocs categories: [File Conversion, File Manipulation] tags: [pdf-deskew, pdf-processing, document-cleanup, file-manipulation, batch-jobs] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 1-50 --- # Deskew PDF API Deskew scanned PDF pages and track each job by status and progress. Returns corrected PDFs as binary output for cleanup and indexing workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/flowdocs/deskew-pdf-pages` | What it does Uploads one or more PDF files and starts a deskew operation for each file, returning a… | 50 | | GET | `https://api.eu.apyhub.com/flowdocs/deskew-pdf-pages/status/:job_id` | What it does Retrieves the current status of a deskew job, including its progress. Depending on the… | 1 | | GET | `https://api.eu.apyhub.com/flowdocs/deskew-pdf-pages/download/:job_id` | What it does Downloads the finished deskewed PDF output for a completed job. The jobid path paramet… | 5 | | GET | `https://api.eu.apyhub.com/flowdocs/deskew-pdf-pages/overall-status` | What it does Returns the aggregate progress for one or more deskew jobs passed in the jobids query… | 1 | ## Endpoint reference ### Deskew PDF pages to fix small angle tilts `POST https://api.eu.apyhub.com/flowdocs/deskew-pdf-pages` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `files` | body | array of string | yes | PDF files to deskew. | #### Quickstart Upload one or more PDF files to start a deskew batch. ```bash curl -X POST "https://api.eu.apyhub.com/flowdocs/deskew-pdf-pages" \ -H "apy-token: $APY_TOKEN" \ -F "files=@/path/to/report.pdf" ``` #### What you'll get back Returns a JSON object with a `batch_id` string and a `jobs` array. Each job is an object with `job_id`, `filename`, `status`, and `progress` fields. ```json { "batch_id": "a1b2c3d4e5f6a7b8", "jobs": [ { "job_id": "a1b2c3d4", "filename": "report.pdf", "status": "queued", "progress": 0 } ] } ``` ### Get the status of a deskew job `GET https://api.eu.apyhub.com/flowdocs/deskew-pdf-pages/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | | #### Quickstart Check the status of a deskew PDF job by passing its `job_id` in the URL path. ```bash curl -X GET "https://api.eu.apyhub.com/flowdocs/deskew-pdf-pages/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object describing the job status. The response can be one of three object shapes, but each includes `job_id`, `status`, and `progress`; one variant also includes `batch_id`, and another includes `batch`, `total_files`, `completed_files`, and `jobs`. ```json { "job_id": "job-123", "status": "processing", "progress": 45 } ``` ### Download a finished deskew output `GET https://api.eu.apyhub.com/flowdocs/deskew-pdf-pages/download/:job_id` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | | #### Quickstart Download the processed PDF for a completed deskew job by replacing `job_id` in the path. ```bash curl -X GET "https://api.eu.apyhub.com/flowdocs/deskew-pdf-pages/download/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) — the downloaded PDF content itself. ### Aggregate progress across deskew jobs `GET https://api.eu.apyhub.com/flowdocs/deskew-pdf-pages/overall-status` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_ids` | query | string | yes | | #### Quickstart Check the overall status for one or more deskew jobs by passing `job_ids` as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/flowdocs/deskew-pdf-pages/overall-status?job_ids=job-123,job-456" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with required `status` and `progress` fields, plus optional `details`, `total_files`, and `completed_files`. - `status` is a string enum: `unknown`, `queued`, `processing`, `done`, or `failed` - `progress` is an integer from `0` to `100` - `details` is an array of objects, each with `job_id`, `status`, and `progress` - `total_files` and `completed_files` are integers ```json { "status": "processing", "progress": 60, "details": [ { "job_id": "job-123", "status": "processing", "progress": 60 } ], "total_files": 2, "completed_files": 1 } ``` ## About ## What it does PDF Deskew corrects small angle tilts in PDF pages and returns deskewed files you can download once processing finishes. Send one or more PDF files in the `files` array, then track each job by `job_id` or follow the parent `batch_id` for multi-file submissions. Use it when scanned documents come in slightly rotated: invoices, forms, contracts, archived reports, or any page set that needs a cleaner upright presentation before storage, review, or downstream extraction. The submit response gives you a `batch_id` plus a `jobs` array with each file's `job_id`, `filename`, `status`, and `progress`. You can poll `/status/:job_id` for a single job or batch, with status values like `queued`, `processing`, `done`, and `failed`. For grouped workloads, `/overall-status` aggregates progress across multiple job IDs and returns the combined `status`, `progress`, and per-job details. When a job is complete, `/download/:job_id` returns the finished output as binary data. PDF Deskew is a fit for document pipelines that need straightened pages before OCR, indexing, QA review, or long-term archiving. > **Note:** Pricing is 1 atom per page + 50. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/flowdocs/service/deskew-pdf-pages * * * --- title: Convert PDF to Excel Job API slug: convert-pdf-to-excel url: https://apyhub.com/flowdocs/service/convert-pdf-to-excel provider: FlowDocs categories: [File Conversion] tags: [pdf-to-excel, document-conversion, spreadsheet-export, pdf-processing, batch-jobs] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 1-100 --- # Convert PDF to Excel Job API Convert PDF files into .xlsx workbooks and track each job by status and progress. Built for turning invoices, reports, and statements into data. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/flowdocs/convert-pdf-to-excel` | What it does Converts one or more PDF files into Excel .xlsx files. The request uploads PDF files i… | 100 | | GET | `https://api.eu.apyhub.com/flowdocs/convert-pdf-to-excel/status/:job_id` | What it does Returns the current status of a PDF-to-Excel job by jobid. Depending on what the job r… | 1 | | GET | `https://api.eu.apyhub.com/flowdocs/convert-pdf-to-excel/download/:job_id` | What it does Downloads the finished PDF-to-Excel output for a completed job. The request takes a jo… | 10 | | GET | `https://api.eu.apyhub.com/flowdocs/convert-pdf-to-excel/overall-status` | What it does Returns aggregate progress information for one or more PDF-to-Excel jobs identified by… | 1 | ## Endpoint reference ### Convert PDF files to Excel (.xlsx) `POST https://api.eu.apyhub.com/flowdocs/convert-pdf-to-excel` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `files` | body | array of string | yes | PDF files to convert to Excel. | #### Quickstart Upload one or more PDF files to convert them to Excel. ```bash curl -X POST "https://api.eu.apyhub.com/flowdocs/convert-pdf-to-excel" \ -H "apy-token: $APY_TOKEN" \ -F "files=@/path/to/report.pdf" ``` #### What you'll get back Returns a JSON object with a `batch_id` string and a `jobs` array. Each job in `jobs` is an object with `job_id`, `filename`, `status`, and `progress` fields. ```json { "batch_id": "a1b2c3d4e5f6a7b8", "jobs": [ { "job_id": "a1b2c3d4", "filename": "report.pdf", "status": "queued", "progress": 0 } ] } ``` ### Get the status of a PDF-to-Excel job `GET https://api.eu.apyhub.com/flowdocs/convert-pdf-to-excel/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | | #### Quickstart Check the status of a conversion job by its `job_id`. ```bash curl -X GET "https://api.eu.apyhub.com/flowdocs/convert-pdf-to-excel/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object matching one of the documented status shapes. The common fields are `job_id` (string), `status` (`queued`, `processing`, `done`, or `failed`), and `progress` (integer 0–100). Some responses also include `error`, and batch jobs may include `batch`, `jobs`, `total_files`, `completed_files`, or `batch_id`. ```json { "job_id": "job-123", "status": "processing", "progress": 45 } ``` ### Download a finished PDF-to-Excel output `GET https://api.eu.apyhub.com/flowdocs/convert-pdf-to-excel/download/:job_id` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | | #### Quickstart Download the generated Excel file for a finished PDF-to-Excel job by replacing `job_id` in the path. ```bash curl -X GET "https://api.eu.apyhub.com/flowdocs/convert-pdf-to-excel/download/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`), not a JSON object. ```binary (binary Excel file download) ``` ### Aggregate progress across PDF-to-Excel jobs `GET https://api.eu.apyhub.com/flowdocs/convert-pdf-to-excel/overall-status` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_ids` | query | string | yes | | #### Quickstart Check the overall status for one or more PDF-to-Excel jobs by passing the required `job_ids` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/flowdocs/convert-pdf-to-excel/overall-status?job_ids=job-123,job-456" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with required `status` and `progress` fields, plus optional `details`, `total_files`, and `completed_files`. - `status` is a string enum: `unknown`, `queued`, `processing`, `done`, or `failed`. - `progress` is an integer from `0` to `100`. ```json { "status": "processing", "progress": 60, "details": [ { "job_id": "job-123", "status": "processing", "progress": 60 } ], "total_files": 2, "completed_files": 1 } ``` ## About ## What it does PDF to Excel converts one or more PDF files into Excel spreadsheets and gives you a batch-oriented workflow for tracking each conversion. Send PDF files in the `files` array and receive a `batch_id` plus a `jobs` list back. Each job includes a `job_id`, `filename`, `status`, and `progress`, so you can track individual files as they move through queued, processing, done, or failed states. Use `GET /status/:job_id` to check the status of a single job or batch, and `GET /overall-status` when you want aggregate progress across multiple job IDs. When a conversion finishes, `GET /download/:job_id` returns the resulting `.xlsx` file as binary data. That makes this service a fit for document workflows that need spreadsheet output from uploaded reports, invoices, statements, or tables trapped inside PDFs. If you are building an ingestion pipeline, PDF to Excel lets you submit multiple files, monitor progress, and fetch completed work without guessing when the output is ready. > **Note:** Pricing depends on page count and PDF type: native PDFs cost 2 atoms per page + 100, while scanned PDFs cost 5 atoms per page + 100. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/flowdocs/service/convert-pdf-to-excel * * * --- title: Convert Word to PDF Job API slug: generate-word-to-pdf url: https://apyhub.com/flowdocs/service/generate-word-to-pdf provider: FlowDocs categories: [File Conversion, File Manipulation] tags: [word-to-pdf, document-conversion, pdf-generation, file-conversion, batch-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 1-100 --- # Convert Word to PDF Job API Convert .docx, .doc, .rtf, and .odt files to PDF and track each job by status and progress. Built for batch document workflows and downloads. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/flowdocs/generate-word-to-pdf` | What it does Converts one or more uploaded Word files (.docx, .doc, .rtf, .odt) to PDF. The request… | 100 | | GET | `https://api.eu.apyhub.com/flowdocs/generate-word-to-pdf/status/:job_id` | What it does Checks the status of a Word-to-PDF job identified by jobid in the path. The response s… | 1 | | GET | `https://api.eu.apyhub.com/flowdocs/generate-word-to-pdf/download/:job_id` | What it does Downloads the finished Word-to-PDF output for a completed job. The request requires th… | 10 | | GET | `https://api.eu.apyhub.com/flowdocs/generate-word-to-pdf/overall-status` | What it does Returns the aggregate progress for one or more Word-to-PDF jobs, based on the jobids q… | 1 | ## Endpoint reference ### Convert Word files (.docx, .doc, .rtf, .odt) to PDF `POST https://api.eu.apyhub.com/flowdocs/generate-word-to-pdf` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `files` | body | array of string | yes | Word files (.docx, .doc, .rtf, .odt) to convert to PDF. Maximum 5 files. | #### Quickstart Upload one or more Word files to convert them into a PDF batch. ```bash curl -X POST "https://api.eu.apyhub.com/flowdocs/generate-word-to-pdf" \ -H "apy-token: $APY_TOKEN" \ -F "files=@/path/to/file.docx" ``` #### What you'll get back Returns a JSON object with a `batch_id` string and a `jobs` array. Each job in `jobs` is an object with `job_id`, `filename`, `status`, and `progress`, and may also include `batch_id` for the parent batch. ```json { "batch_id": "a1b2c3d4e5f6a7b8", "jobs": [ { "job_id": "a1b2c3d4", "filename": "report.pdf", "status": "queued", "progress": 0 } ] } ``` ### Get the status of a Word-to-PDF job `GET https://api.eu.apyhub.com/flowdocs/generate-word-to-pdf/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | | #### Quickstart Check the status of a conversion job by its `job_id` path parameter. ```bash curl -X GET "https://api.eu.apyhub.com/flowdocs/generate-word-to-pdf/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object matching one of the documented status shapes. The top-level object includes `job_id`, `status`, and `progress`, and may also include `error`; some responses also include `batch`, `batch_id`, `total_files`, `completed_files`, or `jobs`. ```json { "job_id": "job_12345", "status": "processing", "progress": 60 } ``` ### Download a finished Word-to-PDF output `GET https://api.eu.apyhub.com/flowdocs/generate-word-to-pdf/download/:job_id` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | | #### Quickstart Download the PDF for a completed Word-to-PDF conversion job by passing its `job_id` in the path. ```bash curl -X GET "https://api.eu.apyhub.com/flowdocs/generate-word-to-pdf/download/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a binary file stream (`string` with `format: binary`), which is the generated PDF content. ```text (binary PDF content) ``` ### Aggregate progress across Word-to-PDF jobs `GET https://api.eu.apyhub.com/flowdocs/generate-word-to-pdf/overall-status` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_ids` | query | string | yes | | #### Quickstart Check the overall status for one or more job IDs by passing them as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/flowdocs/generate-word-to-pdf/overall-status?job_ids=job-123,job-456" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with required `status` and `progress` fields, plus optional `details`, `total_files`, and `completed_files`. - `status` is a string: one of `unknown`, `queued`, `processing`, `done`, or `failed`. - `progress` is an integer from `0` to `100`. ```json { "status": "processing", "progress": 60, "details": [ { "job_id": "job-123", "status": "processing", "progress": 60 } ], "total_files": 2, "completed_files": 1 } ``` ## About ## What it does Word to PDF converts Word documents into PDF files and tracks each conversion as a job. Send one or more `.docx`, `.doc`, `.rtf`, or `.odt` files in the request body, and you get back a `batch_id` plus a `jobs` array with each job's `job_id`, `filename`, `status`, and `progress`. Use it when you need to preserve document formatting for sharing, archiving, or downstream processing. A batch-oriented response makes it easy to submit multiple files at once and follow each conversion separately. Poll `GET /status/:job_id` to check a single job or batch. The status response can include overall `progress`, counts for `total_files` and `completed_files`, and per-job progress details. When a file is ready, download the finished PDF with `GET /download/:job_id`. If you're managing many conversions at once, `GET /overall-status` lets you pass multiple job IDs and retrieve aggregate `status`, `progress`, and file counts in one response. > **Note:** Pricing is 1 atom per page + 50. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/flowdocs/service/generate-word-to-pdf * * * --- title: Generate/Score Password API slug: password-strength-evaluation url: https://apyhub.com/creightonnick0/service/password-strength-evaluation provider: nick creighton categories: ["Security & Privacy"] tags: [password-strength, password-generator, security, entropy, credential-security] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Generate/Score Password API Score a password with strength, entropy, warnings, and crack-time analysis, or generate a strong password of any chosen length. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/creightonnick0/password-strength-evaluation` | What it does Scores a provided password's strength, or generates a strong password when requested.… | 10 | ## Endpoint reference ### Score a password's strength, and/or generate a strong one. `POST https://api.eu.apyhub.com/creightonnick0/password-strength-evaluation` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `length` | body | integer | no | Length for a generated password (8-128, default 20) Example: `20`. | | `generate` | body | boolean | no | Generate a strong password instead of scoring Example: `true`. | | `password` | body | string | no | Password to score (omit to generate one) Example: `Tr0ub4dour&3`. | #### Quickstart Score a password by sending it in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/creightonnick0/password-strength-evaluation" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"password":"Tr0ub4dour&3"}' ``` #### What you'll get back Returns a JSON object with `analysis` (`object`), `password` (`string`), and `generated` (`boolean`) top-level fields. - `analysis` contains password details such as `length` (`integer`), `strength` (`string`), `warnings` (`array`), `entropy_bits` (`number`), `character_classes` (`object`), and `estimated_crack_time` (`string`). - `password` is the evaluated or generated password string. - `generated` is `true` when the API generated a password, and `false` when it scored the one you sent. ```json { "analysis": { "length": 12, "strength": "strong", "warnings": [], "entropy_bits": 78.4, "character_classes": { "digits": true, "symbols": true, "lowercase": true, "uppercase": true }, "estimated_crack_time": "centuries" }, "password": "Tr0ub4dour&3", "generated": false } ``` ## About ## What it does Password Strength Checker scores a password or generates a strong one, depending on the request body you send. Send `password` to evaluate an existing password. The response includes an `analysis` object with `length`, `strength`, `warnings`, `entropy_bits`, `character_classes`, and `estimated_crack_time`. That gives you a quick read on whether a password is short, predictable, missing character variety, or likely to be cracked quickly. If you set `generate` to `true`, you can ask for a new password instead. Use `length` to control the generated password length from 8 to 128 characters, with 20 as the default. The response returns the generated `password` and a `generated` flag so you can distinguish creation from scoring. Use Password Strength Checker in account signup flows, password reset screens, admin tools, or security reviews where you need immediate feedback before accepting a password. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/creightonnick0/service/password-strength-evaluation * * * --- title: "Convert Case & Slug from Text API" slug: convert-case-and-slug url: https://apyhub.com/creightonnick0/service/convert-case-and-slug provider: nick creighton categories: [Developer Tools, SEO] tags: [string-conversion, case-conversion, slug-generation, text-formatting, developer-tools] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Convert Case & Slug from Text API Convert text into slug, camelCase, snake_case, and other common formats. Useful for URLs, identifiers, headings, and general text normalisation. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/creightonnick0/convert-case-and-slug` | What it does Converts the provided text into multiple common casing formats and a URL slug. The res… | 10 | ## Endpoint reference ### Convert a string into every common case + a URL slug. `POST https://api.eu.apyhub.com/creightonnick0/convert-case-and-slug` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | yes | The string to convert Example: `Hello World Example`. | #### Quickstart Convert a single piece of text into slug, case variants, and word count. ```bash curl -X POST "https://api.eu.apyhub.com/creightonnick0/convert-case-and-slug" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"Hello World Example"}' ``` #### What you'll get back Returns a JSON object with fields like `slug`, `input`, `dot.case`, `camelCase`, `PascalCase`, `Title Case`, `kebab-case`, `snake_case`, `word_count`, `CONSTANT_CASE`, and `Sentence case`. Each field is a converted string version of the input, except `word_count`, which is an integer. ```json { "slug": "hello-world-example", "input": "Hello World Example", "dot.case": "hello.world.example", "camelCase": "helloWorldExample", "PascalCase": "HelloWorldExample", "Title Case": "Hello World Example", "kebab-case": "hello-world-example", "snake_case": "hello_world_example", "word_count": 3, "CONSTANT_CASE": "HELLO_WORLD_EXAMPLE", "Sentence case": "Hello world example" } ``` ## About ## What it does String Case Converter turns one input string into a set of common text cases and a URL slug. Send the `text` field in the request body, and get back the converted forms plus the original `input` and `word_count`. Use it when you need to normalise user-entered text for URLs, code identifiers, headings, or labels. The response includes `slug`, `dot.case`, `camelCase`, `PascalCase`, `Title Case`, `kebab-case`, `snake_case`, `CONSTANT_CASE`, and `Sentence case`, so you can pick the format that fits your system without reimplementing string transforms in your app. This is useful in content pipelines, admin tools, CMS workflows, and developer utilities where the same text needs to be reused across multiple naming conventions. If you are generating slugs from titles or converting strings for frontend and backend conventions, this keeps the conversion logic in one place. String Case Converter is a small, focused developer tool: one text input, multiple case outputs, and a predictable response shape. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/creightonnick0/service/convert-case-and-slug * * * --- title: Basic Text Analysis API slug: analyze-text url: https://apyhub.com/creightonnick0/service/analyze-text provider: nick creighton categories: [SEO] tags: [text-analysis, readability, keyword-analysis, content-stats, reading-time] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Basic Text Analysis API Analyze any text for word counts, readability, top keywords, and reading time. Useful for editorial review, SEO checks, and language statistics. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/creightonnick0/analyze-text` | What it does Analyzes the submitted text and returns readability metrics, text statistics, keyword… | 10 | ## Endpoint reference ### Analyze text for readability, statistics, reading time, and keywords. `POST https://api.eu.apyhub.com/creightonnick0/analyze-text` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `wpm` | body | integer | no | Reading speed for the time estimate (default 200) Example: `200`. | | `text` | body | string | yes | The text to analyze Example: `The quick brown fox jumps over the lazy dog.`. | #### Quickstart Analyze a piece of text by sending it in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/creightonnick0/analyze-text" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"The quick brown fox jumps over the lazy dog."}' ``` #### What you'll get back Returns a JSON object with these top-level fields, as available: `counts` object, `averages` object, `readability` object, `top_keywords` array, and `time_estimates` object. ```json { "counts": { "words": 9, "sentences": 1, "syllables": 11, "characters": 44, "unique_words": 8, "characters_no_spaces": 35 }, "averages": { "syllables_per_word": 1.22, "words_per_sentence": 9, "characters_per_word": 3.89 }, "readability": { "interpretation": "Easy to read", "flesch_reading_ease": 94.3, "flesch_kincaid_grade": 3.1 }, "top_keywords": [ { "word": "quick", "count": 1 } ], "time_estimates": { "reading_seconds": 3.0, "speaking_seconds": 4.5 } } ``` ## About ## What it does Text Analysis helps you measure and summarize plain text in one request. Send text, optionally set a reading speed with `wpm`, and get back word, sentence, syllable, character, and unique-word counts plus readability and timing data. Use it when you need to score article draft difficulty, estimate how long a passage will take to read or speak, or extract the most common keywords from user-submitted content. The response includes `counts`, `averages`, `readability`, `top_keywords`, and `time_estimates`, so you can feed the results straight into content dashboards, editorial workflows, or review systems. The readability output includes a plain-language interpretation along with Flesch Reading Ease and Flesch-Kincaid Grade values. The timing estimates give you reading and speaking seconds based on the text and your chosen `wpm` value. Text Analysis is a good fit anywhere you need quick linguistic statistics without building your own parser or readability calculator. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/creightonnick0/service/analyze-text * * * --- title: Foreign Exchange Rates API slug: fx-rates url: https://apyhub.com/quadlem/service/fx-rates provider: "Quadlem, LLC" categories: [Finance, Standard Data] tags: [fx-rates, currency-conversion, exchange-rates, finance, currency-data] auth: api_key version: 2.1.0 service_type: sync endpoints: 1 atoms: 20 --- # Foreign Exchange Rates API Get exchange rate data for any base currency. Returns a success flag, numeric code, and the rate blocks used in pricing, billing, and reporting. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/quadlem/fx-rates` | What it does Returns cached foreign exchange rates for a given base currency, expressed against 160… | 20 | ## Endpoint reference ### FX Rates `GET https://api.eu.apyhub.com/quadlem/fx-rates` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `base` | query | string | no | Default: `USD`. | #### Quickstart Use the following request to retrieve the latest exchange rates for a base currency. ```bash curl -X GET "https://api.eu.apyhub.com/quadlem/fx-rates?base=USD" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back A successful request returns the requested base currency, the timestamp of the exchange rates, and a list of conversion rates for supported currencies. ```json { "success": true, "code": 200, "base": "USD", "date": "Tue, 04 Aug 2026 00:02:31 +0000", "rates": { "USD": 1, "EUR": 0.868722, "GBP": 0.74407, "INR": 95.401315, "JPY": 157.167068 }, "source": "open.er-api.com" } ``` > **Note:** The `rates` object is truncated in this example. The full response includes exchange rates for approximately **160 supported currencies**, with values relative to the requested base currency. ## About ## What it does FX Rates gives you foreign exchange rate data for a chosen base currency. Send the `base` query parameter as a three-letter currency code, or omit it to use the default `USD`, and get a response envelope with `success` and `code` plus the rate data blocks returned by the service. Use FX Rates when you need live or latest currency reference data for pricing, checkout display, reporting, or financial dashboards. It is a fit for applications that convert amounts across currencies, reconcile multi-currency transactions, or show users values in their local currency while keeping a single source of truth for the base currency. The response is intentionally lightweight at the top level: `success` tells you whether the request completed, and `code` gives you the numeric status. Any additional module blocks are returned in the body as defined by the service, so you can parse the currency data your integration needs without guessing at extra fields. If you work with invoices, subscription billing, or exchange-rate lookup flows, FX Rates keeps the contract simple: request a base currency, read the result envelope, and use the returned rate payload in your own calculations. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/quadlem/service/fx-rates * * * --- title: "Search & Filter BIN Database API" slug: bin-search url: https://apyhub.com/quadlem/service/bin-search provider: "Quadlem, LLC" categories: [Data Validation, Finance] tags: [bin-lookup, card-validation, payment-routing, issuer-data, card-brand] auth: api_key version: 2.1.0 service_type: sync endpoints: 1 atoms: 40 --- # Search & Filter BIN Database API Search BIN records by bank, brand, country, prefix, level, or card type. Returns a response envelope with a success flag, code, and module blocks. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/quadlem/bin-search` | What it does Searches the BIN database by attribute filters — brand, bank, card type, level, countr… | 40 | ## Endpoint reference ### BIN Search `GET https://api.eu.apyhub.com/quadlem/bin-search` · 40 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `bank` | query | string | no | | | `type` | query | string | no | One of: DEBIT, CREDIT, CHARGE. | | `brand` | query | string | no | | | `level` | query | string | no | | | `limit` | query | integer | no | Default: `25`. | | `offset` | query | integer | no | Default: `0`. | | `prefix` | query | string | no | | | `country` | query | string | no | | | `bankExact` | query | string | no | | | `withTotal` | query | string | no | One of: 1. | #### Quickstart Use the following request to browse BIN records and filter them by card type. Pagination parameters let you retrieve the results in manageable pages. ```bash curl -X GET "https://api.eu.apyhub.com/quadlem/bin-search?type=DEBIT&limit=25&offset=0&withTotal=1" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back A successful request returns a paginated list of BIN records matching the specified filters, along with pagination metadata. ```json { "success": true, "code": 200, "count": 25, "hasMore": true, "limit": 25, "offset": 0, "results": [ { "number": 10051, "bin": 10051, "scheme": "EXAMPLE BRAND", "type": "DEBIT", "currency": "EUR", "issuer": { "name": "" }, "country": { "name": "ITALY", "alpha2": "IT", "currency": "EUR" } } ] } ``` > **Note:** The `results` array is truncated in this example. The full response returns up to the specified `limit` of BIN records per page. Use the `offset` parameter to retrieve additional pages of results. ## About ## What it does BIN Lookup helps you search card issuer data by bank and card attributes. Send query parameters such as `bank`, `type`, `brand`, `level`, `prefix`, `country`, or `bankExact`, and get back a response envelope with a numeric `code`, a `success` flag, and module blocks. Use it when you need to check a card prefix against issuer metadata before accepting a payment, filtering test card sets, or grouping payment traffic by brand or card type. The search supports pagination with `limit` and `offset`, and can optionally include total counts with `withTotal=1`. The `type` filter accepts `DEBIT`, `CREDIT`, or `CHARGE`, which makes it useful for payment flows that need to distinguish card classes. You can combine filters to narrow results by bank name, exact bank name, country, brand, or level. BIN Lookup is a lightweight way to query BIN-related records without parsing payment data yourself. It is useful anywhere you need issuer lookup, card classification, or BIN-based filtering in real time. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/quadlem/service/bin-search * * * --- title: BIN IP Checker API slug: bin-ip-checker url: https://apyhub.com/quadlem/service/bin-ip-checker provider: "Quadlem, LLC" categories: [Data Validation, Finance, Geolocation] tags: [bin-check, ip-validation, fraud-check, payment-validation, geolocation] auth: api_key version: 2.1.0 service_type: sync endpoints: 1 atoms: 40 --- # BIN IP Checker API Check a card BIN against an IP address and get a response envelope with a success flag and code. Useful for fraud checks and payment routing. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/quadlem/bin-ip-checker` | What it does Checks a card's BIN against an IP address to verify whether the card's issuer country… | 40 | ## Endpoint reference ### BIN/IP Checker `GET https://api.eu.apyhub.com/quadlem/bin-ip-checker` · 40 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `ip` | query | string | yes | | | `bin` | query | string | yes | | #### Quickstart Use the following request to analyze a payment card BIN and compare it with an IP address to detect potential country mismatches and fraud indicators. ```bash curl -X GET "https://api.eu.apyhub.com/quadlem/bin-ip-checker?bin=123456&ip=8.8.8.8" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back A successful request returns details about the payment card BIN, IP address intelligence, and whether the issuing country of the card matches the IP address location. ```json { "success": true, "code": 200, "BIN": { "valid": true, "number": 123456, "scheme": "EXAMPLE BRAND", "type": "CREDIT", "currency": "NIO", "country": { "name": "NICARAGUA", "alpha2": "NI", "flag": "🇳🇮" } }, "IP": { "IP": "8.8.8.8", "country": "United States of America", "is_proxy": false, "is_vpn": false, "IP_BIN_match": false, "IP_BIN_match_message": "The IP address country doesn't match the country of the BIN", "risk_score": 0, "risk_level": "low", "recommendation": "accept" } } ``` > **Note:** When both `bin` and `ip` are provided, the response includes cross-validation signals such as `IP_BIN_match` and `IP_BIN_match_message` to help identify geographic inconsistencies that may indicate potential fraud. ## About ## What it does BIN IP Checker lets you send a BIN and an IP address, then returns a simple response envelope with a numeric `code` and a `success` flag. Use it when you need to check card issuer information against an IP-based signal in your backend flow. The request is straightforward: pass `bin` and `ip` as query parameters. The response schema is minimal, so you should expect the standard envelope fields and any additional module blocks returned by the service. That makes it easy to integrate into risk checks, checkout validation, or fraud-routing logic without parsing a large payload. Because the output is lightweight, this service fits well into real-time decisioning. For example, you can call BIN IP Checker during payment initiation to gate suspicious combinations before you move to authorisation, or use it in a rules engine alongside other identity and transaction checks. If you just need a quick yes/no-style result with a code for handling, BIN IP Checker keeps the contract simple. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/quadlem/service/bin-ip-checker * * * --- title: Advanced Email Verification API slug: email-verification url: https://apyhub.com/quadlem/service/email-verification provider: "Quadlem, LLC" categories: [Communications, Data Validation] tags: [email-validation, email-verification, data-validation, contact-cleanup] auth: api_key version: 2.1.0 service_type: sync endpoints: 1 atoms: 40 --- # Advanced Email Verification API Verify an email address from a single query parameter and get a response with a code and success flag. Built for signup checks and list cleanup. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/quadlem/email-verification` | What it does Verifies an email address's syntax and deliverability, and flags disposable, role-base… | 40 | ## Endpoint reference ### Email Verification `GET https://api.eu.apyhub.com/quadlem/email-verification` · 40 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `email` | query | string (email) | yes | | #### Quickstart Use the following request to validate an email address and retrieve deliverability, domain, and fraud risk information. ```bash curl -X GET "https://api.eu.apyhub.com/quadlem/email-verification?email=dev@example.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back A successful request returns details about the email address, including its validity, deliverability, domain information, mail server status, and an overall risk assessment. ```json { "success": true, "code": 200, "EMAIL": { "email": "dev@example.com", "domain": "example.com", "valid": true, "is_deliverable": true, "is_disposable": false, "is_role": false, "mx": { "found": true, "provider": "Google", "reputable": true }, "risk_score": 0, "risk_level": "low", "recommendation": "accept", "summary": "This looks like a valid, deliverable email address with no risk indicators (0/100 — low risk). Recommended action: accept." } } ``` > **Note:** Depending on the email address and service configuration, the response may include additional validation and reputation signals to help assess email quality and fraud risk. ## About ## What it does Email Verification checks whether an email address is valid and returns a result envelope with a numeric `code` and a `success` flag. Send an `email` in the query string and use the response to gate signups, clean contact lists, or reduce bad addresses before you send mail. Use Email Verification when you need a lightweight validation step in a registration flow, lead form, CRM import, or bulk list cleanup job. It fits into systems that want a fast pass/fail check without pulling in a larger identity or enrichment workflow. The request schema is minimal: one `email` field. The response schema guarantees a standard wrapper, and the service include additional module blocks alongside `code` and `success`. That makes it easy to check the outcome while still leaving room for extra response details when they are available. If you already validate email format at the edge, Email Verification gives you a second check before you store, message, or synchronise the address downstream. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/quadlem/service/email-verification * * * --- title: BIN Lookup API slug: bin-lookup url: https://apyhub.com/quadlem/service/bin-lookup provider: "Quadlem, LLC" categories: [Data Validation, Finance] tags: [bin-lookup, payment-validation, card-issuer, card-prefix, finance] auth: api_key version: 2.1.0 service_type: sync endpoints: 1 atoms: 40 --- # BIN Lookup API Look up a card BIN from a single query parameter and get issuer details in a success envelope. Useful for payment routing, analytics, and fraud. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/quadlem/bin-lookup` | What it does Identifies a payment card from its BIN/IIN and returns the card scheme, brand, type, l… | 40 | ## Endpoint reference ### BIN Lookup `GET https://api.eu.apyhub.com/quadlem/bin-lookup` · 40 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `bin` | query | string | yes | | #### Quickstart Use the following request to look up a Bank Identification Number (BIN) and retrieve information about the associated payment card. ```bash curl -X GET "https://api.eu.apyhub.com/quadlem/bin-lookup?bin=45717360" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back A successful request returns details about the payment card, including its validity, scheme, brand, type, issuing bank, and issuing country. ```json { "success": true, "code": 200, "BIN": { "valid": true, "number": 45717360, "scheme": "VISA", "brand": "VISA", "type": "DEBIT", "level": "DANKORT", "is_prepaid": false, "currency": "DKK", "issuer": { "name": "Example Bank A/S" }, "country": { "name": "DENMARK", "alpha2": "DK", "currency": "DKK", "flag": "🇩🇰" } } } ``` > **Note:** Depending on the BIN and data source, the response may include additional issuer and card metadata beyond the fields shown in this example. ## About ## What it does BIN Lookup helps you identify a payment card’s issuing details from its BIN, or bank identification number. Send a BIN in the `bin` query parameter and get back a response envelope with a numeric `code`, a `success` flag, and additional module blocks in the body. Use BIN Lookup when you need to confirm card metadata before processing a payment, routing a transaction, or enriching payment-related records. It is useful in checkout flows, fraud checks, payment analytics, and internal support tools where a card prefix needs to be mapped to issuer information. The service is intentionally narrow: the request accepts a single string field, `bin`, and the response is centered on a simple success envelope. That makes it easy to wire into existing payment systems without having to handle a large payload or multiple required inputs. If you are validating card-related data or looking up issuer context from a prefix, BIN Lookup gives you the basic lookup result in a format that is straightforward to consume. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/quadlem/service/bin-lookup * * * --- title: Company KYB Lookup API slug: company-kyb-lookup url: https://apyhub.com/quadlem/service/company-kyb-lookup provider: "Quadlem, LLC" categories: [Data Validation, Marketing] tags: [kyb, company-lookup, business-validation, lei, vat-check] auth: api_key version: 2.1.0 service_type: sync endpoints: 1 atoms: 40 --- # Company KYB Lookup API Verify companies by LEI, VAT, name, and country. Returns a JSON envelope with success status and lookup results for KYB and onboarding checks. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/quadlem/company-kyb-lookup` | What it does Looks up business/company records by name, VAT number, or LEI across trusted registrie… | 40 | ## Endpoint reference ### Company / KYB Lookup `GET https://api.eu.apyhub.com/quadlem/company-kyb-lookup` · 40 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `lei` | query | string | no | | | `vat` | query | string | no | | | `name` | query | string | no | | | `limit` | query | integer | no | Default: `10`. | | `country` | query | string | no | | #### Quickstart Use the following request to search for companies by name and retrieve matching business registration details from supported registries. ```bash curl -X GET "https://api.eu.apyhub.com/quadlem/company-kyb-lookup?name=Acme%20Corporation&limit=10" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back A successful request returns the search query, the number of matched companies, the registries that were searched, and details for each matching entity. ```json { "success": true, "code": 200, "query": { "name": "Acme Corporation", "country": null, "vat": null, "lei": null, "limit": 10 }, "count": 6, "sources_checked": [ "gleif" ], "results": [ { "legal_name": "ACME CORPORATION", "registration_number": "08ABRPG5470E2ZH", "lei": "894500MZLORSA869H350", "country": "IN", "status": "ACTIVE", "address": { "city": "JAIPUR", "postal_code": "302006", "country": "IN" }, "match_confidence": 1 } ] } ``` > **Note:** The `results` array is truncated in this example. The full response returns up to the specified `limit` of matching companies across all supported registries that were searched. ## About ## What it does Company KYB Lookup helps you verify and enrich business records from a few identifiers. Send a company `lei`, `vat`, `name`, `country`, and an optional `limit`, and get back a JSON envelope with a numeric `code`, a `success` flag, and module blocks in the response body. Use it when you need to check whether a business is real, match a customer record against known company identifiers, or reduce manual review in onboarding and compliance flows. Because the endpoint accepts either an LEI, VAT number, or company name, you can start with whatever identifier you already have in your system. The response is wrapped in a simple envelope, so you can branch on `success` and `code` before reading the returned module data. That makes it a fit for KYB checks, vendor onboarding, account verification, and internal lookup tools where you need a structured company result without building your own registry search layer. Set `limit` when you want to control how many matches are returned, up to 25. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/quadlem/service/company-kyb-lookup * * * --- title: "Address Validation & Location Lookup API" slug: address-validation url: https://apyhub.com/quadlem/service/address-validation provider: "Quadlem, LLC" categories: [Geolocation] tags: [address-validation, postal-address, data-validation, shipping-address, address-check] auth: api_key version: 2.1.0 service_type: sync endpoints: 2 atoms: 50 --- # Address Validation & Location Lookup API Address validation API: send a postal address, get a match status, confidence score, per-field matches and coordinates. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/quadlem/address-validation/address-validate` | What it does Validates a postal address from query parameters using OpenStreetMap/Nominatim data. T… | 50 | | POST | `https://api.eu.apyhub.com/quadlem/address-validation` | What it does Validates a postal address submitted as fields in a JSON body, using OpenStreetMap/Nom… | 50 | ## Endpoint reference ### Address Validation `GET https://api.eu.apyhub.com/quadlem/address-validation/address-validate` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `city` | query | string | no | | | `state` | query | string | no | | | `street` | query | string | no | | | `address` | query | string | no | | | `country` | query | string | no | | | `postcode` | query | string | no | | #### Quickstart Use the following request to validate an address and retrieve the closest matching location along with confidence and risk information. ```bash curl -X GET "https://api.eu.apyhub.com/quadlem/address-validation/address-validate?address=1600+Pennsylvania+Ave+NW&city=Washington&state=DC&country=US&postcode=20500" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back A successful request returns the validation result, confidence score, resolved address details, geographic coordinates, and a breakdown of which address components matched. ```json { "success": true, "code": 200, "valid": true, "status": "close", "confidence": 73, "risk_score": 0.05, "resolved": { "label": "Example City, Example State, 141001, India", "city": "Example City", "state": "Example State", "postcode": "141001", "country": "India", "lat": 30.9090157, "lng": 75.851601 }, "matches": { "house_number": false, "road": false, "city": true, "state": true, "postcode": false, "country": false } } ``` > **Note:** This example shows a partial, typo-tolerant match. The full response also includes additional metadata such as `input`, `disclaimer`, `model_version`, and `request_id`. ### Address Validation `POST https://api.eu.apyhub.com/quadlem/address-validation` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `city` | body | string | no | Example: `Washington`. | | `state` | body | string | no | Example: `DC`. | | `street` | body | string | no | Example: `1600 Pennsylvania Avenue NW`. | | `address` | body | string | no | Example: `1600 Pennsylvania Avenue NW, Washington DC`. | | `country` | body | string | no | Example: `US`. | | `postcode` | body | string | no | Example: `20500`. | #### Quickstart Use the following request to validate an address by submitting structured address fields in the request body and retrieve the closest matching location. ```bash curl -X POST "https://api.eu.apyhub.com/quadlem/address-validation" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "city": "Washington", "state": "DC", "street": "1600 Pennsylvania Avenue NW", "address": "1600 Pennsylvania Avenue NW, Washington DC", "country": "US", "postcode": "20500" }' ``` #### What you'll get back A successful request returns the validation result, confidence score, resolved address details, geographic coordinates, and a breakdown of which address components matched. ```json { "success": true, "code": 200, "valid": true, "status": "close", "confidence": 73, "risk_score": 0.05, "resolved": { "label": "Example City, Example Tahsil, Example City, Example State, 141001, India", "city": "Example City", "state": "Example State", "postcode": "141001", "country": "India", "lat": 30.9090157, "lng": 75.851601 }, "matches": { "house_number": false, "road": false, "city": true, "state": true, "postcode": false, "country": true } } ``` > **Note:** This example demonstrates a partial, typo-tolerant match. The full response also includes additional metadata such as `input`, `disclaimer`, `model_version`, and `request_id`. ## About ## What it does Address Validation checks a postal address from either query parameters or a JSON body and returns a simple validation envelope with `success` and `code`. Send an address as `street`, `address`, `city`, `state`, `country`, or `postcode`, depending on what you have available. The GET endpoint accepts those fields as query parameters; the POST endpoint accepts the same address parts inside `body`. The response is an object with a numeric `code`, a boolean `success`, and additional module blocks. Use Address Validation when you need to confirm user-entered shipping addresses before checkout, clean up address data before storing it, or gate downstream workflows on a basic validity check. It fits forms, customer onboarding, and logistics systems where you want a fast pass/fail result without parsing a larger geocoding payload. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/quadlem/service/address-validation * * * --- title: IP Address Lookup API slug: ip-address-look-up url: https://apyhub.com/quadlem/service/ip-address-look-up provider: "Quadlem, LLC" categories: [Geolocation] tags: [ip-lookup, ip-geolocation, network-location, geolocation, ip-enrichment] auth: api_key version: 2.1.0 service_type: sync endpoints: 1 atoms: 40 --- # IP Address Lookup API Send an IP address and get a structured lookup response with success and code fields. Built for geolocation, enrichment, and fraud checks. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/quadlem/ip-address-look-up` | What it does Looks up an IP address and returns geolocation, ISP/ASN details, VPN/proxy/Tor/datacen… | 40 | ## Endpoint reference ### IP Address Look Up `GET https://api.eu.apyhub.com/quadlem/ip-address-look-up` · 40 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `ip` | query | string | yes | | #### Quickstart Use the following request to analyze an IP address and retrieve its location, network information, threat indicators, and fraud risk assessment. ```bash curl -X GET "https://api.eu.apyhub.com/quadlem/ip-address-look-up?ip=8.8.8.8" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back A successful request returns details about the IP address, including its validity, geolocation, network provider, proxy and VPN detection results, and an overall risk assessment. ```json { "success": true, "code": 200, "IP": { "IP": "8.8.8.8", "valid": true, "country": "United States of America", "city": "Mountain View", "isp": "Google LLC", "is_proxy": false, "is_vpn": false, "is_tor": false, "risk_score": 0, "risk_level": "low", "recommendation": "accept", "summary": "This IP shows no proxy, VPN, or threat indicators (0/100 — low risk). Recommended action: accept." } } ``` > **Note:** Depending on the IP address and service configuration, the response may include additional network intelligence and geolocation metadata alongside the fraud and threat assessment. ## About ## What it does IP Address Lookup lets you send an IP address and get a structured lookup response back. The endpoint accepts a single required `ip` query parameter and returns an envelope with a numeric `code`, a `success` flag, and additional module data in the response body. Use IP Address Lookup when you need to resolve an IP as part of sign-in checks, fraud signals, analytics, or request enrichment. It fits into workflows where you want to attach location-aware context to an IP without building your own lookup layer. Because the response schema is intentionally open-ended beyond `code` and `success`, you can consume the module blocks your integration needs without assuming a fixed payload shape. That makes the service suitable for lightweight validation and broader geolocation pipelines alike. If you are routing traffic, flagging suspicious activity, or segmenting users by network origin, IP Address Lookup gives you a simple input and a machine-readable result to build on. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/quadlem/service/ip-address-look-up * * * --- title: "AML & Sanctions Verification API" slug: sanctions-screening url: https://apyhub.com/quadlem/service/sanctions-screening provider: "Quadlem, LLC" categories: [Data Validation, HR, "Security & Privacy"] tags: [sanctions-screening, aml, kyc, compliance, watchlist] auth: api_key version: 2.1.0 service_type: sync endpoints: 1 atoms: 50 --- # AML & Sanctions Verification API Check a name against sanctions and AML screening data, with optional date of birth, country, and result limit filters. Returns a success flag. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/quadlem/sanctions-screening` | What it does Screens a person's name against OFAC, UN, and EU sanctions/AML watchlists using fuzzy,… | 50 | ## Endpoint reference ### Sanctions / AML Screening `GET https://api.eu.apyhub.com/quadlem/sanctions-screening` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `dob` | query | string (date) | no | | | `name` | query | string | yes | | | `limit` | query | integer | no | Default: `10`. | | `country` | query | string | no | | #### Quickstart Use the following request to screen a person against global sanctions lists using their name. ```bash curl -X GET "https://api.eu.apyhub.com/quadlem/sanctions-screening?name=John%20Doe" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back A successful request returns the screening query, matched sanctions records, confidence score, risk assessment, and a recommendation based on the screening results. ```json { "success": true, "code": 200, "SANCTIONS": { "query": { "name": "John Doe", "dob": null, "country": null }, "is_match": true, "match_status": "match", "confidence": 1, "match_count": 5, "matches": [ { "name": "DOE, John Example", "list": "OFAC-SDN", "type": "individual", "programs": [ "EXAMPLE-PROGRAM" ], "score": 1, "match_type": "token" } ], "lists_screened": [ "UN", "OFAC-SDN", "EU" ], "risk_score": 1, "risk_level": "high", "recommendation": "reject", "summary": "Strong sanctions match (100%) to \"DOE, John Example\" on the OFAC-SDN list." } } ``` > **Note:** The `matches` array is truncated in this example. The full response returns up to the configured `limit` of matching sanctions records, along with complete details for each candidate. ## About ## What it does Sanctions Screening checks a person against sanctions and AML screening data using a name, with optional date of birth, country, and result limit filters. Send a `name` and get back an envelope with `success` and `code`, plus one or more module blocks in the response. Because the output schema is intentionally open-ended, the service is best treated as a screening lookup rather than a fixed-field profile object. Use Sanctions Screening when you need a quick compliance check during onboarding, KYC review, or manual case handling. Add `dob` and `country` to narrow the search and reduce false matches, or adjust `limit` when you want fewer or more candidate results. The request stays simple: one required query field and three optional filters. That makes it easy to wire into account creation flows, internal risk checks, and batch review tooling without building extra parsing logic around the input. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/quadlem/service/sanctions-screening * * * --- title: "Identity & Fraud Verification API" slug: verify-all-in-one url: https://apyhub.com/quadlem/service/verify-all-in-one provider: "Quadlem, LLC" categories: [Data Validation, Finance, Geolocation] tags: [data-validation, identity-verification, email-validation, phone-validation, address-validation, iban-validation] auth: api_key version: 2.1.0 service_type: sync endpoints: 2 atoms: 50 --- # Identity & Fraud Verification API Validate IP, BIN, DOB, VAT, IBAN, email, phone, address, and more in a single request. Built for onboarding, risk checks, and pre-validation. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/quadlem/verify-all-in-one/verify` | What it does Verifies any mix of signals — BIN, IP, email, phone, IBAN, address, company/VAT, and p… | 50 | | POST | `https://api.eu.apyhub.com/quadlem/verify-all-in-one` | What it does Verifies any mix of signals — BIN, IP, email, phone, IBAN, address, company/VAT, and p… | 50 | ## Endpoint reference ### Verify (All-in-One) `GET https://api.eu.apyhub.com/quadlem/verify-all-in-one/verify` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `ip` | query | string | no | | | `bin` | query | string | no | | | `dob` | query | string (date) | no | | | `vat` | query | string | no | | | `city` | query | string | no | | | `iban` | query | string | no | | | `name` | query | string | no | | | `email` | query | string | no | | | `phone` | query | string | no | | | `state` | query | string | no | | | `street` | query | string | no | | | `address` | query | string | no | | | `company` | query | string | no | | | `country` | query | string | no | | | `postcode` | query | string | no | | #### Quickstart Use the following request to assess an email address and screen an individual against sanctions lists using their name and date of birth. ```bash curl -X GET "https://api.eu.apyhub.com/quadlem/verify-all-in-one/verify?email=user%40example.com&name=John+Doe&dob=1990-01-01" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back A successful request returns the email validation result, sanctions screening outcome, an overall risk assessment, and a recommendation based on the evaluated inputs. ```json { "success": true, "code": 200, "EMAIL": { "email": "user@example.com", "valid": true, "risk_level": "low" }, "SANCTIONS": { "is_match": true, "match_status": "match", "confidence": 0.91, "risk_level": "high" }, "assessment": { "risk_score": 0.91, "risk_level": "high", "recommendation": "reject", "summary": "High risk (91/100) because the name matches a sanctioned party.", "inputs_evaluated": [ "email", "sanctions" ] }, "plan": { "current": "ultra", "evaluated_features": [ "email", "sanctions" ] } } ``` > **Note:** When additional request fields are provided, the response can also include `BIN`, `IP`, `PHONE`, `IBAN`, `COMPANY`, and `ADDRESS` modules, along with populated `correlations` to provide a more comprehensive fraud and compliance assessment. ### Verify (All-in-One) `POST https://api.eu.apyhub.com/quadlem/verify-all-in-one` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `ip` | body | string | no | Example: `8.8.8.8`. | | `bin` | body | string | no | Example: `457173`. | | `dob` | body | string (date) | no | Example: `1975-04-12`. | | `vat` | body | string | no | Example: `DE811569869`. | | `city` | body | string | no | Example: `Washington`. | | `iban` | body | string | no | Example: `DE89370400440532013000`. | | `name` | body | string | no | Person name (sanctions) Example: `John Doe`. | | `email` | body | string | no | Example: `user@example.com`. | | `phone` | body | string | no | Example: `+14155552671`. | | `state` | body | string | no | Example: `DC`. | | `street` | body | string | no | Structured address part — alternative to free-text address Example: `1600 Pennsylvania Avenue NW`. | | `address` | body | string | no | Free-text address (Ultra+) Example: `1600 Pennsylvania Avenue NW, Washington DC`. | | `company` | body | string | no | Example: `Acme Ltd`. | | `country` | body | string | no | Example: `US`. | | `postcode` | body | string | no | ZIP/postal code (alias: zip) Example: `20500`. | #### Quickstart Use the following request to perform a fraud and risk assessment using one or more identifiers such as an IP address, email address, phone number, and country. ```bash curl -X POST "https://api.eu.apyhub.com/quadlem/verify-all-in-one" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "ip": "8.8.8.8", "email": "user@example.com", "phone": "+14155552671", "country": "US" }' ``` #### What you'll get back A successful request returns individual risk assessments for each submitted identifier, along with an overall fraud evaluation and recommendation. ```json { "success": true, "code": 200, "IP": { "IP": "8.8.8.8", "risk_score": 0, "risk_level": "low" }, "EMAIL": { "email": "user@example.com", "valid": false, "risk_level": "high" }, "PHONE": { "phone": "+14155552671", "valid": true, "risk_level": "low" }, "assessment": { "risk_score": 0.99, "risk_level": "high", "recommendation": "reject", "summary": "High risk (99/100) due to correlated signal mismatches.", "correlations": { "ip_address_country_match": true } }, "plan": { "current": "ultra", "evaluated_features": [ "ip", "email", "phone" ] } } ``` > **Note:** When additional fields are included in the request, the response can also contain enriched modules such as `BIN`, `SANCTIONS`, `IBAN`, `COMPANY`, and `ADDRESS`, providing a more comprehensive fraud and identity assessment. ## About ## What it does All In One Verification lets you validate multiple data points through a single endpoint. Send one or more fields such as `ip`, `bin`, `dob`, `vat`, `city`, `iban`, `name`, `email`, `phone`, `state`, `street`, `address`, `company`, `country`, and `postcode`, and get back a response envelope with `success` and `code` plus the relevant verification blocks. Use the GET variant for simple query-based checks, or POST the same data in a `body` object when you want to submit structured payloads from your application. The service is designed for workflows that need more than one validation step at once, such as onboarding, risk screening, payment checks, or address and identity pre-validation. Because the response schema is an envelope with `success` and `code` and additional module blocks, you can integrate it into existing validation pipelines without needing separate calls for each data type. That makes it useful when you want to confirm contact details, tax identifiers, bank details, or location-related inputs before saving a record or continuing a transaction. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/quadlem/service/verify-all-in-one * * * --- title: Advanced IBAN Validation API slug: iban-validation url: https://apyhub.com/quadlem/service/iban-validation provider: "Quadlem, LLC" categories: [Finance, Standard Data] tags: [iban, bank-account-validation, payment-validation, finance, data-validation, bank-account] auth: api_key version: 2.1.0 service_type: sync endpoints: 2 atoms: 10-40 --- # Advanced IBAN Validation API Validate an IBAN from a single query parameter and get a success and code response. Built for payment flows and quick bank-detail checks. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/quadlem/iban-validation/iban-validate` | What it does Validates an IBAN and returns a full risk, routing, and compliance profile — checksum… | 40 | | GET | `https://api.eu.apyhub.com/quadlem/iban-validation/countries` | What it does Returns the full list of countries and territories supported for IBAN/ISO validation,… | 10 | ## Endpoint reference ### IBAN Validation `GET https://api.eu.apyhub.com/quadlem/iban-validation/iban-validate` · 40 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `iban` | query | string | yes | | #### Quickstart Use the following request to validate an IBAN and retrieve associated banking, country, compliance, and risk information. ```bash curl -X GET "https://api.eu.apyhub.com/quadlem/iban-validation/iban-validate?iban=DE89370400440532013000" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back A successful request returns structured information about the IBAN, including its validity, bank details, country information, compliance checks, fraud signals, and confidence score. ```json { "success": true, "valid": true, "input": "DE89370400440532013000", "bank": { "name": "Example Bank", "bic": "EXAMPLEXXX" }, "country": { "code": "DE", "name": "Germany", "currency": "EUR" }, "sepa": { "is_sepa_country": true, "instant_payment": true }, "compliance": { "fatf_status": "clean", "ofac_flag": false }, "fraud_signals": { "risk_score": 0, "risk_level": "minimal" }, "confidence": { "score": 85, "grade": "B" } } ``` > **Note:** The complete response also includes additional modules such as `routing`, `payment_networks`, `fx`, `payroll_suitability`, `account_format`, `financial_stability`, `formatted`, and other enriched metadata. ### IBAN Countries `GET https://api.eu.apyhub.com/quadlem/iban-validation/countries` · 10 atoms · accepts `application/json` #### Quickstart Use the following request to retrieve the complete list of supported countries and territories. ```bash curl -X GET "https://api.eu.apyhub.com/quadlem/iban-validation/countries" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back A successful request returns the total number of supported countries along with details such as the country code, country name, currency, and flag. ```json { "success": true, "code": 200, "count": 250, "countries": [ { "country_code": "DE", "country_name": "Germany", "currency": "EUR", "flag": "🇩🇪" }, { "country_code": "US", "country_name": "United States", "currency": "USD", "flag": "🇺🇸" }, { "country_code": "AQ", "country_name": "Antarctica", "currency": null, "flag": "🇦🇶" } ] } ``` > **Note:** The complete response includes all **250 supported countries and territories**, each with its ISO country code, display name, currency (where applicable), and flag. ## About ## What it does IBAN Validator checks an International Bank Account Number and returns a simple validation response. Send an `iban` string and get back an envelope with `success` and `code`, plus any additional module blocks the service includes. Use it when you need to confirm account numbers before payment initiation, onboarding, or bank-detail storage. It fits workflows where a frontend form, backend service, or support tool needs a quick yes/no validation result without parsing the IBAN format yourself. The service also includes an `IBAN Countries` endpoint at `/countries`, which returns the same response envelope. Use it to retrieve the country-related IBAN reference data exposed by the API. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/quadlem/service/iban-validation * * * --- title: US Routing Number Lookup API slug: lookup-bank-by-routing-number url: https://apyhub.com/dosvak/service/lookup-bank-by-routing-number provider: Dosvak LLC categories: [Data Validation, Finance] tags: [bank-routing, routing-number, ach, bank-validation, financial-data] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # US Routing Number Lookup API Look up a US bank by its 9-digit routing number. Use it to validate payment details and retrieve the matching bank record before processing. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/lookup-bank-by-routing-number` | $## What it does Looks up bank details using a routing number provided as a query parameter. Return… | 100 | ## Endpoint reference ### Lookup bank by routing number `GET https://api.eu.apyhub.com/dosvak/lookup-bank-by-routing-number` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `routing_number` | query | string | yes | Routing Number Example: `021000021`. | #### Quickstart Look up a bank by its 9-digit routing number using the required query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/lookup-bank-by-routing-number?routing_number=021000021" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object containing the lookup result, whether the routing number was found, the associated bank information, and attribution details. ```json { "input": "021000021", "found": true, "bank": { "routing_number": "021000021", "customer_name": "JPMORGAN CHASE", "address": "3RD FLOOR", "city": "TAMPA", "state": "FL", "zip_code": "336100000", "phone": "8134323700", "office_code": "O", "record_type_code": "1", "servicing_frb_number": "021001208", "institution_status_code": "1", "data_view_code": "1", "source": "fedach", "updated_at": "2026-07-29T17:19:03.916039Z" }, "attribution": [] } ``` ## About ## What it does Bank Routing Lookup retrieves bank information associated with a U.S. routing number. Send a 9-digit `routing_number` as a query parameter and get back the routing record in the API's response body. Use it when you need to identify the bank behind an ACH or wire routing number before you submit a payment, validate customer-provided banking details, or enrich a finance workflow with routing metadata. The request is simple: one required string field, `routing_number`, and it must be exactly 9 characters long. Because the response schema is open-ended, treat the returned payload as a structured routing lookup result rather than a fixed set of fields. That makes this endpoint useful as a lightweight reference check inside onboarding flows, payment forms, or internal finance tools where you only need to confirm a routing number and consume the bank data the API provides. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/lookup-bank-by-routing-number * * * --- title: US Routing Number Validation API slug: validate-routing-number url: https://apyhub.com/dosvak/service/validate-routing-number provider: Dosvak LLC categories: [Data Validation, Finance] tags: [routing-number, bank-validation, ach, financial-validation, payment-data] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # US Routing Number Validation API Validate a 9-digit US routing number from a query parameter. Use it to reject invalid bank details before ACH transfers or payment processing. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/validate-routing-number` | What it does Validates a routing number supplied on the request. Returns the checksum result, wheth… | 100 | ## Endpoint reference ### Validate routing number `GET https://api.eu.apyhub.com/dosvak/validate-routing-number` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `routing_number` | query | string | yes | Routing Number Example: `021000021`. | #### Quickstart Validate a routing number by passing the required `routing_number` as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/validate-routing-number?routing_number=021000021" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object containing the validation result, checksum status, reference match status, bank information (when available), and attribution details. ```json { "input": "021000021", "normalized": "021000021", "checksum_valid": true, "valid": true, "reason": "ok", "reference_status": "matched", "reference_match": true, "bank": { "routing_number": "021000021", "customer_name": "JPMORGAN CHASE", "city": "TAMPA", "state": "FL", "zip_code": "336100000", "phone": "8134323700", "institution_status_code": "1", "source": "fedach", "updated_at": "2026-07-29T17:19:03.916039Z" }, "attribution": [] } ``` ## About ## What it does Routing Number Validator checks whether a U.S. routing number is valid. Send a 9-digit `routing_number` in the query string, and get a response indicating the result back. Use it when you need to verify bank routing data before creating a payment flow, storing customer banking details, or running preflight checks on ACH-related forms. The endpoint is focused on one job: The endpoint validates the routing number format, checksum, and attempts to match it against the FedACH routing directory. The request schema is simple and strict: a single `routing_number` string exactly 9 characters long. If your app collects bank details from users, this endpoint fits into the step where you reject malformed routing numbers early and keep invalid records out of downstream systems. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/validate-routing-number * * * --- title: Validate IBAN Checksum API slug: validate-iban-checksum url: https://apyhub.com/dosvak/service/validate-iban-checksum provider: Dosvak LLC categories: [Data Validation, Finance] tags: [iban, bank-validation, financial-validation, payment-validation, account-validation] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # Validate IBAN Checksum API Validate an IBAN checksum from a query parameter and catch invalid bank account numbers before payments, payouts, or onboarding. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/validate-iban-checksum` | What it does Validates an IBAN provided as a query parameter and returns a JSON object containing t… | 100 | ## Endpoint reference ### Validate IBAN `GET https://api.eu.apyhub.com/dosvak/validate-iban-checksum` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `iban` | query | string | yes | Iban Example: `GB82WEST12345698765432`. | #### Quickstart Check whether an IBAN is valid by sending it as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/validate-iban-checksum?iban=GB82WEST12345698765432" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object containing the IBAN validation result, including the normalized IBAN, country code, length validation, checksum validation, overall validity, and attribution information. ```json { "input": "GB82WEST12345698765432", "normalized": "GB82WEST12345698765432", "country_code": "GB", "expected_length": 22, "actual_length": 22, "checksum_valid": true, "valid": true, "reason": "ok", "attribution": [] } ``` ## About ## What it does IBAN Validator checks whether a provided IBAN is formatted and structured correctly. Send an `iban` string in the query. The value must be between 5 and 40 characters, and the service validates the IBAN structure, country code, length, and checksum according to the IBAN specification. Use IBAN Validator when you need to catch bad bank account identifiers before they reach payment flows, onboarding forms, or back-office systems. It is a fit for checkout validation, beneficiary setup, and any workflow where a single invalid IBAN can trigger failed transfers or manual review. If you are normalising financial data from user input or third-party imports, this endpoint gives you a simple check step to gate downstream processing without building IBAN rules yourself. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/validate-iban-checksum * * * --- title: CheckText Profanity API slug: profanity-check url: https://apyhub.com/dosvak/service/profanity-check provider: Dosvak LLC categories: [Artificial Intelligence, "Security & Privacy"] tags: [profanity-detection, text-moderation, content-moderation, language-detection, user-generated-content] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # CheckText Profanity API Check comments, chats and usernames for profanity. Get a yes or no answer, a match count and the exact words found, in one request. Try it free. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/profanity-check` | What it does Checks a submitted text string for profanity and returns a response object. The exact… | 100 | ## Endpoint reference ### Profanity check `POST https://api.eu.apyhub.com/dosvak/profanity-check` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | yes | Text | | `language` | body | string | no | Language Default: `en`. | #### Quickstart Check a piece of text for profanity by sending it with the required `text` field. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/profanity-check" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"This is a clean example sentence.","language":"en"}' ``` #### What you'll get back Returns a JSON object. The schema does not declare any specific top-level fields, so the exact response shape may vary. ```json { "language": "en", "contains_profanity": true, "match_count": 2, "matches": [ "word_1", "word_2" ], "attribution": [ { "source": "censor-text/profanity-list" } ] } ``` ## About ## What it does The CheckText Profanity API is a profanity filter API that checks text for swear words and offensive language. Send a comment, message or username and find out whether it contains profanity, how many times, and which words were matched. It is one POST endpoint. Send the `text` to check, and optionally a `language` code such as `en`, which is the default. The response tells you `contains_profanity` as true or false, gives a `match_count`, and lists the exact words found in `matches`, so you can block the text, mask the words, or send it to a moderator with the problem highlighted. Matching is based on a published list of profane words, so results are predictable and easy to explain to users: a word is either on the list or it is not. Common uses include checking usernames and display names at sign-up, screening comments, reviews and chat messages before they are published, filtering in-game chat, and flagging user content for a moderation queue. A word list catches explicit language but not insults, threats or harassment written in polite words. For that, use the [Detect Text Toxicity API](https://apyhub.com/dosvak/service/detect-toxicity), or the [AI Text Moderation API](https://apyhub.com/apyhub/service/text-moderation) for broader content moderation. If you do not know the language of the text in advance, detect it first with the [Language Detection API](https://apyhub.com/apyhub/service/detect-language) and pass the result as `language`. You can try it right here in the playground. Start for free with 5 API calls a day, no card required, and check your own text before you commit. The API is also available through [ApyHub MCP](https://apyhub.com/mcp), so AI agents can screen text for profanity directly before they publish or reply. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/profanity-check * * * --- title: Resolve Short URL API slug: unshorten-url url: https://apyhub.com/dosvak/service/unshorten-url provider: Dosvak LLC categories: [Developer Tools, "Security & Privacy"] tags: [url-expansion, redirect-resolution, link-unshortening, url-normalization, phishing-checks] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # Resolve Short URL API Resolve shortened URLs to their final destination. Control redirect hops and timeout for link checks, moderation, analytics, and normalization. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/unshorten-url` | What it does Unshortens a URL by following redirects and returning the resolved result. The request… | 100 | ## Endpoint reference ### Unshorten URL `POST https://api.eu.apyhub.com/dosvak/unshorten-url` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string | yes | Url | | `max_hops` | body | integer | no | Max Hops Default: `10`. | | `timeout_s` | body | integer | no | Timeout S Default: `8`. | #### Quickstart Send the URL you want to unshorten in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/unshorten-url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://bit.ly/example"}' ``` #### What you'll get back Returns a JSON object. The schema does not declare any specific top-level fields, so the exact response shape may vary. ```json { "input": "https://bit.ly/example", "resolved": "https://vignettinglife.com/", "hops": [ { "url": "https://bit.ly/example", "status": 200 }, { "url": "https://vignettinglife.com/", "status": 200 } ], "truncated": false, "attribution": [ { "source": "HTTP redirect metadata" } ] } ``` ## About ## What it does URL Unshortener follows shortened links and returns the destination URL after resolving redirects. Send a `url` in the request body, and you can also set `max_hops` to limit how many redirects are followed and `timeout_s` to control how long the lookup waits. Use it when you need to expand link shorteners before storing, scanning, or displaying a URL. It helps you see the final target behind social links, tracking links, and other redirect chains without guessing where the link ends up. The response is returned as a JSON object with the resolved result, and the schema allows additional properties. That makes it suitable for workflows where you need to inspect the final destination and pass the response onward without strict field assumptions. If you process inbound links in moderation, analytics, phishing checks, or URL normalization, URL Unshortener gives you a direct way to resolve the actual destination before further handling. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/unshorten-url * * * --- title: Resume Optimize Document API slug: optimize-resume url: https://apyhub.com/dosvak/service/optimize-resume provider: Dosvak LLC categories: [HR, Smart Generation] tags: [resume-optimization, cv-tailoring, job-search, career-tools, hr] auth: api_key version: 0.1.0 service_type: sync endpoints: 2 atoms: 100 --- # Resume Optimize Document API Optimize resume text or uploaded PDF and DOCX files against optional target skills. Built for tailoring a CV to a specific role or job posting. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/optimize-resume` | What it does Optimizes resume text for a target role and returns a structured JSON object containin… | 100 | | POST | `https://api.eu.apyhub.com/dosvak/optimize-resume/upload` | What it does Uploads a supported resume file and returns a structured JSON object containing optimi… | 100 | ## Endpoint reference ### Optimize resume `POST https://api.eu.apyhub.com/dosvak/optimize-resume` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `resume_text` | body | string | yes | Resume Text | | `target_skills` | body | array of string | no | Target Skills | #### Quickstart Send your resume text to optimize it for the target role. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/optimize-resume" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "resume_text": "Experienced software engineer with 5+ years building scalable web applications, leading cross-functional projects, and improving system performance.", "target_skills": ["Python", "AWS", "Docker"] }' ``` #### What you'll get back ```json { "present_target_skills": [], "missing_target_skills": [ "python" ], "suggestions": [ "Add measurable bullets demonstrating these missing target skills." ], "llm_optimized_summary": "Skilled software engineer with 5+ years in scalable web development.", "llm_bullet_rewrite_suggestions": [ "Replace 'leading cross-functional projects' with 'managing cross-functional teams'" ] } ``` ### Optimize resume upload `POST https://api.eu.apyhub.com/dosvak/optimize-resume/upload` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Resume file (.pdf or .docx) | | `target_skills` | body | string | no | Comma-separated skills, e.g. kubernetes,data engineering,fastapi | #### Quickstart Upload a resume file to start an optimization request. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/optimize-resume/upload" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/resume.pdf" ``` #### What you'll get back Returns a structured JSON object containing analysis results, AI-generated recommendations, request metadata, and attribution. ```json { "present_target_skills": [ "sql" ], "missing_target_skills": [], "suggestions": [], "llm_optimized_summary": "Jane Doe has 8 years of experience as a Senior Data Engineer with expertise in Python, SQL, FastAPI, Docker, and Kubernetes.", "llm_bullet_rewrite_suggestions": [ "Developed ETL workflows and API endpoints using Python and FastAPI." ], "input_mode": "file", "file_name": "Jane_Doe_Resume.docx" } ``` ## About ## What it does Resume Optimizer helps you refine a resume for a target role by sending resume text or uploading a PDF or DOCX file. It takes the content you provide, along with optional target skills, and returns an optimized result in its response. Use the text endpoint when you already have a plain-text resume. Send `resume_text` and, if you want, an array of `target_skills` to steer the optimization toward specific requirements. Use the upload endpoint when the resume lives in a file: upload `file` and pass `target_skills` as a comma-separated string such as `kubernetes,data engineering,fastapi`. This fits common hiring workflows where you want to tailor one resume for a specific job description or skill set before applying. The API returns a structured optimization result containing analysis results, AI-generated recommendations, enhanced content, metadata, and attribution. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/optimize-resume * * * --- title: "Resume Parsing & Analysis API" slug: parse-resume-analyze url: https://apyhub.com/dosvak/service/parse-resume-analyze provider: Dosvak LLC categories: [Data Extraction, Developer Tools, HR] tags: [resume-parsing, cv-parsing, hr-tech, candidate-data, document-parsing] auth: api_key version: 0.1.0 service_type: sync endpoints: 2 atoms: 100 --- # Resume Parsing & Analysis API Parse resume files or raw text into structured output. Built for ATS pipelines, first-pass screening, and candidate data enrichment workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/parse-resume-analyze/upload` | What it does Uploads a supported resume file and returns a structured JSON object containing extrac… | 100 | | POST | `https://api.eu.apyhub.com/dosvak/parse-resume-analyze` | What it does Parses resume text and returns a structured JSON object containing extracted informati… | 100 | ## Endpoint reference ### Parse resume upload `POST https://api.eu.apyhub.com/dosvak/parse-resume-analyze/upload` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Resume file (.pdf or .docx) | #### Quickstart Upload a resume file (`.pdf` or `.docx`) for parsing. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/parse-resume-analyze/upload" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/resume.pdf" ``` #### What you'll get back Returns a structured JSON object containing extracted information, AI-generated analysis, processing results, and attribution. ```json { "name": "Jane Doe Resume", "email": "jane.doe@example.com", "estimated_years_experience": 8, "skills": [ "python", "sql", "fastapi", "docker" ], "professional_summary": "Senior Data Engineer with 8+ years in Python, SQL, FastAPI, Docker, Kubernetes, and PostgreSQL.", "inferred_roles": [ "Senior Data Engineer" ] } ``` ### Parse resume `POST https://api.eu.apyhub.com/dosvak/parse-resume-analyze` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `resume_text` | body | string | yes | Resume Text | #### Quickstart Parse a resume from plain text by sending the required `resume_text` field in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/parse-resume-analyze" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"resume_text":"Experienced software engineer with 5+ years building web applications in Python, JavaScript, and React."}' ``` #### What you'll get back Returns a structured JSON object containing extracted information, analysis results, metadata, and attribution. ```json { "name": "Jane Doe", "estimated_years_experience": 5, "skills": [ "python" ], "professional_summary": "Experienced software engineer with 5+ years developing web applications using Python, JavaScript, and React.", "inferred_roles": [ "Software Engineer", "Web Developer" ] } ``` ## About ## What it does Resume Parser extracts structured resume data from either an uploaded file or pasted text. Send a PDF or DOCX to `/upload`, or submit `resume_text` directly to parse plain text resumes. Use it when you need to turn candidate resumes into machine-readable data for ATS workflows, screening pipelines, or internal hiring tools. The service is designed around two inputs: a binary resume file in the upload endpoint, and text input with at least 20 characters in the text endpoint. The API returns a structured resume object containing extracted information, AI-generated analysis, processing results, and attribution. That makes the service suitable when you want to ingest resume content and map it into your own downstream model or database schema. Resume Parser fits into HR systems that need to normalize candidate documents before review, search, or enrichment. It is also useful when you have resume text already extracted from another step and want a dedicated parsing stage before matching or analytics. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/parse-resume-analyze * * * --- title: Skill Based Resume Screening API slug: screen-resume url: https://apyhub.com/dosvak/service/screen-resume provider: Dosvak LLC categories: [Artificial Intelligence, HR] tags: [resume-screening, candidate-screening, hiring, hr-automation, document-screening] auth: api_key version: 0.1.0 service_type: sync endpoints: 2 atoms: 100 --- # Skill Based Resume Screening API Screen resumes from text or uploaded PDF and DOCX files using minimum years and required skills. Built to automate first-pass candidate review. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/screen-resume` | What it does Screens a resume using the submitted resume text and optional screening criteria. It a… | 100 | | POST | `https://api.eu.apyhub.com/dosvak/screen-resume/upload` | What it does Uploads a resume file (.pdf or .docx) and eturns a structured JSON object containing t… | 100 | ## Endpoint reference ### Screen resume `POST https://api.eu.apyhub.com/dosvak/screen-resume` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `min_years` | body | integer | no | Min Years Default: `0`. | | `resume_text` | body | string | yes | Resume Text | | `required_skills` | body | array of string | no | Required Skills | #### Quickstart Send a resume text to screen it against the minimum years of experience and required skills you provide. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/screen-resume" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "resume_text": "Software engineer with 6 years of experience building web applications, APIs, and data pipelines.", "min_years": 5, "required_skills": ["Python", "APIs"] }' ``` #### What you'll get back Returns a structured JSON object containing the requested results and any additional metadata produced during processing. ```json { "score": 100, "recommendation": "strong_yes", "matched_required_skills": [ "sql" ], "missing_required_skills": [], "skills_coverage_pct": 100, "years_requirement_met": true, "parsed_resume": { "name": "Jane Doe", "estimated_years_experience": 8, "skills": [ "python", "sql", "fastapi", "docker" ] }, "llm_assessment": { "fit_label": "strong_yes", "strengths": [ "Python", "SQL" ], "interview_focus": [ "REST APIs", "ETL pipelines" ] } } ``` ### Screen resume upload `POST https://api.eu.apyhub.com/dosvak/screen-resume/upload` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Resume file (.pdf or .docx) | | `min_years` | body | integer | no | Default: `0`. | | `required_skills` | body | string | no | Comma-separated skills, e.g. python,sql,fastapi | #### Quickstart Upload a resume file to screen it for matching skills. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/screen-resume/upload" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/resume.pdf" ``` #### What you'll get back Returns a structured JSON object containing the screening results, extracted information, evaluation details, request metadata, and attribution. ```json { "score": 20, "recommendation": "no", "matched_required_skills": [], "missing_required_skills": [], "skills_coverage_pct": 0, "years_requirement_met": true, "parsed_resume": { "name": "Jane Doe Resume", "estimated_years_experience": 8, "skills": [ "python", "sql", "fastapi", "docker" ] }, "llm_assessment": { "fit_label": "strong_yes", "strengths": [ "Python", "SQL" ], "interview_focus": [ "ETL pipelines", "application deployment" ] }, "input_mode": "file", "file_name": "Jane_Doe_Resume.docx", "file_type": "application/octet-stream" } ``` ## About ## What it does Resume Screening lets you send a resume as plain text or upload a PDF or DOCX file, then returns a screening result you can use in your hiring flow. Provide `resume_text` for text-based screening, or upload `file` for document-based screening. Both endpoints also accept `min_years`, and the text endpoint accepts `required_skills` as an array while the upload endpoint accepts `required_skills` as a comma-separated string. Use Resume Screening when you need a fast first pass on applicants before a recruiter reviews the full profile. A typical workflow is filtering resumes against a role requirement set, checking for minimum experience, or flagging candidates whose resumes mention the skills you care about. Returns a structured JSON object containing the screening results, extracted information, evaluation details, request metadata, and attribution. This fits into applicant tracking systems, internal hiring tools, and lightweight qualification pipelines where you want to automate the first review step without building document handling yourself. Send the resume, set your thresholds, and use the returned screening output to route candidates forward or hold them for manual review. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/screen-resume * * * --- title: "US Trademark Registry & Analytics API" slug: search-trademark-records url: https://apyhub.com/dosvak/service/search-trademark-records provider: Dosvak LLC categories: [Marketing, SEO] tags: [trademark search, uspto trademark, brand clearance, trademark lookup, trademark status, trademark assignment search, trademark monitoring, mark clearance tool, ip due diligence] auth: api_key version: 0.1.0 service_type: sync endpoints: 8 atoms: 100 --- # US Trademark Registry & Analytics API Search and verify US trademarks by name. Returns status, jurisdiction, ownership transfer history, and portfolio analytics for brand clearance. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/search` | What it does Searches US trademark records using a text query and returns a JSON object containing… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/by-mark/:mark_text` | What it does Looks up US trademark records by the trademark text in the path and returns matching r… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/:record_id` | What it does Retrieves the full US trademark record for the specified recordid and returns the trad… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/status-breakdown` | What it does Returns a US trademark status breakdown for the requested result limit. The response i… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/jurisdictions` | What it does Returns a breakdown of U.S. trademark jurisdictions, with a count of matching jurisdic… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/sources` | What it does Returns the US trademark source inventory as a JSON object, including a total count, a… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/update-timeline` | What it does Returns a US trademark update timeline for the requested number of days. The response… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/assignments/trademark/search` | What it does Searches US trademark assignment records using a required query string and optional da… | 100 | ## Endpoint reference ### Search US Trademarks `GET https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/search` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `20`. Example: `50`. | | `query` | query | string | yes | Query Example: `TESLA`. | | `jurisdiction` | query | string | no | Jurisdiction Example: `US`. | #### Quickstart Search US trademarks by query term, with the jurisdiction and limit passed as query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/search?query=TESLA&limit=20&jurisdiction=US" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `count` as an integer, `query` as a string, `results` as an array of trademark summary objects, and `jurisdiction` as a string or `null`. Each result includes `source`, `status`, `mark_text`, `updated_at`, and `jurisdiction`; `attribution` is an array of attribution objects with `url`, `notice`, `source`, `dataset`, and `license`. ```json { "count": 1, "query": "TESLA", "results": [ { "source": "uspto", "status": "registered", "mark_text": "TESLA", "updated_at": "2024-01-15T12:00:00Z", "jurisdiction": "US" } ], "attribution": [], "jurisdiction": "US" } ``` ### Lookup US Trademark `GET https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/by-mark/:mark_text` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `25`. Example: `10`. | | `mark_text` | path | string | yes | Mark Text Example: `TESLA`. | | `jurisdiction` | query | string | no | Jurisdiction Example: `US`. | #### Quickstart Search for a trademark by its mark text. Replace `TESLA` in the path if you want to try a different mark. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/by-mark/:mark_text?limit=25&jurisdiction=US" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `count` as an integer, `results` as an array of trademark records, `mark_text` as a string, `attribution` as an array of attribution objects, and `jurisdiction` as a string or null. ```json { "count": 1, "results": [ { "id": 123, "source": "uspto", "status": "LIVE", "mark_text": "TESLA", "updated_at": "2026-08-04T12:00:00Z", "jurisdiction": "US", "normalized_mark": "TESLA" } ], "mark_text": "TESLA", "attribution": [], "jurisdiction": "US" } ``` ### Get US Trademark Details `GET https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/:record_id` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `record_id` | path | integer | yes | Record Id Example: `3`. | #### Quickstart Fetch a trademark record by its record ID. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/:record_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with trademark details from the `TrademarkRecord` shape, plus an optional `attribution` array. Top-level fields can include `id`, `source`, `status`, `mark_text`, `updated_at`, `jurisdiction`, and `normalized_mark`, and `attribution` contains objects with `url`, `notice`, `source`, `dataset`, and `license`. ```json { "id": 3, "source": "uspto", "status": "registered", "mark_text": "ACME", "updated_at": "2024-01-15T10:30:00Z", "jurisdiction": "US", "normalized_mark": "ACME", "attribution": [ { "url": "https://www.uspto.gov/", "notice": "Data sourced from USPTO records.", "source": "USPTO", "dataset": "Trademark records", "license": "Public domain" } ] } ``` ### Get US Trademark Status Breakdown `GET https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/status-breakdown` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `25`. | #### Quickstart Fetch the trademark status breakdown with the default limit. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/status-breakdown?limit=25" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `count` as an integer, `results` as an array of status breakdown objects, and `attribution` as an array of attribution objects. ```json { "count": 0, "results": [ { "status": "active", "records": 0 } ], "attribution": [ { "url": "https://example.com", "notice": "Example notice", "source": "Example source", "dataset": "Example dataset", "license": "Example license" } ] } ``` ### Get US Trademark Jurisdiction Breakdown `GET https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/jurisdictions` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `25`. | #### Quickstart Fetch the trademark jurisdiction breakdown, optionally limiting how many results are returned. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/jurisdictions?limit=25" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields: `count` as an integer, `results` as an array of objects, and `attribution` as an array of attribution objects. Each item in `results` includes `records` (integer) and `jurisdiction` (string). Each item in `attribution` includes `url`, `notice`, `source`, `dataset`, and `license`. ```json { "count": 2, "results": [ { "records": 120, "jurisdiction": "US" } ], "attribution": [ { "url": "https://example.com", "notice": "Data provided by example source", "source": "Example Source", "dataset": "Trademark Analytics", "license": "CC BY 4.0" } ] } ``` ### Get US Trademark Source Inventory `GET https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/sources` · 100 atoms · accepts `application/json` #### Quickstart Fetch the trademark source breakdown. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/sources" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `count` as an integer, `results` as an array of objects, and `attribution` as an array of attribution objects. - `count`: total number of source records returned - `results[]`: each item includes `source` (string) and `records` (integer) - `attribution[]`: each item may include `url`, `notice`, `source`, `dataset`, and `license` ```json { "count": 2, "results": [ { "source": "USPTO", "records": 1200 }, { "source": "WIPO", "records": 340 } ], "attribution": [ { "url": "https://example.com/dataset", "notice": "Data provided for analytics purposes", "source": "USPTO", "dataset": "Trademark dataset", "license": "CC BY 4.0" } ] } ``` ### Get US Trademark Update Timeline `GET https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/update-timeline` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `days` | query | integer | no | Days Default: `30`. Example: `30`. | #### Quickstart Get the trademark update timeline for the default 30 days. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/trademarks/analytics/update-timeline?days=30" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `days` and `count` integers, a `results` array of objects, and an `attribution` array of objects. Each `results` item includes `records` as an integer and `update_date` as a date string; each `attribution` item includes `url`, `notice`, `source`, `dataset`, and `license`. ```json { "days": 30, "count": 2, "results": [ { "records": 12, "update_date": "2024-05-01" } ], "attribution": [ { "url": "https://example.com", "notice": "Data source notice", "source": "Example Source", "dataset": "Trademark Updates", "license": "Example License" } ] } ``` ### Search US Trademark Assignments `GET https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/assignments/trademark/search` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `100`. | | `query` | query | string | yes | Query Example: `Nike`. | | `end_date` | query | string | no | End Date | | `start_date` | query | string | no | Start Date | #### Quickstart Search trademark assignment records for a query term like `Nike`. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-trademark-records/api/v1/uspto/assignments/trademark/search?query=Nike" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `count` integer, `query` string, `status` string, `results` array of trademark assignment records, and optional `start_date`, `end_date`, and `attribution` fields. ```json { "count": 1, "query": "Nike", "status": "ok", "results": [ { "reel_frame": "9043/0011", "source_file": "assignments.pdf", "trademark_id": "1234567", "assignee_name": "Nike, Inc.", "assignor_name": "ABC Holdings LLC", "recorded_date": "2024-01-15", "conveyance_text": "Assignment of trademark rights", "registration_number": "7654321" } ] } ``` ## About ## What it does US Trademark Intelligence covers trademark search, record lookup, and portfolio-level analytics over normalized US trademark data, plus recorded ownership-transfer history for marks. Search trademark records by text with `/trademarks/search` (optional `jurisdiction` filter), or resolve an exact mark with `/trademarks/by-mark/{mark_text}` when you already know the spelling you're checking. Once you have a specific record, `/trademarks/{record_id}` returns the full entry: `mark_text`, `status`, `jurisdiction`, `source`, `normalized_mark`, and `updated_at`. These three endpoints are the core of any brand clearance, name-check, or trademark-monitoring workflow. For reporting and portfolio-state monitoring, four analytics endpoints return pre-aggregated counts: `/trademarks/analytics/status-breakdown` (records by status — registered, pending, abandoned), `/trademarks/analytics/jurisdictions` (records by country/registry), `/trademarks/analytics/sources` (records by ingestion source), and `/trademarks/analytics/update-timeline` (update volume over a configurable day window, useful for tracking refresh recency). `/assignments/trademark/search` extends the API into ownership history: search recorded trademark assignment transfers by name, company, or registration number, with optional recorded-date filtering. Each result includes `assignee_name`, `assignor_name`, `recorded_date`, `conveyance_text`, and `reel_frame`, which supports due diligence, M&A research, and compliance workflows that need to trace who currently holds rights to a mark. Every response includes `attribution` entries with source and licensing details so you can trace records back to their dataset or surface provenance in your own product. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/search-trademark-records * * * --- title: "US Patent Search & Records API" slug: search-uspto-patents url: https://apyhub.com/dosvak/service/search-uspto-patents provider: Dosvak LLC categories: [Data Extraction] tags: [patent search api, uspto patent api, patent data api, prior art search, patent full-text search, CPC classification api, patent citations api, patent analytics, patentsview api, IP research api] auth: api_key version: 0.1.0 service_type: sync endpoints: 12 atoms: 100 --- # US Patent Search & Records API Search US patents by full-text claims, CPC class, assignee, and citation. Returns structured results plus yearly trend analytics as JSON. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/search` | What it does Searches US patents using a query string, with optional year filtering and a configura… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/advanced-search` | What it does Searches US patents using the advanced query filters provided in the request query str… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/:patent_id` | What it does Retrieves details for a US patent identified by patentid and returns a JSON object con… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/:patent_id/assignees` | What it does Returns the assignees associated with a US patent identified by patentid. The response… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/:patent_id/inventors` | What it does Returns inventor metadata for a US patent identified by patentid. The response include… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/:patent_id/classifications` | What it does Returns the US patent classification metadata for a given patent ID. The request ident… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/:patent_id/citations` | What it does Retrieves US patent citation metadata for the specified patent ID. You can limit the n… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patent-text/search` | What it does Searches US patent text using the provided query and optional filters, then returns a… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patent-text/:patent_id` | What it does Retrieves US patent text section details for a given patentid. You can optionally narr… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/analytics/yearly-trend` | What it does Returns yearly US patent trend analytics for the requested year range. You can control… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/analytics/cpc-breakdown` | What it does Returns a CPC breakdown for US patents as a JSON object containing a total count, a re… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patent-text/analytics/section-breakdown` | What it does Returns a breakdown of US patent text analytics by section type. The response is a JSO… | 100 | ## Endpoint reference ### Search US Patents `GET https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/search` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `year` | query | string | no | Year Example: `2024`. | | `limit` | query | integer | no | Limit Default: `20`. Example: `25`. | | `query` | query | string | yes | Query Example: `wireless charging`. | #### Quickstart Search US patents with the required query term and optional year/limit filters. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/search?query=wireless%20charging&year=2024&limit=25" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `year` (`integer` or `null`), `count` (`integer`), `query` (`string`), `results` (`array` of patent summary objects), and `attribution` (`array` of attribution objects). ```json { "year": 2024, "count": 1, "query": "wireless charging", "results": [], "attribution": [] } ``` ### Search US Patents (Advanced) `GET https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/advanced-search` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `25`. | | `query` | query | string | no | Query Example: `charging`. | | `offset` | query | integer | no | Offset Default: `0`. | | `year_to` | query | string | no | Year To Example: `2024`. | | `wipo_kind` | query | string | no | Wipo Kind Example: `B2`. | | `year_from` | query | string | no | Year From Example: `2020`. | | `cpc_section` | query | string | no | Cpc Section Example: `H`. | | `patent_type` | query | string | no | Patent Type Example: `utility`. | | `assignee_contains` | query | string | no | Assignee Contains Example: `Tesla`. | | `inventor_contains` | query | string | no | Inventor Contains Example: `Kim`. | #### Quickstart Search U.S. patents with a simple query and the default limit. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/advanced-search?query=charging&limit=25" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `count` as an integer, `query` as a string or `null`, `filters` as an object, `results` as an array of patent summary objects, and `attribution` as an array of attribution objects. ```json { "count": 0, "query": "charging", "filters": { "limit": 25, "offset": 0, "year_to": null, "wipo_kind": null, "year_from": null, "cpc_section": null, "patent_type": null, "assignee_contains": null, "inventor_contains": null }, "results": [], "attribution": [] } ``` ### Get US Patent Details `GET https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/:patent_id` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `patent_id` | path | string | yes | Patent Id Example: `12508435`. | #### Quickstart Fetch patent details by providing the patent ID in the path. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/:patent_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with top-level fields such as `patent` (an object), `assignees` (an array), `inventors` (an array), `attribution` (an array), `cpc_current` (an array), and `citation_count` (an integer), as declared by the response schema. ```json { "patent": { "patent_id": "12508435", "wipo_kind": "A1", "withdrawn": "0", "num_claims": "20", "patent_date": "2024-03-12", "patent_type": "utility", "patent_title": "Example patent title", "patent_abstract": "Example abstract text." }, "assignees": [], "inventors": [], "attribution": [], "cpc_current": [], "citation_count": 0 } ``` ### Get US Patent Assignees `GET https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/:patent_id/assignees` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `patent_id` | path | string | yes | Patent Id Example: `12508435`. | #### Quickstart Fetch the assignee metadata for a specific patent by passing its `patent_id` in the path. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/:patent_id/assignees" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields: `count` as an integer, `results` as an array of assignee objects, `patent_id` as a string, and `attribution` as an array of attribution objects. ```json { "count": 1, "results": [ { "assignee_id": "550e8400-e29b-41d4-a716-446655440000", "location_id": "550e8400-e29b-41d4-a716-446655440001", "assignee_type": "2", "assignee_sequence": "0", "disambig_assignee_organization": "Acme Technologies Inc.", "disambig_assignee_individual_name_last": "Smith", "disambig_assignee_individual_name_first": "Jane" } ], "patent_id": "12508435", "attribution": [ { "url": "https://www.uspto.gov/", "notice": "Data provided by the USPTO", "source": "USPTO", "dataset": "Patent data", "license": "Public domain" } ] } ``` ### Get US Patent Inventors `GET https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/:patent_id/inventors` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `patent_id` | path | string | yes | Patent Id Example: `12508435`. | #### Quickstart Fetch the inventors for a patent by putting the patent ID in the path. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/:patent_id/inventors" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `count` as an integer, `results` as an array of inventor objects, `patent_id` as a string, and `attribution` as an array of attribution objects. ```json { "count": 2, "results": [ { "gender_code": "M", "inventor_id": "123456", "location_id": "550e8400-e29b-41d4-a716-446655440000", "inventor_sequence": "0", "disambig_inventor_name_last": "Smith", "disambig_inventor_name_first": "John" } ], "patent_id": "12508435", "attribution": [ { "url": "https://example.com", "notice": "Data provided by ...", "source": "USPTO", "dataset": "Patents", "license": "Public Domain" } ] } ``` ### Get US Patent Classifications `GET https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/:patent_id/classifications` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `patent_id` | path | string | yes | Patent Id Example: `12508435`. | #### Quickstart Fetch the patent classifications for a single patent ID by putting the required `patent_id` in the path. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/:patent_id/classifications" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `count` as an integer, `results` as an array of classification objects, `patent_id` as a string, and `attribution` as an array of attribution objects. ```json { "count": 1, "results": [ { "cpc_type": "inventional", "cpc_class": "02", "cpc_group": "50/10", "cpc_section": "H", "cpc_sequence": "0", "cpc_subclass": "J" } ], "patent_id": "12508435", "attribution": [ { "url": "https://example.com", "notice": "Example attribution notice", "source": "USPTO", "dataset": "Patent classifications", "license": "CC-BY" } ] } ``` ### Get US Patent Citations `GET https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/:patent_id/citations` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `200`. | | `direction` | query | string | no | Direction Default: `backward`. | | `patent_id` | path | string | yes | Patent Id Example: `12508435`. | #### Quickstart Fetch citation metadata for a patent ID, using the required patent ID in the URL and the default backward direction. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/:patent_id/citations" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `count` as an integer, `results` as an array of citation objects, `direction` and `patent_id` as strings, and `attribution` as an array of attribution objects. Each citation in `results` may include `patent_id`, `wipo_kind`, `record_name`, `citation_date`, `citation_category`, `citation_sequence`, and `citation_patent_id`. ```json { "count": 0, "results": [], "direction": "backward", "patent_id": "12508435", "attribution": [] } ``` ### Search US Patent Text `GET https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patent-text/search` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `20`. | | `query` | query | string | yes | Query Example: `lithium battery thermal management`. | | `year_to` | query | string | no | Year To | | `year_from` | query | string | no | Year From | | `section_type` | query | string | no | Section Type Example: `g_claims_text`. | #### Quickstart Search US patent text with the required query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patent-text/search?query=lithium%20battery%20thermal%20management" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields: `count` and `num_found` are integers, `query` is the search string, `year_from` and `year_to` are nullable integers, `section_type` is a nullable string, `results` is an array of patent section objects, and `attribution` is an array of attribution objects. Each item in `results` includes `id`, `patent_id`, `text_len_i`, `source_file`, and `section_type`, plus optional `score` and `section_seq`. ```json { "count": 1, "query": "lithium battery thermal management", "results": [ { "id": "US1234567|summary_text|1", "score": 12.34, "patent_id": "US1234567", "text_len_i": 842, "section_seq": 1, "source_file": "us_patents.json", "section_type": "summary_text" } ], "year_to": null, "num_found": 1, "year_from": null, "attribution": [], "section_type": null } ``` ### Get US Patent Text Sections `GET https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patent-text/:patent_id` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `200`. | | `patent_id` | path | string | yes | Patent Id Example: `12508435`. | | `section_type` | query | string | no | Section Type Example: `g_claims_text`. | #### Quickstart Fetch patent text sections for a specific patent ID. `patent_id` goes in the path, and the optional filters are passed as query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patent-text/:patent_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `count` and `num_found` integer fields, a `results` array of patent section objects, and top-level `patent_id`, `section_type`, and `attribution` fields. Each item in `results` includes `id`, `patent_id`, `text_len_i`, `source_file`, and `section_type`, with optional `score` and `section_seq` fields. ```json { "count": 1, "results": [ { "id": "12508435|g_claims_text|1", "patent_id": "12508435", "text_len_i": 1240, "section_seq": 1, "source_file": "patent_12508435.pdf", "section_type": "g_claims_text" } ], "num_found": 1, "patent_id": "12508435", "attribution": [], "section_type": "g_claims_text" } ``` ### Get US Patent Yearly Trends `GET https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/analytics/yearly-trend` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `year_to` | query | integer | no | Year To Default: `2025`. | | `year_from` | query | integer | no | Year From Default: `2015`. | #### Quickstart Fetch the yearly patent trend for a date range using the required query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/analytics/yearly-trend?year_from=2015&year_to=2025" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `count` as an integer, `results` as an array of yearly trend objects, `year_to` and `year_from` as integers, and `attribution` as an array of attribution objects. ```json { "count": 2, "results": [ { "patents": 120, "grant_year": 2024, "avg_num_claims": "14.5" } ], "year_to": 2025, "year_from": 2015, "attribution": [ { "url": "https://example.com", "notice": "Data provided for analytics", "source": "Patent dataset", "dataset": "yearly-trend", "license": "CC BY 4.0" } ] } ``` ### Get US Patent CPC Breakdown `GET https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/analytics/cpc-breakdown` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `50`. | #### Quickstart Get a CPC breakdown with the default limit. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patents/analytics/cpc-breakdown?limit=50" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `count` as an integer, `results` as an array of CPC breakdown objects, and `attribution` as an array of attribution objects. ```json { "count": 0, "results": [ { "patents": 0, "cpc_class": "string", "cpc_section": "string", "cpc_subclass": "string" } ], "attribution": [ { "url": "https://example.com", "notice": "string", "source": "string", "dataset": "string", "license": "string" } ] } ``` ### Get US Patent Section Breakdown `GET https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patent-text/analytics/section-breakdown` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `20`. | #### Quickstart Fetch the patent text section breakdown with the default limit. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-uspto-patents/api/v1/uspto/patent-text/analytics/section-breakdown?limit=20" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `count` as an integer, `results` as an array of objects, and `attribution` as an array of attribution objects. ```json { "count": 0, "results": [ { "docs": 0, "section_type": "string" } ], "attribution": [ { "url": "https://example.com", "notice": "string", "source": "string", "dataset": "string", "license": "string" } ] } ``` ## About ## What it does US Patent Intelligence gives you a complete working surface over PatentsView-disambiguated US patent grant data — search, full record detail, related entities, full-text sections, and portfolio-level analytics — all in one API. Start with search: `/patents/search` handles simple keyword + year lookups against title and abstract, while `/patents/advanced-search` adds multi-constraint filtering by patent type, WIPO kind, CPC section, assignee name, inventor name, and an explicit year range with pagination via `limit`/`offset`. Both return `patent_id`, `patent_title`, `patent_date`, `patent_type`, `wipo_kind`, and `num_claims` for each hit. Once you have a `patent_id`, `/patents/{patent_id}` returns the full technical envelope: core grant metadata and abstract, disambiguated assignee records, disambiguated inventor records, active CPC classifications, and an aggregate citation count. If you only need one slice of that envelope, dedicated endpoints are available for `/assignees`, `/inventors`, `/classifications`, and `/citations` (the latter supporting `backward` or `forward` direction to trace prior art or later filings that cite the patent). For full-text work, `/patent-text/search` runs relevance-ranked search across indexed patent sections (claims, abstract, description, summary) with optional `section_type` and year-range filters, and `/patent-text/{patent_id}` retrieves all indexed text sections for a specific patent in order. Three analytics endpoints round out the API for reporting and dashboards: `/patents/analytics/yearly-trend` (granted volume and average claims by year), `/patents/analytics/cpc-breakdown` (top classification combinations by volume), and `/patent-text/analytics/section-breakdown` (document counts by section type). Use US Patent Intelligence for prior-art review, competitive research, patent discovery tools, or any workflow that needs both patent metadata and searchable patent text without building an index from scratch. Every response includes `attribution` data for source and license tracking. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/search-uspto-patents * * * --- title: "US Patent & Trademark Assignments API" slug: unified-uspto-search url: https://apyhub.com/dosvak/service/unified-uspto-search provider: Dosvak LLC categories: [Data Extraction] tags: [unified ip search, patent trademark search, ip ownership transfer, patent assignment search, intellectual property, ip due diligence, "m&a ip research", assignment records] auth: api_key version: 0.1.0 service_type: sync endpoints: 3 atoms: 100 --- # US Patent & Trademark Assignments API Search patents and trademarks in one query. Track ownership transfers and assignment history across US patent and trademark records. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/unified-uspto-search/api/v1/uspto/search/unified` | What it does Searches US patent and trademark data using a text query and returns a ranked list of… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/unified-uspto-search/api/v1/uspto/assignments/status` | What it does Retrieves the current US assignment status as a JSON object. The response includes a s… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/unified-uspto-search/api/v1/uspto/assignments/patent/search` | What it does Searches US patent assignment records using a required query string, with optional dat… | 100 | ## Endpoint reference ### Search US Patent & Trademark Data `GET https://api.eu.apyhub.com/dosvak/unified-uspto-search/api/v1/uspto/search/unified` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `year` | query | string | no | Year | | `limit` | query | integer | no | Limit Default: `25`. | | `query` | query | string | yes | Query Example: `wireless charging`. | | `include_text` | query | boolean | no | Include Text Default: `true`. | | `jurisdiction` | query | string | no | Jurisdiction | #### Quickstart Search USPTO patent and trademark data with a simple query. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/unified-uspto-search/api/v1/uspto/search/unified?query=wireless%20charging" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields: `year` (integer or null), `count` (integer), `query` (string), `results` (array of ranked hit objects), `components` (object with per-dataset counts), `attribution` (array of attribution objects), `include_text` (boolean), and `jurisdiction` (string or null). ```json { "year": 2024, "count": 1, "query": "wireless charging", "results": [], "components": { "trademark_count": 0, "patent_text_count": 1, "patent_metadata_count": 0, "patent_text_num_found": 1 }, "attribution": [], "include_text": true, "jurisdiction": null } ``` ### Get US Assignment Status `GET https://api.eu.apyhub.com/dosvak/unified-uspto-search/api/v1/uspto/assignments/status` · 100 atoms · accepts `application/json` #### Quickstart This GET call checks the USPTO assignment status and returns the current status plus related tables and archive metadata. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/unified-uspto-search/api/v1/uspto/assignments/status" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields: `status` is a string, `tables` is an object with `patent_assignments` and `trademark_assignments` sub-objects, `attribution` is an array of attribution objects, and `raw_archives` is an object listing archive file arrays. ```json { "status": "ready", "tables": { "patent_assignments": { "rows": 0, "exists": false }, "trademark_assignments": { "rows": 0, "exists": false } }, "attribution": [], "raw_archives": { "patent_assignment_files": [], "trademark_assignment_files": [] } } ``` ### Search US Patent Assignments `GET https://api.eu.apyhub.com/dosvak/unified-uspto-search/api/v1/uspto/assignments/patent/search` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `100`. | | `query` | query | string | yes | Query Example: `Tesla`. | | `end_date` | query | string | no | End Date | | `start_date` | query | string | no | Start Date | #### Quickstart Search patent assignments for a company name like Tesla using the required `query` parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/unified-uspto-search/api/v1/uspto/assignments/patent/search?query=Tesla" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `count` as an integer, `query` as a string, `status` as a string, `results` as an array of patent assignment records, `end_date` and `start_date` as date strings or null, and `attribution` as an array of attribution objects. ```json { "count": 1, "query": "Tesla", "status": "ok", "results": [] } ``` ## About ## What it does US IP Search & Ownership Transfer covers the parts of USPTO data that span both patents and trademarks: cross-domain search, ingestion readiness, and patent ownership-transfer history. `/search/unified` runs a single query across all three underlying datasets at once — patent metadata, full-text patent sections, and trademark records — and returns a blended, ranked result set. Each hit includes an `entity_type` (`patent_text`, `patent_metadata`, or `trademark`) and a `payload` shaped to match, plus a `components` object breaking down how many results came from each source. Use this when you don't yet know whether what you're looking for is a patent or a trademark, or when you want one search box to cover both. `/assignments/status` is a lightweight, read-only readiness check for assignment data: it reports whether the `patent_assignments` and `trademark_assignments` tables exist, current row counts, and references to the underlying raw archive files. It's useful for monitoring checks and ingestion guards before downstream jobs depend on assignment coverage being present. `/assignments/patent/search` searches recorded patent assignment transfers by name, company, or patent/application identifier, with optional recorded-date filtering. Each result includes `assignee_name`, `assignor_name`, `recorded_date`, `conveyance_text`, and `reel_frame` — the patent-side counterpart to the trademark assignment search in the Trademark Intelligence API. Use this API when your workflow genuinely spans both patent and trademark data — unified discovery tools, ingestion monitoring, or patent ownership diligence — rather than when you're working exclusively within one domain. All responses include `attribution` metadata for source and licensing tracking. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/unified-uspto-search * * * --- title: "Parse & Normalize US Address API" slug: parse-and-normalize-address url: https://apyhub.com/dosvak/service/parse-and-normalize-address provider: Dosvak LLC categories: [Data Validation, Developer Tools] tags: [address-parsing, address-normalization, postal-address, data-validation, parsing] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # Parse & Normalize US Address API Address parsing API for US addresses: send one address line, get house number, street, city, state, ZIP and a normalized string. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/parse-and-normalize-address` | What it does Parses and normalizes an address from the addressline query parameter, with an optiona… | 100 | ## Endpoint reference ### Parse and normalize address `GET https://api.eu.apyhub.com/dosvak/parse-and-normalize-address` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `address_line` | query | string | yes | Address Line Example: `1600 Amphitheatre Pkwy, Mountain View, CA 94043`. | #### Quickstart Parse an address by passing the address line as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/parse-and-normalize-address?address_line=1600%20Amphitheatre%20Pkwy%2C%20Mountain%20View%2C%20CA%2094043" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object containing the original input, parsed address components, and attribution information. The response provides a standardized representation of the address that can be used directly in your application. ```json { "input": { "address_line": "1600 Amphitheatre Pkwy, Mountain View, CA 94043" }, "parsed": { "house_number": "1600", "street": "Amphitheatre Pkwy", "locality": "Mountain View", "postal_code": "94043", "country_code": "US" } } ``` ## About ## What it does The Address Parsing API splits a US address line into structured fields. Send one `address_line` string, such as `1600 Amphitheatre Pkwy, Mountain View, CA 94043`, and get back JSON with `house_number`, `street`, `locality`, `region`, `postal_code`, `country_code`, and a `normalized` string in a consistent comma-separated format. Results are most reliable when the address follows the standard US order with commas: street address, then city, then state and ZIP code. The response echoes your original text under `input` and includes an `attribution` list for the open datasets behind the service (OpenAddresses, GeoNames, and Natural Earth). Use the address parsing API to split checkout and signup addresses into separate database columns, map CRM imports onto structured fields, or build consistent keys for address deduplication. It handles parsing and normalization and keeps street text as written, so pair it with a validation service when you need to confirm an address exists. Send the parsed fields to the [Address Validation API](https://apyhub.com/quadlem/service/address-validation) to check them against real locations and get coordinates, or use the [Address Search API](https://apyhub.com/dosvak/service/search-addresses) to return candidate matches from a partial address. For the rest of a contact record, the [Phone Number Formatter API](https://apyhub.com/dosvak/service/phone-number-format) returns numbers in E.164 and national formats. AI agents can call the address parser through ApyHub MCP to structure addresses pulled from emails or documents. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/parse-and-normalize-address * * * --- title: Lookup US Address by Coordinates API slug: reverse-address-lookup url: https://apyhub.com/dosvak/service/reverse-address-lookup provider: Dosvak LLC categories: [Geolocation] tags: [reverse-geocoding, geolocation, address-lookup, coordinates, maps] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # Lookup US Address by Coordinates API Convert latitude and longitude into address data. Built for maps, delivery events, and turning raw coordinates into usable address context. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/reverse-address-lookup` | What it does Looks up an address from geographic coordinates. It accepts lat and lon as query param… | 100 | ## Endpoint reference ### Reverse address lookup `GET https://api.eu.apyhub.com/dosvak/reverse-address-lookup` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `lat` | query | number | yes | Lat Example: `37.422`. | | `lon` | query | number | yes | Lon Example: `-122.0841`. | #### Quickstart Look up an address by latitude and longitude. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/reverse-address-lookup?lat=37.422&lon=-122.0841" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object containing the input coordinates and the nearest matching address with location details. ```json { "input": { "lat": 37.422, "lon": -122.0841 }, "match": { "address_line": "1600 Amphitheatre Pkwy", "locality": "Mountain View", "country_code": "US" } } ``` ## About ## What it does Reverse Address Lookup turns latitude and longitude into a location lookup result. Send `lat` and `lon` as query parameters, and get back the address data the service can resolve for that point. Use it when you already have coordinates from a map click, GPS trace, delivery event, or analytics record and need to attach a human-readable location. It fits workflows like marking customer check-ins, enriching trip logs, or converting geospatial events into something your support or operations team can read. The endpoint is simple on purpose: it only requires `lat` and `lon`, with valid ranges of -90 to 90 for latitude and -180 to 180 for longitude. If your application stores coordinates but needs address context for search, display, reporting, or downstream validation, Reverse Address Lookup gives you the conversion step without extra geocoding logic in your own code. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/reverse-address-lookup * * * --- title: Search US Address API slug: search-addresses url: https://apyhub.com/dosvak/service/search-addresses provider: Dosvak LLC categories: [Data Validation, Geolocation, Standard Data] tags: [address-search, address-lookup, geocoding, autocomplete, location-data] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # Search US Address API Search address matches from a text query, with optional country filtering and result limits. Built for autocomplete, lookup, and validation. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/search-addresses` | What it does Searches for addresses using a text query and returns a JSON object response. The requ… | 100 | ## Endpoint reference ### Search addresses `GET https://api.eu.apyhub.com/dosvak/search-addresses` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `20`. Example: `10`. | | `query` | query | string | yes | Query Example: `1600 Amphitheatre`. | | `country_code` | query | string | no | Optional 2-character country code. Example: `US`. | #### Quickstart Search for addresses using a required query string, with optional limit and country code parameters. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-addresses?query=1600%20Amphitheatre" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object containing the search query, the number of matches found, and the matching address results. ```json { "query": "1600 Amphitheatre", "count": 1, "results": [ { "address_line": "1600 Amphitheatre Pkwy", "locality": "Mountain View", "country_code": "US" } ] } ``` ## About ## What it does Address Search lets you look up address matches from a free-text query, with optional country filtering and result limiting. Send a `query` string and get address search results back in the response. You can also pass `country_code` to narrow the search to a two-letter country code, and `limit` to control how many matches are returned, up to 200. The request schema requires `query`, so this is built for autocomplete, form assistance, and address lookup flows where the user starts with partial address text. Use Address Search when you need to suggest likely addresses as a user types, validate that a submitted address can be resolved, or reduce manual entry in shipping, onboarding, and contact forms. Because the response schema is open-ended, you should treat the returned payload as a structured address search result set rather than rely on fixed fields beyond what the API provides. If you are building checkout, CRM enrichment, or delivery workflows, Address Search gives you a simple way to turn a partial address string into candidate matches without inventing your own search layer. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/search-addresses * * * --- title: US Climate Exposure API slug: coordinate-climate-exposure url: https://apyhub.com/dosvak/service/coordinate-climate-exposure provider: Dosvak LLC categories: [Geolocation, Standard Data] tags: [climate-risk, environmental-data, location-analysis, geospatial, risk-assessment] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # US Climate Exposure API Look up climate exposure for any latitude and longitude, with an optional radius. Built for mapping, insurance, real-estate, and risk workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/coordinate-climate-exposure` | What it does Returns climate exposure information for a coordinate-based lookup using latitude and… | 100 | ## Endpoint reference ### Coordinate climate exposure `GET https://api.eu.apyhub.com/dosvak/coordinate-climate-exposure` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `lat` | query | number | yes | Lat Example: `34.0522`. | | `lon` | query | number | yes | Lon Example: `-118.2437`. | | `radius_m` | query | integer | no | Radius M Default: `2000`. Example: `2500`. | #### Quickstart Look up climate exposure for a latitude/longitude pair, using the default radius. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/coordinate-climate-exposure?lat=34.0522&lon=-118.2437&radius_m=2000" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with additional top-level fields, but the schema does not declare any specific response properties. ```json { "input": { "lat": 34.0522, "lon": -118.2437, "radius_m": 2000 }, "risk": { "county_fips": "06037", "county_name": "Los Angeles County", "state_name": "California", "flood_risk": "5.289", "heat_risk": "0.0", "drought_risk": "0.0", "wildfire_risk": "0.0", "storm_risk": "5.204", "risk_score": "2.36305" }, "geospatial_ready": false, "geospatial_exposure": null, "attribution": [ { "source": "NOAA NCEI", "dataset": "Storm Events Database", "license": "U.S. federal government data", "url": "https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/", "notice": "Climate risk scores are derived from NOAA storm event history and are not official NOAA risk ratings." }, { "source": "U.S. Census Bureau TIGER/Line", "dataset": "TIGER/Line County Boundaries 2024", "license": "Public domain / U.S. federal government work", "url": "https://www2.census.gov/geo/tiger/TIGER2024/COUNTY/", "notice": "Derived from U.S. Census Bureau TIGER/Line boundary data; not endorsed or certified by the Census Bureau." } ] } ``` ## About ## What it does Climate Exposure helps you look up climate risk exposure for a geographic point. Send `lat` and `lon`, and optionally set `radius_m` to define the surrounding area to evaluate. The response returns a structured exposure result for that coordinate. Use Climate Exposure when you need location-aware context inside mapping, insurance, real-estate, environmental, or asset-risk workflows. It fits cases where a user enters an address, a property is plotted on a map, or an internal system needs to assess exposure around a site before showing next-step actions. The request schema is simple: latitude and longitude are required, and `radius_m` defaults to `2000` with a supported range from `100` to `50000`. That makes it easy to query a tight local area or widen the search radius when your analysis needs a larger buffer. The output schema is flexible and returned as a JSON object, so you can integrate the exposure result into your own risk model, dashboard, or downstream enrichment pipeline. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/coordinate-climate-exposure * * * --- title: US County Climate Search API slug: search-climate-counties url: https://apyhub.com/dosvak/service/search-climate-counties provider: Dosvak LLC categories: [Geolocation, Standard Data] tags: [county-search, climate-data, geolocation, location-search, reference-data] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # US County Climate Search API Search counties by text query with an optional limit. Built for autocomplete, location lookup, and county-level climate data matching. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/search-climate-counties` | What it does Searches for climate counties using a query string and returns a JSON object. The requ… | 100 | ## Endpoint reference ### Search climate counties `GET https://api.eu.apyhub.com/dosvak/search-climate-counties` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `50`. Example: `10`. | | `query` | query | string | yes | Query Example: `Los Angeles`. | #### Quickstart Search climate counties for a location like Los Angeles. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-climate-counties?query=Los%20Angeles&limit=50" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with additional properties, so the response shape may include search results and other fields defined by the API. ```json { "query": "Los Angeles", "count": 1, "results": [ { "county_fips": "06037", "county_name": "LOS ANGELES", "state_name": "CALIFORNIA", "flood_risk": "5.289", "heat_risk": "0.0", "drought_risk": "0.0", "wildfire_risk": "0.0", "storm_risk": "5.204", "risk_score": "2.36305" } ], "attribution": [ { "source": "NOAA NCEI", "dataset": "Storm Events Database", "license": "U.S. federal government data", "url": "https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/", "notice": "Climate risk scores are derived from NOAA storm event history and are not official NOAA risk ratings." }, { "source": "U.S. Census Bureau TIGER/Line", "dataset": "TIGER/Line County Boundaries 2024", "license": "Public domain / U.S. federal government work", "url": "https://www2.census.gov/geo/tiger/TIGER2024/COUNTY/", "notice": "Derived from U.S. Census Bureau TIGER/Line boundary data; not endorsed or certified by the Census Bureau." } ] } ``` ## About ## What it does Climate County Search lets you look up counties by a climate-related query string and returns a structured search response. Send a `query`, and optionally set `limit` to control how many matches you get back. Use it when you need county-level lookup in a workflow that starts from a place name, region, or other climate-related term. The endpoint is designed for simple search, so it fits front-end autocomplete, internal admin tools, or data enrichment steps where you need to resolve a county from user input. The request schema is small: `query` is required and must be at least 2 characters long, while `limit` defaults to 50 and can be set up to 200. The response schema is open-ended, so the service returns a structured search payload without promising fixed fields beyond the documented API contract. If your application needs to match county names against climate-oriented searches, Climate County Search gives you a direct lookup endpoint with minimal input and a flexible response shape. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/search-climate-counties * * * --- title: US State Climate Summary API slug: state-climate-summary url: https://apyhub.com/dosvak/service/state-climate-summary provider: Dosvak LLC categories: [Geolocation, Standard Data] tags: [climate-data, state-data, geolocation, reference-data, regional-lookup] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # US State Climate Summary API Get climate information for any US state by full name. Built for location-aware apps, regional dashboards, and state-level data lookups. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/state-climate-summary/:state_name` | What it does Retrieves the climate summary for a specific state identified by its full state name.… | 100 | ## Endpoint reference ### State climate summary `GET https://api.eu.apyhub.com/dosvak/state-climate-summary/:state_name` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `state_name` | path | string | yes | Full state name. Example: `California`. | #### Quickstart Fetch a summary for a specific state by putting the state name in the path. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/state-climate-summary/:state_name" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object. The schema does not declare any specific top-level fields, so the exact response shape may vary. ```json { "state_name": "CALIFORNIA", "county_count": 35, "avg_flood_risk": "2.2621714285714286", "avg_heat_risk": "0E-20", "avg_drought_risk": "0E-20", "avg_wildfire_risk": "0E-20", "avg_storm_risk": "0.88222857142857142857", "avg_risk_score": "0.74198857142857142857", "max_risk_score": "2.36305", "attribution": [ { "source": "NOAA NCEI", "dataset": "Storm Events Database", "license": "U.S. federal government data", "url": "https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/", "notice": "Climate risk scores are derived from NOAA storm event history and are not official NOAA risk ratings." }, { "source": "U.S. Census Bureau TIGER/Line", "dataset": "TIGER/Line County Boundaries 2024", "license": "Public domain / U.S. federal government work", "url": "https://www2.census.gov/geo/tiger/TIGER2024/COUNTY/", "notice": "Derived from U.S. Census Bureau TIGER/Line boundary data; not endorsed or certified by the Census Bureau." } ] } ``` ## About ## What it does State Climate Summary returns climate information for a U.S. state when you send its full name. Provide `state_name` and get back the API response for that state, with the response shape determined by the service. Use it when you need state-level climate data in an application flow, dashboard, or internal lookup without maintaining your own reference dataset. The endpoint is a straightforward read operation: one state name in, one climate summary response out. Because the output schema is open-ended, treat the response as a structured climate summary rather than a fixed set of fields. That makes State Climate Summary useful when you want to retrieve the service's latest state-specific climate payload and pass it through to your own UI, reporting layer, or downstream logic. Typical uses include state selectors in planning tools, regional analytics, and location-aware workflows that need a climate summary tied to a specific U.S. state. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/state-climate-summary * * * --- title: US Top Climate Risk Counties API slug: top-risk-counties url: https://apyhub.com/dosvak/service/top-risk-counties provider: Dosvak LLC categories: [Geolocation, Standard Data] tags: [climate-risk, county-data, risk-ranking, geospatial-analytics, location-intelligence] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # US Top Climate Risk Counties API Get a ranked list of high-risk counties, with an optional limit of up to 200. Built for climate dashboards, planning tools, and analysis. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/top-risk-counties` | What it does Returns the top risk counties, with an optional limit query parameter to control how m… | 100 | ## Endpoint reference ### Top risk counties `GET https://api.eu.apyhub.com/dosvak/top-risk-counties` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `50`. Example: `3`. | #### Quickstart Get the top risk counties with the default limit. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/top-risk-counties?limit=50" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object. The schema does not define specific response fields, so the shape may vary. ```json { "count": 1, "results": [ { "county_fips": "06037", "county_name": "LOS ANGELES", "state_name": "CALIFORNIA", "flood_risk": "5.289", "heat_risk": "0.0", "drought_risk": "0.0", "wildfire_risk": "0.0", "storm_risk": "5.204", "risk_score": "2.36305" } ], "attribution": [ { "source": "NOAA NCEI", "dataset": "Storm Events Database", "license": "U.S. federal government data", "url": "https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/", "notice": "Climate risk scores are derived from NOAA storm event history and are not official NOAA risk ratings." }, { "source": "U.S. Census Bureau TIGER/Line", "dataset": "TIGER/Line County Boundaries 2024", "license": "Public domain / U.S. federal government work", "url": "https://www2.census.gov/geo/tiger/TIGER2024/COUNTY/", "notice": "Derived from U.S. Census Bureau TIGER/Line boundary data; not endorsed or certified by the Census Bureau." } ] } ``` ## About ## What it does Top Risk Counties returns a ranked list of counties with the highest climate risk. Send an optional `limit` query parameter to control how many counties you get back, up to 200. Use Top Risk Counties when you need a simple risk-ranked county list for dashboards, planning tools, or internal reporting. The response schema is open-ended, so you should treat the payload as a structured county-risk result rather than rely on fixed fields beyond the endpoint contract. Because the output is already ordered by risk, it fits workflows that compare locations, surface high-priority areas, or feed a map and analytics layer. If you are building a climate-aware product, this endpoint gives you the high-risk county slice without requiring you to compute the ranking yourself. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/top-risk-counties * * * --- title: US Climate Risk Score API slug: coordinate-climate-score url: https://apyhub.com/dosvak/service/coordinate-climate-score provider: Dosvak LLC categories: [Geolocation] tags: [climate, geolocation, coordinates, location-intelligence, environmental-data] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # US Climate Risk Score API Get a climate score for any latitude and longitude in the US. Useful for location ranking, site selection, travel, and geographic analytics. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/coordinate-climate-score` | What it does Returns the climate score for a coordinate pair supplied as query parameters. The requ… | 100 | ## Endpoint reference ### Coordinate climate score `GET https://api.eu.apyhub.com/dosvak/coordinate-climate-score` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `lat` | query | number | yes | Lat Example: `34.0522`. | | `lon` | query | number | yes | Lon Example: `-118.2437`. | #### Quickstart Get the climate score for a specific latitude and longitude. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/coordinate-climate-score?lat=34.0522&lon=-118.2437" \ -H "apy-token: $APY_TOKEN" What you'll get back Returns a JSON object with the coordinates you supplied, the county-level risk breakdown, and source attribution. { "input": { "lat": 34.0522, "lon": -118.2437 }, "risk": { "county_fips": "06037", "county_name": "Los Angeles County", "state_name": "California", "flood_risk": "5.289", "heat_risk": "0.0", "drought_risk": "0.0", "wildfire_risk": "0.0", "storm_risk": "5.204", "risk_score": "2.36305" }, "attribution": [ { "source": "NOAA NCEI", "dataset": "Storm Events Database", "license": "U.S. federal government data", "url": "https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/", "notice": "Climate risk scores are derived from NOAA storm event history and are not official NOAA risk ratings." }, { "source": "U.S. Census Bureau TIGER/Line", "dataset": "TIGER/Line County Boundaries 2024", "license": "Public domain / U.S. federal government work", "url": "https://www2.census.gov/geo/tiger/TIGER2024/COUNTY/", "notice": "Derived from U.S. Census Bureau TIGER/Line boundary data; not endorsed or certified by the Census Bureau." } ] } ``` ## About ## What it does Climate Score returns a climate score for a specific latitude and longitude. Send `lat` and `lon` as query parameters, and get a structured response for that coordinate lookup. Use Climate Score when you need to attach climate context to a place, compare locations, or add environmental scoring to a mapping workflow. It fits applications like site selection, location ranking, travel planning, and analytics dashboards that work with geographic coordinates. The input is simple: `lat` must be a number between -90 and 90, and `lon` must be a number between -180 and 180. The endpoint responds with a JSON object, so you can process the result directly in your application without additional parsing steps. If your product already works with coordinates, Climate Score gives you a lightweight way to enrich each point with climate-related data in a consistent API response. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/coordinate-climate-score * * * --- title: US County Climate Profile API slug: county-climate-profile url: https://apyhub.com/dosvak/service/county-climate-profile provider: Dosvak LLC categories: [Geolocation, Standard Data] tags: [climate-data, county-fips, geolocation, us-counties, environmental-data] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # US County Climate Profile API Look up county climate information from a 5-digit FIPS code. Built for geospatial enrichment, regional reporting, and county-level analytics. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/county-climate-profile/:county_fips` | What it does Retrieves a county climate profile for the county identified by the countyfips path pa… | 100 | ## Endpoint reference ### County climate profile `GET https://api.eu.apyhub.com/dosvak/county-climate-profile/:county_fips` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `county_fips` | path | string | yes | 5-digit county FIPS code. Example: `06037`. | #### Quickstart Fetch the climate profile for a county by its 5-digit FIPS code. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/county-climate-profile/:county_fips" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object. The schema does not declare any specific top-level fields, so the response shape may vary. ```json { "county_fips": "06037", "county_name": "LOS ANGELES", "state_name": "CALIFORNIA", "flood_risk": "5.289", "heat_risk": "0.0", "drought_risk": "0.0", "wildfire_risk": "0.0", "storm_risk": "5.204", "risk_score": "2.36305", "updated_at": "2026-07-27T23:41:09.511395Z", "attribution": [ { "source": "NOAA NCEI", "dataset": "Storm Events Database", "license": "U.S. federal government data", "url": "https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/", "notice": "Climate risk scores are derived from NOAA storm event history and are not official NOAA risk ratings." }, { "source": "U.S. Census Bureau TIGER/Line", "dataset": "TIGER/Line County Boundaries 2024", "license": "Public domain / U.S. federal government work", "url": "https://www2.census.gov/geo/tiger/TIGER2024/COUNTY/", "notice": "Derived from U.S. Census Bureau TIGER/Line boundary data; not endorsed or certified by the Census Bureau." } ] } ``` ## About ## What it does County Climate Profile returns climate information for a U.S. county when you send a 5-digit county FIPS code in `county_fips`. The response schema is open-ended, so the API returns a climate profile object without exposing a fixed field list in the spec. Use it when you need county-level climate context in a workflow that starts with geography. For example, you can look up a county before joining weather, land-use, insurance, agriculture, or environmental datasets keyed by FIPS. It also fits validation steps where your application needs to confirm that a county identifier can be resolved into climate-related data. Because the endpoint is keyed by FIPS, it is easy to wire into systems that already store U.S. county records. Send the county code and use the returned climate profile in dashboards, scoring pipelines, mapping tools, or regional reporting. The API is designed for direct lookup rather than bulk analysis, so it works well as a single-record enrichment step inside larger geospatial or analytics jobs. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/county-climate-profile * * * --- title: US State Summary API slug: state-summaries url: https://apyhub.com/dosvak/service/state-summaries provider: Dosvak LLC categories: [Geolocation, Standard Data] tags: [state-data, demographics, reference-data, geolocation, datasets] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # US State Summary API Get state-level summary records with an optional limit of up to 100. Built for dropdowns, dashboards, and lightweight reference data lookups. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/state-summaries` | What it does Returns a JSON object containing the number of state summaries, a list of state summar… | 100 | ## Endpoint reference ### State summaries `GET https://api.eu.apyhub.com/dosvak/state-summaries` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `100`. Example: `3`. | #### Quickstart Fetch the state summaries list with the default page size. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/state-summaries?limit=100" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object containing the number of state summaries, a list of state summary records, and attribution details. ```json { "count": 2, "results": [ { "state_name": "California", "county_count": 58, "population_total": "39431263", "avg_median_household_income": "80794.000000000000", "avg_poverty_rate": "13.1000000000000000", "avg_unemployment_rate": "5.4000000000000000" }, { "state_name": "Texas", "county_count": 254, "population_total": "31290831", "avg_median_household_income": null, "avg_poverty_rate": null, "avg_unemployment_rate": null } ], "attribution": [ ] } ``` ## About ## What it does State Summaries returns state-level summary data in a single GET request. Send an optional `limit` query parameter to control how many records you receive, up to 100. Use State Summaries when you need a compact list of geographic or demographic reference data for a dashboard, selector, report, or internal lookup.The response contains the number of returned state summaries, a list of state summary records, and attribution information. Because the endpoint is designed around summary records, it fits cases where you want a lightweight state dataset rather than a full detail feed. For example, you can populate a dropdown, prefill analytics filters, or cache a small set of state summaries for repeated reads. The API keeps the request simple: no body, just an optional limit in the query string. That makes State Summaries easy to integrate into read-heavy applications that need a basic state reference endpoint. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/state-summaries * * * --- title: US County Search API slug: search-counties url: https://apyhub.com/dosvak/service/search-counties provider: Dosvak LLC categories: [Geolocation, Standard Data] tags: [county-search, location-lookup, administrative-areas, geolocation, reference-data] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # US County Search API Look up county matches from a text query, with optional result limiting. Built for address workflows, jurisdiction checks, and location search. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/search-counties` | What it does Searches for counties using a query string and optionally limits the number of results… | 100 | ## Endpoint reference ### Search counties `GET https://api.eu.apyhub.com/dosvak/search-counties` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `50`. Example: `10`. | | `query` | query | string | yes | Query Example: `Los Angeles`. | #### Quickstart Search counties by query, optionally limiting the number of results. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-counties?query=Los+Angeles&limit=10" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object containing the search query, the number of matching counties, the matching county records, and attribution details. ```json { "query": "california", "count": 5, "results": [ { "county_fips": "06037", "county_name": "Los Angeles County", "state_name": "California", "population": 9757179, "median_household_income": "80794", "poverty_rate": "13.1", "unemployment_rate": "5.4" }, { "county_fips": "06073", "county_name": "San Diego County", "state_name": "California", "population": 3298799, "median_household_income": null, "poverty_rate": null, "unemployment_rate": null } ], "attribution": [] } ``` ## About ## What it does US County Search lets you search for U.S. counties by name and returns matching county records and get matching results back in a structured response. Send a `query` string, and optionally set `limit` to control how many matches you want returned. Use it when you need county-level reference data in forms, address workflows, jurisdiction checks, or analytics pipelines. The endpoint is designed for simple lookup flows where a user types a place name such as "Los Angeles" and your app needs to resolve it to county matches without maintaining its own county dataset. County Search keeps the request surface small: `query` is required, and `limit` defaults to 50 with a maximum of 200. The response schema is open-ended, so you should treat the payload as a structured county search result rather than rely on undocumented fields. If you're building location search, county selection, or administrative-region validation into a product, County Search gives you a focused lookup endpoint for that step in the workflow. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/search-counties * * * --- title: US County Directory API slug: list-counties url: https://apyhub.com/dosvak/service/list-counties provider: Dosvak LLC categories: [Geolocation, Standard Data] tags: [counties, county-directory, reference-data, us-geography, state-filtering] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # US County Directory API List US counties with optional state_name and limit filters. Built for address forms, regional lookups, and US geography reference data. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/list-counties` | What it does Returns a JSON object containing the counties listing response. The output schema does… | 100 | ## Endpoint reference ### List counties `GET https://api.eu.apyhub.com/dosvak/list-counties` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `100`. Example: `100`. | | `state_name` | query | string | no | State Name Example: `California`. | #### Quickstart Fetch counties, optionally filtering by state name, with a simple GET request. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/list-counties?limit=100&state_name=California" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object containing the number of matching counties, a list of county records, and attribution details. ```json { "count": 2, "results": [ { "county_fips": "06037", "county_name": "Los Angeles County", "state_name": "California", "population": 9757179, "median_household_income": "80794", "poverty_rate": "13.1", "unemployment_rate": "5.4" }, { "county_fips": "06073", "county_name": "San Diego County", "state_name": "California", "population": 3298799, "median_household_income": null, "poverty_rate": null, "unemployment_rate": null } ], "attribution": [] } ``` ## About ## What it does County Directory lists counties and lets you filter them by state name. Send an optional `limit` to control how many records you get back, and an optional `state_name` to narrow the results to a specific state such as California. Use County Directory when you need county reference data for address forms, regional filters, dashboards, or internal lookup tools. It is a simple read endpoint for retrieving county lists without having to maintain your own dataset. The response includes the total number of matching counties, a list of county records, and attribution information., so the service returns a county listing in a structured JSON object without exposing a fixed set of fields in the contract here. That makes it useful for cataloging and browsing county data while keeping your integration lightweight. If your workflow depends on US administrative geography, County Directory gives you a straightforward way to fetch county data on demand and scope it to a state when needed. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/list-counties * * * --- title: US County Lookup by Coordinates API slug: coordinate-enrichment url: https://apyhub.com/dosvak/service/coordinate-enrichment provider: Dosvak LLC categories: [Geolocation] tags: [geolocation, coordinate-lookup, location-enrichment, reverse-geocoding, maps] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # US County Lookup by Coordinates API Enrich latitude and longitude coordinates with structured location data in JSON. Built for maps, analytics, and apps that need context for a point. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/coordinate-enrichment` | What it does Enriches a pair of geographic coordinates by looking up additional information for the… | 100 | ## Endpoint reference ### Coordinate enrichment `GET https://api.eu.apyhub.com/dosvak/coordinate-enrichment` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `lat` | query | number | yes | Lat Example: `34.0522`. | | `lon` | query | number | yes | Lon Example: `-118.2437`. | #### Quickstart Look up enrichment data for a latitude/longitude pair using query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/coordinate-enrichment?lat=34.0522&lon=-118.2437" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object containing the input coordinates, county information, demographic statistics, and attribution details. ```json { "input": { "lat": 34.0522, "lon": -118.2437 }, "enrichment": { "county_fips": "06037", "county_name": "Los Angeles County", "state_name": "California", "population": 9757179, "median_household_income": "80794", "poverty_rate": "13.1", "unemployment_rate": "5.4" }, "attribution": [] } ``` ## About ## What it does US County Lookup by Coordinates converts latitude and longitude into the corresponding U.S. county and returns county-related information.. Send `lat` and `lon` as query parameters, and it returns a JSON response with enrichment data for that point. Use Coordinate Enrichment when you already have geographic coordinates and need more context for them in your workflow. It fits mapping products, analytics pipelines, and location-aware features that need to attach additional information to a point without building your own lookup layer. The service is intentionally simple at the request level: it accepts only `lat` and `lon`, both numeric values within standard coordinate ranges. The response schema is open-ended, so you should treat the returned JSON as structured enrichment data rather than a fixed set of fields. If your application stores locations as coordinates but needs to display, segment, or route based on richer place context, Coordinate Enrichment gives you a direct lookup step you can plug into that flow. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/coordinate-enrichment * * * --- title: US County Place Context API slug: county-place-context url: https://apyhub.com/dosvak/service/county-place-context provider: Dosvak LLC categories: [Geolocation, Standard Data] tags: [county-fips, place-context, demographics, geolocation, reference-data] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # US County Place Context API Look up place context from a 5-digit county FIPS code. Returns JSON for county-level enrichment, filters, and reference data workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/county-place-context/:county_fips` | What it does Retrieves county place context for the specified county FIPS code. The input is a 5-di… | 100 | ## Endpoint reference ### County place context API `GET https://api.eu.apyhub.com/dosvak/county-place-context/:county_fips` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `county_fips` | path | string | yes | 5-digit county FIPS code. Example: `06037`. | #### Quickstart Look up county place context for a 5-digit county FIPS code. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/county-place-context/:county_fips" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object. The response schema does not declare any fixed top-level fields, so the shape may vary. ```json { "county_fips": "06037", "county_name": "Los Angeles County", "state_name": "California", "population": 9757179, "geospatial_ready": true, "place_context": { "primary_place": "Los Angeles" }, "attribution": [ { "source": "U.S. Census Bureau Population Estimates Program" } ] } ``` ## About ## What it does County Place Context returns place context for a U.S. county when you send a 5-digit county FIPS code. Use it when you need to look up county-level reference data without maintaining your own mapping table. The request takes a single `county_fips` string, such as `06037`, and the response returns a JSON object with additional properties, so the exact fields can vary by county or dataset version. That makes County Place Context useful for enrichment workflows, county-based filters, reporting, and location lookup steps where you already know the county FIPS and need the related place context in a machine-readable form. It is a lightweight read endpoint: no batch payloads, no extra parameters, and no invented validation fields beyond the FIPS code itself. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/county-place-context * * * --- title: US County Profile API slug: county-profile url: https://apyhub.com/dosvak/service/county-profile provider: Dosvak LLC categories: [Geolocation, Standard Data] tags: [county-fips, demographics, fips-lookup, county-data, geolocation] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # US County Profile API Fetch a full county profile from a 5-digit FIPS code. Useful for demographic enrichment, regional reporting, and county-level lookup workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/county-profile/:county_fips` | What it does Returns the county profile for a specified county FIPS code. The request identifies th… | 100 | ## Endpoint reference ### County profile by FIPS `GET https://api.eu.apyhub.com/dosvak/county-profile/:county_fips` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `county_fips` | path | string | yes | 5-digit county FIPS code. Example: `06037`. | #### Quickstart Fetch a county profile by providing the 5-digit county FIPS code in the path. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/county-profile/:county_fips" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object containing the county profile, including the county FIPS code, county name, state name, population, demographic metrics, last updated timestamp, and attribution information. ```json { "county_fips": "06037", "county_name": "Los Angeles County", "state_name": "California", "population": 9757179, "median_household_income": "80794", "poverty_rate": "13.1", "unemployment_rate": "5.4", "updated_at": "2026-07-27T23:40:59Z", "attribution": [ { "source": "U.S. Census Bureau Population Estimates Program" } ] } ``` ## About ## What it does County Profile lets you fetch a county profile by 5-digit FIPS code. Send the county_fips path value and get a JSON response for that county back. Use County Profile when you need a reliable lookup step in address intelligence, demographic enrichment, reporting, or internal admin tools. A single request is enough to resolve one county identifier into the profile payload exposed by the API. The endpoint accepts one input: county_fips. The code must be a 5-digit county FIPS string such as `06037`. The response includes the county profile, including the county FIPS code, county name, state name, population, demographic metrics, last updated timestamp, and attribution information. This is a good fit for systems that store county codes and need to retrieve the associated profile on demand, rather than maintaining a local copy of reference data. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/county-profile * * * --- title: US Reverse Location Lookup API slug: reverse-location-lookup url: https://apyhub.com/dosvak/service/reverse-location-lookup provider: Dosvak LLC categories: [Geolocation, Travel] tags: [reverse-geocoding, geolocation, coordinates, maps, place-lookup] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # US Reverse Location Lookup API Reverse geocode latitude and longitude with an optional search radius. Returns a flexible JSON result for map, delivery, and GPS workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/reverse-location-lookup` | What it does Performs a reverse location lookup using latitude and longitude passed as query parame… | 100 | ## Endpoint reference ### Reverse location lookup `GET https://api.eu.apyhub.com/dosvak/reverse-location-lookup` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `lat` | query | number | yes | Lat Example: `34.0522`. | | `lon` | query | number | yes | Lon Example: `-118.2437`. | | `radius_m` | query | integer | no | Radius M Default: `1000`. Example: `1500`. | #### Quickstart Look up the nearest location for a latitude/longitude pair. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/reverse-location-lookup?lat=34.0522&lon=-118.2437&radius_m=2000" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object. The schema allows additional top-level fields, so the exact response shape may vary. ```json { "input": { "lat": 34.0522, "lon": -118.2437, "radius_m": 1000 }, "feature": { "osm_id": 4253186548, "name": "Ronald F. Deaton Civic Auditorium", "category": "events_venue", "lat": 34.05206589960343, "lon": -118.2438373, "distance_m": 23.62699806699978, "source": "point" }, "attribution": [ { "source": "OpenStreetMap contributors", "dataset": "OpenStreetMap feature and geometry data", "license": "ODbL 1.0", "url": "https://www.openstreetmap.org/copyright", "notice": "Contains information from OpenStreetMap and its contributors, available under the Open Database License." } ] } ``` ## About ## What it does Reverse Location Lookup turns latitude and longitude into a location-aware lookup result. Send `lat` and `lon`, and optionally a `radius_m` up to 50,000, to query nearby place or address data around a point on the map. Use Reverse Location Lookup when you need to attach context to coordinates, such as identifying where a mobile event occurred, enriching a delivery pin, or resolving a GPS reading in a support or logistics workflow. The request is simple: two required query parameters for the coordinate pair, plus an optional search radius in meters with a default of 1,000. The response is returned as a JSON object with flexible structure, so you can integrate it into your own location-processing pipeline without assuming a fixed field set. That makes it a good fit for applications that need reverse-geocoding-style results while keeping the output adaptable to the source data returned by the service. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/reverse-location-lookup * * * --- title: Search US Places API slug: search-places url: https://apyhub.com/dosvak/service/search-places provider: Dosvak LLC categories: [Geolocation, Travel] tags: [place-search, location-search, geolocation, maps, travel] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 10 --- # Search US Places API Search places with a query string and an optional result limit. Built for place lookup, map search, and location autocomplete in any app. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/search-places` | What it does Searches for places matching a text query and returns a JSON object. The response shap… | 10 | ## Endpoint reference ### Search places `GET https://api.eu.apyhub.com/dosvak/search-places` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `50`. Example: `10`. | | `query` | query | string | yes | Query Example: `Union Station`. | #### Quickstart Search for places matching a query term like “Station”. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-places?query=Station" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object containing the matching search results. The response may include additional provider-specific fields depending on the available place data. ```json { "query": "Station", "count": 1, "results": [ { "source_table": "point", "osm_id": 4792457222, "name": "Idaho Falls Power Charging Station", "category": "charging_station", "lat": 43.49133630054193, "lon": -112.04375269999998 } ] } ``` ## About ## What it does Place Search lets you look up places by text query and get matching location results back in a structured response. Send a `query`, and optionally set `limit` to control how many matches you want, up to 200. Use it when you need place lookup inside a booking flow, a map search box, or an address autocomplete feature. The endpoint is built for simple search-driven discovery: you provide a name or place phrase such as " Station", and the API returns the matched places in its response body. Because the response schema is open-ended, you should treat the returned payload as a searchable place result set rather than a fixed record shape. That makes Place Search useful for integrating with mapping UIs, location pickers, nearby search, or internal tools that need to resolve user-entered place names into API results. If your application needs fast place discovery from free-text input, Place Search gives you a minimal query interface and a flexible result payload for downstream filtering, display, or ranking. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/search-places * * * --- title: Find Nearby places In US API slug: nearby-places url: https://apyhub.com/dosvak/service/nearby-places provider: Dosvak LLC categories: [Geolocation, Travel] tags: [geolocation, nearby-search, places, local-search, maps] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 10 --- # Find Nearby places In US API Find places near any latitude and longitude, with optional radius and result limits. Built for local search, maps, and location-aware apps. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/nearby-places` | What it does Returns nearby places for a given latitude and longitude. You can optionally limit the… | 10 | ## Endpoint reference ### Find Nearby places `GET https://api.eu.apyhub.com/dosvak/nearby-places` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `lat` | query | number | yes | Lat Example: `34.0522`. | | `lon` | query | number | yes | Lon Example: `-118.2437`. | | `limit` | query | integer | no | Limit Default: `20`. Example: `5`. | | `radius_m` | query | integer | no | Radius M Default: `500`. Example: `250`. | #### Quickstart Find nearby places using a latitude and longitude. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/nearby-places?lat=34.0522&lon=-118.2437" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with additional properties enabled, so the response is an object whose exact fields may vary. ```json { "input": { "lat": 40.758, "lon": -73.9855, "radius_m": 5000, "limit": 10 }, "count": 10, "results": [ { "osm_id": 5706568332, "name": "Theater District", "category": "unknown", "distance_m": 5.82 } ], "attribution": [ ] } ``` ## About ## What it does Nearby Places returns locations near a latitude and longitude. Send `lat` and `lon`, and you can also narrow the search with `limit` and `radius_m`. Use Nearby Places when you need place suggestions around a user, a delivery stop, a venue, or any map coordinate. The request is simple: provide a point on the map, then tune how many results you want back and how far out to search. The response schema is open-ended, so expect a structured list of nearby results without assuming a fixed set of fields. This is a good fit for location-based search, local discovery features, store finders, route planning, and map interfaces that need context around a point rather than a single address. It is also useful when you already have coordinates from geocoding or GPS and need the surrounding places to drive the next step in your workflow. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/nearby-places * * * --- title: Reverse Geocode US Coordinates API slug: reverse-geocode url: https://apyhub.com/dosvak/service/reverse-geocode provider: Dosvak LLC categories: [Geolocation] tags: [reverse-geocoding, geolocation, map-data, location-lookup, poi] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 10 --- # Reverse Geocode US Coordinates API Convert latitude and longitude into location data, with optional points of interest. Built for map pins, GPS events, and location-aware apps. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/reverse-geocode` | What it does Returns reverse-geocoding results for the provided latitude and longitude coordinates.… | 10 | ## Endpoint reference ### Reverse geocode `GET https://api.eu.apyhub.com/dosvak/reverse-geocode` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `lat` | query | number | yes | Lat Example: `34.0522`. | | `lon` | query | number | yes | Lon Example: `-118.2437`. | | `include_poi` | query | boolean | no | Include Poi Default: `false`. Example: `false`. | #### Quickstart Returns a JSON object containing the resolved location information. The response may include provider-specific fields such as input coordinates, county information, geospatial metadata, and attribution details. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/reverse-geocode?lat=34.0522&lon=-118.2437" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object. The schema does not declare any specific response fields, so the response shape may include provider-specific properties. ```json { "input": { "lat": 34.0522, "lon": -118.2437 }, "county": { "county_fips": "06037", "county_name": "Los Angeles County", "state_name": "California" }, "geospatial_ready": false, "attribution": [] } ``` ## About ## What it does Reverse Geocoding turns a latitude and longitude into a location lookup you can use in your app. Send `lat` and `lon`, and optionally set `include_poi` to include points of interest in the response. Use Reverse Geocoding when you need to label map pins, show a user’s current area, or attach a human-readable place to a GPS event. It is a fit for mobile apps, fleet tracking dashboards, delivery workflows, and map-based analytics where coordinates alone are not enough. The endpoint returns a JSON object containing the resolved location information. The response may include provider-specific location details and should be treated as structured location data rather than a fixed schema. Keep your own coordinate checks close to the request: `lat` must be between -90 and 90, and `lon` between -180 and 180. That makes Reverse Geocoding useful as a lightweight backend step before storing, displaying, or enriching location records. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/reverse-geocode * * * --- title: US places Category Breakdown API slug: category-breakdown-in-bbox url: https://apyhub.com/dosvak/service/category-breakdown-in-bbox provider: Dosvak LLC categories: [Geolocation] tags: [geospatial, location-analytics, bbox, map-data, category-counts] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # US places Category Breakdown API Count place categories inside a bounding box defined by min and max latitude and longitude. Useful for map filtering and area-level analytics. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/category-breakdown-in-bbox` | What it does Returns a category breakdown for places within a bounding box defined by latitude and… | 100 | ## Endpoint reference ### Category breakdown in bbox `GET https://api.eu.apyhub.com/dosvak/category-breakdown-in-bbox` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `20`. Example: `5`. | | `max_lat` | query | number | yes | Max Lat Example: `34.07`. | | `max_lon` | query | number | yes | Max Lon Example: `-118.22`. | | `min_lat` | query | number | yes | Min Lat Example: `34.04`. | | `min_lon` | query | number | yes | Min Lon Example: `-118.26`. | #### Quickstart Call this endpoint with the four required bounding-box coordinates as query parameters to get a category breakdown for that area. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/category-breakdown-in-bbox?min_lat=34.04&min_lon=-118.26&max_lat=34.07&max_lon=-118.22" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object. The schema does not declare any fixed top-level fields, so the response shape may include additional properties. ```json { "input": { "min_lat": 34.04, "min_lon": -118.26, "max_lat": 34.07, "max_lon": -118.22, "limit": 1 }, "count": 5, "results": [ { "category": "footway", "feature_count": 5143 } ] } ``` ## About ## What it does Category Breakdown gives you a count of locations by category inside a geographic bounding box. Send `min_lat`, `min_lon`, `max_lat`, and `max_lon`, and optionally set `limit` to control how many categories are returned. Use it when you need to understand what kinds of places exist in an area before rendering a map, filtering search results, or summarizing local inventory. The response is a JSON object, so you can work with the breakdown directly in your app without extra parsing steps. Category Breakdown is a good fit for location analytics workflows where the same area needs to be inspected repeatedly at different zoom levels. For example, you can compare restaurant-heavy neighborhoods, measure the density of retail categories around a store site, or build a map legend from the most common place types in view. The service accepts only bounding-box coordinates and a result limit. It returns a JSON object containing the category breakdown for places within the specified bounding box, along with related metadata. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/category-breakdown-in-bbox * * * --- title: Find Nearest Road Segment in US API slug: nearest-major-road-segment url: https://apyhub.com/dosvak/service/nearest-major-road-segment provider: Dosvak LLC categories: [Geolocation] tags: [geolocation, road-segment, reverse-geocoding, map-matching, gps] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # Find Nearest Road Segment in US API Find the nearest major road segment for any latitude and longitude pair. Built for map matching, routing, and cleaning noisy GPS points. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/nearest-major-road-segment` | What it does Finds the nearest major road segment for the provided latitude and longitude, with an… | 100 | ## Endpoint reference ### Get Nearest Road Segment `GET https://api.eu.apyhub.com/dosvak/nearest-major-road-segment` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `lat` | query | number | yes | Lat Example: `34.0522`. | | `lon` | query | number | yes | Lon Example: `-118.2437`. | | `max_distance_m` | query | integer | no | Max Distance M Default: `2000`. Example: `3000`. | #### Quickstart Find the nearest major road segment for a latitude/longitude pair. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/nearest-major-road-segment?lat=34.0522&lon=-118.2437&max_distance_m=2000" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object containing the matched road segment and related metadata. ```json { "input": { "lat": 34.0522, "lon": -118.2437, "max_distance_m": 2000 }, "road": { "road_name": "West 1st Street", "road_type": "primary", "distance_m": 23.69 }, "attribution": [ ] } ``` ## About ## What it does Nearest Road Segment returns the nearest major road segment for a coordinate pair. Send `lat` and `lon`, and optionally set `max_distance_m` to limit how far the lookup can search. Use it when you need to snap a location to a nearby road for routing, map display, logistics, or location cleanup. The service is built for point-based lookups where a raw GPS coordinate needs to be matched to road infrastructure. The request schema is small and direct: latitude and longitude are required, and `max_distance_m` defaults to 2000 with a valid range from 50 to 50000. The response returns the matched road segment for the provided coordinates along with related location details and metadata. Nearest Road Segment fits workflows that enrich geospatial events, validate coordinate proximity to roads, or prepare data for downstream routing and mapping logic. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/nearest-major-road-segment * * * --- title: Find Nearby Places in US by Category API slug: nearby-places-by-category url: https://apyhub.com/dosvak/service/nearby-places-by-category provider: Dosvak LLC categories: [Geolocation, Travel] tags: [nearby-places, place-search, location-based-search, geolocation, travel] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # Find Nearby Places in US by Category API Search places by category around a latitude and longitude, with optional radius and result limits. Built for maps, travel, and local discovery. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/nearby-places-by-category` | What it does Returns nearby places for a specified category around the provided latitude and longit… | 100 | ## Endpoint reference ### Find Nearby Places `GET https://api.eu.apyhub.com/dosvak/nearby-places-by-category` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `lat` | query | number | yes | Lat Example: `34.0522`. | | `lon` | query | number | yes | Lon Example: `-118.2437`. | | `limit` | query | integer | no | Limit Default: `50`. Example: `10`. | | `category` | query | string | yes | Category Example: `restaurant`. | | `radius_m` | query | integer | no | Radius M Default: `1000`. Example: `1500`. | #### Quickstart Find nearby places for a category using your latitude, longitude, and category as query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/nearby-places-by-category?lat=34.0522&lon=-118.2437&category=restaurant" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object containing the search input, matching nearby places, the total number of results, and related metadata. ```json { "input": { "lat": 34.0522, "lon": -118.2437, "category": "restaurant", "radius_m": 1000, "limit": 5 }, "count": 5, "results": [ { "name": "Señor Fish", "category": "restaurant", "distance_m": 132.72 } ], "attribution": [ ] } ``` ## About ## What it does Nearby Places returns places in a chosen category around a latitude and longitude. Send a `lat`, `lon`, and `category`, and you can also set `limit` and `radius_m` to control how many results come back and how far from the point to search. Use Nearby Places when you need location-aware results without building your own place search layer. A delivery app can look up nearby restaurants, a travel app can surface attractions around a hotel, and a local directory can filter relevant businesses around a user’s current position. The request schema is simple: `lat` and `lon` define the center point, `category` selects the type of place, `limit` caps the result count, and `radius_m` sets the search radius in meters. The response schema is generic and may include additional fields, so treat it as a place search payload rather than a fixed record shape. Nearby Places fits well anywhere you need category-based nearby search from coordinates, with predictable query parameters and a straightforward geolocation workflow. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/nearby-places-by-category * * * --- title: Find US Places in Bounding Box API slug: places-in-bounding-box url: https://apyhub.com/dosvak/service/places-in-bounding-box provider: Dosvak LLC categories: [Geolocation, Standard Data, Travel] tags: [geolocation, places, bounding-box, map-search, point-of-interest] auth: api_key version: 0.1.0 service_type: sync endpoints: 2 atoms: 1-100 --- # Find US Places in Bounding Box API Find places inside a latitude and longitude box, with optional result limits. Built for map search, regional filtering, and place discovery. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/places-in-bounding-box` | What it does Returns places that fall within a bounding box defined by latitude and longitude limit… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/places-in-bounding-box/status` | What it does This endpoint returns a JSON object describing the geospatial backend status. The resp… | 1 | ## Endpoint reference ### Places in bounding box `GET https://api.eu.apyhub.com/dosvak/places-in-bounding-box` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `100`. Example: `3`. | | `max_lat` | query | number | yes | Max Lat Example: `34.07`. | | `max_lon` | query | number | yes | Max Lon Example: `-118.22`. | | `min_lat` | query | number | yes | Min Lat Example: `34.04`. | | `min_lon` | query | number | yes | Min Lon Example: `-118.26`. | #### Quickstart Find places inside a bounding box by providing the required latitude and longitude bounds as query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/places-in-bounding-box?min_lat=34.04&min_lon=-118.26&max_lat=34.07&max_lon=-118.22" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object containing the matching places for the specified bounding box, along with related metadata. ```json { "input": { "min_lat": 34.04, "min_lon": -118.26, "max_lat": 34.07, "max_lon": -118.22, "limit": 3 }, "count": 1, "results": [ { "osm_id": 123456, "name": "Union Station", "category": "railway", "lat": 34.056, "lon": -118.236 } ], "attribution": [] } ``` ### Geospatial backend status `GET https://api.eu.apyhub.com/dosvak/places-in-bounding-box/status` · 1 atoms · accepts `application/json` #### Quickstart Check the geospatial backend status with a simple GET request. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/places-in-bounding-box/status" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object. The response schema doesn't declare any specific top-level fields, so the shape may include additional properties. ```json {} ``` ## About ## What it does Places in Bounding Box returns places that fall within a latitude and longitude rectangle. Send `min_lat`, `min_lon`, `max_lat`, and `max_lon`, and optionally set `limit` to control how many results come back. Use Places in Bounding Box when you need location-aware search over a map area instead of a single point. It fits workflows like showing nearby businesses on a map, filtering points of interest for a region, or narrowing a search to a delivery zone, service area, or neighborhood boundary. The response is an object with additional properties, so you can inspect the returned place data in the format provided by the endpoint. The bounding box inputs follow normal coordinate ranges: latitude between -90 and 90, longitude between -180 and 180, with `limit` capped at 500. If your application already knows the area on the map, Places in Bounding Box gives you the fastest way to retrieve matching places for that region without doing extra geospatial filtering on your side. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/places-in-bounding-box * * * --- title: Retrieve NOAA Weather Alerts API slug: noaa-active-alerts-by-area url: https://apyhub.com/dosvak/service/noaa-active-alerts-by-area provider: Dosvak LLC categories: [Standard Data, Travel] tags: [weather-alerts, noaa, weather-data, alerts, hazard-warnings] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # Retrieve NOAA Weather Alerts API Fetch active NOAA weather alerts for a two-character area code. Built for dashboards, push notifications, and location-aware weather checks. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/noaa-active-alerts-by-area` | What it does Retrieves currently active NOAA / National Weather Service alerts for a US state or ma… | 100 | ## Endpoint reference ### NOAA active alerts by area `GET https://api.eu.apyhub.com/dosvak/noaa-active-alerts-by-area` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `area` | query | string | yes | Area Example: `CA`. | | `limit` | query | integer | no | Limit Default: `100`. Example: `100`. | #### Quickstart Get active NOAA alerts for a two-letter area code like `TX`. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/noaa-active-alerts-by-area?area=TX&limit=1" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back `count` is how many alerts came back, `total` is how many are active for the area — they differ whenever `limit` truncates the list. ```json { "area": "TX", "count": 1, "total": 8, "alerts": [ { "id": "urn:oid:2.49.0.1.840.0.2d4509ca3ea52595a122e29064f9c7d40d83df64.001.1", "event": "Flood Advisory", "severity": "Minor", "urgency": "Expected", "area_desc": "Dona Ana, NM; El Paso, TX", "headline": "Flood Advisory issued September 23 at 1:34AM MDT until September 23 at 3:00AM MDT by NWS El Paso Tx/Santa Teresa NM", "effective": "2026-09-23T01:34:00-06:00", "expires": "2026-09-23T03:00:00-06:00", "sender_name": "NWS El Paso Tx/Santa Teresa NM" } ], "attribution": [ { "source": "NOAA / National Weather Service", "dataset": "NWS weather alerts and point metadata", "license": "U.S. federal government data", "url": "https://www.weather.gov/documentation/services-web-api", "notice": "Contains NOAA/NWS data and metadata. This product is not endorsed by NOAA." } ] } ``` ## About ## What it does NOAA Weather Alerts lets you fetch active weather alerts for a specified area using a two-character region code. Send an `area` query value and, optionally, a `limit` to control how many alerts are returned. Use it when you need current hazard or warning data for a U.S. state or similar area code in a workflow, dashboard, or notification system. For example, you might poll for active alerts before showing a local weather panel, triggering internal safety messages, or routing location-specific updates to users. The request is simple: `area` is required and must be exactly two characters, and `limit` defaults to 100 with a maximum of 500. The response is a JSON object whose shape is not further constrained in the schema, so you should treat it as a structured alerts payload and read the fields documented by the API response itself. NOAA Weather Alerts is a practical fit for applications that need timely weather status by region without building a separate feed parser. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/noaa-active-alerts-by-area * * * --- title: Retrieve NOAA Weather Point Metadata API slug: noaa-point-metadata url: https://apyhub.com/dosvak/service/noaa-point-metadata provider: Dosvak LLC categories: [Geolocation, Standard Data, Travel] tags: [noaa, geolocation, coordinates, weather-data, point-metadata] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # Retrieve NOAA Weather Point Metadata API Look up NOAA point metadata from a latitude and longitude. Built for coordinate-based location enrichment and weather-related workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/noaa-point-metadata` | What it does Retrieves NOAA point metadata for a geographic coordinate. The endpoint takes lat and… | 100 | ## Endpoint reference ### NOAA point metadata `GET https://api.eu.apyhub.com/dosvak/noaa-point-metadata` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `lat` | query | number | yes | Lat Example: `34.0522`. | | `lon` | query | number | yes | Lon Example: `-118.2437`. | #### Quickstart Look up NOAA point metadata for a latitude/longitude pair using query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/noaa-point-metadata?lat=34.0522&lon=-118.2437" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object. The schema does not declare any specific response fields, so the exact shape may vary. ```json { "grid_id": "ABC", "grid_x": 155, "grid_y": 45, "forecast": "https://example.com/forecast", "forecast_hourly": "https://example.com/forecast/hourly" } ``` ## About ## What it does NOAA Point Metadata returns metadata for a geographic point when you send latitude and longitude as query parameters. Use it to look up NOAA-related point information for a specific coordinate pair. Send `lat` and `lon` in the request. `lat` must be between -90 and 90, and `lon` must be between -180 and 180. The response is an object with additional properties, so the payload may vary depending on the point you look up. This is useful when your application needs to enrich a map click, validate a location before showing weather-related content, or attach NOAA context to a coordinate stored in your system. Because the endpoint is point-based, it fits workflows that already work with raw GPS coordinates rather than addresses or place names. Use NOAA Point Metadata when you need a lightweight lookup step between coordinates and NOAA-specific point data. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/noaa-point-metadata * * * --- title: Retrieve USGS Earthquake Data API slug: usgs-earthquakes url: https://apyhub.com/dosvak/service/usgs-earthquakes provider: Dosvak LLC categories: [Geolocation, Standard Data] tags: [earthquake-data, seismic-events, usgs, geospatial-data, event-monitoring] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # Retrieve USGS Earthquake Data API Fetch USGS earthquake records for a date range, with optional magnitude and result limits. Built for alerts, dashboards, and seismic analysis. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/usgs-earthquakes` | What it does Retrieves USGS earthquake data for a specified time range, with optional filtering by… | 100 | ## Endpoint reference ### USGS earthquakes `GET https://api.eu.apyhub.com/dosvak/usgs-earthquakes` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `100`. Example: `100`. | | `endtime` | query | string | yes | Endtime Example: `2026-07-28`. | | `starttime` | query | string | yes | Starttime Example: `2026-07-01`. | | `minmagnitude` | query | number | no | Minmagnitude Default: `4.5`. Example: `4.5`. | #### Quickstart Fetch USGS earthquake data for a date range using the required query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/usgs-earthquakes?starttime=2026-07-01&endtime=2026-07-28" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object. The schema does not declare any specific top-level fields, so the response shape may vary. ```json { "count": 2, "results": [ { "id": "event_12345", "time": 1753690200000, "place": "Sample Location", "magnitude": 5.2, "latitude": 35.1234, "longitude": -117.4567, "depth_km": 10.5, "status": "reviewed" } ], "attribution": [ { "source": "USGS" } ] } ``` ## About ## What it does USGS Earthquake Data returns earthquake records from the USGS feed for a time window you define. Send a `starttime` and `endtime`, and optionally filter by `minmagnitude` and `limit`. Use it when you need recent seismic events for dashboards, alerts, research workflows, or map visualisations. The endpoint is built around query parameters, so it fits cleanly into scheduled jobs and lightweight backend services. The response schema is open-ended, so the service returns a structured JSON object with the earthquake data available from the source response. In practice, that lets you treat the endpoint as a retrieval layer for USGS event data without having to wire up the feed directly. If you are building monitoring tools, compliance checks, or location-based analysis, USGS Earthquake Data gives you a simple way to fetch events for a specific date range and magnitude threshold. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/usgs-earthquakes * * * --- title: Retrieve World Bank Public Data API slug: world-bank-indicator-series url: https://apyhub.com/dosvak/service/world-bank-indicator-series provider: Dosvak LLC categories: [Finance, Standard Data] tags: [world-bank, economic-data, country-indicators, development-data, series-data] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # Retrieve World Bank Public Data API Fetch World Bank indicator series by country and date range. GDP, population, and other development metrics as JSON for apps or dashboards. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/world-bank-indicator-series/:indicator` | What it does Retrieves a World Bank indicator series for a specific indicator, with optional filter… | 100 | ## Endpoint reference ### World Bank indicator series `GET https://api.eu.apyhub.com/dosvak/world-bank-indicator-series/:indicator` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `date` | query | string | no | Date Example: `2015:2024`. | | `country` | query | string | no | Country Default: `US`. Example: `US`. | | `per_page` | query | integer | no | Per Page Default: `100`. Example: `100`. | | `indicator` | path | string | yes | Indicator Example: `SP.POP.TOTL`. | #### Quickstart Fetch World Bank data for one indicator, using the required indicator in the path and a simple country filter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/world-bank-indicator-series/:indicator" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object. The schema does not declare any specific top-level fields, so the response shape may vary. ```json { "country": "US", "indicator": "SP.POP.TOTL", "date": null, "snapshot_updated_at": "2026-07-28T13:06:29.104470Z", "count": 16, "results": [ { "country": "US", "country_name": "United States", "indicator": "SP.POP.TOTL", "indicator_name": "Population, total", "date": "2025", "value": 341784857, "unit": "" }, { "country": "US", "country_name": "United States", "indicator": "SP.POP.TOTL", "indicator_name": "Population, total", "date": "2024", "value": 340003797, "unit": "" }, { "country": "US", "country_name": "United States", "indicator": "SP.POP.TOTL", "indicator_name": "Population, total", "date": "2023", "value": 336755052, "unit": "" }, { "country": "US", "country_name": "United States", "indicator": "SP.POP.TOTL", "indicator_name": "Population, total", "date": "2022", "value": 333996304, "unit": "" }, { "country": "US", "country_name": "United States", "indicator": "SP.POP.TOTL", "indicator_name": "Population, total", "date": "2021", "value": 332100166, "unit": "" }, { "country": "US", "country_name": "United States", "indicator": "SP.POP.TOTL", "indicator_name": "Population, total", "date": "2020", "value": 331578104, "unit": "" }, { "country": "US", "country_name": "United States", "indicator": "SP.POP.TOTL", "indicator_name": "Population, total", "date": "2019", "value": 330226227, "unit": "" }, { "country": "US", "country_name": "United States", "indicator": "SP.POP.TOTL", "indicator_name": "Population, total", "date": "2018", "value": 328529577, "unit": "" }, { "country": "US", "country_name": "United States", "indicator": "SP.POP.TOTL", "indicator_name": "Population, total", "date": "2017", "value": 326608609, "unit": "" }, { "country": "US", "country_name": "United States", "indicator": "SP.POP.TOTL", "indicator_name": "Population, total", "date": "2016", "value": 324353340, "unit": "" }, { "country": "US", "country_name": "United States", "indicator": "SP.POP.TOTL", "indicator_name": "Population, total", "date": "2015", "value": 321815121, "unit": "" }, { "country": "US", "country_name": "United States", "indicator": "SP.POP.TOTL", "indicator_name": "Population, total", "date": "2014", "value": 319257560, "unit": "" }, { "country": "US", "country_name": "United States", "indicator": "SP.POP.TOTL", "indicator_name": "Population, total", "date": "2013", "value": 316726282, "unit": "" }, { "country": "US", "country_name": "United States", "indicator": "SP.POP.TOTL", "indicator_name": "Population, total", "date": "2012", "value": 314339099, "unit": "" }, { "country": "US", "country_name": "United States", "indicator": "SP.POP.TOTL", "indicator_name": "Population, total", "date": "2011", "value": 311839461, "unit": "" }, { "country": "US", "country_name": "United States", "indicator": "SP.POP.TOTL", "indicator_name": "Population, total", "date": "2010", "value": 309378227, "unit": "" } ], "attribution": [ { "source": "World Bank", "dataset": "World Development Indicators and related open datasets", "license": "World Bank Open Data terms", "url": "https://datahelpdesk.worldbank.org/knowledgebase/articles/902061-clause-in-terms-and-conditions-regarding-source", "notice": "Contains World Bank open data. Downstream usage should preserve required attribution." } ] } ``` ## About ## What it does World Bank Indicators lets you fetch a single World Bank indicator series for a country over a date range. Send an `indicator` code in the path, and optionally `country`, `date`, and `per_page` as query parameters. Use it when you need authoritative macroeconomic or development data in your app, dashboard, or analysis pipeline. The default country is `US`, `country` accepts a 2- to 3-character code, `date` can be a range like `2015:2024`, and `per_page` controls how many records come back in one response. The response schema is flexible, so you should treat the payload as a structured World Bank series response rather than a fixed object with named fields. That makes it suitable for workflows where you pass the data through to reporting, storage, or downstream transformation without guessing at undocumented properties. World Bank Indicators is a good fit for GDP, population, inflation, education, and other country-level metrics where you need a standard external data source and a simple lookup by indicator code. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/world-bank-indicator-series * * * --- title: Get Language Breakdown Used on Web slug: language-distribution url: https://apyhub.com/dosvak/service/language-distribution provider: Dosvak LLC categories: [Standard Data] tags: [languages, country-data, reference-data, localisation, market-analysis] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # Get Language Breakdown Used on Web Get language distribution data with an optional country code and result limit. Built for localisation, market analysis, and reference lookups. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/language-distribution` | What it does Returns a language distribution result as a JSON object. The exact response fields are… | 100 | ## Endpoint reference ### Language distribution `GET https://api.eu.apyhub.com/dosvak/language-distribution` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `30`. Example: `30`. | | `country_code` | query | string or null | no | Country Code Example: `IN`. | #### Quickstart Get a language distribution list, optionally narrowed by country and capped with a limit. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/language-distribution?limit=30&country_code=us" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with additional properties. The schema does not declare fixed top-level fields, so the response shape may vary. ```json { "country_code": null, "total": 108110583, "page_languages": [ { "val": "en", "count": 1934 }, { "val": "de", "count": 279 }, { "val": "fr", "count": 179 }, { "val": "es", "count": 139 }, { "val": "ja", "count": 125 } ], "content_languages": [ { "val": "eng", "count": 7795 }, { "val": "deu", "count": 1081 }, { "val": "fra", "count": 903 }, { "val": "spa", "count": 755 }, { "val": "jpn", "count": 631 } ], "attribution": [ ] } ``` ## About ## What it does Language Distribution provides web-usage statistics showing the distribution of languages detected across web content for a country. Send a `country_code` to scope results to a specific country, or leave it out to get the broader distribution. Use it when you need web-language statistics for web analytics, content research, market analysis, or understanding language usage across web content. The response schema is open-ended, so the service returns a structured language distribution payload without exposing a fixed set of fields in the spec. `limit` defaults to 30 and accepts values from 1 to 200, so you can keep responses small when you only need the top entries. `country_code` accepts a 2- or 3-character country code. The endpoint returns language distribution statistics that can be used in dashboards, web analytics, and data-enrichment workflows. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/language-distribution * * * --- title: List Website Category API slug: category-facets url: https://apyhub.com/dosvak/service/category-facets provider: Dosvak LLC categories: [Standard Data] tags: [category-facets, catalog-navigation, localized-content, country-filter, language-filter] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # List Website Category API Fetch category facet data with optional limit, page language, and country code filters. Built for localized catalog navigation and browse pages. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/category-facets` | What it does Returns category facet data as a JSON object. The endpoint accepts query parameters to… | 100 | ## Endpoint reference ### Category facets `GET https://api.eu.apyhub.com/dosvak/category-facets` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `30`. Example: `30`. | | `page_lang` | query | string or null | no | Page Lang Example: `en`. | | `country_code` | query | string or null | no | Country Code Example: `US`. | #### Quickstart Fetch category facets with the default limit, plus a language and country filter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/category-facets?limit=30&page_lang=en&country_code=US" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object containing the matching website categories and their counts. The response schema is open-ended, so additional fields may be included depending on the available data. ```json { "country_code": "US", "page_lang": "en", "total": 100, "categories": [ { "val": "/Technology", "count": 25 } ], "attribution": [ ] } ``` ## About ## What it does Category Facets returns category facet data for a catalog view, with optional filtering by `limit`, `page_lang`, and `country_code`. Use it when you need to build category navigation, localized browse pages, or region-aware filtering in a marketplace or directory. Send the query parameters you need and get back a JSON object containing the facet response; the schema does not define fixed output fields, so treat the response as a structured object rather than a named payload. `limit` controls how many facets to request, up to 200. `page_lang` lets you target a specific page language, and `country_code` narrows the result set by country. If you’re rendering category lists for different markets, this endpoint gives you a simple way to keep the browsing experience aligned with language and region. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/category-facets * * * --- title: Lookup Websites by IP API slug: ip-reverse-lookup url: https://apyhub.com/dosvak/service/ip-reverse-lookup provider: Dosvak LLC categories: [Geolocation] tags: [ip-lookup, reverse-lookup, ip-enrichment, geolocation, network-analysis] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # Lookup Websites by IP API Look up the websites hosted on an IP address, with an optional result limit. Built for enrichment, routing, logging, and geolocation workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/ip-reverse-lookup/:website_ip` | What it does Returns websites associated with the specified IP address. Optionally use the limit pa… | 100 | ## Endpoint reference ### IP reverse lookup `GET https://api.eu.apyhub.com/dosvak/ip-reverse-lookup/:website_ip` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `50`. Example: `50`. | | `website_ip` | path | string | yes | Website Ip | #### Quickstart Look up the reverse IP details for a website IP address. Replace `website_ip` in the URL path with the IP you want to query. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/ip-reverse-lookup/:website_ip" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a structured JSON object containing the matching websites and their associated metadata. ```json { "website_ip": "93.184.216.34", "count": 1, "total": 1, "results": [ { "id": "123456", "title": "Example Website", "domain": "example.com", "site_url": "https://example.com" } ], "attribution": [ { "source": "Search Index" } ] } ``` ## About ## What it does IP Reverse Lookup lets you send a website IP and get the lookup response back for that address. Use it when you need to identify or inspect an IP tied to a website, or when your workflow needs IP-based enrichment before routing, logging, or security checks. The endpoint accepts a required `website_ip` path parameter and an optional `limit` query parameter. `limit` defaults to 50 and can be set from 1 to 500. Use IP Reverse Lookup in internal tooling, observability pipelines, or enrichment steps where a URL is not available but the IP address is. It fits common geolocation and network-analysis workflows, especially when you want to connect traffic, hosting, or infrastructure data to a specific website IP. If your application stores IP addresses, this service gives you a simple lookup step you can place before downstream analysis, filtering, or reporting. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/ip-reverse-lookup * * * --- title: Find Similar Sites by Domains API slug: similar-domains url: https://apyhub.com/dosvak/service/similar-domains provider: Dosvak LLC categories: [Marketing, SEO] tags: [seo, domain-analysis, competitive-research, domain-discovery] auth: api_key version: 0.1.0 service_type: sync endpoints: 2 atoms: 100 --- # Find Similar Sites by Domains API Find domains related to any given website, with an optional result limit. Built for SEO research, competitor discovery, and prospecting. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/similar-domains/web/similar` | What it does Returns similar domains for the provided domain name. Returns a structured JSON object… | 100 | | GET | `https://api.eu.apyhub.com/dosvak/similar-domains` | What it does Returns similar sites for a provided domain. The endpoint accepts the domain to analyz… | 100 | ## Endpoint reference ### Similar domains `GET https://api.eu.apyhub.com/dosvak/similar-domains/web/similar` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `20`. Example: `20`. | | `domain` | query | string | yes | Domain Example: `shazam.com`. | #### Quickstart Fetch similar domains for a given domain name. This minimal example uses the required `domain` query parameter and the default limit. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/similar-domains/web/similar?domain=shazam.com&limit=20" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a structured JSON object containing related websites and associated metadata based on the provided input. The response may include additional fields depending on the available data. ```json { "domain": "example.com", "count": 2, "results": [ { "id": "123456", "title": "Example Site", "domain": "related-site.com", "site_url": "https://related-site.com", "description": "A website related to the provided domain.", "score": 95.8 } ], "attribution": [ { "source": "Example Dataset" } ] } ``` ### Similar sites by domain `GET https://api.eu.apyhub.com/dosvak/similar-domains` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `20`. Example: `20`. | | `domain` | query | string | yes | Domain Example: `shazam.com`. | #### Quickstart Fetch similar sites for a domain using the required `domain` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/similar-domains?domain=shazam.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a structured JSON object containing information about the input domain, related websites, and associated metadata. The response may include additional fields depending on the available data. ```json { "domain": "example.com", "count": 2, "results": [ { "id": "123456", "title": "Example Site", "domain": "related-site.com", "site_url": "https://related-site.com", "description": "A website related to the provided domain.", "score": 95.8 } ], "attribution": [ { "source": "Example Dataset" } ] } ``` ## About ## What it does Similar Domains finds websites related to a given domain name. Send a `domain` query parameter, and optionally set `limit` to control how many results you want back. The service exposes two GET endpoints: one for general similar-domain lookup, and one that returns similar sites by domain. Use Similar Domains when you want to expand a competitor list, surface lookalike sites for market research, or recommend alternative destinations to users. A typical workflow is to check a known domain such as `shazam.com` and retrieve a bounded list of related sites for analysis or enrichment. The API returns a structured JSON response containing information about the input website along with related websites and associated metadata. The exact response fields may evolve over time. That makes it useful as a lookup layer in pipelines where you need domain similarity data, but do not want to hard-code a narrower shape. Pair Similar Domains with enrichment, lead-scoring, or SEO workflows when you need a fast way to start from one site and explore nearby properties in the same space. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/similar-domains * * * --- title: Get Top Domains by Country API slug: top-domains-by-country url: https://apyhub.com/dosvak/service/top-domains-by-country provider: Dosvak LLC categories: [Marketing, SEO, Standard Data] tags: [seo, web-analytics, country-data, domain-ranking, market-research] auth: api_key version: 0.1.0 service_type: sync endpoints: 1 atoms: 100 --- # Get Top Domains by Country API Get the top domains for any country, sorted by coverage or rank. Built for SEO research, market analysis, and tracking local web popularity. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/top-domains-by-country/:country_code` | What it does Returns the top domains for a specific country code. The country code is supplied in t… | 100 | ## Endpoint reference ### Top Domains by Country `GET https://api.eu.apyhub.com/dosvak/top-domains-by-country/:country_code` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Limit Default: `50`. Example: `50`. | | `sort_by` | query | string | no | Sort By Default: `coverage`. Example: `coverage`. | | `country_code` | path | string | yes | Country Code | #### Quickstart Fetch the top domains for a country code. Replace `:country_code` with an ISO country code, for example `US`. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/top-domains-by-country/:country_code" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a structured JSON object containing ranked domains and associated metadata for the requested country. The response may include additional fields depending on the available data. ```json { "country_code": "US", "total": 1742314, "domains": [ { "val": "fsgw.org", "count": 1, "min_harmonic": 84072, "avg_ptile": 57 } ], "attribution": [ ] } ``` ## About ## What it does Top Domains by Country returns a country-specific list of the most visited domains, sorted by coverage or rank. Send a `country_code`, and optionally set `limit` and `sort_by`, to get back the top domains for that market. Use Top Domains by Country when you need a fast way to compare online presence across regions, seed a country-specific competitive analysis, or build dashboards around local web traffic patterns. The endpoint supports `limit` values from 1 to 500, and `sort_by` can be `coverage` or `rank`, so you can focus on breadth of reach or ordering by position. Because the response schema is open-ended, expect a structured country-top-domains result rather than a fixed set of fields. That makes it suitable for downstream processing when you want to display, filter, or store the returned domain data in your own app. Top Domains by Country fits SEO tooling, market research, and geographic benchmarking workflows where country-level domain popularity matters. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/top-domains-by-country * * * --- title: "Get Moon Phases & Void-of-Course Windows" slug: get-phases url: https://apyhub.com/creightonnick0/service/get-phases provider: nick creighton categories: [Geolocation, Standard Data] tags: [moon-phases, astronomy, lunar-calendar, time-zones] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 10 --- # Get Moon Phases & Void-of-Course Windows Get New, First Quarter, Full, and Last Quarter moon dates for any range in UTC, with optional local time zone output for calendar apps. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/creightonnick0/get-phases/v1/lunar/phases` | What it does Returns the next 12 upcoming Moon phases from today (UTC). No parameters needed. Query… | 10 | | GET | `https://api.eu.apyhub.com/creightonnick0/get-phases/v1/lunar/voc` | What it does Returns the next upcoming void-of-course Moon window(s) starting from now. No paramete… | 10 | ## Endpoint reference ### Get Moon Phases `GET https://api.eu.apyhub.com/creightonnick0/get-phases/v1/lunar/phases` · 10 atoms · accepts `application/json` #### Quickstart Get the next 12 upcoming Moon phases — no parameters needed. ```bash curl -X GET "https://api.eu.apyhub.com/creightonnick0/get-phases/v1/lunar/phases" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back ```json { "count": 12, "phases": [ { "phase": "full", "exact_utc": "2026-07-29T14:35:44.201661+00:00" } ] } ``` ### Get Void-of-Course Windows `GET https://api.eu.apyhub.com/creightonnick0/get-phases/v1/lunar/voc` · 10 atoms · accepts `application/json` #### Quickstart Get the next upcoming void-of-course window(s) — no parameters needed. ```bash curl -X GET "https://api.eu.apyhub.com/creightonnick0/get-phases/v1/lunar/voc" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back ```json { "count": 1, "windows": [ { "start_utc": "2026-07-27T10:12:00+00:00", "end_utc": "2026-07-27T18:44:00+00:00", "leaving_sign": "Capricorn", "entering_sign": "Aquarius" } ] } ``` ## About ## What it does Moon Phases & Void-of-Course gives you the upcoming lunar schedule in one call — no input required. It returns the next 12 upcoming Moon phases (new, first quarter, full, last quarter) **and** the next upcoming void-of-course windows, starting from right now. The response includes two top-level sections: `phases` (with its own `count`) and `voc_windows` (with its own `count`). Each phase item gives you `phase` and `exact_utc`. Each void-of-course window gives you `start_utc`, `end_utc`, `leaving_sign`, and `entering_sign` — marking exactly when the Moon makes its last aspect before going void, and when it ingresses into the next sign to end the void period. Use this endpoint when you need lunar-timing awareness for scheduling, publishing, or ritual-planning logic — for example, showing the upcoming phase calendar while also flagging void periods to avoid for launches, signings, or important decisions. Because both datasets are forward-looking from "now" with zero setup, it's a drop-in feed for dashboards, astrology apps, and calendar integrations that need the full near-term lunar picture without stitching together two separate calls. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/creightonnick0/service/get-phases * * * --- title: Get Lunar Calendar API slug: get-calendar-year url: https://apyhub.com/creightonnick0/service/get-calendar-year provider: nick creighton categories: [Standard Data] tags: [calendar, astrology, events, timeline, year-view] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Get Lunar Calendar API Get a year-level calendar of moon phases, sign ingresses, sabbats, and planetary events from a single year input. Built for astrology apps. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/creightonnick0/get-calendar-year/v1/lunar/calendar/:year` | What it does Returns a full calendar-year payload for the requested year, timezone, and hemisphere,… | 10 | ## Endpoint reference ### Get Lunar Calendar `GET https://api.eu.apyhub.com/creightonnick0/get-calendar-year/v1/lunar/calendar/:year` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `tz` | query | string | no | Example: `Europe/London`. | | `year` | path | string | yes | Example: `2026`. | | `hemisphere` | query | string | no | One of: north, south. Default: `north`. | #### Quickstart Get the calendar year data for a specific year, with the year in the path and timezone/hemisphere passed as query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/creightonnick0/get-calendar-year/v1/lunar/calendar/:year?tz=Europe%2FLondon&hemisphere=north" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `year` as an integer, `hemisphere` and `verified` as strings, `tz` as a string or `null`, and `moon_phases`, `moon_signs`, `planetary_events`, and `sabbats` as arrays of event objects. ```json { "year": 2026, "hemisphere": "north", "tz": "Europe/London", "moon_phases": [], "moon_signs": [], "planetary_events": [], "sabbats": [], "verified": "Astronomically verified · Northern & Southern hemisphere editions" } ``` ## About ## What it does Calendar Year Events gives you a render-ready calendar of moon phases, moon sign ingresses, sabbats, and planetary events for a given year. Send a year, and you get back a structured response with `year`, `hemisphere`, `tz`, `verified`, `moon_phases`, `moon_signs`, `planetary_events`, and `sabbats`. You can request a timezone with `tz` and choose `hemisphere` as `north` or `south`; sabbat dates are returned with both local dates and exact UTC timestamps, while moon phases and planetary events are timestamped in UTC. Use it when you need astrology or seasonal event data for a website calendar, planning dashboard, editorial schedule, or a ceremonial event page. The `verified` field helps you surface that the year has been astronomically checked, and the response is designed to be rendered directly without extra transformation. If you are building a calendar view, this service gives you the event list you need in one response instead of stitching together phases, sign changes, and seasonal markers from separate sources. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/creightonnick0/service/get-calendar-year * * * --- title: Get Natal Moon API slug: get-natal-moon url: https://apyhub.com/creightonnick0/service/get-natal-moon provider: nick creighton categories: [Standard Data] tags: [astrology, moon-phase, birth-chart, zodiac, lunar-data] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Get Natal Moon API Get the natal moon phase, zodiac sign, and illumination for any birth date and time. Built for astrology apps and birth-chart lookups. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/creightonnick0/get-natal-moon/v1/lunar/natal-moon` | What it does Returns the Moon phase, zodiac sign, illumination percentage, and elongation for the g… | 10 | ## Endpoint reference ### Get Natal Moon `GET https://api.eu.apyhub.com/creightonnick0/get-natal-moon/v1/lunar/natal-moon` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `birth_utc` | query | string (date-time) | no | Optional. Defaults to the current UTC time if omitted. Example: `1990-06-15T14:30:00+00:00`. | #### Quickstart Get the current Moon's phase and sign with no input: ```bash curl -X GET "https://api.eu.apyhub.com/creightonnick0/get-natal-moon/v1/lunar/natal-moon" \ -H "apy-token: $APY_TOKEN" ``` Or pass a birth time for a natal reading: ```bash curl -X GET "https://api.eu.apyhub.com/creightonnick0/get-natal-moon/v1/lunar/natal-moon?birth_utc=1990-06-15T14%3A30%3A00%2B00%3A00" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back ```json { "birth_utc": "1990-06-15T14:30:00+00:00", "moon_phase": "Last Quarter", "moon_sign": "Pisces", "illumination_pct": 56.5, "elongation_deg": 262.52 } ``` ## About ## What it does Moon Phase Lookup returns the moon phase, moon sign, illumination, and elongation for a given moment in time. Pass a `birth_utc` date-time to get a natal reading, or **leave it out entirely** to get a snapshot of the Moon right now — no input required. The response includes `moon_phase` as one of `New Moon`, `First Quarter`, `Full Moon`, or `Last Quarter`, plus `moon_sign` across the twelve zodiac signs, along with `illumination_pct` and `elongation_deg` so you don't have to do the astronomy math yourself. Use it when you need to classify a birth record by lunar conditions, add astrology-flavoured context to a profile, power a birth summary or wellness report, or simply want "what's the Moon doing right now" with zero setup. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/creightonnick0/service/get-natal-moon * * * --- title: Get Planetary Hours API slug: get-planetary-hours url: https://apyhub.com/creightonnick0/service/get-planetary-hours provider: nick creighton categories: [Geolocation, Standard Data] tags: [astrology, planetary-hours, sunrise-sunset, solar-time, location-aware] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Get Planetary Hours API Get all 24 planetary hours for a latitude, longitude, and date, along with sunrise and sunset. Built for astrology and solar-time scheduling. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/creightonnick0/get-planetary-hours/v1/lunar/planetary-hours` | What it does Returns the 24 unequal planetary hours for a given latitude, longitude, and date, alon… | 10 | ## Endpoint reference ### Get Planetary Hours `GET https://api.eu.apyhub.com/creightonnick0/get-planetary-hours/v1/lunar/planetary-hours` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `lat` | query | number (double) | yes | Example: `51.4779`. | | `lng` | query | number (double) | yes | Example: `-0.0015`. | | `date` | query | string (date) | yes | Example: `2026-07-26`. | #### Quickstart Get planetary hours for a specific date and location by passing the required query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/creightonnick0/get-planetary-hours/v1/lunar/planetary-hours?date=2026-07-26&lat=51.4779&lng=-0.0015" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `date` (`string`), `lat` (`number`), `lng` (`number`), `day_ruler` (`string` enum), `sunrise_utc` (`string` date-time), `sunset_utc` (`string` date-time), and `hours` (`array`) fields. Each item in `hours` is an object with `index` (`integer`), `period` (`string` enum), `ruler` (`string` enum), `start_utc` (`string` date-time), and `end_utc` (`string` date-time). ```json { "date": "2026-07-26", "lat": 51.4779, "lng": -0.0015, "day_ruler": "Sun", "sunrise_utc": "2026-07-26T04:56:00Z", "sunset_utc": "2026-07-26T20:52:00Z", "hours": [] } ``` ## About ## What it does Planetary Hours gives you the 24 unequal Chaldean hours for a specific latitude, longitude, and date. Send a date plus `lat` and `lng`, and you get the local day ruler, sunrise and sunset in UTC, and a full hour-by-hour schedule. Each hour item includes its `index`, `period` (`day` or `night`), ruling planet in Chaldean order, and `start_utc` / `end_utc` timestamps. The response also echoes back the input `date`, `lat`, and `lng`, so you can store or audit the calculation without keeping the original request separately. Use Planetary Hours when you need location-aware timing for astrology tools, ritual planners, or any application that depends on sunrise/sunset-based day partitions. Because the hours are unequal, the schedule is derived from the actual daylight and nighttime length at the requested coordinates rather than a fixed 60-minute clock. It is a good fit for apps that need a deterministic planetary timetable for a given place and date, with enough detail to render a calendar, timeline, or hourly planner from the API response. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/creightonnick0/service/get-planetary-hours * * * --- title: Get Sabbat Dates API slug: get-sabbats url: https://apyhub.com/creightonnick0/service/get-sabbats provider: nick creighton categories: [Standard Data] tags: [wheel-of-the-year, sabbats, solstice, equinox, seasonal-calendar, pagan-calendar] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Get Sabbat Dates API Get Wheel of the Year sabbats plus solstices and equinoxes for the Northern or Southern hemisphere. Built for calendars and seasonal reference. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/creightonnick0/get-sabbats/v1/lunar/sabbats` | What it does Returns this year's 8 Wheel-of-the-Year sabbats plus solstices/equinoxes for the selec… | 10 | ## Endpoint reference ### Get Sabbat Dates `GET https://api.eu.apyhub.com/creightonnick0/get-sabbats/v1/lunar/sabbats` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `hemisphere` | query | string | yes | One of: north, south. Default: `north`. | #### Quickstart Get this year's sabbats for a hemisphere — just one query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/creightonnick0/get-sabbats/v1/lunar/sabbats?hemisphere=north" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back ```json { "hemisphere": "north", "count": 8, "sabbats": [ { "name": "Imbolc", "hemisphere": "north", "date_local": "2026-02-03", "exact_utc": "2026-02-03T20:02:07.770996+00:00", "kind": "cross_quarter" } ] } ``` ## About ## What it does Sabbats Calendar returns the 8 Wheel-of-the-Year dates for the **current year**, for your chosen hemisphere. Send just `hemisphere` and get back this year's sabbats and solar events with both local dates and exact UTC timestamps. Use Sabbats Calendar when you need seasonal dates for ritual planning, content scheduling, event calendars, or astrology and paganism applications. The response includes a `count`, the selected `hemisphere`, and a `sabbats` array. Each item includes `name`, `hemisphere`, `date_local`, `exact_utc`, and `kind`, where `kind` is either `cross_quarter` or `solar`. It supports both `north` and `south`, so you can generate the correct seasonal calendar for either half of the world — no year range to configure, it always reflects the current year. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/creightonnick0/service/get-sabbats * * * --- title: Generate Janmpatri/Kundli PDF API slug: generate-kundli-pdf url: https://apyhub.com/dosvak/service/generate-kundli-pdf provider: Dosvak LLC categories: [Geolocation, Smart Generation] tags: [kundli, janmpatri, astrology, pdf-generation, birth-chart] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Generate Janmpatri/Kundli PDF API Generate a Janmpatri or Kundli PDF from name, birth date, birth time, coordinates, and timezone. Returns a binary PDF for astrology reports. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/generate-kundli-pdf` | What it does Generates a Janmpatri/Kundli PDF from the provided birth details. The request body inc… | 100 | ## Endpoint reference ### Generate a Janmpatri/Kundli PDF from birth details `POST https://api.eu.apyhub.com/dosvak/generate-kundli-pdf` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `name` | body | string | yes | Example: `Priya Sharma`. | | `language` | body | string | no | One of: en, hi. Default: `en`. | | `latitude` | body | number | yes | Example: `28.6139`. | | `timezone` | body | string | yes | Example: `Asia/Kolkata`. | | `longitude` | body | number | yes | Example: `77.209`. | | `birth_date` | body | string (date) | yes | Example: `1994-08-12`. | | `birth_time` | body | string | yes | Example: `14:35`. | #### Quickstart Generate a Kundli PDF by sending the required birth details in a JSON request body. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/generate-kundli-pdf" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Priya Sharma", "birth_date": "1994-08-12", "birth_time": "14:35", "latitude": 28.6139, "longitude": 77.209, "timezone": "Asia/Kolkata" }' ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the generated PDF. ## About ## What it does Kundli PDF Generator creates a Janmpatri/Kundli PDF from birth details. Send a name, birth date, birth time, latitude, longitude, timezone, and optional language, and get a binary PDF back. Use it when your app needs to generate an astrology report for a user’s birth record. The service is built for workflows where you already collect birth details in a form and need a downloadable document instead of raw data. The request body is straightforward: `name`, `birth_date`, `birth_time`, `latitude`, `longitude`, and `timezone` are required, and `language` can be set to `en` or `hi`. The response is a PDF file, so you can store it, stream it to the browser, or attach it to an email flow. If you are building a kundli generator, astrological onboarding flow, or a report-download feature, this endpoint gives you a document output from structured birth inputs without extra transformation steps. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/generate-kundli-pdf * * * --- title: Convert Document with LibreOffice API slug: libreoffice-document-convert url: https://apyhub.com/dosvak/service/libreoffice-document-convert provider: Dosvak LLC categories: [File Conversion, File Manipulation] tags: [document-conversion, office-files, libreoffice, pdf-conversion, file-transform] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Convert Document with LibreOffice API Convert uploaded office documents to PDF, DOCX, TXT, and other formats. Returns the converted file as binary output for downstream workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/libreoffice-document-convert` | What it does Converts an uploaded office document with LibreOffice and returns the converted file a… | 100 | ## Endpoint reference ### Convert an uploaded office document with LibreOffice `POST https://api.eu.apyhub.com/dosvak/libreoffice-document-convert` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `target_format` | body | string | no | Output format extension, for example pdf, docx, or txt Default: `pdf`. | #### Quickstart Convert a document by uploading the source file and choosing the output format. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/libreoffice-document-convert" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.docx" \ -F "target_format=pdf" ``` #### What you'll get back Returns a binary file stream (`string` with `format: binary`) containing the converted document. ## About ## What it does LibreOffice Convert turns an uploaded office document into another file format. Send a binary file in the `file` field, and set `target_format` when you need something other than the default `pdf`. The response is the converted file itself as binary output. Use it when you need to normalize documents before sharing, store generated files in a different format, or convert incoming office attachments into something your pipeline can process. The API is focused on a single job: file-to-file conversion using LibreOffice’s document handling. Because the output is a binary file, it fits cleanly into workflows that download, forward, or persist the converted document. Typical uses include turning spreadsheets into PDFs for review, exporting text from office files, or converting documents into another office format for compatibility with downstream systems. If your application accepts uploaded office documents and needs a predictable conversion step, LibreOffice Convert gives you a direct way to transform the file without exposing LibreOffice itself in your stack. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/libreoffice-document-convert * * * --- title: Convert URL/HTML to PDF API slug: html-to-pdf-render url: https://apyhub.com/dosvak/service/html-to-pdf-render provider: Dosvak LLC categories: [File Conversion, File Manipulation, Smart Generation] tags: [html-to-pdf, pdf-rendering, document-generation, url-to-pdf, pdf-merge] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Convert URL/HTML to PDF API Generate a PDF from HTML or a public URL, choose A4, Letter, or Legal, and merge additional PDF URLs into the final output. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/html-to-pdf-render` | What it does Renders either a public URL or raw HTML into a PDF. You can also supply additional PDF… | 100 | ## Endpoint reference ### Render HTML or URL content to PDF and optionally merge PDFs `POST https://api.eu.apyhub.com/dosvak/html-to-pdf-render` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string | no | Public URL to render to PDF | | `html` | body | string | no | Raw HTML content to render | | `page_size` | body | string | no | One of: A4, Letter, Legal. Default: `A4`. | | `merge_urls` | body | array of string | no | Optional list of source PDF URLs to merge after rendering | #### Quickstart Render a public URL or raw HTML to a PDF with the simplest required JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/html-to-pdf-render" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://example.com"}' ``` #### What you'll get back Returns a binary file response (`string` with `format: "binary"`), which is the generated PDF. ```text PDF binary data ``` ## About ## What it does HTML to PDF Render turns a public URL or raw HTML into a PDF binary, with optional PDF merging in the same request. Send either `url` or `html`, choose a `page_size` of `A4`, `Letter`, or `Legal`, and include `merge_urls` when you want to append existing PDFs after the rendered output. Use it when you need server-side document generation from web content: invoices, reports, receipts, archived pages, or print-ready snapshots of dynamic HTML. The response is a binary PDF, so you can stream it, store it, or pass it into your own file pipeline without parsing intermediate data. Because the input is plain HTML or a reachable URL, it fits workflows that already render content in the browser or template layer but need a stable PDF artifact for download, email, or recordkeeping. The merge step is useful when a generated cover page or statement should be combined with supporting PDFs before delivery. HTML to PDF Render keeps the contract simple: one request body, predictable page sizing, and a PDF result. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/html-to-pdf-render * * * --- title: Extract Website Contact Info API slug: crawl-contact-signals url: https://apyhub.com/dosvak/service/crawl-contact-signals provider: Dosvak LLC categories: [Data Extraction, Marketing] tags: [web-scraping, contact-extraction, lead-enrichment, social-profiles, email-finding, phone-extraction] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Extract Website Contact Info API Crawl a website and extract emails, phones, addresses, business names, named entities, and social profiles for lead enrichment and prospecting. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/crawl-contact-signals` | What it does Crawls a website starting from the submitted url and extracts contact and social signa… | 100 | ## Endpoint reference ### Crawl a website and extract contact and social signals `POST https://api.eu.apyhub.com/dosvak/crawl-contact-signals` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string | yes | Example: `https://example.com`. | | `max_pages` | body | integer | no | Default: `5`. | | `include_entities` | body | boolean | no | Default: `true`. | #### Quickstart Send a website URL to crawl for contact signals like emails, phones, addresses, and social profiles. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/crawl-contact-signals" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://example.com"}' ``` #### What you'll get back Returns a JSON object with contact-signal fields such as `url`, `emails`, `phones`, `addresses`, `final_url`, `pages_scanned`, `business_names`, `named_entities`, and `social_profiles`. The array fields contain strings or objects, depending on the field. ```json { "url": "https://example.com", "emails": ["info@example.com"], "phones": ["+1 212-555-0100"], "addresses": ["123 Main St, New York, NY 10001"] } ``` ## About ## What it does Contact Signals Crawl scans a website and extracts contact and social data from the pages it visits. Send a `url`, optionally set `max_pages` up to 25, and choose whether to `include_entities`. Use it when you need to enrich a lead list, build a directory, or verify the public contact details on a company site. The crawl starts from the URL you provide and can follow through to a final destination URL. The response includes the original `url`, `final_url`, `pages_scanned`, and any discovered `emails`, `phones`, `addresses`, `business_names`, `named_entities`, and `social_profiles`. The extracted social profiles include both the profile `url` and detected `network`. Named entities are returned as objects with `text` and `label`, which is useful when you want to feed company, person, or location mentions into downstream enrichment or search workflows. Contact Signals Crawl is a fit for lead generation, sales ops, and data enrichment pipelines where you need structured contact signals from public websites instead of scraping raw HTML yourself. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/crawl-contact-signals * * * --- title: Generate Branded QR Code API slug: generate-branded-qr-code url: https://apyhub.com/dosvak/service/generate-branded-qr-code provider: Dosvak LLC categories: [Marketing, Smart Generation] tags: [qr-code, barcode, image-generation, branding, marketing, logo-overlay] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Generate Branded QR Code API Create QR code images from text or URLs with optional logo overlay and color controls. Returns binary output for branded print and digital use. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/generate-branded-qr-code` | What it does Generates a branded QR code image from the provided content, with optional center logo… | 100 | ## Endpoint reference ### Generate a branded QR code with embedded logo and style controls `POST https://api.eu.apyhub.com/dosvak/generate-branded-qr-code` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `logo` | body | string (binary) | no | Optional logo image for center overlay | | `size` | body | integer | no | Default: `768`. | | `content` | body | string | yes | URL or text to encode | | `background` | body | string | no | Default: `#ffffff`. | | `foreground` | body | string | no | Default: `#111111`. | #### Quickstart Upload a logo and the QR content to generate a branded QR code. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/generate-branded-qr-code" \ -H "apy-token: $APY_TOKEN" \ -F "content=https://apyhub.com" \ -F "logo=@/path/to/logo.png" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the generated QR code image. ```text (binary file) ``` ## About ## What it does Branded QR Code Generator creates a QR code image from text or a URL, with optional logo overlay and basic color controls. Send the content you want encoded, and you get back a binary image suitable for download, embedding, or print workflows. Use the `content` field for the URL or text to encode. If you want a custom look, include an optional `logo` image for the center overlay, choose the output `size` between 256 and 2048, and set `background` and `foreground` colors to match your brand. The defaults are a white background and dark foreground for strong scan contrast. This is a good fit for product packaging, event badges, posters, restaurant menus, and marketing materials where a standard black-and-white QR code would look out of place. Because the output is binary image data, you can pipe it straight into storage, a file response, or an image-processing step without extra conversion. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/generate-branded-qr-code * * * --- title: Generate Daily Horoscope API slug: generate-daily-horoscope url: https://apyhub.com/dosvak/service/generate-daily-horoscope provider: Dosvak LLC categories: [Smart Generation] tags: [horoscope, astrology, zodiac, content-generation, daily-reading] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Generate Daily Horoscope API Generate a daily horoscope for any zodiac sign and date. Returns an overview plus love, career, health, lucky colour, and lucky number fields. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/generate-daily-horoscope` | What it does Generates a daily horoscope for a zodiac sign and returns a JSON object with horoscope… | 100 | ## Endpoint reference ### Generate a daily horoscope for a zodiac sign or birth profile `POST https://api.eu.apyhub.com/dosvak/generate-daily-horoscope` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `date` | body | string (date) | yes | | | `sign` | body | string | no | One of: aries, taurus, gemini, cancer, leo, virgo, libra, scorpio, sagittarius, capricorn, aquarius, pisces. | | `tone` | body | string | no | One of: balanced, positive, direct. Default: `balanced`. | #### Quickstart Generate a daily horoscope for one sign by sending the required `sign` and a date. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/generate-daily-horoscope" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"date":"2026-07-26","sign":"aries"}' ``` #### What you'll get back Returns a JSON object with these top-level fields: `date` (string), `love` (string), `sign` (string), `career` (string), `health` (string), `overview` (string), `lucky_color` (string), and `lucky_number` (integer). ```json { "date": "2026-07-26", "love": "Be open to a small gesture that deepens connection.", "sign": "aries", "career": "A practical decision will move work forward.", "health": "Keep your routine steady and get enough rest.", "overview": "A focused day favors simple plans and clear communication.", "lucky_color": "blue", "lucky_number": 7 } ``` ## About ## What it does Daily Horoscope generates a horoscope for a zodiac sign on a specific date. Send a `date`, a `sign`, and an optional `tone`, and you get back a structured reading for the day. The response includes `date`, `sign`, `overview`, `love`, `career`, `health`, `lucky_color`, and `lucky_number`. That makes it easy to surface a full daily reading in a consumer app, a membership dashboard, or a content workflow that publishes horoscope copy by sign. Use `tone` to shape the writing style: `balanced`, `positive`, or `direct`. If you need consistency across a product or content feed, pass the same `date` and `sign` to generate comparable readings for each zodiac profile. Daily Horoscope is a simple fit when you need astrology content assembled into a predictable response shape rather than freeform text. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/generate-daily-horoscope * * * --- title: Merge Multiple Documents to PDF API slug: merge-pdf-files url: https://apyhub.com/dosvak/service/merge-pdf-files provider: Dosvak LLC categories: [File Conversion, File Manipulation] tags: [pdf-merge, document-merging, file-manipulation, pdf-processing, document-workflow] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Merge Multiple Documents to PDF API Combine two or more uploaded PDFs into a single binary file. Built for bundling reports, invoices, contracts, or scanned pages into one document. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/merge-pdf-files` | What it does Merges two or more uploaded PDF files into a single PDF file. The request body contain… | 100 | ## Endpoint reference ### Merge two or more uploaded PDF files into one PDF `POST https://api.eu.apyhub.com/dosvak/merge-pdf-files` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `files` | body | array of string | yes | | #### Quickstart Merge multiple PDF files by uploading them as multipart form files. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/merge-pdf-files" \ -H "apy-token: $APY_TOKEN" \ -F "files=@/path/to/first.pdf" \ -F "files=@/path/to/second.pdf" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`), which is the merged PDF. ```binary (binary PDF file) ``` ## About ## What it does PDF Merge combines two or more uploaded PDF files into a single PDF. Send an array of binary files in `files`, and get one merged PDF back as binary output. Use it when you need to assemble scanned pages, concatenate reports, or bundle customer documents into one download. Because the endpoint works on uploaded files directly, it fits cleanly into document workflows where PDFs arrive from forms, storage buckets, or user uploads. PDF Merge is a straightforward file operation: the request body contains `files`, and the response is the merged PDF file. There are no extra metadata fields to map or parse, which keeps integration simple when you just need the final document. Typical uses include consolidating invoices before archiving, joining generated statements into a packet, or creating a single attachment for sharing and storage. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/merge-pdf-files * * * --- title: Audit Website Security API slug: website-security-audit url: https://apyhub.com/dosvak/service/website-security-audit provider: Dosvak LLC categories: ["Security & Privacy", SEO] tags: [website-security, tls-audit, security-headers, cookie-security, site-audit] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Audit Website Security API Audit a website for TLS, security headers, cookie flags, and basic exposure issues. Returns a score, findings, and remediation hints. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/website-security-audit` | What it does Audits the website at the supplied url and returns a JSON object summarizing basic sec… | 100 | ## Endpoint reference ### Audit a website for TLS, headers, cookies, and basic exposure issues `POST https://api.eu.apyhub.com/dosvak/website-security-audit` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string | yes | Example: `https://example.com`. | | `follow_redirects` | body | boolean | no | Default: `true`. | #### Quickstart Check a website for security basics by sending its URL. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/website-security-audit" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://example.com"}' ``` #### What you'll get back Returns a JSON object with website audit results, including `url` (string), `host` (string), `https` (boolean), `score` (integer from 0 to 100), `cookies` (object), `headers` (object), `findings` (array of finding objects), and `tls_valid` (boolean). ```json { "url": "https://example.com", "host": "example.com", "https": true, "score": 92, "cookies": { "secure": true, "http_only": true, "same_site": true }, "headers": { "csp": true, "hsts": true, "referrer_policy": true, "x_frame_options": true, "x_content_type_options": true }, "findings": [], "tls_valid": true } ``` ## About ## What it does Website Security Audit checks a public site for basic security signals and returns a concise report you can act on. Send a `url`, and optionally set `follow_redirects`, to inspect the destination site over HTTPS. The response includes the audited `url` and `host`, whether `https` is in use, and a `score` from 0 to 100. You also get `tls_valid` plus boolean checks for common protections: cookie flags (`secure`, `http_only`, `same_site`) and headers (`csp`, `hsts`, `referrer_policy`, `x_frame_options`, `x_content_type_options`). When the audit finds issues, `findings` returns an array of objects with an `id`, `message`, `severity`, and `recommendation`. That makes it useful for automated site reviews, pre-release checks, and monitoring of public properties where you want a quick view of missing TLS or defensive headers without running a full scanner. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/website-security-audit * * * --- title: Check Numerology Compatibility API slug: score-numerology-compatibility url: https://apyhub.com/dosvak/service/score-numerology-compatibility provider: Dosvak LLC categories: [Smart Generation] tags: [numerology, compatibility-scoring, relationship-analysis, name-analysis, birth-date-analysis] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Check Numerology Compatibility API Score two people from their names and birth dates. Returns a compatibility score, summary, strengths, cautions, and per-person numerology values. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/score-numerology-compatibility` | What it does Scores the numerology compatibility between two people based on each person’s full nam… | 100 | ## Endpoint reference ### Score numerology compatibility between two people `POST https://api.eu.apyhub.com/dosvak/score-numerology-compatibility` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `person_a.full_name` | body | string | yes | | | `person_a.birth_date` | body | string (date) | yes | | | `person_b.full_name` | body | string | yes | | | `person_b.birth_date` | body | string (date) | yes | | #### Quickstart Compare the numerology compatibility of two people by sending each person’s full name and birth date. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/score-numerology-compatibility" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "person_a": { "full_name": "Aditi Sharma", "birth_date": "1990-05-14" }, "person_b": { "full_name": "Rahul Mehta", "birth_date": "1988-11-22" } }' ``` #### What you'll get back Returns a JSON object with these top-level fields: `summary` as a string, `cautions` and `strengths` as string arrays, `person_a_numbers` and `person_b_numbers` as objects, and `compatibility_score` as an integer from 0 to 100. ```json { "summary": "High compatibility with strong communication alignment.", "cautions": ["Be mindful of different pacing."], "strengths": ["Shared values", "Good emotional balance"], "person_a_numbers":{ "life_path": 11, "name_number": 4 }, "person_b_numbers": { "life_path": 3, "name_number": 8 }, "compatibility_score": 82 } ``` ## About ## What it does Numerology Compatibility Checker scores the compatibility between two people using their full names and birth dates. Send `person_a` and `person_b`, each with a `full_name` and `birth_date`, and get back a numeric `compatibility_score` plus a written `summary`. The response also includes `strengths` and `cautions` as arrays of strings, along with `person_a_numbers` and `person_b_numbers` objects for the underlying numerology values used in the analysis. That makes it easier to surface both the headline result and the supporting details in a relationship app, matchmaking flow, or horoscope feature. Use it when you want a lightweight compatibility readout without building your own numerology logic. The output is structured for display, filtering, or further processing: you can show the score, explain the main positives and risks, and store the per-person number breakdown alongside the result. Numerology Compatibility Checker is suited to consumer apps, entertainment experiences, and profile-based recommendation flows where a simple 0–100 compatibility score is enough to drive the next step. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/score-numerology-compatibility * * * --- title: Extract Head Region from Image API slug: extract-head-region url: https://apyhub.com/dosvak/service/extract-head-region provider: Dosvak LLC categories: [File Manipulation, Image Processing] tags: [image-processing, background-removal, portrait-cropping, transparent-image, photo-cutout] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Extract Head Region from Image API Extract the head and shoulders from a portrait image and get a transparent image back. Built for avatars, profile photos, and photo cutouts. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/extract-head-region` | What it does Extracts a head/shoulders region from a portrait image and returns the result as a bin… | 100 | ## Endpoint reference ### Extract a head/shoulders region with transparency `POST https://api.eu.apyhub.com/dosvak/extract-head-region` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Portrait image | | `padding` | query | number | no | Default: `0.42`. Example: `0.42`. | #### Quickstart Upload a portrait image to extract the head region, with the default padding. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/extract-head-region?padding=0.42" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/portrait.jpg" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the extracted head region. ## About ## What it does Head Region Extractor takes a portrait image and returns the head and shoulders area with transparency. Send a single binary `file` in the request body, and optionally tune `padding` in the query to control how much of the surrounding area is kept around the subject. Use it when you need a clean cutout for avatars, profile cards, staff directories, ID-style imagery, or any workflow that needs a subject isolated from the background. The service is designed for portrait photos and the output is a binary image, ready to store, forward, or post-process in your own pipeline. The only input is the uploaded image file, capped at 20 MB, plus the optional `padding` value. The response is an image with transparency, so you can place the extracted head and shoulders onto different backgrounds without manual masking. If your product handles user photos at scale, Head Region Extractor is a straightforward way to standardize portraits before resizing, compositing, or approval workflows. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/extract-head-region * * * --- title: Extract Invisible Text Watermark from Image API slug: extract-invisible-text-watermark url: https://apyhub.com/dosvak/service/extract-invisible-text-watermark provider: Dosvak LLC categories: [File Manipulation, File Security] tags: [watermark-extraction, png, image-forensics, hidden-text, asset-provenance] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Extract Invisible Text Watermark from Image API Extract hidden text from watermarked PNG images. Returns the decoded text and bytes processed for asset review, provenance checks, or forensics. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/extract-invisible-text-watermark` | What it does Extracts an invisible text watermark from a watermarked PNG image you upload and retur… | 100 | ## Endpoint reference ### Extract an invisible text watermark `POST https://api.eu.apyhub.com/dosvak/extract-invisible-text-watermark` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Watermarked PNG image | #### Quickstart Upload a watermarked PNG image to extract any invisible text watermark. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/extract-invisible-text-watermark" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/watermarked-image.png" ``` #### What you'll get back Returns a JSON object with optional `text` and `bytes` fields. `text` is the extracted watermark text as a string, and `bytes` is an integer value related to the result. ```json { "text": "CONFIDENTIAL", "bytes": 42 } ``` ## About ## What it does Invisible Text Watermark Extractor reads a watermarked PNG image and returns the hidden text it contains. Send the image in the `file` field and get back the extracted watermark as plain text, along with the number of bytes processed. Use it when you need to recover embedded ownership marks, provenance tags, or other invisible text from an image asset. It is aimed at workflows where watermark text is encoded in the image itself rather than overlaid visibly, so you can inspect files without manual image analysis. The request schema is intentionally small: one binary PNG file, up to 20 MB. The response is just the extracted `text` and a `bytes` count, which makes it straightforward to plug into automated asset review, content moderation, or internal forensics pipelines. If you process large image libraries, this endpoint gives you a simple way to batch-check whether an uploaded PNG carries an embedded invisible watermark and capture the decoded result for logging or downstream rules. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/extract-invisible-text-watermark * * * --- title: Apply Invisible Text Watermark on Image API slug: embed-invisible-text-watermark url: https://apyhub.com/dosvak/service/embed-invisible-text-watermark provider: Dosvak LLC categories: [File Manipulation] tags: [watermarking, image-processing, file-manipulation, asset-tracking, binary-output] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Apply Invisible Text Watermark on Image API Embed an invisible text watermark in an image and get the processed file back. Track asset ownership without changing how the image looks. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/embed-invisible-text-watermark` | What it does Embeds an invisible text watermark into a source image. It takes an uploaded image fil… | 100 | ## Endpoint reference ### Embed an invisible text watermark `POST https://api.eu.apyhub.com/dosvak/embed-invisible-text-watermark` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Source image | | `text` | query | string | yes | Example: `campaign-id-123`. | #### Quickstart Upload an image file and pass the watermark text as a query parameter. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/embed-invisible-text-watermark?text=campaign-id-123" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`), which is the watermarked image. ## About ## What it does Invisible Text Watermark adds a text watermark to a source image and returns the processed image as a binary file. Send one image file and the watermark text you want embedded; get back an image with the watermark applied. Use it when you need to mark campaign assets, internal previews, or distributed images without adding visible branding. The endpoint accepts the image in the request body as `file`, plus a `text` value up to 1000 characters. That makes it useful for tracking ownership or source across shared files while keeping the mark out of sight. Because the response is binary, you can pass the output directly into storage, delivery, or further image workflows without extra parsing. If you already handle image uploads and downloads in your application, this fits into that flow with minimal glue code. Invisible Text Watermark is a file-processing utility for teams that need lightweight image marking without changing the visual layout of the asset. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/embed-invisible-text-watermark * * * --- title: Score Image Exposure API slug: score-image-exposure url: https://apyhub.com/dosvak/service/score-image-exposure provider: Dosvak LLC categories: [Artificial Intelligence, Image Processing] tags: [image-quality, exposure-analysis, clipping-detection, photo-review, image-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Score Image Exposure API Score a single image file for exposure quality and clipping. Returns numeric exposure metrics and recommendations for automated photo review. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/score-image-exposure` | What it does Scores an uploaded image for exposure and clipping by analyzing the submitted file and… | 100 | ## Endpoint reference ### Score image exposure and clipping `POST https://api.eu.apyhub.com/dosvak/score-image-exposure` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Image file | #### Quickstart Upload an image to score its exposure. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/score-image-exposure" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" ``` #### What you'll get back Returns a JSON object with numeric exposure metrics and a `recommendations` array of strings. ```json { "score": 82.4, "mean_luma": 0.71, "shadow_pct": 12.3, "contrast_std": 18.6, "dynamic_range": 7.9, "highlight_pct": 4.1, "recommendations": ["Exposure looks balanced"] } ``` ## About ## What it does Image Exposure Score checks a single image file for exposure quality and clipping. Send a binary image in the `file` field, and get back a numeric `score` plus exposure measurements you can use in automated review or tuning workflows. The response includes `mean_luma`, `shadow_pct`, `contrast_std`, `dynamic_range`, and `highlight_pct`, along with a `recommendations` array of strings. That makes it easy to compare images consistently, flag underexposed or overexposed assets, and surface a short explanation for editors or QA tools. Use Image Exposure Score when you need to screen uploaded photos before publishing, reject low-quality user submissions, or route borderline images for manual review. Because the API returns structured metrics rather than a simple pass/fail, you can set your own thresholds for different content types, cameras, or production standards. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/score-image-exposure * * * --- title: Blur/Pixelate or Black out Image Faces API slug: blur-faces url: https://apyhub.com/dosvak/service/blur-faces provider: Dosvak LLC categories: [File Security, Image Processing, "Security & Privacy"] tags: [face-blurring, face-redaction, image-anonymization, privacy, image-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Blur/Pixelate or Black out Image Faces API Detect faces in an image and return a blurred, pixelated, or blacked-out version. Built for anonymising photos before publishing or sharing. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/blur-faces` | What it does Blurs, pixelates, or blacks out detected faces in an uploaded image. The endpoint take… | 100 | ## Endpoint reference ### Blur, pixelate, or black out detected faces `POST https://api.eu.apyhub.com/dosvak/blur-faces` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Image file | | `mode` | query | string | no | One of: blur, pixelate, black. Default: `blur`. Example: `blur`. | | `expand` | query | number | no | Default: `0.18`. Example: `0.18`. | | `strength` | query | integer | no | Default: `31`. Example: `31`. | #### Quickstart Upload an image to blur, pixelate, or black out detected faces. This minimal example sends the required file and uses the default blur mode. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/blur-faces" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" ``` #### What you'll get back Returns binary data (`string` with `format: binary`) - the processed image file. ## About ## What it does Face Blur detects faces in an image and returns a processed image with those faces blurred, pixelated, or blacked out. Send a single image file as binary data, and choose the masking style with `mode`. Use `expand` to widen the area around each detected face before masking, which helps cover hairlines, ears, and other nearby details. Use `strength` to control how aggressive the blur or pixelation should be. The service accepts images up to 20 MB and returns the edited image as binary output. Use Face Blur when you need to anonymise people in photos before publishing them, share screenshots without exposing identities, or prepare visual assets for internal review. It is useful for moderation workflows, privacy filtering, and any process that needs face redaction without manual editing. If you already have image pipelines in place, Face Blur fits as a simple preprocessing step: upload an image, select the masking mode, and pass the output on to storage, review, or publishing. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/blur-faces * * * --- title: Extract Hair Region from Image API slug: extract-hair-region url: https://apyhub.com/dosvak/service/extract-hair-region provider: Dosvak LLC categories: [File Manipulation, Image Processing] tags: [hair-segmentation, portrait-processing, image-masking, transparency, foreground-extraction] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Extract Hair Region from Image API Extract the hair region from a portrait image and return a transparent binary image. Built for avatar creation, retouching, and compositing. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/extract-hair-region` | What it does Extracts a heuristic hair region from a portrait image and returns the resulting image… | 100 | ## Endpoint reference ### Extract a heuristic hair region with transparency `POST https://api.eu.apyhub.com/dosvak/extract-hair-region` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Portrait image | | `sensitivity` | query | number | no | Default: `0.55`. Example: `0.55`. | #### Quickstart Upload a portrait image to extract the hair region. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/extract-hair-region" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/portrait.jpg" ``` #### What you'll get back Returns a binary file (`string` with `format: "binary"`), which is the extracted hair-region output. ## About ## What it does Hair Region Extractor takes a portrait image and returns the image as a binary file with a heuristic hair region extracted and transparency applied. It is designed for image pipelines that need a quick foreground-style cutout around hair without building a custom segmentation model. Send the image in the required `file` field, and optionally adjust `sensitivity` as a query parameter between 0.1 and 1. Lower values keep the extraction conservative; higher values make the region detection more aggressive. The response is a binary image, so you can pass it straight into storage, editing, or further compositing steps. Use Hair Region Extractor when you need to isolate hair for avatar generation, portrait retouching, virtual try-on workflows, or design tools that layer effects behind a subject. Because the output is transparent, it fits cleanly into downstream image-processing pipelines without extra masking logic. If you are working with user-uploaded portraits, this endpoint gives you a focused transformation step: one image in, one processed image out. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/extract-hair-region * * * --- title: Apply Style Filters on Image API slug: apply-image-style-transfer url: https://apyhub.com/dosvak/service/apply-image-style-transfer provider: Dosvak LLC categories: [File Manipulation, Image Processing, Smart Generation] tags: [image-processing, style-transfer, image-filters, computer-vision, binary-files] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Apply Style Filters on Image API Turn any uploaded image into a painting, watercolor, sketch, or oil version. Adjust style strength from 0 to 1 and get a stylized image back. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/apply-image-style-transfer` | What it does Applies a lightweight CPU style filter to an uploaded image and returns the transforme… | 100 | ## Endpoint reference ### Apply lightweight CPU style filters `POST https://api.eu.apyhub.com/dosvak/apply-image-style-transfer` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Image file | | `mode` | query | string | no | One of: painting, watercolor, sketch, oil. Default: `painting`. Example: `painting`. | | `strength` | query | number | no | Default: `0.65`. Example: `0.65`. | #### Quickstart Upload an image to apply the default painting style transfer. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/apply-image-style-transfer" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" ``` #### What you'll get back Returns a binary file (a string with `format: "binary"`), which is the styled image output. ## About ## What it does Image Style Transfer applies lightweight style filters to an uploaded image and returns the transformed file. Send a binary image up to 20 MB, choose a style mode, and get the styled image back as binary output. Use `mode` to pick the visual treatment: `painting`, `watercolor`, `sketch`, or `oil`. Use `strength` to control how strongly the effect is applied, from `0` to `1`, with `0.65` as the default. This keeps the endpoint simple to fit into batch image pipelines, user-generated content tools, or quick preview workflows where you want a stylized variant without running a heavier model. `Image Style Transfer` is a practical fit when you need to generate alternate artwork for a thumbnail, create a sketch version of a product image, or preview how an asset looks with a painterly filter. The response is the processed image only, so it drops cleanly into the next step of your file handling flow. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/apply-image-style-transfer * * * --- title: Change Image Aspect Ratio API slug: restore-image-aspect-ratio url: https://apyhub.com/dosvak/service/restore-image-aspect-ratio provider: Dosvak LLC categories: [File Manipulation] tags: [image-processing, aspect-ratio, image-restoration, image-transformation, binary-image] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Change Image Aspect Ratio API Restore a stretched image to a target aspect ratio. Send an image file and get corrected binary output back for cleanup and publishing workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/restore-image-aspect-ratio` | What it does Restores a stretched image to a target aspect ratio by accepting an uploaded image fil… | 100 | ## Endpoint reference ### Restore a stretched image to a target aspect ratio `POST https://api.eu.apyhub.com/dosvak/restore-image-aspect-ratio` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Image file | | `target_aspect` | query | string | no | Default: `1:1`. Example: `4:3`. | | `keep_long_edge` | query | boolean | no | Default: `true`. Example: `true`. | #### Quickstart Restore an image while keeping its aspect ratio by uploading a file and choosing the target ratio as a query parameter. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/restore-image-aspect-ratio?target_aspect=4%3A3" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`), which is the restored image. ## About ## What it does Image Aspect Ratio Restore takes a stretched image and returns a binary image adjusted to a target aspect ratio. Send a single image file in the request body, and optionally set `target_aspect` in the query string to values like `4:3` or use the default `1:1`. Use `keep_long_edge` when you want to preserve the longer side of the image while restoring proportions. The service is designed for cases where an image has been displayed or resized incorrectly and needs to be brought back into a standard layout for further editing, publishing, or storage. The response is the corrected image as binary data, so you can pass it straight into your next image workflow without parsing extra metadata. That makes it useful in automated asset pipelines, CMS cleanup jobs, or any process that needs to normalize user-uploaded images before delivery. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/restore-image-aspect-ratio * * * --- title: Extract Invisible Watermark from Image API slug: extract-invisible-image-watermark url: https://apyhub.com/dosvak/service/extract-invisible-image-watermark provider: Dosvak LLC categories: [File Manipulation] tags: [watermark-extraction, image-processing, png, file-manipulation, digital-rights] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Extract Invisible Watermark from Image API Extract an invisible watermark from a watermarked PNG up to 20 MB. Returns the recovered result as binary data for provenance and asset checks. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/extract-invisible-image-watermark` | What it does Extracts an invisible watermark from an uploaded PNG image and returns the extracted r… | 100 | ## Endpoint reference ### Extract an invisible image watermark `POST https://api.eu.apyhub.com/dosvak/extract-invisible-image-watermark` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Watermarked PNG image | #### Quickstart Upload a watermarked PNG image to extract its invisible watermark. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/extract-invisible-image-watermark" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/watermarked-image.png" ``` #### What you'll get back Returns a binary file response (`string` with `format: binary`). The API sends the extracted result as raw binary data, not JSON. ## About ## What it does Invisible Watermark Extractor pulls an embedded watermark out of a watermarked PNG image. Send one binary `file` in the request body, and you get the extracted result back as binary output. Use it when you need to recover hidden ownership or tracking data from images that were marked before distribution. The endpoint is focused on PNG inputs up to 20 MB, so it fits workflows where images are uploaded from a browser, storage bucket, or moderation pipeline and need to be checked for embedded marks. Because the response is binary, you can pass the result directly into your own storage, decoding, or review step without converting it first. That makes it useful for content provenance checks, internal asset handling, and automated image inspection where watermark presence matters. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/extract-invisible-image-watermark * * * --- title: Apply Invisible Watermark on Image API slug: embed-invisible-image-watermark url: https://apyhub.com/dosvak/service/embed-invisible-image-watermark provider: Dosvak LLC categories: [File Manipulation] tags: [watermarking, image-processing, image-security, asset-protection, file-manipulation] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Apply Invisible Watermark on Image API Embed a hidden watermark into an image using a source file and a watermark image. Returns the processed image as binary output for tracking. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/embed-invisible-image-watermark` | What it does Embeds a watermark image into a source image and returns the resulting image as binary… | 100 | ## Endpoint reference ### Embed an invisible image watermark `POST https://api.eu.apyhub.com/dosvak/embed-invisible-image-watermark` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Source image | | `watermark` | body | string (binary) | yes | Small logo/watermark image | | `max_size` | query | integer | no | Default: `64`. Example: `64`. | #### Quickstart Upload a source image and a small watermark image to generate an invisible watermarked result. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/embed-invisible-image-watermark" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/source-image.png" \ -F "watermark=@/path/to/watermark.png" ``` #### What you'll get back Returns a binary file response. ## About ## What it does Invisible Watermark lets you embed a hidden watermark into an image. Send a source image and a small logo or watermark image, and get back a binary image file with the watermark applied. Use the `max_size` query parameter to control the watermark size, from 16 to 160, with a default of 64. The endpoint accepts source images up to 20 MB, which makes it suitable for marking product photos, editorial assets, and preview images before distribution. This is a good fit when you want to identify ownership or trace the source of images without placing a visible mark on the asset itself. You can use it to tag internal drafts, protect shared previews, or prepare branded media for delivery while keeping the main image clean. The response is the processed image as binary data, so it can be stored, forwarded, or passed into another file workflow without extra parsing. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/embed-invisible-image-watermark * * * --- title: Score Image Quality API slug: score-image-aesthetic-quality url: https://apyhub.com/dosvak/service/score-image-aesthetic-quality provider: Dosvak LLC categories: [Artificial Intelligence, Image Processing] tags: [image-quality, composition-analysis, photo-scoring, visual-quality, image-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Score Image Quality API Score uploaded images for composition and visual quality. Returns an overall score, face count, and metrics for colour, thirds, and sharpness. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/score-image-aesthetic-quality` | What it does Scores an uploaded image for composition and visual quality. It accepts one image file… | 100 | ## Endpoint reference ### Score image composition and visual quality `POST https://api.eu.apyhub.com/dosvak/score-image-aesthetic-quality` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Image file | #### Quickstart Upload an image to score its aesthetic quality. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/score-image-aesthetic-quality" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" ``` #### What you'll get back Returns a JSON object with numeric scoring fields such as `score`, `face_count`, `color_score`, `thirds_score`, `exposure_score`, and `sharpness_score`, plus `suggestions` as an array of strings. ```json { "score": 0.82, "face_count": 1, "color_score": 0.77, "suggestions": ["Improve lighting", "Try a tighter crop"], "thirds_score": 0.74, "exposure_score": 0.8, "sharpness_score": 0.79 } ``` ## About ## What it does Image Quality Scorer analyzes an uploaded image and returns a composition and visual-quality breakdown. Send a binary image file up to 20 MB, and get back an overall `score` plus component metrics that help you understand what is driving the result. The response includes `face_count`, `color_score`, `thirds_score`, `exposure_score`, `sharpness_score`, and a `suggestions` array of strings. That makes it useful when you need to rank user-submitted photos, filter low-quality images before moderation or review, or give photographers and creators quick feedback on framing, lighting, and focus. Use it anywhere image quality matters but a human review would be too slow or inconsistent. For example, you can sort marketplace listings by image quality, reject blurry uploads before they hit storage, or score candidate thumbnails before choosing the best one for a campaign. Image Quality Scorer returns simple numeric signals you can compare, threshold, or combine with your own business rules. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/score-image-aesthetic-quality * * * --- title: Colorize Image API slug: colorize url: https://apyhub.com/dosvak/service/colorize provider: Dosvak LLC categories: [Image Processing] tags: [image-colorization, grayscale, photo-restoration, palette-based, image-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Colorize Image API Colorize grayscale or desaturated images with natural, warm, cool, or sepia palettes. Returns a binary image for photo restoration and previews. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/colorize` | What it does Colorizes a grayscale or desaturated image using a CPU palette. It takes an uploaded i… | 100 | ## Endpoint reference ### Colorize a grayscale image with CPU palettes `POST https://api.eu.apyhub.com/dosvak/colorize` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Grayscale or desaturated image | | `palette` | query | string | no | One of: natural, warm, cool, sepia. Default: `natural`. Example: `natural`. | | `strength` | query | number | no | Default: `0.72`. Example: `0.72`. | #### Quickstart Upload a grayscale or desaturated image to colorize it. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/colorize" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.png" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the colorized image. ```bash ``` ## About ## What it does Image Colorizer turns a grayscale or desaturated image into a colorized version. Send a binary image file up to 20 MB, choose a palette, and control how strongly the palette is applied. The service accepts one required `file` in the request body. You can set `palette` to `natural`, `warm`, `cool`, or `sepia`, and tune `strength` from 0 to 1. The default palette is `natural`, and the default strength is `0.72`, which gives you a balanced result without overcooking the image. Use Image Colorizer when you need to restore archived photos, produce stylized variants for editorial work, or create quick visual previews from black-and-white assets. It is useful anywhere you need a color output from a source image without building your own image-processing pipeline. The response is a binary image, so you can store it, forward it, or pass it into the next step of your workflow. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/colorize * * * --- title: Retouching and Object Removal from Image API slug: inpaint url: https://apyhub.com/dosvak/service/inpaint provider: Dosvak LLC categories: [File Manipulation, Image Processing] tags: [image-inpainting, object-removal, blemish-removal, image-editing, masking] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Retouching and Object Removal from Image API Remove masked objects or blemishes from an image using telea or ns inpainting. Send a source image and mask, get back a cleaned binary image. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/inpaint` | What it does Removes masked areas from an uploaded image by taking a source image and a black/white… | 100 | ## Endpoint reference ### Remove masked objects or blemishes `POST https://api.eu.apyhub.com/dosvak/inpaint` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Source image | | `mask` | body | string (binary) | yes | Black/white mask image; non-black pixels are removed | | `method` | query | string | no | One of: telea, ns. Default: `telea`. Example: `telea`. | | `radius` | query | integer | no | Default: `5`. Example: `5`. | #### Quickstart Inpaint an image by uploading the source image and mask file, using the default `telea` method. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/inpaint?method=telea&radius=5" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/source-image.png" \ -F "mask=@/path/to/mask.png" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) — the inpainted image result. ```text ``` ## About ## What it does Image Inpainting lets you remove masked objects or blemishes from an image and get a reconstructed version back. Send a source image plus a black-and-white mask image, and the service fills in the masked regions based on the surrounding pixels. Use the `method` query parameter to choose the inpainting algorithm: `telea` or `ns`. You can also set `radius` to control how far the fill reaches, from 1 to 25, with a default of 5. The input image can be up to 20 MB. The response is a binary image file, so it fits directly into workflows that need cleaned-up assets without manual retouching. Common uses include removing logos, fixing small defects, deleting stray objects from product photos, and preparing images for publishing or archival. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/inpaint * * * --- title: Crop image around faces API slug: smart-crop url: https://apyhub.com/dosvak/service/smart-crop provider: Dosvak LLC categories: [Image Processing] tags: [image-cropping, face-detection, saliency, thumbnail-generation, image-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Crop image around faces API Crop a binary image around faces or the most salient area. Set the aspect ratio and padding, then receive the cropped image back. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/smart-crop` | What it does Crops an uploaded image around detected faces or saliency and returns the processed im… | 100 | ## Endpoint reference ### Crop image around faces or saliency `POST https://api.eu.apyhub.com/dosvak/smart-crop` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Image file | | `aspect` | query | string | no | Default: `1:1`. Example: `4:5`. | | `padding` | query | number | no | Default: `0.18`. Example: `0.18`. | #### Quickstart Upload one image and crop it to the requested aspect ratio. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/smart-crop?aspect=1:1&padding=0.18" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the cropped image. ```bash (binary file) ``` ## About ## What it does Smart Crop crops an image around detected faces or visual saliency and returns the cropped image as binary output. Send a binary image file in the request body, and optionally tune the result with `aspect` and `padding` query parameters. Use `aspect` to set the target ratio, such as `1:1` or `4:5`, and `padding` to control how much extra space is kept around the subject. The file input accepts an image up to 20 MB. That makes Smart Crop useful when you need consistent thumbnail framing for profile photos, product shots, social previews, or gallery cards without manually editing each image. Because the service focuses on faces or the most salient part of the image, it helps preserve the subject while adapting the crop to different layouts. The response is the cropped image itself, so you can pass it straight into storage, delivery, or a downstream image pipeline. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/smart-crop * * * --- title: Restore old or faded photos API slug: old-photo-restore url: https://apyhub.com/dosvak/service/old-photo-restore provider: Dosvak LLC categories: [File Manipulation] tags: [photo-restoration, image-enhancement, old-photos, scratch-repair, image-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Restore old or faded photos API Restore old or faded photos from an uploaded image. Control enhancement strength and scratch repair, then receive the restored image as binary. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/old-photo-restore` | What it does Restores an uploaded old or faded photo by processing the provided image file and retu… | 100 | ## Endpoint reference ### Restore old or faded photos `POST https://api.eu.apyhub.com/dosvak/old-photo-restore` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Photo image | | `strength` | query | number | no | Default: `0.62`. Example: `0.62`. | | `repair_scratches` | query | boolean | no | Default: `true`. Example: `true`. | #### Quickstart Restore a photo by uploading an image file with the default repair settings. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/old-photo-restore?strength=0.62&repair_scratches=true" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/photo.jpg" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the restored image. ## About ## What it does Photo Restoration restores old or faded photos from a single uploaded image. Send a photo file in the request body, and the service returns the restored image as binary output. Use the `strength` query parameter to control how aggressively the image is enhanced, from 0 to 1. Keep the default value when you want a balanced restoration, or raise it when the photo needs more visible correction. The `repair_scratches` flag lets you include or skip scratch repair depending on the condition of the source image. This is a good fit for digitising family archives, improving scanned prints, or cleaning up damaged photos before storage or sharing. Because the endpoint returns an image, you can pass the result straight into your app, media pipeline, or file storage flow without parsing a JSON payload. Photo Restoration is designed for simple batch or single-image workflows where you need to improve appearance without changing the original upload format. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/old-photo-restore * * * --- title: Restore and enhance detected face regions API slug: face-restore url: https://apyhub.com/dosvak/service/face-restore provider: Dosvak LLC categories: [Artificial Intelligence] tags: [face-restoration, image-enhancement, portrait-processing, image-processing, ai-imaging] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Restore and enhance detected face regions API Enhance detected face regions in an uploaded image and get a restored binary image back. Built for portrait cleanup and low-quality photo repair. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/face-restore` | What it does Restores and enhances detected face regions in an uploaded image. The endpoint accepts… | 100 | ## Endpoint reference ### Restore and enhance detected face regions `POST https://api.eu.apyhub.com/dosvak/face-restore` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Image file | | `strength` | query | number | no | Default: `0.65`. Example: `0.65`. | #### Quickstart Upload an image to restore it with the default strength. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/face-restore?strength=0.65" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the restored image. ```bash ``` ## About ## What it does Face Restore enhances detected face regions in an image and returns the restored image as binary output. Send a single image file in the request body, and use the optional `strength` query parameter to control how strongly the face restoration is applied. Use Face Restore when you need to clean up portraits, profile photos, or scanned images where faces are soft, degraded, or low quality. It is designed for image workflows where you want to improve facial detail without changing the rest of the file structure in your pipeline. The API accepts one binary `file` upload up to 20 MB. The response is a binary image, so you can store it, pass it to another image step, or return it directly to a user interface. Because the output is just the restored image file, it fits neatly into automated moderation, media cleanup, and photo enhancement flows. Tune `strength` between 0 and 1 to balance subtle enhancement against stronger restoration. Lower values keep the result closer to the original image; higher values apply more aggressive face enhancement. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/face-restore * * * --- title: Apply Face Filters API slug: apply-face-filters url: https://apyhub.com/dosvak/service/apply-face-filters provider: Dosvak LLC categories: [Image Processing] tags: [image-filters, photo-editing, image-processing, style-effects, color-adjustment] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Apply Face Filters API Apply warm, cool, vivid, mono, or dream filters to an uploaded image. Tune effect intensity and get the edited file back for styling or batch edits. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/apply-face-filters` | What it does Applies a preset color/style filter to an uploaded image and returns the processed ima… | 100 | ## Endpoint reference ### Apply preset color/style filters `POST https://api.eu.apyhub.com/dosvak/apply-face-filters` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Image file | | `mode` | query | string | no | One of: warm, cool, vivid, mono, dream. Default: `warm`. Example: `warm`. | | `intensity` | query | number | no | Default: `0.38`. Example: `0.38`. | #### Quickstart Upload an image and apply a face filter. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/apply-face-filters" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" ``` #### What you'll get back Returns a binary string (`format: "binary"`), so the response body is the filtered image file itself. ```text ``` ## About ## What it does Apply preset color and style filters to an image and get the edited file back. Face Filters takes a binary image upload, applies one of five modes, and returns the transformed image as binary output. Send the image file in the request body, then choose a filter mode in the query string: `warm`, `cool`, `vivid`, `mono`, or `dream`. If you want lighter or stronger treatment, set `intensity` from `0` to `1`; the default is `0.38`. That makes it easy to tune the result for social previews, profile photos, product imagery, or batch edits where you need a consistent look. Use Face Filters when you need a simple image styling step without managing your own image pipeline. It is a direct fit for apps that let users enhance photos, standardize thumbnails, or generate alternate visual variants from the same source file. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/apply-face-filters * * * --- title: Skin Smoothing API slug: skin-beauty url: https://apyhub.com/dosvak/service/skin-beauty provider: Dosvak LLC categories: [File Manipulation, Image Processing] tags: [skin-retouch, portrait-editing, image-enhancement, photo-retouching, face-smoothing] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Skin Smoothing API Smooth skin-toned regions in a portrait while preserving edges. Send a binary image and get a processed image back, with adjustable strength. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/skin-beauty` | What it does Smooths skin-toned regions in an uploaded portrait image while preserving edges. The r… | 100 | ## Endpoint reference ### Smooth skin-toned regions while preserving edges `POST https://api.eu.apyhub.com/dosvak/skin-beauty` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Portrait image | | `strength` | query | number | no | Default: `0.34`. Example: `0.34`. | #### Quickstart Upload a portrait image to process the skin/beauty endpoint. Replace the file path with an image on your machine. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/skin-beauty" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/portrait.jpg" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) as the response body. ```binary ``` ## About ## What it does Skin Retouch smooths skin-toned regions in a portrait image while preserving edges and facial detail. Send a binary image file and get back a processed image file, with control over how strong the smoothing effect should be. Use the `file` input to submit the portrait image, and optionally set `strength` from 0 to 1 to tune the amount of retouching. Lower values keep more original texture; higher values apply stronger smoothing. The output is a binary image, so it fits directly into image pipelines that store, forward, or serve edited files. Use Skin Retouch when you need consistent portrait cleanup for profile photos, marketplace listings, creator tools, or automated photo workflows. It is designed for targeted skin smoothing rather than full-image filtering, so edges and non-skin areas are preserved as the image is processed. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/skin-beauty * * * --- title: Portrait Photo Enhancement API slug: portrait-beauty-enhancement url: https://apyhub.com/dosvak/service/portrait-beauty-enhancement provider: Dosvak LLC categories: [File Manipulation, Image Processing] tags: [portrait-enhancement, image-retouching, photo-editing, image-processing, portrait-image] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Portrait Photo Enhancement API Enhance a portrait with contrast, smoothing, and brightness controls. Returns the edited image as binary output for upload or further processing. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/portrait-beauty-enhancement` | What it does Applies portrait beauty enhancement to an uploaded portrait image. The request sends a… | 100 | ## Endpoint reference ### Apply portrait beauty enhancement `POST https://api.eu.apyhub.com/dosvak/portrait-beauty-enhancement` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Portrait image | | `contrast` | query | number | no | Default: `1.04`. Example: `1.04`. | | `smoothing` | query | number | no | Default: `0.36`. Example: `0.36`. | | `brightness` | query | number | no | Default: `1.03`. Example: `1.03`. | #### Quickstart Upload a portrait image to enhance it with the default settings. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/portrait-beauty-enhancement?contrast=1.04&smoothing=0.36&brightness=1.03" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/portrait.jpg" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the enhanced image. There is no JSON wrapper in the response. ```binary ``` ## About ## What it does Portrait Beauty Enhancement takes a portrait image, applies image adjustments, and returns the enhanced image as binary output. Send a file in the request body, and tune contrast, smoothing, and brightness through query parameters. Use it when you need consistent portrait retouching in an app or workflow: for example, improving profile photos, standardizing headshots before upload, or giving users a simple image polish step without manual editing. The request accepts one binary `file` in the body, with optional `contrast`, `smoothing`, and `brightness` values. Contrast ranges from 0.8 to 1.4, smoothing from 0 to 1, and brightness from 0.8 to 1.3. The response is a binary image, so you can store it, pass it to another processing step, or return it directly to the client. It is a focused portrait enhancement endpoint rather than a general photo editor, which makes it easier to slot into media upload, avatar creation, and identity-style image pipelines. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/portrait-beauty-enhancement * * * --- title: Portrait Photo Retouch API slug: retouch-portrait-photo url: https://apyhub.com/dosvak/service/retouch-portrait-photo provider: Dosvak LLC categories: [File Manipulation, Image Processing] tags: [portrait-retouch, image-enhancement, photo-editing, face-smoothing, sharpening] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Portrait Photo Retouch API Smooth and sharpen a portrait image from a binary file upload. Returns the edited image for profile photos, avatars, and staff pictures. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/retouch-portrait-photo` | What it does Smooths and sharpens a portrait photo. Send a portrait image file in the request body… | 100 | ## Endpoint reference ### Smooth and sharpen portrait photos `POST https://api.eu.apyhub.com/dosvak/retouch-portrait-photo` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Portrait image | | `sharpen` | query | number | no | Default: `0.12`. Example: `0.12`. | | `strength` | query | number | no | Default: `0.32`. Example: `0.32`. | #### Quickstart Upload a portrait photo to retouch it with the default sharpen and strength settings. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/retouch-portrait-photo" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/portrait.jpg" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the retouched image. ```bash ``` ## About ## What it does Portrait Photo Retouch smooths and sharpens a portrait image and returns the edited file as binary output. Send a single portrait photo file, and control the result with two query parameters: `sharpen` and `strength`. Use it when you need to clean up face photos for profiles, staff directories, identity-related visuals, or other portrait assets that should look polished without rebuilding the image in your own pipeline. The service is designed for one-step image enhancement, with defaults that work for a typical portrait retouch. The input schema is simple: upload one `file` up to 20 MB. The response is the processed image itself, so you can pass it straight into storage, download it, or continue downstream image handling without parsing a complex object. If your workflow includes customer avatars, onboarding photos, or marketplace seller images, this endpoint gives you a consistent way to improve portrait clarity while keeping the integration surface small. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/retouch-portrait-photo * * * --- title: Convert Image to Cartoon API slug: cartoonize-image url: https://apyhub.com/dosvak/service/cartoonize-image provider: Dosvak LLC categories: [File Conversion] tags: [image-to-image, cartoon-effects, png-conversion, photo-stylization, image-transformation] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Convert Image to Cartoon API Convert an uploaded photo into a cartoon-style PNG. Control style, detail, smoothing, and edge strength for avatars, graphics, and effects. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/cartoonize-image` | What it does Converts an uploaded image into a cartoon-style PNG. You send the source image file in… | 100 | ## Endpoint reference ### Convert an image into a cartoon-style PNG `POST https://api.eu.apyhub.com/dosvak/cartoonize-image` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Image file | | `mode` | query | string | no | One of: stylized, soft, classic, poster. Default: `stylized`. Example: `stylized`. | | `detail` | query | integer | no | Default: `7`. Example: `7`. | | `color_smooth` | query | integer | no | Default: `7`. Example: `8`. | | `edge_strength` | query | number | no | Default: `0.16`. Example: `0.16`. | #### Quickstart Upload an image to cartoonize it using the default `stylized` mode. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/cartoonize-image?mode=stylized&detail=7&color_smooth=7&edge_strength=0.16" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) as the cartoonized image response. ```text (binary file) ``` ## About ## What it does Cartoonize Image turns an uploaded image into a cartoon-style PNG. Send a binary image file and get a transformed image back, ready for use in avatars, profile assets, marketing graphics, or playful product mockups. Use the `mode` query parameter to choose the visual treatment: `stylized`, `soft`, `classic`, or `poster`. Fine-tune the look with `detail`, `color_smooth`, and `edge_strength` to control how much texture is preserved, how flat the colours become, and how bold the outlines appear. The input accepts a single image file up to 20 MB in the request body. The response is a binary PNG, so it fits cleanly into pipelines that store, forward, or display generated images without extra parsing. Cartoonize Image is a good fit for apps that generate shareable avatars, e-commerce visuals, or lightweight image effects where you need a consistent cartoon render from user-uploaded photos. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/cartoonize-image * * * --- title: Expand Related Keywords API slug: expand-keyword-into-related-keywords url: https://apyhub.com/dosvak/service/expand-keyword-into-related-keywords provider: Dosvak LLC categories: [Marketing, SEO] tags: [keyword-research, seo, related-keywords, content-planning, ad-optimization] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Expand Related Keywords API Expand one keyword into related suggestions with scores and pair counts. Built for SEO research, content planning, and ad group expansion. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/expand-keyword-into-related-keywords` | What it does Expands a single input keyword into a related-keywords result set. The endpoint takes… | 10 | ## Endpoint reference ### Expand a keyword into related keywords `GET https://api.eu.apyhub.com/dosvak/expand-keyword-into-related-keywords` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Default: `25`. | | `keyword` | query | string | yes | | #### Quickstart Look up related keywords for a single search term, using the required `keyword` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/expand-keyword-into-related-keywords?keyword=marketing" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `query` string and a `results` array. Each item in `results` is an object with `keyword` as a string, `score` as a number, and `pair_count` as an integer. ```json { "query": "marketing", "results": [ { "keyword": "digital marketing", "score": 0.92, "pair_count": 184 } ] } ``` ## About ## What it does Keyword Expansion expands a single keyword into a list of related keywords. Send a `keyword` query parameter, and optionally set `limit` to control how many results you get back. Use it when you need keyword ideas for SEO research, topic clustering, content planning, or ad group expansion. The response returns the original `query` and a `results` array of related keyword objects. Each result includes the related `keyword`, a numeric `score`, and `pair_count`, so you can sort, filter, or rank suggestions in your own app. `limit` accepts values from 1 to 200, with a default of 25, which makes it easy to keep responses small during interactive workflows or request more candidates in batch jobs. If you're building a content tool, search workflow, or campaign generator, Keyword Expansion gives you structured related-keyword data without having to scrape suggestion sources yourself. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/expand-keyword-into-related-keywords * * * --- title: Search Domains by Keyword API slug: search-domains-by-keyword-intent url: https://apyhub.com/dosvak/service/search-domains-by-keyword-intent provider: Dosvak LLC categories: [Marketing, SEO] tags: [domain-search, keyword-search, domain-discovery, seo, search-intent] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Search Domains by Keyword API Find domains by keyword intent. Returns ranked domains with a score, matched keywords, and total hits for search and brand naming workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/search-domains-by-keyword-intent` | What it does Searches for domains related to a keyword intent and returns the original query, the l… | 10 | ## Endpoint reference ### Search domains by keyword intent `GET https://api.eu.apyhub.com/dosvak/search-domains-by-keyword-intent` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `term` | query | string | yes | | | `limit` | query | integer | no | Default: `200`. | #### Quickstart Search domains by a keyword intent with a required `term` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/search-domains-by-keyword-intent?term=seo" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `query` as a string, `limit` as an integer, and `results` as an array of objects. Each result object includes `domain` (string), `score` (number), `matched_keywords` (integer), and `total_hits` (integer). ```json { "query": "seo", "limit": 200, "results": [ { "domain": "seoagency.com", "score": 98.7, "matched_keywords": 4, "total_hits": 12 } ] } ``` ## About ## What it does Domain Keyword Search helps you find domains by keyword intent. Send a `term` query and, optionally, a `limit`, then get back a ranked list of matching domains. The response includes the original `query`, the requested `limit`, and a `results` array. Each result contains the `domain`, a numeric `score`, the number of `matched_keywords`, and `total_hits` for that domain. That makes it useful when you want to explore domain ideas from a search term, compare likely matches, or build internal tools for naming and discovery. Use Domain Keyword Search when you need a fast way to surface domains related to a topic, brand, or product concept. The response is compact and easy to process in downstream workflows, whether you're presenting suggestions in a UI or feeding the results into another ranking step. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/search-domains-by-keyword-intent * * * --- title: Domain Authority Checker API slug: lookup-domain-authority-metrics url: https://apyhub.com/dosvak/service/lookup-domain-authority-metrics provider: Dosvak LLC categories: [Marketing, SEO] tags: [seo, domain-metrics, authority-score, competitive-research, backlink-analysis] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Domain Authority Checker API Look up authority-style metrics for any domain and get score fields plus source data. Built for SEO analysis, outreach, and competitor research. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/lookup-domain-authority-metrics` | What it does Looks up domain authority metrics for the domain you provide in the query string and r… | 10 | ## Endpoint reference ### Lookup domain authority metrics `GET https://api.eu.apyhub.com/dosvak/lookup-domain-authority-metrics` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `domain` | query | string | yes | | #### Quickstart Look up domain authority metrics for a domain name. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/lookup-domain-authority-metrics?domain=example.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `query` as a string and `found` as a boolean. When `found` is `true`, the object may also include `result`, which is either `null` or an object containing the authority metrics fields shown below. ```json { "query": "example.com", "found": true, "result": { "entity_type": "domain", "entity": "example.com", "domain": "example.com", "source_graph": "web", "pr_pos": 1, "pr_val": 0.42, "pr_score_10": 7.1, "pr_score_10_bucket": 7, "harmonic_val": 0.38, "authority_weight": 0.81 } } ``` ## About ## What it does Domain Authority Metrics lets you look up authority-style metrics for a domain name. Send a `domain` string and get back whether a match was found, the original `query`, and a `result` object when the domain exists in the source data. The returned result includes the entity type and entity name, the canonical `domain`, the `source_graph` it came from, and several scoring fields: `pr_pos`, `pr_val`, `pr_score_10`, `pr_score_10_bucket`, `harmonic_val`, and `authority_weight`. If the lookup does not find a match, `found` is `false` and `result` is `null`. Use Domain Authority Metrics when you need a quick signal for SEO analysis, competitive research, or domain ranking workflows. For example, you can enrich a list of domains before prioritising outreach, building backlink reports, or comparing site authority across a market segment. The response is simple to consume in downstream automation: check `found`, read the returned `query`, and use the metric fields in your scoring or reporting logic. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/lookup-domain-authority-metrics * * * --- title: IAB Unified Content Classification API slug: classify-unified url: https://apyhub.com/dosvak/service/classify-unified provider: Dosvak LLC categories: [Artificial Intelligence] tags: [text-classification, content-tagging, taxonomy, label-prediction, machine-learning] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # IAB Unified Content Classification API Predict IAB labels from a URL, text, title, domain, or keywords across every tier. Returns scored results for tagging, routing, and taxonomy. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/classify-unified` | What it does Predicts classifications across one or more tiers in a single POST request. You send o… | 10 | ## Endpoint reference ### Predict across multiple tiers in one call `POST https://api.eu.apyhub.com/dosvak/classify-unified` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | any | yes | | #### Quickstart Classify some text or a URL into one or more tiers with the minimum required JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/classify-unified" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "text": "A new AI startup raised seed funding for its product launch.", "top_k": 3 }' ``` #### What you'll get back Returns a JSON object with a `tiers` object. Each key in `tiers` maps to an array of classification results, and each result object includes a `label` string and a `score` number. ```json { "tiers": { "tier1": [ { "label": "Technology", "score": 0.98 } ] } } ``` ## About ## What it does Unified Classification predicts labels across one or more tiers from a URL, text, title, domain, or keywords. Send the content you want classified and get back scored label candidates for each requested tier. Use Unified Classification when you need to route articles, sort product pages, organize support content, or apply a taxonomy consistently across a large dataset. You can ask for the top predictions overall with `top_k`, or narrow the request by passing specific `tiers` such as `tier1` and `tier2`. The response returns a `tiers` object. Each tier maps to an array of label objects, and each object includes a `label` and a numeric `score`. That makes it easy to rank results, choose the best match, or display multiple classification options in your own app. This API is a fit for content tagging, category assignment, and automated triage where you need structured classification results from a single request. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/classify-unified * * * --- title: IAB Tier 3 Content Classification API slug: classify-iab-tier-3 url: https://apyhub.com/dosvak/service/classify-iab-tier-3 provider: Dosvak LLC categories: [Artificial Intelligence] tags: [iab-classification, content-classification, taxonomy, ad-targeting, ml-classification] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # IAB Tier 3 Content Classification API Classify a URL, text, title, domain, or keywords into IAB Tier 3 labels. Returns the tier plus ranked predictions with scores for content tagging. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/classify-iab-tier-3` | What it does Predicts IAB Tier 3 categories from the input content signals you provide. It accepts… | 10 | ## Endpoint reference ### Predict IAB Tier 3 categories `POST https://api.eu.apyhub.com/dosvak/classify-iab-tier-3` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string | no | | | `text` | body | string | no | | | `title` | body | string | no | | | `top_k` | body | integer | no | Default: `3`. | | `domain` | body | string | no | | | `keywords` | body | string | no | | #### Quickstart Classify some text or a URL into IAB Tier 3 categories using the minimum required JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/classify-iab-tier-3" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"A new smartwatch with fitness tracking features","top_k":3}' ``` #### What you'll get back Returns a JSON object with a `tier` string and a `predictions` array of objects. Each prediction includes a `label` string and a `score` number. ```json { "tier": "IAB Tier 3", "predictions": [ { "label": "Wearable Technology", "score": 0.97 } ] } ``` ## About ## What it does IAB Category Classifier predicts IAB Tier 3 categories from a URL, page text, title, domain, or keywords. Send one or more of those signals along with an optional `top_k` value, and it returns the detected `tier` plus a ranked `predictions` array with each label and score. Use it when you need to map articles, landing pages, or feed items into an IAB taxonomy for ad targeting, content routing, or reporting. If you only have a headline and a short snippet, you can classify that too; if you have the full page text or URL, the classifier can use that context as well. The response is compact and easy to consume: `tier` tells you which IAB level was predicted, and `predictions` gives you the most likely category labels in descending order. Set `top_k` from 1 to 20 to control how many matches you receive. IAB Category Classifier fits workflows that need consistent content tagging without maintaining a custom taxonomy lookup table. It is designed for batch enrichment and real-time classification alike. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/classify-iab-tier-3 * * * --- title: IAB Tier 2 Content Classification API slug: classify-iab-tier-2 url: https://apyhub.com/dosvak/service/classify-iab-tier-2 provider: Dosvak LLC categories: [Artificial Intelligence, Marketing] tags: [iab-classification, content-classification, ad-taxonomy, text-classification, url-classification] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # IAB Tier 2 Content Classification API Classify URLs, titles, text, domains, or keywords into IAB Tier 2 labels. Returns ranked predictions with scores for ad taxonomy and routing. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/classify-iab-tier-2` | What it does Predicts IAB Tier 2 categories for the provided content signals and returns a JSON obj… | 10 | ## Endpoint reference ### Predict IAB Tier 2 categories `POST https://api.eu.apyhub.com/dosvak/classify-iab-tier-2` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string | no | | | `text` | body | string | no | | | `title` | body | string | no | | | `top_k` | body | integer | no | Default: `3`. | | `domain` | body | string | no | | | `keywords` | body | string | no | | #### Quickstart Classify text, a URL, or both into IAB Tier 2 categories with the default top-k result count. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/classify-iab-tier-2" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "text": "Latest updates on electric vehicles and battery technology", "top_k": 3 }' ``` #### What you'll get back Returns a JSON object with a `tier` string and a `predictions` array. Each item in `predictions` is an object with a `label` string and a `score` number. ```json { "tier": "IAB Tier 2", "predictions": [ { "label": "Electric Vehicles", "score": 0.98 }, { "label": "Battery Technology", "score": 0.91 } ] } ``` ## About ## What it does IAB Category Classifier predicts IAB Tier 2 topic labels from a URL, page text, title, domain, or keywords. Send one or more of those inputs, and you get a ranked list of category predictions back. Use the `top_k` field to control how many predictions you receive, from 1 to 20. The response includes the detected `tier` and a `predictions` array, where each prediction contains a `label` and a `score`. That makes it straightforward to route content into ad categories, segment articles, or attach taxonomy labels in a CMS or analytics pipeline. This is a good fit when you need to classify web pages, editorial content, or marketing copy into a standard ad taxonomy without hand-tagging every item. For example, you can score inbound URLs before storing them, or classify text snippets as part of a content moderation or campaign workflow. The service accepts nullable `url`, `text`, `title`, `domain`, and `keywords` fields, so you can send whatever context you have and let the model predict from it. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/classify-iab-tier-2 * * * --- title: IAB Tier 1 Content Classification API slug: classify-iab-tier-1 url: https://apyhub.com/dosvak/service/classify-iab-tier-1 provider: Dosvak LLC categories: [Artificial Intelligence, Marketing, SEO] tags: [iab-classification, content-classification, ad-targeting, taxonomy, publisher-data] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # IAB Tier 1 Content Classification API Predict Tier 1 IAB categories from a URL, text, title, domain, or keywords. Returns ranked labels with scores for classification and ad targeting. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/classify-iab-tier-1` | What it does Predicts IAB Tier 1 categories for the supplied content signals and returns the predic… | 10 | ## Endpoint reference ### Predict IAB Tier 1 categories `POST https://api.eu.apyhub.com/dosvak/classify-iab-tier-1` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string | no | | | `text` | body | string | no | | | `title` | body | string | no | | | `top_k` | body | integer | no | Default: `3`. | | `domain` | body | string | no | | | `keywords` | body | string | no | | #### Quickstart Classify a piece of content into an IAB tier 1 prediction using the required text, URL, or related metadata fields. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/classify-iab-tier-1" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"Latest football match highlights and league analysis"}' ``` #### What you'll get back Returns a JSON object with a `tier` string and a `predictions` array of objects. Each prediction object includes a `label` string and a `score` number. ```json { "tier": "Sports", "predictions": [ { "label": "Sports", "score": 0.98 } ] } ``` ## About ## What it does IAB Category Classifier predicts Tier 1 IAB categories for web content. Send a URL, text, title, domain, or keywords, and get back a tier label plus a ranked list of category predictions with scores. Use it when you need to classify articles, landing pages, or publisher inventory into a standard advertising taxonomy. The `top_k` field lets you control how many predictions you want returned, from 1 to 20, so you can keep the output focused on the best matches or inspect a broader set of candidates. The response is simple to integrate: `tier` tells you the tier being predicted, and `predictions` is an array of `{ label, score }` objects. That makes it easy to route content, power ad targeting rules, organise analytics, or add taxonomy labels during ingestion without building your own classifier. IAB Category Classifier is a good fit for content pipelines that need fast, repeatable category assignment from lightweight metadata or full page text. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/classify-iab-tier-1 * * * --- title: Basic Language Detection API slug: basic-detect-language url: https://apyhub.com/dosvak/service/basic-detect-language provider: Dosvak LLC categories: [Data Validation] tags: [language-detection, nlp, text-classification, multilingual, content-analysis] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 10 --- # Basic Language Detection API Detect the language of a text string with a single lightweight call. Returns the detected language for routing, tagging, and localization work. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/basic-detect-language` | What it does Returns a JSON array of supported language objects for the requested target. Each arra… | 10 | | POST | `https://api.eu.apyhub.com/dosvak/basic-detect-language` | What it does Detects the language for the submitted text in q and returns the detection result as a… | 10 | ## Endpoint reference ### List Supported Languages `GET https://api.eu.apyhub.com/dosvak/basic-detect-language` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `target` | query | string | no | | #### Quickstart Fetch the list of supported languages for a target by passing it as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/basic-detect-language?target=en" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON array of objects. Each object includes a `code` string and a `name` string, describing one supported language; additional properties may also be present. ```json [ { "code": "en", "name": "English" } ] ``` ### Detect language for text `POST https://api.eu.apyhub.com/dosvak/basic-detect-language` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `q` | body | any | yes | | #### Quickstart Detect the language of a piece of text by sending it as `q` in the JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/basic-detect-language" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"q":"Hello, how are you today?"}' ``` #### What you'll get back Returns a JSON array. Each item is an object with a `language` string and a `confidence` number. Some responses may be a nested array of those same objects, as allowed by the schema. ```json [ { "language": "en", "confidence": 0.99 } ] ``` ## About ## What it does Language Detection identifies the language of text you send in `q` and returns the detected `language` with a `confidence` score. It works with a single string or an array of strings, so you can classify one snippet or batch multiple texts in one request. Use Language Detection when you need to route incoming support messages, auto-select translation targets, or sort multilingual content before downstream processing. The response stays compact: each result includes only the detected language label and its confidence value. Send raw text in `q` and read back the language prediction for each item. If you pass an array, the response is shaped as an array of result arrays, matching the input batch structure. This is a fit for apps that ingest user-generated content, analytics pipelines that need language grouping, and localization workflows that need a quick language check before translation or moderation. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/basic-detect-language * * * --- title: Chat Completion Generation API slug: chat-completions url: https://apyhub.com/dosvak/service/chat-completions provider: Dosvak LLC categories: [Artificial Intelligence, Smart Generation] tags: [chat-completions, llm, text-generation, conversational-ai, openai-compatible] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Chat Completion Generation API Send messages and receive a model-generated reply with usage, timestamps, and choices. Built for chat apps, assistants, and task-oriented flows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/chat-completions` | What it does Sends a chat-completions request using an OpenAI-style message array and returns a JSO… | 100 | ## Endpoint reference ### OpenAI-style chat completions `POST https://api.eu.apyhub.com/dosvak/chat-completions` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `model` | body | string | no | Default: `Qwen/Qwen3-0.6B`. | | `top_p` | body | number | no | | | `stream` | body | boolean | no | Default: `false`. | | `messages` | body | array of object | yes | | | `messages[].role` | body | string | yes | One of: system, user, assistant, tool. | | `messages[].content` | body | string | yes | | | `max_tokens` | body | integer | no | Default: `256`. | | `temperature` | body | number | no | Default: `0.7`. | #### Quickstart Send a single chat-completions request with one user message. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/chat-completions" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "messages": [ { "role": "user", "content": "Hello!" } ] }' ``` #### What you'll get back Returns a JSON object with fields like `id`, `model`, `object`, `created`, `usage`, and `choices`. The `choices` array contains the assistant message, including `message.role` and `message.content`. ```json { "id": "chatcmpl-123", "model": "Qwen/Qwen3-0.6B", "object": "chat.completion", "created": 1710000000, "usage": { "prompt_tokens": 12, "completion_tokens": 24, "total_tokens": 36 }, "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Hello!" }, "finish_reason": "stop" } ] } ``` ## About ## What it does Chat Completions lets you send a list of messages and get a model-generated assistant reply back in the same OpenAI-style format. It is built for conversational applications that need a structured response shape and familiar parameters like `model`, `temperature`, `top_p`, `max_tokens`, and `stream`. Send one or more messages with a `role` and `content`, and the service returns a completion object with an `id`, `model`, `created` timestamp, `usage` counts, and a `choices` array. Each choice includes the generated message with its role and content, plus a `finish_reason` so you can handle truncation or completion states in your client logic. Use Chat Completions when you need to add AI chat to support workflows, internal assistants, content drafting, or task-oriented agents. The response format is predictable, which makes it easier to log, store, and render in applications that already follow chat-style request and response patterns. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/chat-completions * * * --- title: Extract Domain Insights API slug: build-domain-profile url: https://apyhub.com/dosvak/service/build-domain-profile provider: Dosvak LLC categories: [Artificial Intelligence, Marketing, SEO] tags: [domain-analysis, website-profile, keyword-extraction, site-classification, seo] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Extract Domain Insights API Analyze a domain or URL and get a structured site profile with classification and keywords. Built for enrichment, SEO research, and lead scoring. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/build-domain-profile` | What it does Builds a complete profile for a target domain or URL by analyzing the value you provid… | 10 | ## Endpoint reference ### Build complete domain profile `POST https://api.eu.apyhub.com/dosvak/build-domain-profile` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `target` | body | string | yes | URL or domain to analyze. Example: `msn.com`. | | `classify_top_k` | body | integer | no | Default: `3`. | | `top_k_keywords` | body | integer | no | Default: `10`. | #### Quickstart Analyze a domain by sending the required `target` value in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/build-domain-profile" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "target": "msn.com" }' ``` #### What you'll get back Returns a JSON object with no fixed top-level fields declared in the schema; the response may include analysis data specific to the domain. ```json { "target": "msn.com", "normalized": { "url": "https://msn.com", "domain": "msn.com" }, "snapshot": { "title": "Example Domain", "description": "Illustrative example site.", "canonical_url": "https://msn.com/", "h1_count": 1 }, "image": { "preview_url": "https://screens.front-page.com/msn-com--.jpeg" }, "analysis": { "performance": { "status_code": 200, "response_time_ms": 154.3, "score": 88 }, "seo": { "keyword_count": 2, "has_canonical": true, "score": 92 } }, "lookups": { "pagerank": { "found": true, "result": { "pr_score_10_bucket": 7 } }, "keyword_extract": { "success": true, "data": { "keywords": [{ "keyword": "example", "score": 0.98 }] } } }, "classification": { "result": { "tiers": { "tier1": { "top_label": "Reference", "top_score": 0.87 } } } }, "meta": { "request_id": "0aadf853-68a9-4380-9728-6e0af6b1ca51", "fetched_status": 200 } } ``` ## About ## What it does Domain Profile Builder analyzes a target domain or URL and returns a complete profile for that site. Send `target`, and you can optionally set `classify_top_k` to control how many top classifications are returned and `top_k_keywords` to control keyword depth. Use it when you need a quick, structured read on a website before enrichment, lead scoring, competitive research, or SEO triage. The response is an open-ended JSON object, so it can include the profile data your workflow needs without forcing a fixed document shape. For example, you can feed in `msn.com` to identify what kind of site it is and extract the most relevant keywords for downstream analysis. Domain Profile Builder is a good fit for pipelines that need to inspect many domains, compare them consistently, or attach site-level context to other data. Because the output schema is intentionally flexible, keep your integration focused on the fields your workflow actually uses and treat the response as a structured profile payload. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/build-domain-profile * * * --- title: Phone Number Formatter API slug: phone-number-format url: https://apyhub.com/dosvak/service/phone-number-format provider: Dosvak LLC categories: [Data Validation, Developer Tools, Standard Data] tags: [phone-number, formatting, normalization, validation, e164] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Phone Number Formatter API Parse a phone number into E.164, international, and national formats. Returns validity plus country and region details for storage and display. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/phone-number-format` | What it does Parses a phone number and returns its formatted representations, including E.164, inte… | 10 | ## Endpoint reference ### Parse and format a phone number into E.164, international, and national formats `GET https://api.eu.apyhub.com/dosvak/phone-number-format` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `number` | query | string | yes | | | `country` | query | string | no | Default: `US`. | #### Quickstart Look up the formatting details for a phone number by sending the required `number` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/phone-number-format?number=+12025550123" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields: `e164` (string), `input` (string), `valid` (boolean), `region` (string), `national` (string), `country_code` (integer), and `international` (string). ```json { "e164": "+12025550123", "input": "202-555-0123", "valid": true, "region": "Washington, D.C.", "national": "(202) 555-0123", "country_code": 1, "international": "+1 202-555-0123" } ``` ## About ## What it does Phone Number Formatter parses a phone number and returns it in common formats you can store, display, or validate against. Send a `number` and optionally a `country` code, and get back the parsed result with `e164`, `international`, `national`, `valid`, `region`, `country_code`, and the original `input`. Use it when you need to normalise user-entered numbers before saving them to a database, comparing them across systems, or preparing them for SMS and calling workflows. The `country` parameter defaults to `US`, which helps when the input is missing an explicit international prefix and you still need a consistent parse. The response is straightforward: `valid` tells you whether the number can be interpreted, while the format fields give you the canonical versions for downstream systems. `e164` is useful for transport and storage, `national` is better for local presentation, and `international` gives you a human-readable cross-border format. Phone Number Formatter fits into signup forms, contact import tools, CRM pipelines, and any workflow where phone numbers arrive in different shapes and need to be standardised before use. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/phone-number-format * * * --- title: Email Deliverability Score API slug: email-deliverability-score url: https://apyhub.com/dosvak/service/email-deliverability-score provider: Dosvak LLC categories: [Communications, Data Validation, Marketing] tags: [email-validation, deliverability, mx-check, disposable-email, syntax-check] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Email Deliverability Score API Check an email for syntax, MX records, and disposable domains. Returns a score, quality level, and boolean checks to filter bad addresses early. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/email-deliverability-score` | What it does Checks a single email address and returns a combined deliverability score based on syn… | 10 | ## Endpoint reference ### Combined deliverability score from syntax, MX, and disposable checks `GET https://api.eu.apyhub.com/dosvak/email-deliverability-score` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `email` | query | string | yes | | #### Quickstart Check an email address’s deliverability score by passing the email as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/email-deliverability-score?email=test@example.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields: `max` (integer), `email` (string), `level` (string: `low`, `medium`, or `high`), `score` (integer from 0 to 3), `has_mx` (boolean), `disposable` (boolean), and `valid_syntax` (boolean). ```json { "max": 3, "email": "test@example.com", "level": "high", "score": 3, "has_mx": true, "disposable": false, "valid_syntax": true } ``` ## About ## What it does Email Deliverability Score checks an email address for three common deliverability signals: syntax validity, MX availability, and whether the domain is disposable. Send an `email` string and get back a compact result you can use to decide whether an address is worth storing, sending to, or asking the user to correct. The response includes the original `email`, a numeric `score` from 0 to 3, the corresponding `level` (`low`, `medium`, or `high`), and `max` for the scale ceiling. It also returns boolean flags for `valid_syntax`, `has_mx`, and `disposable`, so you can inspect the specific reasons behind the score instead of relying on a single label. Use Email Deliverability Score in signup forms, lead capture flows, CRM hygiene jobs, and onboarding pipelines where early email checks reduce bounce risk and bad data. The output is small and direct, which makes it easy to gate account creation, flag suspicious addresses for review, or route questionable emails into a confirmation step. If you only need a fast, structured check of an address before sending mail or creating a user record, this endpoint gives you the key signals without extra parsing. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/email-deliverability-score * * * --- title: Disposable Email Checker API slug: detect-disposable-email url: https://apyhub.com/dosvak/service/detect-disposable-email provider: Dosvak LLC categories: [Data Validation, Marketing, "Security & Privacy"] tags: [email-validation, disposable-email, throwaway-email, signup-fraud, lead-quality] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Disposable Email Checker API Check whether an email uses a known disposable domain. Returns the email, domain, and a disposable boolean for signup gating and fraud filtering. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/detect-disposable-email` | What it does Checks whether the provided email address belongs to a known disposable domain and ret… | 10 | ## Endpoint reference ### Detect whether an email address uses a known disposable domain `GET https://api.eu.apyhub.com/dosvak/detect-disposable-email` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `email` | query | string | yes | | #### Quickstart Check whether a single email address is disposable by sending it as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/detect-disposable-email?email=test@example.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with three top-level fields: `email` is the email address checked, `domain` is its domain, and `disposable` is a boolean indicating whether the email is disposable. ```json { "email": "test@example.com", "domain": "example.com", "disposable": false } ``` ## About ## What it does Disposable Email Checker lets you detect whether an email address belongs to a known disposable domain. Send an `email` value and get back the normalized `email`, the `domain`, and a boolean `disposable` flag. Use it when you need to reduce throwaway signups, filter low-quality leads, or add an extra trust check during account creation. The response is intentionally small and direct, so you can make a yes/no decision without parsing extra metadata. Because the endpoint works at the domain level, it fits common validation flows where you already have an email address and want to know whether the domain is on a disposable list. If `disposable` is `true`, you can block registration, route the user through additional verification, or mark the record for review. Disposable Email Checker is a good fit for signup forms, onboarding flows, and lead capture pipelines where disposable addresses create noise or abuse. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/detect-disposable-email * * * --- title: Email MX Lookup API slug: check-email-mx url: https://apyhub.com/dosvak/service/check-email-mx provider: Dosvak LLC categories: [Communications, Data Validation] tags: [email-validation, mx-records, dns-lookup, deliverability, domain-check] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Email MX Lookup API Check whether an email domain has valid MX records. Returns the email, domain, has_mx flag, and record list for deliverability and list hygiene. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/check-email-mx` | What it does Looks up the MX records for the domain extracted from the provided email address and r… | 10 | ## Endpoint reference ### Look up MX records to confirm a domain can receive email `GET https://api.eu.apyhub.com/dosvak/check-email-mx` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `email` | query | string | yes | | #### Quickstart Check whether a domain’s MX records exist by passing the email address as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/check-email-mx?email=alice@example.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields: `email` (`string`), `domain` (`string`), `has_mx` (`boolean`), and `mx_records` (`array` of arrays). `has_mx` indicates whether MX records were found for the email’s domain. ```json { "email": "alice@example.com", "domain": "example.com", "has_mx": true, "mx_records": [["10", "mx1.example.com"], ["20", "mx2.example.com"]] } ``` ## About ## What it does Email MX Lookup checks whether an email domain has MX records and returns the DNS records it finds. Send an `email` query value, and get back the original `email`, the extracted `domain`, a boolean `has_mx`, and the `mx_records` array. Use it when you need to confirm that a domain is configured to receive mail before you send a signup email, invite, password reset, or lead outreach message. It gives you a lightweight way to screen obviously undeliverable addresses and avoid wasting sends on domains without mail exchange setup. The response is intentionally simple: you get the domain-level mail routing result, not mailbox-level verification. That makes Email MX Lookup useful as an early validation step in signup forms, contact workflows, CRM hygiene jobs, and email list preprocessing. If your app already collects email addresses, this endpoint fits into a validation pipeline alongside syntax and domain checks. It answers one specific question clearly: can this domain receive email? ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/check-email-mx * * * --- title: Email Syntax Validator API slug: validate-email-syntax url: https://apyhub.com/dosvak/service/validate-email-syntax provider: Dosvak LLC categories: [Communications, Developer Tools] tags: [email-validation, syntax-check, data-validation, address-validation, signup-validation] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Email Syntax Validator API Validate an email address by syntax alone and get the local part, domain, and a valid flag. Built for fast format checks before signup. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/validate-email-syntax` | What it does Validates the syntax of an email address without performing any DNS lookup. It returns… | 10 | ## Endpoint reference ### Validate email address syntax (no DNS, instant) `GET https://api.eu.apyhub.com/dosvak/validate-email-syntax` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `email` | query | string | yes | | #### Quickstart Check whether an email address is syntactically valid by sending it as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/validate-email-syntax?email=jane.doe@example.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields: `email` (`string`), `local` (`string`), `valid` (`boolean`), and `domain` (`string`). ```json { "email": "jane.doe@example.com", "local": "jane.doe", "valid": true, "domain": "example.com" } ``` ## About ## What it does Email Syntax Validator checks whether an email address is valid at the syntax level. Send an `email` string and get back a response with the original `email`, the parsed `local` part, the `domain`, and a boolean `valid` flag. Use it when you need fast client-side or server-side format checks before you store an address, queue a signup flow, or pass data to a downstream messaging system. Because this endpoint validates syntax only, it does not perform DNS or mailbox verification, so it stays instant and predictable for high-volume validation steps. The response is simple to consume: if `valid` is true, the address matches email formatting rules; if it is false, you can reject it or prompt the user to correct the input. The `local` and `domain` fields are useful when you want to inspect or log the parts of the address separately. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/validate-email-syntax * * * --- title: Phone Carrier Lookup API slug: phone-carrier-lookup url: https://apyhub.com/dosvak/service/phone-carrier-lookup provider: Dosvak LLC categories: [Data Validation, Geolocation] tags: [phone-lookup, carrier-lookup, phone-validation, number-metadata, geolocation] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Phone Carrier Lookup API Phone number lookup API: send a number, get back the carrier, geographic region, time zones, and number type as JSON. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/phone-carrier-lookup` | What it does Looks up details for a phone number and returns a JSON object containing the number, i… | 10 | ## Endpoint reference ### Look up carrier name, geographic region, and timezones for a phone number `GET https://api.eu.apyhub.com/dosvak/phone-carrier-lookup` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `number` | query | string | yes | | | `country` | query | string | no | Default: `US`. | #### Quickstart Look up carrier details for a phone number by passing the required `number` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/phone-carrier-lookup?number=%2B14155552671" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields: `number` (`string`), `region` (`string` or `null`), `carrier` (`string` or `null`), `timezones` (`array` of `string`), and `number_type` (`string`). ```json { "number": "+14155552671", "region": "California", "carrier": "AT&T", "timezones": ["America/Los_Angeles"], "number_type": "mobile" } ``` ## About ## What it does The phone number lookup API returns what is known about a phone number: its carrier, geographic region, time zones, and number type. Send the number in the `number` query parameter and the response comes back as JSON. One optional parameter handles ambiguous input. Set `country` when a number arrives in national format and you need it interpreted for a specific country. It defaults to US. The response contains the normalized `number`, plus `carrier`, `region`, `timezones` and `number_type`. Fields the service can resolve are filled in, and the rest come back as null, so treat them as optional in your code. Support teams use it to route calls and messages by network. Growth teams run carrier lookup across contact lists before a campaign. Scheduling tools read `timezones` to pick a sending window, and signup flows read `number_type` to separate mobile numbers from landline and VoIP. The phone number lookup API describes the number itself. To confirm a number is well formed before you look it up, run the [Phone Validation API](https://apyhub.com/creightonnick0/service/validate-phone-number) first and pass the E.164 result here. It pairs with the [IANA Timezone API](https://apyhub.com/dosvak/service/timezone-list) when you need the full timezone list to match against, and with the [All-in-One Verification API](https://apyhub.com/quadlem/service/verify-all-in-one) when a phone number is one signal in a wider fraud check. All three are callable by AI agents through ApyHub MCP. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/phone-carrier-lookup * * * --- title: Generate UUID API slug: uuid url: https://apyhub.com/dosvak/service/uuid provider: Dosvak LLC categories: [Developer Tools, "Security & Privacy"] tags: [uuid, identifier-generation, developer-tools, random-id, unique-ids] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Generate UUID API Generate version 1 or version 4 UUIDs with a single GET request. Returns the UUID string and version for database keys, tests, and services. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/uuid` | What it does Generates a UUID and returns it as a JSON object with the generated uuid string and it… | 10 | ## Endpoint reference ### Generate a UUID v1 or v4 `GET https://api.eu.apyhub.com/dosvak/uuid` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `version` | query | integer | no | One of: 1, 4. Default: `4`. | #### Quickstart Get a UUID in the default version by calling the endpoint with the `version` query parameter omitted. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/uuid" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `uuid` as a string and `version` as an integer. ```json { "uuid": "550e8400-e29b-41d4-a716-446655440000", "version": 4 } ``` ## About ## What it does UUID Generator creates version 1 or version 4 UUIDs on demand. Send an optional `version` query parameter with `1` or `4`, and get back a response containing the generated `uuid` string and the `version` used. Use it when you need unique identifiers for database rows, distributed systems, API resources, test fixtures, or temporary object keys. Version 4 is the default, so you can generate random UUIDs without sending any input. If you need time-based UUIDs for systems that rely on ordering or traceability, request version 1 instead. UUID Generator keeps the contract simple: one GET endpoint, one optional parameter, and a minimal JSON response. That makes it easy to drop into backend services, scripts, and internal tooling where you need standards-based identifiers without pulling in extra libraries. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/uuid * * * --- title: Generate Fake Company Info API slug: fake-company url: https://apyhub.com/dosvak/service/fake-company provider: Dosvak LLC categories: [Smart Generation] tags: [fake-data, synthetic-data, company-profiles, test-data, sample-data] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Generate Fake Company Info API Generate fake company records with name, email, website, phone, and industry. Built for test data, demos, and seeded development environments. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/fake-company` | What it does Generates synthetic company profiles for testing, demos, and seed data. Use the count… | 10 | ## Endpoint reference ### Generate fake company profiles with name, email, website, phone, address, and industry `GET https://api.eu.apyhub.com/dosvak/fake-company` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `count` | query | integer | no | Default: `1`. | #### Quickstart Request one or more fake company profiles. `count` is optional and defaults to `1`. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/fake-company?count=1" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back ```json { "count": 1, "data": [ { "name": "Mcdaniel LLC", "email": "sarah07@zamora.com", "website": "https://macdonald-long.biz/", "phone": "6763117286", "address": "7820 Warren Lake Suite 810, Calebview, MI 70148", "industry": "harness next-generation networks" } ] } ``` ## About ## What it does Fake Company Generator creates synthetic company profiles for testing and demos. Send a `count` query value, and it returns that many fake records with company name, email, website, phone, address, and industry fields. Use it when you need realistic-looking business data without exposing real customer or prospect information. It fits onboarding flows, UI prototypes, seed data for local development, and QA environments that need varied company records at scale. The service accepts a single optional `count` parameter, with a default of 1 and a maximum of 50. That makes it easy to request one record for a quick test or a batch of records for populating tables, fixtures, or import workflows. Fake Company Generator is useful anywhere you need structured company data that looks consistent enough for product work, but does not need to map to a real business. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/fake-company * * * --- title: Generate Fake Person Info API slug: fake-person url: https://apyhub.com/dosvak/service/fake-person provider: Dosvak LLC categories: [Smart Generation] tags: [fake-data, synthetic-profiles, test-data, user-generation, sample-records] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Generate Fake Person Info API Generate 1 to 50 fake person profiles with names, contact details, addresses, usernames, and dates of birth for testing and demos. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/fake-person` | What it does Generates synthetic person profiles for testing and development, and returns them toge… | 10 | ## Endpoint reference ### Generate fake person profiles with name, email, phone, address, username, and DOB `GET https://api.eu.apyhub.com/dosvak/fake-person` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `count` | query | integer | no | Default: `1`. | #### Quickstart Fetch a small list of fake people by setting the optional `count` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/fake-person?count=1" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back A JSON object holding `count` (how many records were generated) and `data` (the records themselves). ```json { "count": 1, "data": [ { "name": "Kathryn Hood", "email": "marshallandrew@example.org", "phone": "(434)534-7486", "address": "3650 Richard Prairie, Port Angelafort, OK 94350", "username": "garrettthomas", "dob": "1976-03-04" } ] } ``` ## About ## What it does Fake Person Generator creates synthetic person profiles for testing and development. Send an optional `count` query parameter to request between 1 and 50 profiles, and get back a response with `data` plus the total `count` returned. Use it when you need realistic-looking sample records for forms, onboarding flows, CRM demos, or validation tests without using real personal data. The generated profiles include common identity fields such as name, email, phone, address, username, and date of birth, making them useful for populating mock databases or preview environments. Because the response is an array inside `data`, you can loop over the results directly in your test harness or seed script. The simple contract also makes it easy to swap into existing fixtures where you just need a batch of person-shaped objects at once. If you need synthetic user data for UI development, bulk demos, or QA scenarios, Fake Person Generator gives you a lightweight way to produce it on demand. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/fake-person * * * --- title: Generate LoremIpsum API slug: lorem-ipsum url: https://apyhub.com/dosvak/service/lorem-ipsum provider: Dosvak LLC categories: [Smart Generation] tags: [lorem-ipsum, placeholder-text, content-generation, mockup-content, wireframe] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Generate LoremIpsum API Generate placeholder text with configurable paragraph count and sentences per paragraph. Returns text and paragraphs for mockups and test content. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/lorem-ipsum` | What it does Generates lorem ipsum placeholder content as plain text or as an array of paragraphs,… | 10 | ## Endpoint reference ### Generate lorem ipsum placeholder paragraphs `GET https://api.eu.apyhub.com/dosvak/lorem-ipsum` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `paragraphs` | query | integer | no | Default: `1`. | | `sentences_per` | query | integer | no | Default: `5`. | #### Quickstart Fetch lorem ipsum text with the default paragraph and sentence settings. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/lorem-ipsum?paragraphs=1&sentences_per=5" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `text` string and a `paragraphs` array of strings. ```json { "text": "Lorem ipsum dolor sit amet...", "paragraphs": [ "Lorem ipsum dolor sit amet..." ] } ``` ## About ## What it does Lorem Ipsum Generator creates placeholder text for layouts, mockups, and content prototypes. Send the number of paragraphs you want, along with how many sentences to include in each paragraph, and get back generated filler text. Use it when you need realistic-looking copy without distracting from design work. The response includes a `text` string and a `paragraphs` array of strings, so you can drop the output directly into a page preview, CMS fixture, or wireframe tool. The request supports `paragraphs` from 1 to 10 and `sentences_per` from 1 to 20, with defaults of 1 paragraph and 5 sentences per paragraph. That makes it useful for everything from a short hero section placeholder to longer multi-block page drafts. If you are building a UI, generating test content, or filling empty states during development, Lorem Ipsum Generator gives you predictable placeholder copy in a simple GET request. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/lorem-ipsum * * * --- title: Decrypt Text API slug: decrypt url: https://apyhub.com/dosvak/service/decrypt provider: Dosvak LLC categories: ["Security & Privacy"] tags: [encryption, decryption, fernet, cryptography, security] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Decrypt Text API Decrypt Fernet ciphertext with a matching key and get the plaintext back. Useful for backend workflows, debugging, and verifying payloads. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/decrypt` | What it does Decrypts a Fernet AES-256-CBC ciphertext token using the matching key and returns the… | 10 | ## Endpoint reference ### Fernet AES-256-CBC decrypt a ciphertext token with the matching key `POST https://api.eu.apyhub.com/dosvak/decrypt` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `key` | body | string | yes | | | `ciphertext` | body | string | yes | | #### Quickstart Decrypt a ciphertext by sending the `ciphertext` and `key` fields in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/decrypt" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "ciphertext": "gAAAAABqYhB56HPn26kQHX0JDQ-wBwkbIyooeT2mGQVPFUja07Xl8yZdjitK2_iakbUrop_fh0VWrhv-SHHq46AT7QdYo9vN-w==", "key": "9APS3iSbAdIlh0B-sMuKFTLP3Ht36Ja-MYST1-zb_ow=" }' ``` #### What you'll get back Returns a JSON object with a `plaintext` string field containing the decrypted text. ```json { "plaintext": "ApyHub" } ``` ## About ## What it does Fernet Decrypt takes a ciphertext token and the matching key, then returns the decrypted plaintext as a string. Use it when you need to reverse Fernet-encrypted data inside a workflow, test harness, or internal admin tool. Send the `ciphertext` and `key` in the request body; the response includes `plaintext` when decryption succeeds. Fernet Decrypt is a fit for security-sensitive systems that already store encrypted payloads and need a small, direct decryption step without building that logic into every service. It keeps the interface narrow: one request body, one plaintext output. Because the endpoint only returns decrypted text, it works well for backend jobs, debugging encrypted messages, or verifying that a key matches a stored token before handing the result to another process. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/decrypt * * * --- title: Schedule Cron API slug: cron-next url: https://apyhub.com/dosvak/service/cron-next provider: Dosvak LLC categories: [Developer Tools, Standard Data] tags: [cron, scheduling, datetime, developer-tools, job-scheduling] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Schedule Cron API Compute the next fire times for a 5-field cron expression. Returns the original expression plus an array of upcoming timestamps for scheduling UIs. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/cron-next` | What it does Returns the next fire times for a standard 5-field cron expression. You provide the cr… | 10 | ## Endpoint reference ### Return the next N fire times for a standard 5-field cron expression `GET https://api.eu.apyhub.com/dosvak/cron-next` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `count` | query | integer | no | Default: `5`. | | `expression` | query | string | yes | | #### Quickstart Get the next cron times for an expression by passing the expression and count as query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/cron-next?expression=0%20%2A%20%2A%20%2A%20%2A&count=5" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with: - `next` (`array` of `string`): the next scheduled run times - `expression` (`string`): the cron expression that was evaluated ```json { "next": [ "2026-07-23T10:00:00Z", "2026-07-23T11:00:00Z" ], "expression": "0 * * * *" } ``` ## About ## What it does Cron Next Times returns the next scheduled fire times for a standard 5-field cron expression. Send an `expression` query parameter, and optionally `count` to control how many upcoming times you want back. The response includes the original `expression` and a `next` array of timestamp strings. `count` defaults to 5 and can be set from 1 to 20, which makes this useful for previewing schedules before you save them, validating user-entered cron strings, or showing the next run times in an admin UI. Use Cron Next Times when you need to check whether a cron pattern matches the cadence you expect. It is a small, focused utility for scheduling workflows, background jobs, and reminders where the next execution times need to be computed consistently from a cron expression. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/cron-next * * * --- title: Format Date API slug: date-format url: https://apyhub.com/dosvak/service/date-format provider: Dosvak LLC categories: [Developer Tools] tags: [date-formatting, datetime, strftime, timestamp, developer-tools] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Format Date API Format an ISO datetime string with any Python strftime pattern. Returns the input, the format used, and the result for logs, exports, and displays. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/date-format` | What it does Formats an ISO datetime string using a Python strftime pattern. It takes the input dat… | 10 | ## Endpoint reference ### Format an ISO datetime string using a Python strftime pattern `GET https://api.eu.apyhub.com/dosvak/date-format` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `dt` | query | string | yes | | | `fmt` | query | string | no | Default: `%Y-%m-%d %H:%M:%S`. | #### Quickstart Format a date/time by sending the required `dt` value as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/date-format?dt=2024-01-15T13:45:00Z" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with three string fields: `input` for the date/time you sent, `format` for the format used, and `result` for the formatted output. ```json { "input": "2024-01-15T13:45:00Z", "format": "%Y-%m-%d %H:%M:%S", "result": "2024-01-15 13:45:00" } ``` ## About ## What it does Date Formatter takes an ISO datetime string and formats it with a Python `strftime` pattern. Send `dt` in the query string, optionally add `fmt`, and get back the original `input`, the `format` used, and the formatted `result`. Use it when your app needs to present timestamps in a user-facing or integration-specific layout without reimplementing date formatting logic. It is useful for logs, dashboards, exports, emails, and any workflow where the same ISO datetime needs to appear in different local display formats. The API is small and explicit: one datetime in, one formatted string out. If you omit `fmt`, the formatter uses `%Y-%m-%d %H:%M:%S` by default. That makes it easy to normalize date presentation across services while keeping the formatting rule in one place. Because the response includes both the source value and the applied format, you can trace exactly how a timestamp was rendered and use the result directly in downstream systems. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/date-format * * * --- title: Check Spelling API slug: spellcheck url: https://apyhub.com/dosvak/service/spellcheck provider: Dosvak LLC categories: [Data Validation, Developer Tools] tags: [spellcheck, spelling, text-validation, corrections, language-tools] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Check Spelling API Send a word or phrase and get back each misspelled word with a suggested fix. A lightweight GET spell check API for search, forms and live input. Try Free. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/spellcheck` | What it does Detects misspelled words in the provided text and returns suggested corrections. You s… | 10 | ## Endpoint reference ### Detect misspelled words in text and return correction suggestions `GET https://api.eu.apyhub.com/dosvak/spellcheck` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | query | string | yes | | #### Quickstart Check a word or phrase for spelling mistakes by sending it as the `text` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/spellcheck?text=Ths%20is%20a%20smple%20sentence" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with three optional top-level fields: `input` is the original text as a string, `misspelled` is an array of misspelled words, and `corrections` is an object mapping misspelled words to suggested corrections. ```json { "input": "Ths is a smple sentence", "misspelled": ["Ths", "smple"], "corrections": { "Ths": "This", "smple": "simple" } } ``` ## About ## What it does The Check Spelling API is a spell check API that finds the misspelled words in a word, phrase or short text and suggests a correction for each one. It tells you what is wrong and what it should be, and leaves the decision to change the text to you. It is a single GET request: pass the text in the `text` query parameter and the answer comes back straight away. The response has three parts: `input` with the text that was checked, `misspelled` with an array of the words that are wrong, and `corrections`, which maps each wrong word to its suggested fix. Checking `Ths is a smple sentence` returns `["Ths", "smple"]` as misspelled, with `Ths` corrected to `This` and `smple` to `simple`. Because it reports mistakes instead of rewriting the text, it fits anywhere you want to show a suggestion to a person: a "did you mean" prompt on search queries, spelling hints in form fields while the user types, flags on product titles and listings before they are published, and checks on names, tags or keywords in your own data. An empty `misspelled` array is a quick signal that the text is clean. If you want the fully corrected text back in one go, use the [Correct Text Spelling API](https://apyhub.com/dosvak/service/spellcheck-text). For longer text, or to fix grammar as well as spelling, use the [Proofread Text and Grammar Check API](https://apyhub.com/sharpapi/service/proofread-text-grammar-check). You can try it right here in the playground. Start for free with 5 API calls a day, no card required, and check your own text before you commit. The API is also available through [ApyHub MCP](https://apyhub.com/mcp), so AI agents can check spelling directly before they store or send text. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/spellcheck * * * --- title: Generate Simple Barcode API slug: barcode url: https://apyhub.com/dosvak/service/barcode provider: Dosvak LLC categories: [E-commerce Quick Tools, Image Processing] tags: [barcode-generation, barcode-png, code128, ean13, label-printing] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Generate Simple Barcode API Render Code128, EAN-13, EAN-8, ISBN-13, or UPC-A barcodes from a data string. Returns a PNG for labels, inventory, and product workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/barcode` | What it does Renders the supplied data value as a barcode PNG image. You can choose the barcode for… | 10 | ## Endpoint reference ### Render data as a barcode PNG in Code128, EAN-13, EAN-8, ISBN-13, or UPC-A format `GET https://api.eu.apyhub.com/dosvak/barcode` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `data` | query | string | yes | | | `format` | query | string | no | One of: code128, ean13, ean8, isbn13, upca. Default: `code128`. | #### Quickstart Generate a barcode image by sending the required `data` value as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/barcode?data=123456789012&format=code128" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a binary file response (`string` with `format: binary`), which is the generated barcode image. ```text (binary image data) ``` ## About ## What it does Barcode Generator turns a text value into a barcode PNG. Send `data` and choose a `format` of `code128`, `ean13`, `ean8`, `isbn13`, or `upca`; the response is the rendered image as binary output. Use it when you need barcodes for product labels, shipping workflows, inventory systems, or printable asset tags. Because the endpoint returns a PNG, you can store it, stream it to a browser, or place it directly into a document or label template. Barcode Generator is a good fit when your application already knows the code value and just needs a clean, machine-readable image. It supports a default `code128` format for general-purpose encoding, plus common retail and publishing formats for UPC and ISBN use cases. Keep the payload simple: pass the barcode content in `data`, select the symbology that matches your workflow, and use the returned PNG wherever the barcode needs to appear. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/barcode * * * --- title: Generate Password API slug: password-generate url: https://apyhub.com/dosvak/service/password-generate provider: Dosvak LLC categories: [Developer Tools, "Security & Privacy"] tags: [password-generator, random-password, credentials, security, developer-tools] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Generate Password API Generate cryptographically secure passwords with configurable length and optional symbols. Returns the password and its length for signup flows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/password-generate` | What it does Generates a cryptographically secure random password and returns it in a JSON object a… | 10 | ## Endpoint reference ### Generate a cryptographically secure random password of configurable length `GET https://api.eu.apyhub.com/dosvak/password-generate` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `length` | query | integer | no | Default: `16`. | | `symbols` | query | boolean | no | Default: `true`. | #### Quickstart Generate a password with the default length and symbols enabled. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/password-generate?length=16&symbols=true" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `length` integer and a `password` string. `length` is the requested password length, and `password` is the generated password. ```json { "length": 16, "password": "A7!kQ3zP9mR2#tV8" } ``` ## About ## What it does Password Generator creates a cryptographically secure random password from a single GET request. Send a `length` between 8 and 128 and a `symbols` flag to control whether special characters are included. It returns the generated `password` along with the `length` used. That makes it easy to plug into signup flows, account recovery tools, admin dashboards, or internal utilities that need fresh credentials without handling password logic in your own code. Use Password Generator when you need consistent password creation rules across services. You can request shorter passwords for constrained systems or longer ones for higher-entropy defaults, while keeping symbol usage configurable for sites that reject punctuation. The response is simple and direct: a generated string you can present to a user, store temporarily, or hand off to another workflow. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/password-generate * * * --- title: Check Password Strength API slug: password-strength url: https://apyhub.com/dosvak/service/password-strength provider: Dosvak LLC categories: [Data Validation, "Security & Privacy"] tags: [password-strength, password-validation, security, credential-check, account-security] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Check Password Strength API Score a password by length, complexity, and common-password checks. Returns a score, maximum, level, and per-rule results for signup and reset. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/password-strength` | What it does Scores a password based on its length, complexity, and common-password checks. It take… | 10 | ## Endpoint reference ### Score a password on length, complexity, and common-password checks `GET https://api.eu.apyhub.com/dosvak/password-strength` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `password` | query | string | yes | | #### Quickstart Check a password’s strength by sending the required `password` as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/password-strength?password=MySecureP@ssw0rd123" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields: `max` as an integer, `level` as one of `very_weak`, `weak`, `fair`, `strong`, or `very_strong`, `score` as an integer, and `checks` as an object whose properties are booleans. ```json { "max": 0, "level": "strong", "score": 0, "checks": { "length": true } } ``` ## About ## What it does Password Strength Checker scores a password based on length, complexity, and common-password checks. Send a `password` string in the query, and get back a structured assessment with `score`, `max`, `level`, and a `checks` object that flags individual rules as pass or fail. Use it when you need to evaluate passwords at signup, during password resets, or in admin tools that enforce account security policies. The `level` field returns one of `very_weak`, `weak`, `fair`, `strong`, or `very_strong`, so you can map the result directly into UI messages or acceptance logic. `score` and `max` give you a simple numeric grade, while `checks` lets you inspect which validation rules passed. Password Strength Checker is a fit for login flows, customer onboarding, and internal security audits where you need a quick client-side or server-side password quality check without building your own scoring logic. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/password-strength * * * --- title: Convert Timezone API slug: timezone-convert url: https://apyhub.com/dosvak/service/timezone-convert provider: Dosvak LLC categories: [Geolocation, Standard Data] tags: [timezones, datetime-conversion, iana-timezone, timestamp, scheduling] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Convert Timezone API Convert a datetime string between two IANA timezones. Returns the original input and converted result for scheduling and normalization. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/timezone-convert` | What it does Converts the provided datetime string from one IANA timezone to another and returns th… | 10 | ## Endpoint reference ### Convert a datetime string between any two IANA timezones `GET https://api.eu.apyhub.com/dosvak/timezone-convert` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `dt` | query | string | yes | | | `to_tz` | query | string | yes | | | `from_tz` | query | string | yes | | #### Quickstart Convert a date/time from one timezone to another by passing the required query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/timezone-convert?dt=2024-01-15T10:00:00Z&from_tz=UTC&to_tz=America/New_York" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `input`, `to_tz`, `result`, and `from_tz` string fields describing the conversion. ```json { "input": "2024-01-15T10:00:00Z", "to_tz": "America/New_York", "result": "2024-01-15T05:00:00-05:00", "from_tz": "UTC" } ``` ## About ## What it does Timezone Convert converts a datetime string from one IANA timezone to another. Send `dt`, `from_tz`, and `to_tz`, and get back the original input alongside the converted `result` string. Use it when your application needs to display or store the same moment in a different timezone without doing the conversion logic yourself. It fits scheduling tools, calendar workflows, booking systems, and any backend that needs to normalize timestamps across regions. The API accepts only the three query fields defined in the schema, so it stays simple to integrate. `dt` is the datetime string you want to convert, `from_tz` is the source IANA timezone, and `to_tz` is the destination IANA timezone. The response returns `input`, `from_tz`, `to_tz`, and `result` so you can log the conversion or pass it through to the next step in your workflow. If you work with international users, this gives you a lightweight way to keep timestamps consistent across timezones. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/timezone-convert * * * --- title: Convert HEX to RGB/HSL API slug: color-convert url: https://apyhub.com/dosvak/service/color-convert provider: Dosvak LLC categories: [Developer Tools] tags: [color-conversion, hex, rgb, hsl, design-tokens, frontend] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Convert HEX to RGB/HSL API Convert a HEX color into RGB and HSL values in one call. Built for design tools, theming systems, and frontends that need normalized colors. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/color-convert` | What it does Converts a HEX color provided as a query parameter into its RGB and HSL equivalents. T… | 10 | ## Endpoint reference ### Convert a HEX color to its RGB and HSL equivalents `GET https://api.eu.apyhub.com/dosvak/color-convert` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `hex` | query | string | yes | | #### Quickstart Convert a hex color by passing the `hex` value as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/color-convert?hex=%23FF5733" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with optional `hex`, `hsl`, and `rgb` fields describing the converted color. `hsl` is an object with numeric `h`, `l`, and `s` values, and `rgb` is an object with integer `r`, `g`, and `b` values. ```json { "hex": "#FF5733", "hsl": { "h": 14, "l": 60, "s": 100 }, "rgb": { "r": 255, "g": 87, "b": 51 } } ``` ## About ## What it does Color Converter turns a HEX color into RGB and HSL values in a single request. Send a `hex` query string value and get the original `hex` back alongside `rgb` and `hsl` objects. Use it when your app stores colors in one format but your UI, charts, or CSS pipeline needs another. The RGB response includes `r`, `g`, and `b` integers, while the HSL response includes `h`, `s`, and `l` numbers, so you can map a design token directly into whatever rendering system you use. This is useful for design tools, theme builders, and frontend utilities that need to normalize color values before displaying previews or generating palettes. Because the response is structured and small, it is easy to plug into validation, transformation, or formatting workflows. If you need consistent color conversion without writing the math yourself, Color Converter gives you the converted values in a simple, developer-friendly shape. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/color-convert * * * --- title: Timezones List API slug: timezone-list url: https://apyhub.com/dosvak/service/timezone-list provider: Dosvak LLC categories: [Geolocation, Standard Data] tags: [time-zones, iana, timezone-list, reference-data, geolocation] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Timezones List API List every IANA timezone name or filter them by keyword. Returns a timezones array for scheduling, forms, and reference-data lookups. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/timezone-list` | What it does Returns a JSON object containing a timezones string array of IANA timezone names. You… | 10 | ## Endpoint reference ### List all IANA timezone names with optional keyword filter `GET https://api.eu.apyhub.com/dosvak/timezone-list` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `search` | query | string | no | | #### Quickstart Search for time zones by name or list all time zones if you omit the optional query. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/timezone-list?search=London" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `timezones` array of strings — each string is a matching time zone name. ```json { "timezones": ["Europe/London", "Atlantic/Canary"] } ``` ## About ## What it does Time Zone List returns the full set of IANA timezone names, with an optional keyword filter for narrowing the results. Send a `search` query string and get back a `timezones` array of matching timezone identifiers. Use it when you need a dependable source of timezone names for scheduling, user profile settings, region pickers, or validation in forms and admin tools. Because the response is just the timezone list, it fits cleanly into lookup flows where you already know how to present or cache reference data. Time Zone List is useful anywhere you need to avoid hardcoding timezone values or keeping a local copy of the IANA set up to date. Filter by keyword to find the subset you need, or request the full list when populating dropdowns and syncing reference tables. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/timezone-list * * * --- title: Generate Simple QR Code API slug: qr-code url: https://apyhub.com/dosvak/service/qr-code provider: Dosvak LLC categories: [Smart Generation] tags: [qr-code, barcode, image-generation, png, link-sharing] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Generate Simple QR Code API Generate PNG QR codes from text or URLs. Set the image size and get a binary QR response for labels, checkout flows, and print materials. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/qr-code` | What it does Renders the provided text or URL as a QR code PNG image and returns the generated file… | 10 | ## Endpoint reference ### Render any text or URL as a QR code PNG image `GET https://api.eu.apyhub.com/dosvak/qr-code` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `data` | query | string | yes | | | `size` | query | integer | no | Default: `10`. | #### Quickstart Fetch a QR code image for the provided `data` value and requested `size`. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/qr-code?data=hello%20world&size=10" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the generated QR code image. ## About ## What it does QR Code Generator turns text or a URL into a PNG QR code. Send the `data` you want encoded, and you get back a binary image response that you can download, store, or embed in your app. Use `size` to control the output dimensions, from 1 to 40, with a default of 10. That makes it easy to generate compact codes for receipts and labels, or larger ones for posters, packaging, and print materials where scan reliability matters. This is a straightforward fit for systems that need to render QR codes on demand: checkout pages, invitation flows, asset labels, event badges, or internal tools that attach machine-readable links to documents and products. If you already have the destination text or link, QR Code Generator handles the image generation step and returns the PNG directly, without extra formatting or metadata. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/qr-code * * * --- title: Generate Random String API slug: random-string url: https://apyhub.com/dosvak/service/random-string provider: Dosvak LLC categories: [Developer Tools] tags: [random-string, string-generation, test-data, developer-tools, token-generation] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Generate Random String API Generate random strings up to 256 characters in alpha, alphanumeric, numeric, or hex form. Built for test data, tokens, and placeholder IDs. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/random-string` | What it does Generates a random string using the requested length and character set, and returns th… | 10 | ## Endpoint reference ### Generate a random string of specified length and character set `GET https://api.eu.apyhub.com/dosvak/random-string` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `length` | query | integer | no | Default: `16`. | | `charset` | query | string | no | One of: alpha, alphanumeric, numeric, hex. Default: `alphanumeric`. | #### Quickstart Generate a random string with the default settings. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/random-string?length=16&charset=alphanumeric" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `value` as a string, `length` as an integer, and `charset` as a string. ```json { "value": "x7Kp9Lm2Qv4R", "length": 16, "charset": "alphanumeric" } ``` ## About ## What it does Random String Generator creates a random string of a chosen length and character set. Send a `length` from 1 to 256 and a `charset`, and get back a generated `value` along with the `length` and `charset` used. Use it when you need unique tokens for test data, disposable identifiers, fixture values, or placeholder secrets that must follow a specific character pattern. The supported character sets are `alpha`, `alphanumeric`, `numeric`, and `hex`, so you can generate everything from simple alphabetic labels to hexadecimal strings for internal tooling. The response is small and predictable, which makes it easy to plug into scripts, backend jobs, or developer utilities. If you are filling forms, building sample records, or generating temporary values for QA, Random String Generator gives you exactly the format you requested without extra metadata. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/random-string * * * --- title: Generate Random Number API slug: random-number url: https://apyhub.com/dosvak/service/random-number provider: Dosvak LLC categories: [Developer Tools] tags: [random-number, random-integer, number-generation, cryptographic-random, utility] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Generate Random Number API Generate a cryptographically secure integer between a minimum and maximum. The response returns the chosen value and the range used. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/random-number` | What it does Generates a cryptographically secure random integer within the requested range and ret… | 10 | ## Endpoint reference ### Generate a cryptographically secure random integer within a min/max range `GET https://api.eu.apyhub.com/dosvak/random-number` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `max` | query | integer | no | Default: `100`. | | `min` | query | integer | no | Default: `0`. | #### Quickstart Fetch a random number between the default minimum and maximum values. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/random-number?max=100&min=0" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `max`, `min`, and `value` integer fields. `max` and `min` echo the requested range, and `value` is the generated random number. ```json { "max": 100, "min": 0, "value": 42 } ``` ## About ## What it does Random Number Generator returns a cryptographically secure integer between the `min` and `max` query values you send. It is a simple utility for cases where you need a trustworthy random value without building your own generation logic. Send optional `min` and `max` integers to define the range. If you omit them, the defaults are `0` and `100`. The response includes the selected `value` along with the `min` and `max` used for that request, so you can log or verify the range alongside the result. Use it anywhere you need a server-side random integer: selecting a winner, sampling test data, assigning a bucket, or generating a temporary numeric token. Because the value is produced securely, it is a better fit than Math.random-style client logic when the result matters. Random Number Generator keeps the contract small and predictable: one request in, one integer out, with the range reflected back in the response. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/random-number * * * --- title: Generate Fake Address API slug: fake-address url: https://apyhub.com/dosvak/service/fake-address provider: Dosvak LLC categories: [Data Validation, Smart Generation, Standard Data] tags: [fake-addresses, address-generation, test-data, data-seeding, sample-data] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Generate Fake Address API Generate 1 to 50 fake street addresses as plain strings. Built for test data, sample forms, and staging datasets without touching real records. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/fake-address` | What it does Generates fake street addresses and returns them as plain strings in a JSON object. Yo… | 10 | ## Endpoint reference ### Generate fake street addresses as plain strings `GET https://api.eu.apyhub.com/dosvak/fake-address` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `count` | query | integer | no | Default: `1`. | #### Quickstart Fetch a small list of fake addresses by setting the `count` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/fake-address?count=1" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` array of strings and a `count` integer. ```json { "data": ["123 Main St, Springfield"], "count": 1 } ``` ## About ## What it does Fake Address Generator returns plain-string street addresses for testing, demos, and data seeding. Send an optional `count` query parameter and get back a response with `data` and `count`. Use it when you need realistic-looking address values without exposing customer records. It is useful for populating forms, load-testing address fields, or filling sample datasets in staging environments. The endpoint is simple: request between 1 and 50 addresses, and receive an array of generated address strings plus the number returned. Because the output is just strings, you can drop the results into UI mockups, import scripts, or fixtures without extra parsing. Fake Address Generator is a good fit anywhere you need placeholder address data and want to keep real addresses out of development and QA workflows. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/fake-address * * * --- title: Get Current Time API slug: date-now url: https://apyhub.com/dosvak/service/date-now provider: Dosvak LLC categories: [Geolocation, Standard Data] tags: [time, timestamp, date-time, timezone, utc] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Get Current Time API Get the current date and time as ISO and Unix values, with an optional time zone. Useful for scheduling, logging, and timestamp normalisation. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/date-now` | What it does Returns the current date and time for the requested timezone as both an ISO string and… | 10 | ## Endpoint reference ### Current date and time as ISO string and Unix timestamp `GET https://api.eu.apyhub.com/dosvak/date-now` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `tz` | query | string | no | Default: `UTC`. | #### Quickstart Get the current date and time for a timezone by passing the `tz` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/date-now?tz=UTC" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `tz` as a string, `iso` as a string, and `unix` as an integer. ```json { "tz": "UTC", "iso": "2026-07-23T12:34:56.789Z", "unix": 1784808896 } ``` ## About ## What it does Current Time returns the current date and time as an ISO string plus a Unix timestamp. Send an optional `tz` query parameter to get the values for a specific time zone; if you omit it, the service uses `UTC`. Use Current Time when you need a consistent server-side clock in your app, job runner, or integration. It is useful for stamping events, scheduling tasks, comparing timestamps, and normalising time values across services without relying on a client device’s local clock. The response includes `tz`, `iso`, and `unix`. `iso` gives you the current date-time in a standard string format, while `unix` gives you the same moment as an integer timestamp. That makes it easy to store, display, or pass the value into downstream systems that expect either human-readable or machine-friendly time data. If your workflow needs a simple way to read the current time in a known zone, Current Time keeps the response minimal and predictable. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/date-now * * * --- title: Generate Hash API slug: hash url: https://apyhub.com/dosvak/service/hash provider: Dosvak LLC categories: [Developer Tools, "Security & Privacy"] tags: [hashing, md5, sha1, sha256, sha512, security] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Generate Hash API Hash any text string with MD5, SHA1, SHA256, or SHA512. Returns the original input, the algorithm used, and the computed hash for checksums. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/hash` | What it does Computes a hash for the supplied string using the selected algorithm and returns the r… | 10 | ## Endpoint reference ### Hash a string with MD5, SHA1, SHA256, or SHA512 `GET https://api.eu.apyhub.com/dosvak/hash` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | query | string | yes | | | `algorithm` | query | string | no | One of: md5, sha1, sha256, sha512. Default: `sha256`. | #### Quickstart Hash a piece of text with the default SHA-256 algorithm. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/hash?text=hello%20world&algorithm=sha256" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `hash`, `input`, and `algorithm` string fields. `hash` is the computed digest, `input` is the original text, and `algorithm` is the hash algorithm used. ```json { "hash": "b94d27b9934d3e08a52e52d7da7dabfade4c3f7c8f5a6f7f6f8f8e4d7d9b0d6a", "input": "hello world", "algorithm": "sha256" } ``` ## About ## What it does Hash Generator takes a text string and returns its hash using MD5, SHA1, SHA256, or SHA512. Send the `text` query parameter and choose an `algorithm` when you need a predictable digest for integrity checks, fingerprints, or lookup keys. The response includes the original `input`, the selected `algorithm`, and the computed `hash`. That makes it easy to compare values in your own systems or store a stable identifier for a string without keeping the original in plain form. Use Hash Generator when you need to verify that content has not changed, generate cache keys, deduplicate records, or create compact references for user-provided text. It is a simple string-to-digest utility with a fixed set of common hashing algorithms. Because the endpoint works on text input only, it fits lightweight validation and security workflows where you need a deterministic hash and nothing more. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/hash * * * --- title: Encrypt Text API slug: encrypt url: https://apyhub.com/dosvak/service/encrypt provider: Dosvak LLC categories: ["Security & Privacy"] tags: [encryption, fernet, ciphertext, text-encryption, security] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Encrypt Text API Encrypt a text string with Fernet and get back ciphertext, plus the generated key if you omit one. Built for protecting sensitive payloads. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/encrypt` | What it does Encrypts a text string using Fernet and returns the resulting ciphertext. If you do no… | 10 | ## Endpoint reference ### Fernet AES-256-CBC encrypt text; auto-generates a key if not provided `POST https://api.eu.apyhub.com/dosvak/encrypt` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `key` | body | string | no | Base64-url Fernet key. Omit to auto-generate. | | `text` | body | string | yes | | #### Quickstart Encrypt a piece of text with a Fernet key. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/encrypt" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"Hello, world!"}' ``` #### What you'll get back Returns a JSON object with optional `key` and `ciphertext` string fields. `key` is the base64-url Fernet key used for encryption, and `ciphertext` is the encrypted result. ```json { "key": "f7X2k1mQ0v9aZr8c6Yd4eW1uT2s3p4n5", "ciphertext": "gAAAAABlY..." } ``` ## About ## What it does Text Encryption lets you encrypt a text string with Fernet and returns the resulting ciphertext. You send a `text` value, and you can also provide a Base64-url Fernet `key` if you want to control the encryption key yourself. If you omit `key`, the service auto-generates one and includes it in the response alongside the `ciphertext`. That makes it useful when you need to encrypt small payloads for storage, transport, or internal workflows without managing key generation separately. Use Text Encryption when you need to protect secrets, API payloads, tokens, or other sensitive text before writing it to a database, sending it between services, or passing it through a queue. The response is compact and direct: you get the key used and the encrypted output back. It is a focused utility for application-level encryption, not a general file or document encryption workflow. If your input is plain text and your output needs to be ciphertext, this endpoint gives you exactly that. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/encrypt * * * --- title: Describe Cron API slug: cron-describe url: https://apyhub.com/dosvak/service/cron-describe provider: Dosvak LLC categories: [Developer Tools] tags: [cron, schedule-parsing, expression-describer, developer-tools, job-scheduling] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Describe Cron API Break a cron expression into labelled minute, hour, day, month, and weekday fields. Built for schedule previews, cron editors, and readable logs. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/cron-describe` | What it does Describes a cron expression by breaking it into labeled field descriptions. It accepts… | 10 | ## Endpoint reference ### Describe each field of a cron expression by label `GET https://api.eu.apyhub.com/dosvak/cron-describe` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `expression` | query | string | yes | | #### Quickstart Check a cron expression by passing it as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/cron-describe?expression=*/5+*+*+*+*" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with: - `fields` (`object`): a breakdown of the cron expression parts - `hour` (`string`) - `month` (`string`) - `minute` (`string`) - `day_of_week` (`string`) - `day_of_month` (`string`) - `expression` (`string`): the cron expression you sent ```json { "fields": { "hour": "*/5", "month": "*", "minute": "*", "day_of_week": "*", "day_of_month": "*" }, "expression": "*/5 * * * *" } ``` ## About ## What it does Cron Expression Describer breaks a cron expression into labelled fields so you can inspect schedule logic without parsing it yourself. Send an `expression` string and get the same expression back alongside a `fields` object with human-readable values for `minute`, `hour`, `day_of_month`, `month`, and `day_of_week`. Use it when you need to explain a schedule in logs, admin panels, job editors, or support tools. Instead of showing a raw cron string, you can present each field by name and make it easier for developers and operators to verify when a task will run. The response is intentionally small and predictable: a top-level `expression` plus a `fields` object with the five cron components. That makes it useful for validation flows, schedule previews, and any UI where you want to display the meaning of a cron string alongside the original value. If your product accepts user-defined schedules, Cron Expression Describer helps you turn an opaque expression into a readable breakdown before you save or execute it. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/cron-describe * * * --- title: Convert Units API slug: unit-convert url: https://apyhub.com/dosvak/service/unit-convert provider: Dosvak LLC categories: [Developer Tools, Standard Data] tags: [unit-conversion, measurement, calculator, reference-data] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Convert Units API Convert a numeric value from one unit to another using value, from_unit, and to_unit. Returns the original units plus the converted result. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/unit-convert` | What it does Converts a numeric value from one measurement unit to another compatible unit. It take… | 10 | ## Endpoint reference ### Convert a numeric value between compatible measurement units `GET https://api.eu.apyhub.com/dosvak/unit-convert` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `value` | query | number | yes | | | `to_unit` | query | string | yes | | | `from_unit` | query | string | yes | | #### Quickstart Convert a value from one unit to another by sending the required query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/unit-convert?value=100&from_unit=cm&to_unit=m" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `to`, `from`, `value`, and `result` fields. `to` and `from` are the unit names, `value` is the original number, and `result` is the converted number. ```json { "to": "m", "from": "cm", "value": 100, "result": 1 } ``` ## About ## What it does Unit Converter converts a numeric value from one measurement unit to another. Send `value`, `from_unit`, and `to_unit`, and get the converted number back in a structured response. Use it when your application accepts measurements in one unit but needs to store, display, or compare them in another. It fits common workflow needs like converting lengths, weights, volumes, temperatures, or similar compatible units before calculation or presentation. The response includes the original `from` and `to` units, the input `value`, and the converted `result`. That makes it easy to log both sides of the conversion or pass the output into downstream pricing, shipping, engineering, or form-validation logic. Unit Converter is a small utility endpoint for any system that handles user-entered measurements and needs consistent units without adding conversion logic to your codebase. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/unit-convert * * * --- title: Encode and Decode JWT API slug: jwt-encode-decode url: https://apyhub.com/dosvak/service/jwt-encode-decode provider: Dosvak LLC categories: [Developer Tools, "Security & Privacy"] tags: [jwt, token-signing, token-verification, authentication, security, developer-tools] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 10 --- # Encode and Decode JWT API Encode JSON payloads into JWTs and verify existing tokens with a shared secret. Returns a signed token, or validity plus the decoded payload. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/jwt-encode-decode/encode` | What it does Signs a JSON payload into a JWT using the provided secret and returns the generated to… | 10 | | POST | `https://api.eu.apyhub.com/dosvak/jwt-encode-decode/decode` | What it does Verifies the signature of a JWT using the provided secret and returns whether the toke… | 10 | ## Endpoint reference ### Sign a JSON payload into a JWT using HS256 or another algorithm `POST https://api.eu.apyhub.com/dosvak/jwt-encode-decode/encode` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `secret` | body | string | yes | Example: `my-secret-key`. | | `payload` | body | object | yes | Example: `{"exp":9999999999,"sub":"user123"}`. | | `algorithm` | body | string | no | Default: `HS256`. | #### Quickstart Create a signed JWT by sending the required `payload` and `secret` fields. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/jwt-encode-decode/encode" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"payload":{"exp":9999999999,"sub":"user123"},"secret":"my-secret-key"}' ``` #### What you'll get back Returns a JSON object with a `token` string field containing the encoded JWT. ```json { "token": "eyJhbGciOiJIUzI1NiJ9..." } ``` ### Verify a JWT signature and return the decoded payload `POST https://api.eu.apyhub.com/dosvak/jwt-encode-decode/decode` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `token` | body | string | yes | | | `secret` | body | string | yes | | | `algorithm` | body | string | no | Default: `HS256`. | #### Quickstart Decode a JWT by sending its token and secret in a JSON request body. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/jwt-encode-decode/decode" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyMTIzIn0.signature","secret":"my-jwt-secret"}' ``` #### What you'll get back Returns a JSON object with a `valid` boolean field and a `payload` object field. `valid` indicates whether the token could be decoded successfully, and `payload` contains the decoded JWT claims. ```json { "valid": true, "payload": { "sub": "user123" } } ``` ## About ## What it does JWT Tools lets you encode a JSON payload into a JWT and decode or verify an existing token with a shared secret. Send a payload and secret to `/encode`, or send a token and secret to `/decode`; both endpoints accept an optional `algorithm` field, with `HS256` as the default. Use JWT Tools when you need to issue signed tokens for sessions, API access, or short-lived claims, and when you need to check that an incoming token is valid before trusting its contents. The encode endpoint returns a `token` string. The decode endpoint returns a `valid` boolean and a decoded `payload` object. That makes it useful for authentication flows, internal debugging, and any service that needs to inspect JWT claims without guessing at the signature logic. If your application already stores claims as JSON, JWT Tools gives you a straightforward way to sign them and verify them with the same shared secret. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/jwt-encode-decode * * * --- title: Encode and Decode Base64 API slug: base64-encode-decode url: https://apyhub.com/dosvak/service/base64-encode-decode provider: Dosvak LLC categories: [Developer Tools, "Security & Privacy"] tags: [base64, encoding, decoding, text-transformation, developer-tools] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 10 --- # Encode and Decode Base64 API Encode UTF-8 text to Base64 or decode it back to plain text over HTTP. Useful for payload inspection and round-trip checks in scripts. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/base64-encode-decode/encode` | What it does Base64-encodes the UTF-8 string provided in the text query parameter and returns the e… | 10 | | GET | `https://api.eu.apyhub.com/dosvak/base64-encode-decode/decode` | What it does Decodes a Base64-encoded string back into UTF-8 text. The endpoint takes the encoded i… | 10 | ## Endpoint reference ### Base64-encode a UTF-8 string `GET https://api.eu.apyhub.com/dosvak/base64-encode-decode/encode` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | query | string | yes | | #### Quickstart Encode a text string by sending it as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/base64-encode-decode/encode?text=Hello%20world" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with an `encoded` string field containing the Base64-encoded result. ```json { "encoded": "SGVsbG8gd29ybGQ=" } ``` ### Base64-decode a string back to UTF-8 text `GET https://api.eu.apyhub.com/dosvak/base64-encode-decode/decode` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `encoded` | query | string | yes | | #### Quickstart Decode a Base64 string by passing it as the `encoded` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/base64-encode-decode/decode?encoded=aGVsbG8gd29ybGQ=" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with an optional `decoded` string field containing the decoded text. ```json { "decoded": "hello world" } ``` ## About ## What it does Base64 Encoder Decoder turns UTF-8 text into Base64 and converts Base64 back into readable text. Send a `text` query parameter to `/encode` and get an `encoded` string in response. Use `/decode` with an `encoded` query parameter and get a `decoded` string back. The service is small on purpose: it focuses on two common transformations developers need when moving text through URLs, headers, config values, or systems that expect Base64 payloads. Use Base64 Encoder Decoder when you need to inspect an encoded value, verify a round-trip conversion, or prepare text for transport between services that do not accept raw characters. Because the inputs and outputs are plain strings, it fits well into scripts, test suites, internal tools, and lightweight integrations. If your workflow depends on predictable text encoding and decoding, this endpoint pair gives you a straightforward way to convert in either direction without extra metadata or file handling. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/base64-encode-decode * * * --- title: Correct Text Spelling API slug: spellcheck-text url: https://apyhub.com/dosvak/service/spellcheck-text provider: Dosvak LLC categories: [Developer Tools, Smart Generation] tags: [spellcheck, text-correction, language-processing, text-validation, writing-assistance] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Correct Text Spelling API Send text and get it back with the spelling corrected, plus a map of every word that was changed. Built for forms, chat and user content. Try it free. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/spellcheck-text` | What it does Detects misspelled words in the submitted text and returns the original text, a correc… | 10 | ## Endpoint reference ### Detect misspelled words and return a corrected version of the text `POST https://api.eu.apyhub.com/dosvak/spellcheck-text` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | yes | Input text. Maximum length: 512 characters. | #### Quickstart Send a short piece of text to check and correct its spelling. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/spellcheck-text" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"Ths is a smple sentence."}' ``` #### What you'll get back Returns a JSON object with `original` and `corrected` string fields, plus a `misspelled` object that maps each misspelled word to its correction. ```json { "original": "Ths is a smple sentence.", "corrected": "This is a simple sentence.", "misspelled": { "Ths": "This", "smple": "simple" } } ``` ## About ## What it does The Correct Text Spelling API is a spelling correction API that finds misspelled words in a piece of text and fixes them. Send a short text and get back the corrected version, together with a list of every word that was wrong and what it was changed to. It is one POST endpoint with a single `text` field, and the answer comes back in the same request. The response has three parts: `original` with the text you sent, `corrected` with the fixed text, and `misspelled`, an object that maps each wrong word to its correction. Sending `Ths is a smple sentence.` returns `This is a simple sentence.`, with `Ths` mapped to `This` and `smple` mapped to `simple`. Because you get both the corrected text and the individual changes, you can auto-correct text in the background or show each fix to the user so they can accept or ignore it. Input is limited to 512 characters, so it is built for short text: form fields, chat and support messages, search queries, comments, product titles and reviews. If you only want suggestions without changing the text, use the [Check Spelling API](https://apyhub.com/dosvak/service/spellcheck). For longer text, or to fix grammar as well as spelling, use the [Proofread Text and Grammar Check API](https://apyhub.com/sharpapi/service/proofread-text-grammar-check). To screen the same messages for offensive language, pair it with the [CheckText Profanity API](https://apyhub.com/dosvak/service/profanity-check) or the [Detect Text Toxicity API](https://apyhub.com/dosvak/service/detect-toxicity), and to show users exactly what changed between two versions, use the [Differentiate Text API](https://apyhub.com/apyhub/service/compare-text-or-code-snippets). You can try it right here in the playground. Start for free with 5 API calls a day, no card required, and check your own text before you commit. The API is also available through [ApyHub MCP](https://apyhub.com/mcp), so AI agents can correct spelling directly before they store or send text. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/spellcheck-text * * * --- title: Detect Text Toxicity API slug: detect-toxicity url: https://apyhub.com/dosvak/service/detect-toxicity provider: Dosvak LLC categories: [Artificial Intelligence, "Security & Privacy"] tags: [toxicity-detection, content-moderation, text-classification, harmful-content, sentiment-analysis] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Detect Text Toxicity API Check comments and messages for toxic or harmful language. Get a toxic or non-toxic verdict with a confidence score in one request. Try it free. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/detect-toxicity` | What it does Detects whether the submitted text is toxic or harmful and returns a JSON object with… | 10 | ## Endpoint reference ### Detect whether text is toxic or harmful `POST https://api.eu.apyhub.com/dosvak/detect-toxicity` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | yes | Input text. Maximum length: 512 characters. | #### Quickstart Send a piece of text to check whether it is toxic. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/detect-toxicity" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"This is a sample sentence to analyze."}' ``` #### What you'll get back Returns a JSON object with `text` as a string, `label` as a string, `score` as a number, and `toxic` as a boolean. ```json { "text": "This is a sample sentence to analyze.", "label": "non-toxic", "score": 0.98, "toxic": false } ``` ## About ## What it does The Detect Text Toxicity API is a toxicity detection API that checks whether a comment or message is toxic or harmful. Send a piece of text and get back a clear verdict, toxic or non-toxic, with a score showing how confident the model is. It is one POST endpoint with a single `text` field, and the answer comes back in the same request. The response includes `toxic` as true or false, a `label` such as `non-toxic`, a `score` between 0 and 1, and the `text` that was checked. Use `toxic` for a simple allow or block decision, or apply your own threshold to `score`: auto-hide the most confident cases and send borderline ones to a human moderator. Input is limited to 512 characters, which covers comments, chat messages, reviews, bios and support tickets. Unlike a word list, a toxicity model reads the whole message, so it can flag insults, harassment and hostile comments that contain no swear words at all. Common uses include moderating comment sections and forums, screening chat in communities and games, flagging abusive support tickets, reviewing profile bios at sign-up, and checking AI chatbot replies before they reach users. Google's Perspective API, the most widely used free toxicity API, is shutting down on 31 December 2026 with no migration path. If you are moving off it, note that this API returns one toxicity verdict and score rather than separate scores for insults, threats and identity attacks, which keeps the integration simple. To catch explicit swear words with an exact list of matches, pair it with the [CheckText Profanity API](https://apyhub.com/dosvak/service/profanity-check). For broader content moderation, use the [AI Text Moderation API](https://apyhub.com/apyhub/service/text-moderation), and to measure whether feedback is positive or negative instead of harmful, use the [Analyze Multiple Text Sentiment API](https://apyhub.com/dosvak/service/analyze-sentiment). You can try it right here in the playground. Start for free with 5 API calls a day, no card required, and check your own text before you commit. The API is also available through [ApyHub MCP](https://apyhub.com/mcp), so AI agents can check text for toxicity directly before they publish or reply. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/detect-toxicity * * * --- title: Analyze Multiple Text Sentiment API slug: analyze-sentiment url: https://apyhub.com/dosvak/service/analyze-sentiment provider: Dosvak LLC categories: [Artificial Intelligence] tags: [sentiment-analysis, text-classification, nlp, customer-feedback, content-moderation] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 10 --- # Analyze Multiple Text Sentiment API Classify text as positive or negative with a confidence score. Handles single messages or batches for feedback triage and content moderation. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/analyze-sentiment` | What it does Classifies an input text as positive or negative and returns the text, the predicted l… | 10 | | POST | `https://api.eu.apyhub.com/dosvak/analyze-sentiment/batch` | What it does Classifies multiple input texts in a single request and returns an array of sentiment… | 10 | ## Endpoint reference ### Classify text as positive or negative with a confidence score `POST https://api.eu.apyhub.com/dosvak/analyze-sentiment` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | yes | Input text. Maximum length: 512 characters. | #### Quickstart Send a short piece of text to get its sentiment label and confidence score. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/analyze-sentiment" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"I really enjoyed the product and the support was excellent."}' ``` #### What you'll get back Returns a JSON object with `text` as a string, `label` as either `"positive"` or `"negative"`, and `score` as a number between `0` and `1`. ```json { "text": "I really enjoyed the product and the support was excellent.", "label": "positive", "score": 0.98 } ``` ### Classify multiple texts in a single request `POST https://api.eu.apyhub.com/dosvak/analyze-sentiment/batch` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `texts` | body | array of string | yes | Example: `["Great product!","Awful service."]`. | #### Quickstart Send a batch of texts to analyze sentiment for each item. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/analyze-sentiment/batch" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"texts":["Great product!","Awful service."]}' ``` #### What you'll get back Returns a JSON object with a `results` array. Each item in `results` is an object with a `label` string and a `score` number for the sentiment prediction. ```json { "results": [ { "label": "positive", "score": 0.99 }, { "label": "negative", "score": 0.98 } ] } ``` ## About ## What it does Sentiment Analysis classifies text as positive or negative and returns a confidence score for each result. Send a single text up to 512 characters in the `body.text` field, or submit multiple strings with the batch endpoint in `body.texts`. Use it when you need to score customer feedback, triage support comments, or filter review streams by tone. The single-text endpoint returns the original `text`, a `label` of `positive` or `negative`, and a `score` between 0 and 1. The batch endpoint returns a `results` array, with each item containing a `label` and `score` for the corresponding input text. Because the output is compact, it fits cleanly into moderation workflows, analytics pipelines, and product dashboards. You can run one-off checks on a message, or process a list of short texts in one request when you need to classify many comments at once. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/analyze-sentiment * * * --- title: Compare and Rank Text Similarity API slug: compute-text-similarity url: https://apyhub.com/dosvak/service/compute-text-similarity provider: Dosvak LLC categories: [Artificial Intelligence] tags: [text-similarity, semantic-search, cosine-similarity, embeddings, ranking] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 10 --- # Compare and Rank Text Similarity API Compare two texts with a 0 to 1 similarity score, or rank a list of candidates against a query by semantic relevance. One endpoint, both modes. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/compute-text-similarity` | What it does Computes a cosine similarity score between two input texts using sentence embeddings.… | 10 | | POST | `https://api.eu.apyhub.com/dosvak/compute-text-similarity/rank` | What it does Ranks a list of candidate texts by their semantic similarity to a query, returning the… | 10 | ## Endpoint reference ### Compute cosine similarity score between two texts using sentence embeddings `POST https://api.eu.apyhub.com/dosvak/compute-text-similarity` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text1` | body | string | yes | Example: `The cat sat on the mat.`. | | `text2` | body | string | yes | Example: `A feline rested on a rug.`. | #### Quickstart Compare two pieces of text for similarity with a minimal JSON request. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/compute-text-similarity" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text1":"The cat sat on the mat.","text2":"A feline rested on a rug."}' ``` #### What you'll get back Returns a JSON object with `text1` and `text2` string fields, plus a `similarity` number between `0` and `1` indicating how similar the texts are. ```json { "text1": "The cat sat on the mat.", "text2": "A feline rested on a rug.", "similarity": 0.87 } ``` ### Rank candidate texts by semantic similarity to a query, highest first `POST https://api.eu.apyhub.com/dosvak/compute-text-similarity/rank` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `query` | body | string | yes | Example: `machine learning frameworks`. | | `candidates` | body | array of string | yes | Example: `["PyTorch for deep learning","Best restaurants in Paris","TensorFlow tutorial",…`. | #### Quickstart Rank a list of candidate texts by how similar they are to your query. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/compute-text-similarity/rank" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "query": "machine learning frameworks", "candidates": [ "PyTorch for deep learning", "Best restaurants in Paris", "TensorFlow tutorial", "Cooking pasta at home" ] }' ``` #### What you'll get back Returns a JSON object with a `query` string and a `ranked` array. Each item in `ranked` is an object with `text` and `score` fields, where `score` is a number indicating the similarity ranking. ```json { "query": "machine learning frameworks", "ranked": [ { "text": "PyTorch for deep learning", "score": 0.98 }, { "text": "TensorFlow tutorial", "score": 0.95 } ] } ``` ## About ## What it does Text Similarity compares two pieces of text and returns a cosine similarity score between 0 and 1. Send `text1` and `text2` in the request body, and get both texts back along with a `similarity` value. Use it when you need a fast semantic comparison instead of exact string matching. It is useful for duplicate detection, paraphrase checks, clustering short content, or measuring how closely a generated answer matches a reference sentence. The service also includes a ranking endpoint for semantic search. Send a `query` string and an array of `candidates`, and it returns the `query` plus a `ranked` list of candidate objects ordered by score, highest first. Each ranked item includes the candidate `text` and its `score`, which makes it straightforward to surface the best match in a UI or downstream workflow. Text Similarity is a good fit when you want lightweight text relevance scoring without building your own embedding pipeline. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/compute-text-similarity * * * --- title: Extract Named Entities from Text API slug: extract-named-entities url: https://apyhub.com/dosvak/service/extract-named-entities provider: Dosvak LLC categories: [Artificial Intelligence] tags: [named-entity-recognition, nlp, text-analysis, entity-extraction, natural-language-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Extract Named Entities from Text API Extract people, organisations, locations, and misc entities from short text. Returns offsets and confidence scores for highlighting and NLP work. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/extract-named-entities` | What it does Extracts named entities from the input text and returns the original text along with a… | 10 | ## Endpoint reference ### Extract named entities — persons, locations, organisations, and misc — with character offsets `POST https://api.eu.apyhub.com/dosvak/extract-named-entities` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | yes | Input text. Maximum length: 512 characters. | #### Quickstart Send a piece of text to extract named entities from it. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/extract-named-entities" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"Barack Obama visited Microsoft in Seattle."}' ``` #### What you'll get back Returns a JSON object with `text` as a string and `entities` as an array of entity objects. Each entity object can include `start` and `end` integer offsets, `type` (`PER`, `ORG`, `LOC`, or `MISC`), `word` as the extracted text, and `score` as a number. ```json { "text": "Barack Obama visited Microsoft in Seattle.", "entities": [ { "start": 0, "end": 12, "type": "PER", "word": "Barack Obama", "score": 0.99 } ] } ``` ## About ## What it does Named Entity Extraction identifies people, organisations, locations, and miscellaneous entities in text, and returns each match with character offsets. Send a `text` string in the request body, and you get the original text back along with an `entities` array. Each entity includes the extracted `word`, its `type` (`PER`, `ORG`, `LOC`, or `MISC`), `start` and `end` offsets, and a confidence `score`. The input text is limited to 512 tokens, so it is designed for short passages, snippets, and document segments rather than full-length files. Use Named Entity Extraction when you need to index articles, route support tickets, enrich content metadata, or prepare text for downstream NLP steps. The offsets make it easier to highlight entities in a UI, map results back to source text, or combine extraction with other text-processing logic. This endpoint is a good fit for applications that need lightweight entity recognition without building and maintaining their own NLP pipeline. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/extract-named-entities * * * --- title: Detect Text Language Probabilities API slug: detect-text-language url: https://apyhub.com/dosvak/service/detect-text-language provider: Dosvak LLC categories: [Artificial Intelligence, Standard Data] tags: [language-detection, text-classification, nlp, iso-639-1, multilingual] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Detect Text Language Probabilities API Detect the language of short text and get an ISO 639-1 code with a probability breakdown. Built for routing, translation, and multilingual apps. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/detect-text-language` | What it does Detects the language of the input text and returns the most likely language code along… | 10 | ## Endpoint reference ### Detect the language of a text with per-language probability breakdown `POST https://api.eu.apyhub.com/dosvak/detect-text-language` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | yes | Input text. Maximum length: 512 characters. | #### Quickstart Detect the language of a short text string. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/detect-text-language" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"Bonjour tout le monde"}' ``` #### What you'll get back Returns a JSON object with two top-level fields: `detected` is an ISO 639-1 language code, and `probabilities` is an array of objects with `lang` and `prob` values showing the language scores. ```json { "detected": "fr", "probabilities": [ { "lang": "fr", "prob": 0.99 }, { "lang": "en", "prob": 0.01 } ] } ``` ## About ## What it does Language Detector identifies the language of a text string and returns the most likely ISO 639-1 code plus a probability breakdown for candidate languages. Send `text` in the request body and get back a `detected` value for the primary language, along with `probabilities` for the languages the model considered. The input text is limited to 512 characters, so it fits short messages, snippets, comments, or user-generated content. Use Language Detector when you need to route support tickets, pick a translation workflow, choose the right NLP model, or apply language-specific rules before processing content. Because the response includes per-language probabilities, you can inspect borderline cases instead of relying only on a single label. The API is a good fit for systems that ingest mixed-language text and need a lightweight classification step before search, moderation, analytics, or translation. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/detect-text-language * * * --- title: DNS Lookup API slug: dns-lookup url: https://apyhub.com/dosvak/service/dns-lookup provider: Dosvak LLC categories: [Developer Tools] tags: [dns, dns-resolution, domain-lookup, record-lookup, infrastructure] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # DNS Lookup API Resolve A, AAAA, MX, TXT, NS, CNAME, SOA, PTR, and CAA records for any domain. Returns the records, TTL values, and any lookup error. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/dns-lookup` | What it does Resolves DNS records for a domain name and returns the domain, record type, TTL, any e… | 10 | ## Endpoint reference ### Resolve any DNS record type for a domain name `GET https://api.eu.apyhub.com/dosvak/dns-lookup` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `domain` | query | string | yes | | | `record_type` | query | string | no | One of: A, AAAA, MX, TXT, NS, CNAME, SOA, PTR, CAA. Default: `A`. | #### Quickstart Look up DNS records for a domain with the default `A` record type. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/dns-lookup?domain=example.com&record_type=A" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields: `ttl` is an integer or `null`, `error` is a string or `null`, `domain` is a string, `records` is an array of strings, and `record_type` is a string. ```json { "ttl": 300, "error": null, "domain": "example.com", "records": ["93.184.216.34"], "record_type": "A" } ``` ## About ## What it does DNS Lookup resolves DNS records for a domain name and returns the record data you asked for. Send a `domain` and, optionally, a `record_type` such as `A`, `AAAA`, `MX`, `TXT`, `NS`, `CNAME`, `SOA`, `PTR`, or `CAA`. The response includes the queried `domain`, the resolved `record_type`, and any `records` found. When available, it also returns `ttl`. If resolution fails or the record is not present, you may receive an `error` string instead of usable records. Use DNS Lookup when you need to verify domain configuration, check mail routing, inspect TXT records for SPF or verification tokens, or confirm where a hostname points before provisioning infrastructure. It fits directly into onboarding checks, domain health monitoring, and support workflows where you need the DNS answer, not a full resolver library. Because the output is simple and typed, it is easy to plug into automation that checks one record type at a time and compares the returned values against expected configuration. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/dns-lookup * * * --- title: Calculate Domain Age API slug: domain-age url: https://apyhub.com/dosvak/service/domain-age provider: Dosvak LLC categories: [Data Validation, Marketing, SEO] tags: [domain-age, whois, domain-enrichment, seo, fraud-screening] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Calculate Domain Age API Look up a domain's WHOIS creation date and its age in days or years. Useful for onboarding checks, fraud review, and SEO enrichment. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/domain-age` | What it does Calculates the age of a domain from its WHOIS creation date. It accepts a domain query… | 10 | ## Endpoint reference ### Calculate how old a domain is from its WHOIS creation date `GET https://api.eu.apyhub.com/dosvak/domain-age` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `domain` | query | string | yes | | #### Quickstart Look up the age of a domain by sending the required `domain` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/domain-age?domain=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `domain` as a string, and `age_days`, `age_years`, and `creation_date` as nullable fields. ```json { "domain": "example.com", "age_days": 8765, "age_years": 24.0, "creation_date": "2000-01-01" } ``` ## About ## What it does Domain Age tells you how old a domain is from its WHOIS creation date. Send a domain name in the `domain` query parameter, and get back the domain, the parsed `creation_date`, and its age in `age_days` and `age_years` when that data is available. Use Domain Age when you need a quick age check for onboarding, risk scoring, spam filtering, or SEO workflows. Older domains can be a useful signal in fraud review and lead qualification, while newly registered domains may need extra scrutiny. The response is intentionally small and easy to consume: one domain, one creation date, and two age values. If WHOIS data is unavailable or incomplete, the age fields may be null rather than guessed, so you can handle missing registry data explicitly in your application. Domain Age is a good fit for form validation, enrichment pipelines, and internal tooling that needs a fast domain-age lookup without pulling in a full WHOIS parser. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/domain-age * * * --- title: Domain WHOIS Lookup API slug: domain-whois url: https://apyhub.com/dosvak/service/domain-whois provider: Dosvak LLC categories: [Data Validation, Developer Tools, Standard Data] tags: [whois, domain-lookup, domain-registration, registrar, dns] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Domain WHOIS Lookup API Get a domain's WHOIS record from a single query. Returns the registrar, expiry date, creation date, status, contact emails, and name servers. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/domain-whois` | What it does Retrieves the full WHOIS record for a domain and returns it as a JSON object with the… | 10 | ## Endpoint reference ### Retrieve full WHOIS record for a domain `GET https://api.eu.apyhub.com/dosvak/domain-whois` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `domain` | query | string | yes | | #### Quickstart Look up WHOIS details for a domain by passing it as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/domain-whois?domain=example.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with the WHOIS fields declared in the schema: `org`, `domain`, `emails`, `status`, `country`, `registrar`, `expiry_date`, `name_servers`, and `creation_date`. `org`, `country`, `registrar`, `expiry_date`, and `creation_date` are strings or `null`; `domain` is a string; the remaining fields are untyped in the schema. ```json { "org": "Example Inc.", "domain": "example.com", "emails": ["admin@example.com"], "status": ["clientTransferProhibited"], "country": "US", "registrar": "Example Registrar, Inc.", "expiry_date": "2026-01-01T00:00:00Z", "name_servers": ["ns1.example.com", "ns2.example.com"], "creation_date": "1995-08-13T00:00:00Z" } ``` ## About ## What it does Domain WHOIS Lookup lets you retrieve a domain’s WHOIS record by sending a `domain` query parameter. It returns the domain name plus the registration details exposed by the lookup service. Use it when you need to check who owns a domain, which registrar manages it, and whether it has expiration or creation dates on record. The response can include `org`, `country`, `registrar`, `expiry_date`, `creation_date`, `emails`, `status`, and `name_servers`, along with the requested `domain`. That makes it useful for domain due diligence, support workflows, and basic security checks. For example, you can validate a partner’s domain registration details before onboarding, or look up a site’s registrar and expiry date when tracking renewal risk. The response is straightforward and machine-friendly, so you can store the record, compare it against internal records, or surface the key fields in your own admin tools. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/domain-whois * * * --- title: Score IP Risk API slug: ip-risk-score url: https://apyhub.com/dosvak/service/ip-risk-score provider: Dosvak LLC categories: [Geolocation, "Security & Privacy"] tags: [ip-risk, fraud-detection, abuse-prevention, asn, geolocation, security] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Score IP Risk API Assess an IP with a heuristic risk score, flags, ASN details, and country code. Built for login protection, fraud screening, and abuse detection. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/ip-risk-score` | What it does Returns a heuristic risk assessment for an IP address based on ASN type and country. Y… | 10 | ## Endpoint reference ### Heuristic risk score for an IP based on ASN type and country `GET https://api.eu.apyhub.com/dosvak/ip-risk-score` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `ip` | query | string | yes | | #### Quickstart Look up the risk score for a single IP address by passing it as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/ip-risk-score?ip=8.8.8.8" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields: `ip` (`string`), `asn` (`string` or `null`), `flags` (`array` of `string`), `risk_level` (`string` enum: `low`, `medium`, or `high`), `risk_score` (`integer` from `0` to `100`), `asn_description` (`string` or `null`), and `asn_country_code` (`string`). ```json { "ip": "8.8.8.8", "asn": "AS15169", "flags": ["dns"], "risk_level": "low", "risk_score": 12, "asn_description": "Google LLC", "asn_country_code": "US" } ``` ## About ## What it does IP Risk Score checks an IP address and returns a heuristic risk assessment based on ASN type and country. Send an `ip` query value and get back the IP, ASN, ASN description, ASN country code, a `risk_score` from 0 to 100, a `risk_level` of `low`, `medium`, or `high`, and any `flags` the service identifies. Use it when you need a quick signal for login protection, abuse detection, fraud screening, or bot filtering. The response is compact and easy to feed into allow/deny rules, step-up verification flows, or internal triage dashboards. Because the score is heuristic, it’s best used as one input alongside your own behavioral checks and account history. The returned ASN fields help you understand why an address was scored the way it was, without adding extra lookup steps. IP Risk Score fits workflows where you need to evaluate traffic in real time and make an immediate decision from a single IP lookup. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/ip-risk-score * * * --- title: IP ASN Lookup API slug: ip-asn-lookup url: https://apyhub.com/dosvak/service/ip-asn-lookup provider: Dosvak LLC categories: [Geolocation] tags: [asn-lookup, rdap, ip-lookup, network-cidr, ip-enrichment, geolocation] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # IP ASN Lookup API Resolve any IP to its ASN, network CIDR, registry, and network name via RDAP. Built for enrichment, abuse checks, and network telemetry. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/ip-asn-lookup` | What it does Looks up RDAP-based ASN and network details for the IP address provided in the query s… | 10 | ## Endpoint reference ### Look up ASN, network CIDR, and registry details for an IP via RDAP `GET https://api.eu.apyhub.com/dosvak/ip-asn-lookup` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `ip` | query | string | yes | | #### Quickstart Look up the ASN details for a single IP address by passing the `ip` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/ip-asn-lookup?ip=8.8.8.8" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields: `ip` is the IP address looked up, and `asn`, `asn_registry`, `network_cidr`, `network_name`, `asn_description`, and `asn_country_code` are nullable strings with the matching network/ASN information when available. ```json { "ip": "8.8.8.8", "asn": "15169", "asn_registry": "arin", "network_cidr": "8.8.8.0/24", "network_name": "GOOGLE", "asn_description": "Google LLC", "asn_country_code": "US" } ``` ## About ## What it does IP ASN Lookup resolves an IP address to the network and registry details exposed by RDAP. Send an `ip` value and get back the IP, the ASN when available, the ASN registry, the network CIDR, the network name, the ASN description, and the ASN country code. Use it when you need to identify who operates an address block, map traffic to an upstream network, or enrich security and network telemetry with ownership data. The response is intentionally compact, so it fits neatly into routing, abuse-checking, asset inventory, and analytics workflows. Because the lookup is based on RDAP, results reflect registry data rather than guessed location or ISP information. That makes it useful for IP reputation checks, incident response triage, and backend tools that need a reliable ASN reference before making a decision. If the registry does not expose a value, the corresponding field can be null, so you can handle partial results without guessing. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/ip-asn-lookup * * * --- title: Advanced Image OCR API slug: ocr-image url: https://apyhub.com/dosvak/service/ocr-image provider: Dosvak LLC categories: [Data Extraction, Image Processing] tags: [ocr, image-text-extraction, document-digitization, word-bounding-boxes, text-recognition] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Advanced Image OCR API Extract text from an image with word-level bounding boxes, confidence scores, and a word count. Built for OCR pipelines, search, and archives. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/ocr-image` | What it does Extracts text from an uploaded image and returns the recognized full text, plus word-l… | 100 | ## Endpoint reference ### Extract text from an image with word-level bounding boxes and confidence scores `POST https://api.eu.apyhub.com/dosvak/ocr-image` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | no | | | `lang` | body | string | no | Tesseract language code (e.g. eng, fra, deu, spa) Default: `eng`. | #### Quickstart Upload an image file to extract its text using the default OCR language. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/ocr-image" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.png" \ -F "lang=eng" ``` #### What you'll get back Returns a JSON object with `text` as a string, `words` as an array of word objects, and `word_count` as an integer. Each word object can include `h`, `w`, `x`, `y`, `conf`, and `text`. ```json { "text": "Hello world", "words": [ { "h": 18, "w": 52, "x": 120, "y": 84, "conf": 98, "text": "Hello" } ], "word_count": 2 } ``` ## About ## What it does Image OCR extracts text from an image and returns both the plain text and word-level OCR details. Send a binary image file, optionally set `lang` to a Tesseract language code such as `eng`, `fra`, `deu`, or `spa`, and get structured text extraction back. Use Image OCR when you need to turn screenshots, scans, photos of documents, or labels into machine-readable text. The response includes `text`, `word_count`, and a `words` array with each word's `text`, bounding box coordinates (`x`, `y`, `w`, `h`), and confidence score from 0 to 100. That makes it useful for indexing documents, highlighting detected words on an image, or feeding OCR output into downstream parsing and validation. Because the output is word-level, you can keep the extracted text for search or storage while also preserving layout hints for UI overlays and quality checks. If you need multilingual OCR, switch the language code to match the image content and keep the same response shape. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/ocr-image * * * --- title: Detect Faces from Image File API slug: detect-faces url: https://apyhub.com/dosvak/service/detect-faces provider: Dosvak LLC categories: [Artificial Intelligence, Image Processing] tags: [face-detection, computer-vision, image-analysis, bounding-box, object-detection] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Detect Faces from Image File API Send an image file and get back face bounding boxes with face_count and image_size. Useful for cropping, overlays, and image workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/detect-faces` | What it does Detects frontal faces in an uploaded image file and returns bounding boxes for each fa… | 100 | ## Endpoint reference ### Detect frontal faces and return bounding boxes for each face found `POST https://api.eu.apyhub.com/dosvak/detect-faces` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | no | | #### Quickstart Upload an image file to detect any faces in it. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/detect-faces" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" ``` #### What you'll get back Returns a JSON object with optional `faces`, `face_count`, and `image_size` fields. - `faces` is an array of face rectangles, where each item may include `h`, `w`, `x`, and `y` integer values. - `face_count` is an integer with the number of faces detected. - `image_size` is an object with `h` and `w` integer values for the image dimensions. ```json { "faces": [ { "h": 120, "w": 100, "x": 340, "y": 210 } ], "face_count": 1, "image_size": { "h": 1080, "w": 1920 } } ``` ## About ## What it does Face Detection finds frontal faces in an image and returns a bounding box for each one. Send a binary `file` in the request body, and get back the face locations in pixel coordinates. The response includes `faces`, `face_count`, and `image_size`. Each face entry contains `x`, `y`, `w`, and `h`, so you can draw overlays, crop faces, or feed the results into moderation, tagging, or photo-management workflows. Use Face Detection when you need to identify people in uploaded images, build automatic thumbnail crops, or pre-process images before running another vision step. The `image_size` field gives you the dimensions of the source image, which helps you map detections accurately to your UI or downstream processing. If no faces are found, the service still returns a structured response, making it easy to handle empty results without special-case parsing. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/detect-faces * * * --- title: Detect Image Blur API slug: detect-image-blur url: https://apyhub.com/dosvak/service/detect-image-blur provider: Dosvak LLC categories: [Artificial Intelligence, Image Processing] tags: [image-blur, image-quality, sharpness-detection, computer-vision, ocr-precheck] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Detect Image Blur API Check whether an uploaded image is blurry and get a Laplacian variance score, threshold, and confidence. Built for upload QA and OCR prechecks. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/detect-image-blur` | What it does Uploads an image file and analyzes it for blur using Laplacian variance. The response… | 100 | ## Endpoint reference ### Detect image blur using Laplacian variance and return a sharpness score `POST https://api.eu.apyhub.com/dosvak/detect-image-blur` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | no | | #### Quickstart Upload an image file to check whether it appears blurry. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/detect-image-blur" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" ``` #### What you'll get back Returns a JSON object with these top-level fields: `blurry` boolean, `threshold` integer, `confidence` string (`low`, `medium`, or `high`), and `laplacian_variance` number. `blurry` indicates whether the image is considered blurry; `laplacian_variance` is higher for sharper images, with a threshold of `100`. ```json { "blurry": false, "threshold": 100, "confidence": "high", "laplacian_variance": 243.7 } ``` ## About ## What it does Image Blur Detection checks whether an uploaded image is blurry and returns a sharpness score based on Laplacian variance. Send a binary image file, and you get back a boolean blur result plus the values used to make that decision. Use it when you need to reject low-quality uploads, flag out-of-focus product photos, or gate images before OCR and downstream vision workflows. The response includes `blurry`, the numeric `threshold`, a `confidence` level of `low`, `medium`, or `high`, and `laplacian_variance` so you can inspect how sharp the image is. Higher Laplacian variance means a sharper image, and the threshold is 100. This is a straightforward validation step for image pipelines: check capture quality before storage, surface feedback to users, or route blurry images for retake instead of processing them further. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/detect-image-blur * * * --- title: Extract Image Color Palette API slug: extract-image-palette url: https://apyhub.com/dosvak/service/extract-image-palette provider: Dosvak LLC categories: [Image Processing] tags: [image-palette, color-extraction, dominant-color, image-analysis, rgb, hex-colors] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Extract Image Color Palette API Extract a dominant hex colour and a sorted palette from any uploaded image. Built for theme generation, design tooling, and image analysis. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/extract-image-palette` | What it does Extracts a colour palette from an uploaded image and returns the dominant colour plus… | 100 | ## Endpoint reference ### Extract dominant colour and palette from an image `POST https://api.eu.apyhub.com/dosvak/extract-image-palette` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | no | | | `colors` | body | integer | no | Default: `5`. | #### Quickstart Upload an image to extract its color palette. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/extract-image-palette" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" ``` #### What you'll get back Returns a JSON object with three top-level fields: `palette` is an array of HEX color strings sorted by dominance, `dominant` is the HEX color of the most dominant pixel cluster, and `rgb_palette` is an array of RGB objects with `r`, `g`, and `b` integer values. ```json { "palette": ["#1f2937", "#f59e0b", "#e5e7eb"], "dominant": "#1f2937", "rgb_palette": [ { "r": 31, "g": 41, "b": 55 }, { "r": 245, "g": 158, "b": 11 }, { "r": 229, "g": 231, "b": 235 } ] } ``` ## About ## What it does Image Palette Extractor reads an image file and returns the dominant colour along with a palette of up to 20 colours. Send an image in `file`, and optionally set `colors` to control how many palette entries you want back. The response includes `dominant` as a hex colour for the most dominant pixel cluster, `palette` as hex colours sorted by dominance, and `rgb_palette` as the same colours broken out into `r`, `g`, and `b` values. That makes it easy to plug the output into design systems, theme builders, image analysis workflows, or UI previews that need colours in both CSS-friendly and RGB formats. Use Image Palette Extractor when you need to derive a brand palette from an uploaded asset, generate accent colours for a product card, or inspect an image before applying a matching background or border colour. The only required input is the image itself, so it fits cleanly into upload flows and asset-processing pipelines. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/extract-image-palette * * * --- title: Convert Raw JSON to CSV API slug: raw-json-to-csv url: https://apyhub.com/dosvak/service/raw-json-to-csv provider: Dosvak LLC categories: [Developer Tools, File Conversion] tags: [json-to-csv, csv-conversion, data-conversion, json-formatting, developer-tools] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Convert Raw JSON to CSV API Convert a JSON array of objects into a CSV string with auto-generated headers. Built for exports, reports, and spreadsheet-friendly interchange. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/raw-json-to-csv` | What it does Converts a JSON array of objects into a CSV string, generating the header row automati… | 10 | ## Endpoint reference ### Convert a JSON array of objects to a CSV string with auto-generated headers `POST https://api.eu.apyhub.com/dosvak/raw-json-to-csv` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `data` | body | array of object | yes | Example: `[{"age":30,"name":"Alice"},{"age":25,"name":"Bob"}]`. | | `delimiter` | body | string | no | Default: `,`. | #### Quickstart Convert a JSON array of objects into CSV by sending the data payload in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/raw-json-to-csv" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"data":[{"age":30,"name":"Alice"},{"age":25,"name":"Bob"}]}' ``` #### What you'll get back Returns a plain string containing the CSV output. ```text age,name 30,Alice 25,Bob ``` ## About ## What it does JSON to CSV Converter turns a JSON array of objects into a CSV string with auto-generated headers. Send `data` as an array of objects, and optionally set `delimiter` to control the separator used in the output. Use it when you need to export API results, database rows, or application data into a spreadsheet-friendly format. The service reads the object keys in your JSON payload and builds the CSV headers for you, so you do not have to map columns manually. The response is a plain CSV string, which makes it easy to write to a file, return from an endpoint, or pass into another data-processing step. It is a good fit for reporting pipelines, admin exports, and quick data interchange between JSON-based services and CSV-based tools. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/raw-json-to-csv * * * --- title: Convert Raw CSV to JSON API slug: raw-csv-to-json url: https://apyhub.com/dosvak/service/raw-csv-to-json provider: Dosvak LLC categories: [Developer Tools, File Conversion] tags: [csv, json-conversion, data-transform, parsing, spreadsheet] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Convert Raw CSV to JSON API Convert a CSV string into a JSON array of objects keyed by the header row. Returns parsed rows in data with a total count for imports. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/raw-csv-to-json` | What it does Converts a CSV string into a JSON array of objects, using the first row as the header… | 10 | ## Endpoint reference ### Convert a CSV string to a JSON array of objects keyed by the header row `POST https://api.eu.apyhub.com/dosvak/raw-csv-to-json` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `csv` | body | string | yes | Example: `name,age Alice,30 Bob,25`. | | `delimiter` | body | string | no | Default: `,`. | #### Quickstart Convert a small CSV string into JSON by sending the CSV content in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/raw-csv-to-json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"csv":"name,age\nAlice,30\nBob,25"}' ``` #### What you'll get back Returns a JSON object with a `data` array of objects and a `count` integer. `data` contains the parsed rows, and `count` is the number of rows returned. ```json { "data": [ { "name": "Alice", "age": "30" }, { "name": "Bob", "age": "25" } ], "count": 2 } ``` ## About ## What it does CSV to JSON converts a CSV string into a JSON array of objects keyed by the header row. Send the CSV content in `body.csv`, and you get back parsed objects in `data` plus a `count` of how many rows were converted. Use `body.delimiter` when your file uses something other than a comma. The default delimiter is `,`, so common CSV exports work without extra configuration. This is useful when you need to normalize spreadsheet exports, import tabular data into a service, or turn CSV payloads into a format your app can process with standard JSON tooling. The response is intentionally simple: `data` contains the converted rows as objects, and `count` tells you how many records were produced. If your CSV header is `name,age`, a row like `Alice,30` becomes an object keyed by those column names. Keep the input as a CSV string and let the converter handle the row-to-object mapping for you. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/raw-csv-to-json * * * --- title: Detect File type API slug: detect-file-type url: https://apyhub.com/dosvak/service/detect-file-type provider: Dosvak LLC categories: [Data Validation, Developer Tools, File Security] tags: [file-type, mime-detection, magic-bytes, upload-validation, file-classification] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Detect File type API Inspect a file's magic bytes to return the filename, extension, MIME type, and description. Built for validating uploads and classifying files. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/detect-file-type` | What it does Detects the true file type of an uploaded file by inspecting its binary contents and r… | 10 | ## Endpoint reference ### Detect the true MIME type of a file by inspecting its magic bytes `POST https://api.eu.apyhub.com/dosvak/detect-file-type` · 10 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | #### Quickstart Upload a file to detect its type from the file contents. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/detect-file-type" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file" ``` #### What you'll get back Returns a JSON object with `filename`, `extension`, `mime_type`, and `description` fields. ```json { "filename": "document.pdf", "extension": "pdf", "mime_type": "application/pdf", "description": "PDF document" } ``` ## About ## What it does File Type Detection checks the true MIME type of a file by inspecting its magic bytes, rather than trusting the filename or extension. Send a binary file in the `file` field and get back the detected `filename`, `extension`, `mime_type`, and a short `description` of the file type. Use it when uploaded files may have misleading names, missing extensions, or incorrect client-side metadata. It helps you validate user uploads before storage, route files into the right processing pipeline, or reject unsupported formats early in your workflow. The response is simple and predictable: you get the original filename when available, the inferred extension when one can be determined, the MIME type, and a human-readable description. That makes it easy to compare what a client claims a file is versus what it actually contains. File Type Detection is a good fit for upload forms, document ingestion systems, security checks, and any backend that needs to classify files reliably without opening them in a full parser. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/detect-file-type * * * --- title: Extract Readable Content from HTML API slug: extract-html-readable-content url: https://apyhub.com/dosvak/service/extract-html-readable-content provider: Dosvak LLC categories: [Data Extraction, Developer Tools, SEO] tags: [html-extraction, article-extraction, readability, web-scraping, content-parsing] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Extract Readable Content from HTML API Send raw HTML & get back the main article content, title and short title, with navigation, ads & boilerplate stripped. Reader mode for your pipeline. Free tier. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/extract-html-readable-content` | What it does Extracts the main readable content and title from an HTML document using readability a… | 10 | ## Endpoint reference ### Extract main article content and title from HTML using readability algorithms `POST https://api.eu.apyhub.com/dosvak/extract-html-readable-content` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string | no | | | `html` | body | string | yes | | #### Quickstart Send the HTML you want to extract readable text from in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/extract-html-readable-content" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"html":"

Example Article

This is a short example.

"}' ``` #### What you'll get back Returns a JSON object with optional top-level `title`, `length`, `content`, and `short_title` fields. - `title` is a string - `length` is an integer - `content` is a string - `short_title` is a string ```json { "title": "Example Article", "length": 24, "content": "Example Article This is a short example.", "short_title": "Example" } ``` ## About ## What it does The Extract Readable Content from HTML API works like reader mode for your code. Send raw HTML and get back the main article content and title, with the navigation, ads, sidebars and other page boilerplate stripped out by readability algorithms. It is one POST endpoint. The request takes a required `html` field with the page markup and an optional `url` field for the page the HTML came from. The response includes `content` for the readable text, `title` for the full title, `short_title` for a shorter version you can use in lists and previews, and `length` for the size of the extracted content. A very low `length` is a quick signal that the page had no clear main article. Because you send the HTML yourself, it works on pages a URL-based extractor cannot reach: pages behind a login that your own code fetches, pages rendered by a headless browser, HTML stored from an earlier crawl, and saved web archives. Common uses include reading apps, knowledge bases, content analysis, and preparing clean text for summarization and AI pipelines. If you have a public article URL instead of HTML, use [Extract Article Text](https://apyhub.com/dosvak/service/extract-article-text), which fetches the page for you. If you need all the text in the HTML rather than only the main article, use [Extract Text from HTML](https://apyhub.com/dosvak/service/extract-html-text). To get every piece of visible text from a live page, use [Extract Text from Website](https://apyhub.com/apyhub/service/extract-visible-text-from-a-webpage). You can try it right here in the playground. Start for free with 5 API calls a day, no card required, and test it on your own HTML before you commit. The API is also available through [ApyHub MCP](https://apyhub.com/mcp), so AI agents can call it directly to pull the readable content out of a page. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/extract-html-readable-content * * * --- title: Extract Text from HTML API slug: extract-html-text url: https://apyhub.com/dosvak/service/extract-html-text provider: Dosvak LLC categories: [Data Extraction, Developer Tools] tags: [html-extraction, text-extraction, web-scraping, content-parsing, data-extraction] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Extract Text from HTML API Extract clean text from raw HTML, with optional URL support for better results. Returns the text and its length for scraping, indexing, and NLP. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/extract-html-text` | What it does Extracts the readable text from an HTML document, returning the cleaned text content a… | 10 | ## Endpoint reference ### Extract clean readable text from HTML, stripping navigation and boilerplate `POST https://api.eu.apyhub.com/dosvak/extract-html-text` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string | no | Optional canonical URL to improve extraction quality | | `html` | body | string | yes | Raw HTML string | #### Quickstart Send the raw HTML to extract its text content. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/extract-html-text" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"html":"

Hello world

"}' ``` #### What you'll get back Returns a JSON object with a `text` string containing the extracted text and a `length` integer with its character count. ```json { "text": "Hello world", "length": 11 } ``` ## About ## What it does HTML Text Extractor turns raw HTML into clean, readable text. Send it an `html` string, optionally add a canonical `url`, and get back extracted `text` plus its `length`. Use it when you need the main content from a page without navigation, boilerplate, or layout markup. It is useful for content indexing, search previews, ingestion pipelines, and downstream NLP workflows where HTML noise gets in the way. The response is intentionally simple: plain text for the extracted content and an integer length for quick checks, logging, or batching. If you already know the source page URL, include it to help extraction quality on pages with ambiguous structure. This service fits cleanly into scraping, article processing, and content analysis systems that need readable text rather than rendered HTML. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/extract-html-text * * * --- title: Extract Table from PDF Document API slug: extract-pdf-tables url: https://apyhub.com/dosvak/service/extract-pdf-tables provider: Dosvak LLC categories: [Data Extraction] tags: [pdf-extraction, table-extraction, document-parsing, data-extraction, pdf] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Extract Table from PDF Document API Extract tables from a PDF file and get them back as row arrays, grouped by page and table index, with a total table count. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/extract-pdf-tables` | What it does Extracts tables from an uploaded PDF file and returns them as JSON arrays of row array… | 10 | ## Endpoint reference ### Extract tables from a PDF as arrays of row arrays `POST https://api.eu.apyhub.com/dosvak/extract-pdf-tables` · 10 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | no | PDF file (max 20 MB) | #### Quickstart Upload a PDF to extract any tables found in it. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/extract-pdf-tables" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.pdf" ``` #### What you'll get back Returns a JSON object with `tables` and `table_count` fields. `tables` is an array of table objects, each with `page`, `rows`, and `table_index`; `table_count` is the total number of tables found. ```json { "tables": [ { "page": 1, "rows": [ ["Header 1", "Header 2"], ["Value 1", "Value 2"] ], "table_index": 0 } ], "table_count": 1 } ``` ## About ## What it does PDF Table Extractor reads a PDF file and returns the tables it finds as row arrays. Send a PDF in the request body and get back the extracted tables, grouped by page and table index, along with a total table count. Use it when you need to turn tabular PDFs into structured data for spreadsheets, databases, or downstream parsing. The response includes a `tables` array where each table contains its `page`, `table_index`, and `rows`, so you can map extracted content back to the source document. It accepts one binary `file` in the body, with a maximum size of 20 MB. The output is compact and predictable, which makes it useful for invoice processing, report ingestion, document analytics, and any workflow that starts with tables trapped inside a PDF. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/extract-pdf-tables * * * --- title: Extract Text from PDF Document API slug: extract-pdf-text url: https://apyhub.com/dosvak/service/extract-pdf-text provider: Dosvak LLC categories: [Data Extraction, Developer Tools] tags: [pdf-extraction, document-parsing, text-extraction, pdf, data-extraction] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Extract Text from PDF Document API Extract text from a PDF and receive full document text, a page count, and per-page text. Built for search, review, and document automation. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/extract-pdf-text` | What it does Extracts text from every page of an uploaded PDF file and returns the extracted conten… | 10 | ## Endpoint reference ### Extract text from every page of a PDF file `POST https://api.eu.apyhub.com/dosvak/extract-pdf-text` · 10 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | no | PDF file (max 20 MB) | #### Quickstart Upload a PDF to extract its text. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/extract-pdf-text" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.pdf" ``` #### What you'll get back Returns a JSON object with optional `text` string, `pages` integer, and `pages_detail` array fields. `text` contains the extracted text, `pages` is the number of pages processed, and `pages_detail` contains per-page objects with `page` and `text`. ```json { "text": "Example extracted text", "pages": 3, "pages_detail": [ { "page": 1, "text": "First page text" } ] } ``` ## About ## What it does PDF Text Extraction lets you send a PDF file and get the text from every page back in a structured response. It is built for documents where you need the contents, not the layout: contracts, invoices, reports, manuals, and scanned records. The endpoint accepts a single binary `file` in the request body, with a maximum size of 20 MB. The response returns the combined `text` for the document, the total number of `pages`, and a `pages_detail` array with per-page `page` numbers and `text` values. That gives you both a document-level result and page-level output you can index, search, or review independently. Use PDF Text Extraction when you need to feed document text into search, analytics, review workflows, or downstream automation. For example, you can extract contract text before clause parsing, pull invoice text into an accounting pipeline, or split a report into page-level text for auditing and summarisation. If the PDF contains mostly text, this is a straightforward way to turn it into machine-readable content without building your own parser. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/extract-pdf-text * * * --- title: Convert Raw JSON to XML API slug: raw-json-to-xml url: https://apyhub.com/dosvak/service/raw-json-to-xml provider: Dosvak LLC categories: [Developer Tools, File Conversion] tags: [json-to-xml, xml-conversion, serialization, developer-tools, format-conversion] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Convert Raw JSON to XML API Convert a JSON object into a well-formed XML string, with an optional root tag. Built for legacy integrations and format conversion. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/raw-json-to-xml` | What it does Serializes a JSON object into a well-formed XML document. You send the JSON payload in… | 10 | ## Endpoint reference ### Serialize a JSON object into a well-formed XML document `POST https://api.eu.apyhub.com/dosvak/raw-json-to-xml` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `data` | body | object | yes | Example: `{"age":30,"name":"Alice"}`. | | `root` | body | string | no | Root element tag name Default: `root`. | #### Quickstart Convert a JSON object to XML by sending the object data in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/raw-json-to-xml" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"data":{"age":30,"name":"Alice"}}' ``` #### What you'll get back Returns a raw XML output. ```json "30Alice" ``` ## About ## What it does JSON to XML converts a JSON object into a well-formed XML document. Send a JSON payload in `data`, and you get back XML as a plain string. Use `root` when you need a specific top-level element name. If you omit it, the service uses `root` as the default element tag. The endpoint is designed for simple serialization workflows where you need XML output for legacy systems, partner integrations, feeds, or downstream tools that expect XML instead of JSON. `JSON to XML` keeps the contract narrow: the request body contains the JSON object to serialize, and the response is the generated XML document string. That makes it useful for API adapters, internal transformations, and quick format conversion inside automation pipelines. If your application stores data in JSON but must exchange it with XML-based consumers, this service gives you a direct conversion step without extra parsing logic. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/raw-json-to-xml * * * --- title: Convert Raw XML to JSON API slug: raw-xml-to-json url: https://apyhub.com/dosvak/service/raw-xml-to-json provider: Dosvak LLC categories: [Data Extraction, Developer Tools, File Conversion] tags: [xml, json-conversion, parser, data-transformation, developer-tools] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Convert Raw XML to JSON API Convert XML strings into JSON while preserving attributes and text nodes. Built for parsing feeds, legacy integrations, and data normalization. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/raw-xml-to-json` | What it does Parses an XML document sent in the request body and returns a JSON response containing… | 10 | ## Endpoint reference ### Parse an XML document into a JSON object preserving attributes and text `POST https://api.eu.apyhub.com/dosvak/raw-xml-to-json` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `xml` | body | string | yes | Example: `hello`. | #### Quickstart Send your XML in a JSON body to convert it to JSON. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/raw-xml-to-json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"xml":"hello"}' ``` #### What you'll get back Returns a JSON object with `data` and `root` top-level fields. `root` is a string; `data` is present in the schema but has no declared type or shape. ```json { "data": {}, "root": "root" } ``` ## About ## What it does XML to JSON converts an XML document into a JSON object while preserving element attributes and text content. Send XML in the `xml` field and get back a parsed response with `data` and, when available, the document `root` name. Use XML to JSON when you need to normalize XML feeds into a format that is easier to inspect, store, or pass to downstream services. It is useful for import pipelines, integrations with legacy systems, and any workflow that expects JSON rather than nested XML nodes. The input schema is minimal: a request body containing a single `xml` string. The response is similarly straightforward, returning the converted payload as `data` and a `root` string for the top-level element. That makes it a good fit for backend jobs, middleware, and developer tooling where predictable structure matters. If you work with XML from partners, webhooks, or exported documents, XML to JSON gives you a consistent JSON representation without asking you to build your own parser. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/raw-xml-to-json * * * --- title: Detect Age and Gender API slug: detect-age-gender url: https://apyhub.com/dosvak/service/detect-age-gender provider: Dosvak LLC categories: [Artificial Intelligence, Image Processing] tags: [face-detection, age-estimation, gender-classification, image-analysis, computer-vision] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Detect Age and Gender API Analyze an uploaded image and get age ranges, gender, scores, and bounding boxes for every face. Built for moderation and demographic tagging. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/detect-age-gender` | What it does Detects faces in an uploaded image and returns age range and gender information for ea… | 10 | ## Endpoint reference ### Detect faces and return age range and gender for each detected face `POST https://api.eu.apyhub.com/dosvak/detect-age-gender` · 10 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Image file (max 20 MB) | #### Quickstart Upload one image to detect faces and estimate age and gender. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/detect-age-gender" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" ``` #### What you'll get back Returns a JSON object with `results` and `face_count` fields. `results` is an array of detected faces; each item may include `age`, `bbox`, `gender`, `age_score`, `face_index`, and `gender_score`. `face_count` is the number of faces found. ```json { "results": [ { "age": "25-32", "bbox": { "h": 180, "w": 140, "x": 320, "y": 120 }, "gender": "female", "age_score": 0.98, "face_index": 0, "gender_score": 0.99 } ], "face_count": 1 } ``` ## About ## What it does Age and Gender Detection analyzes an uploaded image and returns a face-by-face breakdown of estimated age range and gender. Send one binary image file in the request body and get back a structured result for each detected face, plus the total face count. Each item in `results` includes the predicted `age` label, `gender`, `age_score`, `gender_score`, a `face_index`, and an optional bounding box in `bbox` with `x`, `y`, `w`, and `h`. That makes it easy to map predictions back to the exact face in the source image. Use it when you need to add demographic signals to image workflows, such as sorting user-uploaded photos, analyzing event images, or tagging faces in moderation and analytics pipelines. Because the output is already structured, you can feed it directly into downstream logic without extra parsing. Age and Gender Detection is designed for simple image-based face analysis: upload an image up to 20 MB, process the detected faces, and consume the predictions in your application. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/detect-age-gender * * * --- title: Classify NSFW Image API slug: classify-nsfw-image url: https://apyhub.com/dosvak/service/classify-nsfw-image provider: Dosvak LLC categories: [Artificial Intelligence, Image Processing, "Security & Privacy"] tags: [nsfw-detection, image-classification, content-moderation, image-safety, adult-content] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Classify NSFW Image API Classify an uploaded image as safe or NSFW with a confidence score and per-class breakdown. Built for moderation queues and upload screening. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/classify-nsfw-image` | What it does Uploads an image file and returns an NSFW classification result for that image, includ… | 10 | ## Endpoint reference ### Classify an image as safe or NSFW with confidence score `POST https://api.eu.apyhub.com/dosvak/classify-nsfw-image` · 10 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Image file (max 20 MB) | #### Quickstart Upload an image to classify whether it contains NSFW content. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/classify-nsfw-image" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" ``` #### What you'll get back Returns a JSON object with optional top-level fields: `nsfw` boolean, `label` string, `score` number, and `scores` object. `scores` contains string keys mapped to numeric scores. ```json { "nsfw": false, "label": "safe", "score": 0.98, "scores": { "safe": 0.98, "nsfw": 0.02 } } ``` ## About ## What it does NSFW Image Classifier checks an uploaded image and returns whether it is safe or NSFW. Send a binary image file in the request body, up to 20 MB, and get back a structured classification response. The response includes a boolean `nsfw` flag, a human-readable `label`, a confidence `score` between 0 and 1, and a `scores` object with per-class probabilities. That makes it useful when you need both a simple moderation decision and the underlying confidence values for thresholding or logging. Use NSFW Image Classifier to screen user-uploaded avatars, profile pictures, marketplace listings, or community content before it is published. It fits directly into moderation pipelines where you want to block explicit imagery, route uncertain cases for review, or store a score for later audit. Because the input and output are minimal, it is easy to place this check at the edge of an upload flow or behind an internal moderation queue without reshaping your existing file handling. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/classify-nsfw-image * * * --- title: Enhance Image API slug: auto-enhance-image url: https://apyhub.com/dosvak/service/auto-enhance-image provider: Dosvak LLC categories: [File Manipulation, Image Processing] tags: [image-processing, contrast-enhancement, brightness-adjustment, saturation-boost, clahe, image-transformation] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Enhance Image API Enhance any uploaded image with CLAHE contrast adjustment and saturation boosting. Returns the processed image as binary output, ready to publish. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/auto-enhance-image` | What it does Enhances an uploaded image by adjusting local contrast with CLAHE and increasing satur… | 10 | ## Endpoint reference ### Auto-enhance contrast and brightness using CLAHE with saturation boost `POST https://api.eu.apyhub.com/dosvak/auto-enhance-image` · 10 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Image file (max 20 MB) | | `clip_limit` | body | number | no | CLAHE clip limit — higher values increase local contrast Default: `2`. | | `saturation` | body | number | no | Saturation multiplier (1.0 = no change, 1.5 = vivid) Default: `1.2`. | #### Quickstart Enhance an image by uploading a file with the default enhancement settings. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/auto-enhance-image" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" ``` #### What you'll get back Returns a binary file response (`string` with `format: binary`), so the result is the enhanced image itself. ```text (binary file) ``` ## About ## What it does Auto Enhance Image improves an uploaded image by adjusting local contrast and brightness with CLAHE, then boosting saturation. Send a binary image file and optionally tune `clip_limit` and `saturation`; you get back an enhanced binary image. Use it when source images look flat, dull, or low-contrast and you need a quick preprocessing step before OCR, listing photos, previews, or downstream image analysis. The `clip_limit` input controls how aggressively local contrast is increased, while `saturation` controls color intensity without changing the file structure. The request accepts one required `file` field in the body. You can also set `clip_limit` between 0.5 and 10, and `saturation` between 0.5 and 3. Defaults are `2` and `1.2` respectively, so the service works without extra tuning for many inputs. The response is the processed image as binary data, making Auto Enhance Image easy to place in upload, enrichment, or batch transformation workflows where you need a cleaned-up image as the final output. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/auto-enhance-image * * * --- title: Deblur Image API slug: deblur-image url: https://apyhub.com/dosvak/service/deblur-image provider: Dosvak LLC categories: [File Manipulation] tags: [image-processing, deblurring, sharpening, image-transform, photo-enhancement] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Deblur Image API Sharpen JPEG, PNG, or WebP images with adaptive unsharp mask processing. Tune the strength and get a deblurred binary image back. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/deblur-image` | What it does Sharpens a blurry image by applying an adaptive unsharp mask to the uploaded file. The… | 10 | ## Endpoint reference ### Sharpen a blurry image using adaptive unsharp mask `POST https://api.eu.apyhub.com/dosvak/deblur-image` · 10 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Image file (JPEG/PNG/WebP, max 20 MB) | | `strength` | body | number | no | Sharpening strength (1.5 = moderate, 3.0 = strong) Default: `1.5`. | #### Quickstart Upload an image to deblur it; include the file and let the API use the default sharpening strength. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/deblur-image" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" \ -F "strength=1.5" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the deblurred image. ```text [binary image data] ``` ## About ## What it does Image Deblurring sharpens blurry photos by applying adaptive unsharp mask processing to a single image file. Send a JPEG, PNG, or WebP image in the request body, and get back a binary image response with the blur reduced and edges restored. Use the optional `strength` field to control how aggressively the image is sharpened. The default is `1.5` for moderate correction, and you can raise it up to `5` for stronger sharpening when the source image is especially soft or out of focus. This is useful when you need to improve user-uploaded images before storage, display clearer product photos in an app, or clean up screenshots and scanned visuals that lost detail during capture or compression. Because the output is the processed image itself, it fits directly into image pipelines without extra parsing. Image Deblurring is a straightforward file transformation tool: provide the source image, tune the sharpening level if needed, and receive a deblurred image back. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/deblur-image * * * --- title: Extract Article Summary API slug: summarize-url-content url: https://apyhub.com/dosvak/service/summarize-url-content provider: Dosvak LLC categories: [Artificial Intelligence, Data Extraction] tags: [url-summary, article-summarization, web-content, text-extraction, lsa-summary] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Extract Article Summary API Fetch any URL and get an extractive summary with the title and length metrics. Built for article previews, digests, and content workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/summarize-url-content` | What it does Fetches content from the provided URL and returns an LSA extractive summary of that co… | 10 | ## Endpoint reference ### Fetch, extract, and return an LSA extractive summary `POST https://api.eu.apyhub.com/dosvak/summarize-url-content` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string | yes | Example: `https://bbc.com/news/article-123`. | | `sentences` | body | integer | no | Number of sentences in the extractive summary Default: `5`. | #### Quickstart Summarize the article at a URL into a short extractive summary. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/summarize-url-content" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://apyhub.com","sentences":5}' ``` #### What you'll get back Returns a JSON object with `url`, `title`, `summary`, `input_length`, `summary_length`, and `summary_sentences` fields. ```json { "url": "https://bbc.com/news/article-123", "title": "BBC News Article", "summary": "First sentence. Second sentence. Third sentence. Fourth sentence. Fifth sentence.", "input_length": 1840, "summary_length": 312, "summary_sentences": 5 } ``` ## About ## What it does URL Content Summary fetches a web page, extracts its readable content, and returns an LSA-based extractive summary. Send a `url` and, optionally, `sentences` to control how many summary sentences you want back. The response includes the original `url`, the page `title`, the generated `summary`, and basic length metrics: `input_length`, `summary_length`, and `summary_sentences`. That makes it useful when you need a compact representation of an article, blog post, or news page without building your own crawler and summariser. Use it to preview long-form content, power reading lists, generate internal digests, or compare how much text was reduced after extraction. Because the summary is extractive, it stays close to the source wording and is better suited to factual pages where preserving phrasing matters. If you already have article URLs in your workflow, URL Content Summary gives you a structured way to turn them into concise, machine-readable summaries. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/summarize-url-content * * * --- title: Extract Article Text API slug: extract-article-text url: https://apyhub.com/dosvak/service/extract-article-text provider: Dosvak LLC categories: [Data Extraction, SEO] tags: [article-extraction, web-scraping, text-extraction, content-parsing, url-fetching] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Extract Article Text API Send an article URL and get back the clean body text and title, with nav, ads and boilerplate removed. Built for news scraping, research and LLM input. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/dosvak/extract-article-text` | What it does Fetches the article at the provided URL and returns extracted clean text plus metadata… | 10 | ## Endpoint reference ### Fetch a URL and return clean article text with metadata `POST https://api.eu.apyhub.com/dosvak/extract-article-text` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string | yes | Example: `https://techcrunch.com/2026/07/22/article`. | #### Quickstart Send the article URL to extract its text, title, and metadata. ```bash curl -X POST "https://api.eu.apyhub.com/dosvak/extract-article-text" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://apyhub.com"}' ``` #### What you'll get back Returns a JSON object with these top-level fields: `url` (string), `text` (string), `title` (string), `length` (integer), `final_url` (string), and `content_type` (string). ```json { "url": "https://techcrunch.com/2026/07/22/article", "text": "Article text...", "title": "Article title", "length": 1234, "final_url": "https://techcrunch.com/2026/07/22/article", "content_type": "text/html" } ``` ## About ## What it does The Extract Article Text API is an article extractor that turns a news story or blog post into clean text. Send an article URL and get back the body copy and title, with the navigation, ads, sidebars and other page boilerplate removed. It is one POST endpoint that takes a single `url` field. The response includes `text` for the cleaned article body, `title` for the headline, `length` for the size of the extracted text, `final_url` for the address after any redirects, and `content_type` for the fetched resource. Store `final_url` rather than the URL you sent, since shortened and tracking links often redirect somewhere else. Common uses include news article scraping and aggregation, research and media monitoring, building datasets from published content, and feeding clean article text into AI models, summarizers and RAG pipelines without wasting tokens on menus and footers. If you need every piece of visible text on a page, including navigation and footers, use [Extract Text from Website](https://apyhub.com/apyhub/service/extract-visible-text-from-a-webpage). If you already have the page HTML and want the readable content from it, use [Extract Readable Content from HTML](https://apyhub.com/dosvak/service/extract-html-readable-content). If you want the article analyzed as well as extracted, use [Extract and Analyze Content from Web Page](https://apyhub.com/namastesumalya/service/analyze-an-article). You can try it right here in the playground. Start for free with 5 API calls a day, no card required, and test it on your own article URLs before you commit. The API is also available through [ApyHub MCP](https://apyhub.com/mcp), so AI agents can call it directly to read an article. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/extract-article-text * * * --- title: Generate Sized Screenshot API slug: generate-screenshot url: https://apyhub.com/dosvak/service/generate-screenshot provider: Dosvak LLC categories: [File Manipulation] tags: [screenshot, web-capture, png, browser-automation, visual-testing] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 --- # Generate Sized Screenshot API Capture a PNG screenshot of any URL with optional size and wait controls. Built for QA, archiving, monitoring, and visual regression checks. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/dosvak/generate-screenshot` | What it does Captures a PNG screenshot of the URL you provide and returns the image as binary data.… | 10 | ## Endpoint reference ### Capture a full-page PNG screenshot of any URL `GET https://api.eu.apyhub.com/dosvak/generate-screenshot` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | yes | | | `width` | query | integer | no | Default: `1280`. | | `height` | query | integer | no | Default: `800`. | | `wait_ms` | query | integer | no | Default: `1500`. | | `full_page` | query | boolean | no | Default: `true`. | #### Quickstart Capture a webpage screenshot by passing the target `url` as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/dosvak/generate-screenshot?url=https%3A%2F%2Fexample.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns the screenshot as a binary file (`format: binary`), not JSON. ## About ## What it does Full Page Screenshot captures a PNG screenshot of any URL, with support for browser sizing and page-wait controls. Send a `url`, and optionally set `width`, `height`, `wait_ms`, and `full_page` to control how the page is rendered before the image is returned. Use it when you need a visual snapshot of a web page for QA, audits, documentation, archiving, or monitoring. The response is binary PNG data, so you can store the image, attach it to reports, or feed it into downstream image workflows. Full Page Screenshot is useful for checking layout issues across different viewport sizes, verifying content after client-side rendering, or capturing a complete page for records. If the page loads slowly or depends on scripts, increase `wait_ms` before capture; if you only need the visible viewport, set `full_page` accordingly. It is a straightforward way to turn a live URL into an image artifact your app can save, compare, or share. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/dosvak/service/generate-screenshot * * * --- title: "CSV & JSON Data Cleaning and Deduplication" slug: analyze url: https://apyhub.com/giacomo-petrioli/service/analyze provider: Giacomo Petrioli categories: [Data Validation, Developer Tools] tags: [data-quality, deduplication, csv-validation, record-analysis, schema-checking] auth: api_key version: 1.0.1 service_type: sync endpoints: 2 atoms: 1-10 --- # CSV & JSON Data Cleaning and Deduplication Analyze CSV text or JSON records for duplicates and cleanup issues. Set key, required, and numeric columns before loading data into your system. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/giacomo-petrioli/analyze/analyze` | What it does Analyzes the submitted dataset from either structured records or raw csvtext input. Th… | 10 | | GET | `https://api.eu.apyhub.com/giacomo-petrioli/analyze/capabilities` | What it does Retrieves the capabilities response for this endpoint. The output is a JSON object, an… | 1 | ## Endpoint reference ### Analyze CSV/JSON `POST https://api.eu.apyhub.com/giacomo-petrioli/analyze/analyze` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `records` | body | any | no | Records | | `csv_text` | body | any | no | Csv Text | | `key_columns` | body | array of string | no | Key Columns | | `trim_strings` | body | boolean | no | Trim Strings Default: `true`. | | `drop_blank_rows` | body | boolean | no | Drop Blank Rows Default: `true`. | | `numeric_columns` | body | array of string | no | Numeric Columns | | `required_columns` | body | array of string | no | Required Columns | | `case_sensitive_keys` | body | boolean | no | Case Sensitive Keys Default: `false`. | #### Quickstart Send a small set of records to analyze for duplicates, using the required JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/giacomo-petrioli/analyze/analyze" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "records": [ { "id": "rec-001", "name": "Ava Patel", "email": "ava@example.com" }, { "id": "rec-002", "name": "Ava Patel", "email": "ava@example.com" } ], "key_columns": ["email"] }' ``` #### What you'll get back Returns a JSON object. The schema does not declare any top-level response fields, so the exact shape is not specified here. ```json { "summary": { "rows_input": 2, "rows_output": 1, "columns": [ "email", "id", "name" ], "duplicates_removed": 1, "blank_rows_removed": 0, "quality_issues": 1 }, "duplicate_rows": [ { "row_index": 1, "duplicate_of": 0, "key": { "email": "ava@example.com" } } ], "missing_required": {}, "numeric_errors": {}, "null_counts": { "email": 0, "id": 0, "name": 0 }, "type_profiles": { "email": { "string": 1 }, "id": { "string": 1 }, "name": { "string": 1 } }, "cleaned_records": [ { "email": "ava@example.com", "id": "rec-001", "name": "Ava Patel" } ], "content_sha256": "d64b9099ea25293222205400a7e797d03852cbee43aef24831d1d3b7c77e6107" } ``` ### Capabilities `GET https://api.eu.apyhub.com/giacomo-petrioli/analyze/capabilities` · 1 atoms · accepts `application/json` #### Quickstart Fetch the service capabilities with a simple GET request. ```bash curl -X GET "https://api.eu.apyhub.com/giacomo-petrioli/analyze/capabilities" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with additional top-level properties. The schema does not define fixed fields, so the response shape may vary. ```json { "service": "Data Quality & Deduplication API", "version": "1.0.1", "inputs": [ "JSON records", "CSV text" ], "features": [ "configurable key-based deduplication", "whitespace normalization", "blank-row removal", "required-field checks", "numeric-field validation", "null and type profiles", "SHA-256 cleaned-content receipt" ], "limits": { "records": 10000, "columns": 200, "body_bytes": 5242880 }, "data_handling": { "application_storage": "none", "executes_input": false, "follows_input_urls": false, "note": "The hosting provider and marketplace proxy may maintain their own metadata logs." } } ``` ## About ## What it does CSV & JSON Data Cleaning and Deduplication checks tabular data for common cleanup and deduplication issues. Send it either `records` as an array of objects or `csv_text`, then provide the columns you want treated as record keys with `key_columns`. Use the built-in options to control how rows are normalised before analysis. `trim_strings` removes surrounding whitespace, `drop_blank_rows` skips empty rows, `numeric_columns` marks fields that should be treated as numbers, `required_columns` lists fields that must be present, and `case_sensitive_keys` controls whether key matching respects letter case. The response schema is intentionally broad, so the service returns a structured analysis result without promising fixed field names. In practice, that makes it suitable for data validation pipelines, CSV ingestion checks, and duplicate detection before loading records into a database or analytics warehouse. If you need to sanity-check exports from forms, spreadsheets, or ETL jobs, CSV & JSON Data Cleaning and Deduplication gives you a consistent way to inspect incoming rows and compare them against the key columns you care about. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/giacomo-petrioli/service/analyze * * * --- title: Email and IP Risk Analyzer slug: analyze-email-ip url: https://apyhub.com/egemenkto/service/analyze-email-ip provider: Fraudox OSINT categories: [Data Validation, "Security & Privacy"] tags: [email-risk, ip-risk, fraud-detection, vpn-detection, proxy-detection, tor-detection] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 --- # Email and IP Risk Analyzer Score an email and IP pair for abuse risk. Returns a verdict plus checks for DNS, typo-squats, disposable domains, Gravatar, and proxy ports. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/egemenkto/analyze-email-ip` | What it does Analyzes the provided email address and IP address in one request and returns an aggre… | 100 | ## Endpoint reference ### Analyze Email and IP `POST https://api.eu.apyhub.com/egemenkto/analyze-email-ip` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `ip` | body | string | yes | Target IP address for open port scanning (VPN, Proxy, Tor nodes). Example: `8.8.8.8`. | | `email` | body | string (email) | yes | Target email address for typo-squatting, DNS, social footprint, and disposable checks. Example: `pankaj@apyhub.com`. | #### Quickstart Check an email address and IP for common fraud and OSINT signals with one request. ```bash curl -X POST "https://api.eu.apyhub.com/egemenkto/analyze-email-ip" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "email": "test@gmail.com", "ip": "8.8.8.8" }' ``` #### What you'll get back Returns a JSON object with top-level fields such as `ip` and `email` (the analyzed inputs), `verdict` (`ALLOW`, `REVIEW`, or `BLOCK`), `timestamp`, and `risk_score`, plus analysis objects like `dns_analysis`, `port_scan_analysis`, `typo_squat_analysis`, `disposable_email_analysis`, and `social_footprint_analysis` when available. ```json { "email": "test@gmail.com", "ip": "8.8.8.8", "risk_score": 5, "verdict": "ALLOW", "typo_squat_analysis": { "domain": "gmail.com", "is_known_provider": true, "is_suspicious_typosquat": false, "risk_contribution": 0 }, "dns_analysis": { "domain": "gmail.com", "domain_resolvable": true, "has_mx_record": true, "mx_records": [ "gmail-smtp-in.l.google.com.", "alt1.gmail-smtp-in.l.google.com.", "alt2.gmail-smtp-in.l.google.com.", "alt3.gmail-smtp-in.l.google.com.", "alt4.gmail-smtp-in.l.google.com." ], "has_spf_record": true, "spf_record": "v=spf1 redirect=_spf.google.com", "has_dmarc_record": true, "dmarc_record": "v=DMARC1; p=none; sp=quarantine; rua=mailto:mailauth-reports@google.com", "from_cache": true, "risk_contribution": 0 }, "social_footprint_analysis": { "email_md5": "1aedb8d9dc4751e229a335e371db8058", "gravatar_exists": false, "gravatar_url": "https://www.gravatar.com/avatar/1aedb8d9dc4751e229a335e371db8058?d=404", "http_status_code": 404, "from_cache": true, "risk_contribution": 5 }, "port_scan_analysis": { "ip": "8.8.8.8", "valid_ip": true, "scanned_ports": [ { "port": 8080, "is_open": false, "service_hint": "HTTP Proxy / Alt-HTTP" }, { "port": 1194, "is_open": false, "service_hint": "OpenVPN" }, { "port": 3128, "is_open": false, "service_hint": "Squid HTTP Proxy" }, { "port": 1080, "is_open": false, "service_hint": "SOCKS Proxy" } ], "any_proxy_port_open": false, "scan_duration_ms": 501, "from_cache": true, "risk_contribution": 0 }, "disposable_email_analysis": { "domain": "gmail.com", "is_disposable": false, "database_size": 8069, "database_last_updated": "2026-07-20T08:33:21.872928281Z", "risk_contribution": 0 }, "partial_result": false, "processing_time_ms": 0, "timestamp": "2026-07-20T08:42:39.917789898Z" } ``` ## About ## What it does Fraudox OSINT analyzes an email address and an IP address in one request, then returns a risk-focused decision you can use in signup, lead, or abuse workflows. Send an `email` and an `ip`, and you get back the same values plus a `verdict`, `risk_score`, and `timestamp`. The response can also include module-level findings for DNS checks, typo-squat detection, disposable-email detection, social footprint lookup, and IP port scanning. When a module cannot complete, `partial_result` tells you the result is incomplete. Use Fraudox OSINT when you need to screen registrations, flag suspicious accounts, or add friction to high-risk logins and contact forms. The DNS analysis shows whether the email domain resolves and whether it publishes MX, SPF, and DMARC records. The IP scan checks for open ports associated with VPN, proxy, or Tor services, which is useful for abuse prevention and risk scoring. Because the response separates each module, you can decide how to handle ALLOW, REVIEW, and BLOCK outcomes in your own application logic without guessing how the score was built. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/egemenkto/service/analyze-email-ip * * * --- title: "Find & Compare Film Festivals Around the World" slug: film-festivals-around-world url: https://apyhub.com/ryanvinson/service/film-festivals-around-world provider: Ryan Vinson categories: [Geolocation, Standard Data, Travel] tags: [festivals, event-discovery, film-festivals, search, dataset, rosters] auth: api_key version: 1.0.3 service_type: sync endpoints: 6 atoms: 1 --- # Find & Compare Film Festivals Around the World Browse festival data by country, category, deadline, date, and fee. Returns festival details, top-scored listings, and roster records with metadata. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/ryanvinson/film-festivals-around-world/festival/countries` | What it does Returns a JSON object with a count integer field and a results array field. Each item… | 1 | | GET | `https://api.eu.apyhub.com/ryanvinson/film-festivals-around-world/categories` | What it does Returns a JSON object containing a total count and a results array of category objects… | 1 | | GET | `https://api.eu.apyhub.com/ryanvinson/film-festivals-around-world/festivals/list` | What it does Returns a paginated list of festivals filtered by the optional query parameters. The r… | 1 | | GET | `https://api.eu.apyhub.com/ryanvinson/film-festivals-around-world/festival/detail/:id` | What it does Retrieves the details for a single festival identified by its path id. The response is… | 1 | | GET | `https://api.eu.apyhub.com/ryanvinson/film-festivals-around-world/top/scored/festivals` | What it does Returns a paginated list of top scored festivals. The response is a JSON object contai… | 1 | | GET | `https://api.eu.apyhub.com/ryanvinson/film-festivals-around-world/festivals/:id/roster` | What it does Returns a paginated roster of films for the festival identified by id. The response is… | 1 | ## Endpoint reference ### List available countries `GET https://api.eu.apyhub.com/ryanvinson/film-festivals-around-world/festival/countries` · 1 atoms · accepts `application/json` #### Quickstart This GET request fetches the festival count summary. ```bash curl -X GET "https://api.eu.apyhub.com/ryanvinson/film-festivals-around-world/festival/countries" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `count` integer and a `results` array. Each item in `results` is an object with a `country` string and a `festival_count` integer. ```json { "count": 2, "results": [ { "country": "India", "festival_count": 24 }, { "country": "Japan", "festival_count": 15 } ] } ``` ### List categories `GET https://api.eu.apyhub.com/ryanvinson/film-festivals-around-world/categories` · 1 atoms · accepts `application/json` #### Quickstart Make a simple GET request to fetch the endpoint’s JSON response. ```bash curl -X GET "https://api.eu.apyhub.com/ryanvinson/film-festivals-around-world/categories" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with: - `count` (`integer`): the total count value. - `results` (`array`): an array of objects, each with: - `count` (`integer`) - `category` (`string`) ```json { "count": 29, "results": [ { "category": "short_film", "count": 2291 }, { "category": "feature", "count": 1655 }, { "category": "documentary", "count": 1241 }, { "category": "music", "count": 4 }, { "category": "vertical", "count": 3 }, { "category": "thriller", "count": 3 }, { "category": "design", "count": 2 }, { "category": "games", "count": 2 }, { "category": "dance", "count": 1 }, { "category": "fashion", "count": 1 }, { "category": "romance", "count": 1 } ] } ``` ### List film festivals `GET https://api.eu.apyhub.com/ryanvinson/film-festivals-around-world/festivals/list` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `q` | query | string | no | | | `page` | query | integer | no | Default: `1`. | | `sort` | query | string | no | One of: name, deadline, event_date. | | `genre` | query | string | no | | | `state` | query | string | no | | | `country` | query | string | no | | | `fee_max` | query | number | no | | | `category` | query | string | no | | | `per_page` | query | integer | no | Default: `20`. | | `deadline_after` | query | string (date) | no | | | `deadline_before` | query | string (date) | no | | | `event_date_before` | query | string (date) | no | | | `submission_platform` | query | string | no | | #### Quickstart Fetch a page of results, optionally filtered by query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/ryanvinson/film-festivals-around-world/festivals/list" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `count`, `page`, `per_page`, `total_pages`, and `results` fields. `results` is an array of objects, each containing required `id`, `name`, `country`, `categories`, and `genres` fields, plus other fields when present. ```json { "count": 1, "page": 1, "per_page": 20, "total_pages": 1, "results": [ { "id": 123, "name": "Spring Design Awards", "country": "US", "categories": ["Design"], "genres": ["Graphic Design"] } ] } ``` ### Get film festival detail `GET https://api.eu.apyhub.com/ryanvinson/film-festivals-around-world/festival/detail/:id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | path | integer | yes | | #### Quickstart Fetch the festival record for a specific ID by putting the required path parameter in the URL. ```bash curl -X GET "https://api.eu.apyhub.com/ryanvinson/film-festivals-around-world/festival/detail/:id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with the required `id`, `name`, `country`, `categories`, and `genres` fields, plus additional optional fields when available. ```json { "id": 123, "name": "Sundance Film Festival", "country": "United States", "categories": ["Film"], "genres": ["Drama"] } ``` ### Get top scored film festivals `GET https://api.eu.apyhub.com/ryanvinson/film-festivals-around-world/top/scored/festivals` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `page` | query | integer | no | Default: `1`. | | `per_page` | query | integer | no | Default: `20`. | #### Quickstart List results with the default pagination. ```bash curl -X GET "https://api.eu.apyhub.com/ryanvinson/film-festivals-around-world/top/scored/festivals?page=1&per_page=20" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `page`, `count`, `per_page`, `total_pages`, and `results` fields. `results` is an array of objects; each item includes `id`, `name`, `country`, `categories`, and `genres`, plus the other fields defined in the schema when present. ```json { "page": 1, "count": 1, "per_page": 20, "total_pages": 1, "results": [ { "id": 123, "name": "Open Photography Awards", "country": "United States", "categories": ["Photography"], "genres": ["Portrait"] } ] } ``` ### Get film festival roster `GET https://api.eu.apyhub.com/ryanvinson/film-festivals-around-world/festivals/:id/roster` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | path | integer | yes | | | `page` | query | integer | no | Default: `1`. | | `per_page` | query | integer | no | Default: `20`. | #### Quickstart Fetch a festival’s film list by its `id`, with the default page settings. ```bash curl -X GET "https://api.eu.apyhub.com/ryanvinson/film-festivals-around-world/festivals/:id/roster?page=1&per_page=20" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `festival_id`, `festival_name`, `count`, `page`, `per_page`, `total_pages`, and `results` fields. `results` is an array of objects; each item can include `id`, `film_year`, `film_award`, `film_genre`, `film_title`, `festival_id`, `film_category`, and `film_director`. ```json { "festival_id": 123, "festival_name": "Toronto International Film Festival", "count": 2, "page": 1, "per_page": 20, "total_pages": 1, "results": [ { "id": 1, "film_year": 2024, "film_award": "Best Feature", "film_genre": "Drama", "film_title": "Northern Lights", "festival_id": 123, "film_category": "Feature", "film_director": "Ava Martin" } ] } ``` ## About ## What it does Festival Listings gives you searchable data on festivals, their categories, countries, deadlines, dates, fees, and roster details. Use the list endpoints to browse festivals with filters for `q`, `genre`, `state`, `country`, `fee_max`, `category`, `deadline_after`, `deadline_before`, `event_date_before`, and `submission_platform`. You can also sort by `name`, `deadline`, or `event_date`, and page through results with `page` and `per_page`. Each festival summary includes fields such as `id`, `name`, `country`, `categories`, `genres`, plus optional metadata like `city`, `state`, `website`, `event_dates`, `regular_fee`, `deadline_regular`, `deadline_late`, `event_start_date`, `composite_score`, and `submission_platforms`. If you need a single record, fetch festival detail by `id` to get the full festival object, including `description`, `fees`, `accepts_awards`, `acceptance_rate`, `year_founded`, `deadline_extended`, `notification_date`, `past_winners`, and `programming_directors` when available. For ranking workflows, the top-scored festivals endpoint returns the same festival summary shape ordered by score. The country and category endpoints help you build filters and navigation from the dataset itself. The festival roster endpoint returns results for a given festival `id`, with film-level fields like `film_title`, `film_year`, `film_award`, `film_genre`, `film_category`, and `film_director`. That makes Festival Listings useful for festival discovery tools, submission trackers, awards research, and content databases. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/ryanvinson/service/film-festivals-around-world * * * --- title: Research Keywords API slug: keyword-research url: https://apyhub.com/se-ranking/service/keyword-research provider: "SE Ranking SEO & AI Search API" categories: [SEO] tags: [keyword-research, search-volume, seo, keyword-ideas] auth: api_key version: 1.0.0 service_type: job endpoints: 5 atoms: 100-1000 --- # Research Keywords API Keyword research API from SE Ranking: get search volume, CPC, difficulty, and intent for up to 5,000 keywords, plus related ideas. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/se-ranking/keyword-research/v1/keywords/export` | What it does Exports bulk keyword metrics for the keywords you submit, using the selected source qu… | 1000 | | GET | `https://api.eu.apyhub.com/se-ranking/keyword-research/v1/keywords/longtail` | What it does Retrieves longtail keyword suggestions for a given source and keyword. The response re… | 100 | | GET | `https://api.eu.apyhub.com/se-ranking/keyword-research/v1/keywords/similar` | What it does Returns a list of keywords similar to the keyword you provide, along with the total nu… | 1000 | | GET | `https://api.eu.apyhub.com/se-ranking/keyword-research/v1/keywords/questions` | What it does Returns question keyword suggestions for the provided keyword and source, with optiona… | 1000 | | GET | `https://api.eu.apyhub.com/se-ranking/keyword-research/v1/keywords/related` | What it does Returns related keywords for the source and keyword query inputs, with optional sortin… | 1000 | ## Endpoint reference ### Export Keywords Metrics `POST https://api.eu.apyhub.com/se-ranking/keyword-research/v1/keywords/export` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `sort` | body | string | no | One of: volume, cpc, difficulty, competition. Default: `cpc`. | | `keywords` | body | array of string | yes | | | `history_to` | body | string (date) | no | Day is ignored; defaults to current month. | | `sort_order` | body | string | no | One of: asc, desc. Default: `desc`. | | `history_from` | body | string (date) | no | Day is ignored; only takes effect together with history_to. | | `source` | query | string | yes | | #### Quickstart Export keyword research results for a source and a list of keywords. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/keyword-research/v1/keywords/export?source=de" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"keywords":["seo tools"]}' ``` #### What you'll get back Returns a JSON array of objects. Each object can include `keyword`, `cpc`, `volume`, `intents`, `difficulty`, `competition`, `history_trend`, and `is_data_found`. ```json [ { "keyword": "seo tools", "cpc": 2.34, "volume": 5400, "intents": ["I"], "difficulty": 42, "competition": 0.61, "history_trend": { "2026-01-01": 5200 }, "is_data_found": true } ] ``` ### Get longtail keywords `GET https://api.eu.apyhub.com/se-ranking/keyword-research/v1/keywords/longtail` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Default: `100`. | | `offset` | query | integer | no | Default: `0`. | | `source` | query | string | yes | | | `keyword` | query | string | yes | | #### Quickstart Get long-tail keyword suggestions for a source and keyword, with optional pagination in the query string. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/keyword-research/v1/keywords/longtail?source=de&keyword=running%20shoes" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `total` integer and a `keywords` array of strings. ```json { "total": 3, "keywords": ["best running shoes for men", "running shoes for flat feet", "lightweight running shoes"] } ``` ### Get similar keywords `GET https://api.eu.apyhub.com/se-ranking/keyword-research/v1/keywords/similar` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `sort` | query | string | no | One of: keyword, volume, cpc, difficulty, competition. | | `limit` | query | integer | no | Default: `100`. | | `offset` | query | integer | no | Default: `0`. | | `source` | query | string | yes | | | `keyword` | query | string | yes | | | `sort_order` | query | string | no | One of: asc, desc. Default: `desc`. | | `history_trend` | query | boolean | no | Default: `false`. | | `filter[cpc][to]` | query | number | no | | | `filter[intents]` | query | string | no | | | `filter[cpc][from]` | query | number | no | | | `filter[volume][to]` | query | integer | no | | | `filter[volume][from]` | query | integer | no | | | `filter[serp_features]` | query | string | no | | | `filter[difficulty][to]` | query | integer | no | | | `filter[competition][to]` | query | number | no | | | `filter[difficulty][from]` | query | integer | no | | | `filter[competition][from]` | query | number | no | | | `filter[keyword_count][to]` | query | integer | no | | | `filter[keyword_count][from]` | query | integer | no | | | `filter[characters_count][to]` | query | integer | no | | | `filter[characters_count][from]` | query | integer | no | | | `filter[multi_keyword_excluded]` | query | string | no | | | `filter[multi_keyword_included]` | query | string | no | | #### Quickstart Fetch similar keywords for a given source and keyword, using the required query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/keyword-research/v1/keywords/similar?source=de&keyword=coffee" -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `total` integer and a `keywords` array. Each item in `keywords` is an object that can include `keyword`, `volume`, `cpc`, `intents`, `difficulty`, `competition`, `history_trend`, and `serp_features`. ```json { "total": 2, "keywords": [ { "keyword": "coffee beans", "volume": 90500, "cpc": 1.24, "intents": ["I", "T"], "difficulty": 42, "competition": 0.37, "history_trend": null, "serp_features": ["Featured snippet"] } ] } ``` ### Get question keywords `GET https://api.eu.apyhub.com/se-ranking/keyword-research/v1/keywords/questions` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `sort` | query | string | no | One of: keyword, volume, cpc, difficulty, competition. | | `limit` | query | integer | no | Default: `100`. | | `offset` | query | integer | no | Default: `0`. | | `source` | query | string | yes | | | `keyword` | query | string | yes | | | `sort_order` | query | string | no | One of: asc, desc. Default: `desc`. | | `history_trend` | query | boolean | no | Default: `false`. | | `filter[cpc][to]` | query | number | no | | | `filter[intents]` | query | string | no | | | `filter[cpc][from]` | query | number | no | | | `filter[volume][to]` | query | integer | no | | | `filter[volume][from]` | query | integer | no | | | `filter[serp_features]` | query | string | no | | | `filter[difficulty][to]` | query | integer | no | | | `filter[competition][to]` | query | number | no | | | `filter[difficulty][from]` | query | integer | no | | | `filter[competition][from]` | query | number | no | | | `filter[keyword_count][to]` | query | integer | no | | | `filter[keyword_count][from]` | query | integer | no | | | `filter[characters_count][to]` | query | integer | no | | | `filter[characters_count][from]` | query | integer | no | | | `filter[multi_keyword_excluded]` | query | string | no | | | `filter[multi_keyword_included]` | query | string | no | | #### Quickstart Search for question-style keyword ideas for a source and keyword. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/keyword-research/v1/keywords/questions?source=de&keyword=seo+tools" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `total` integer and a `keywords` array. Each item in `keywords` is an object that may include `keyword`, `volume`, `cpc`, `difficulty`, `competition`, `intents`, `history_trend`, and `serp_features`. ```json { "total": 2, "keywords": [ { "keyword": "seo tools for small business", "volume": 2400, "cpc": 1.85, "difficulty": 36, "competition": 0.42, "intents": ["I", "C"], "history_trend": null, "serp_features": ["Featured snippet", "People also ask"] } ] } ``` ### Get related keywords `GET https://api.eu.apyhub.com/se-ranking/keyword-research/v1/keywords/related` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `sort` | query | string | no | One of: keyword, volume, cpc, difficulty, competition. | | `limit` | query | integer | no | Default: `100`. | | `offset` | query | integer | no | Default: `0`. | | `source` | query | string | yes | | | `keyword` | query | string | yes | | | `sort_order` | query | string | no | One of: asc, desc. Default: `desc`. | | `history_trend` | query | boolean | no | Default: `false`. | | `filter[cpc][to]` | query | number | no | | | `filter[intents]` | query | string | no | | | `filter[cpc][from]` | query | number | no | | | `filter[volume][to]` | query | integer | no | | | `filter[volume][from]` | query | integer | no | | | `filter[serp_features]` | query | string | no | | | `filter[difficulty][to]` | query | integer | no | | | `filter[competition][to]` | query | number | no | | | `filter[difficulty][from]` | query | integer | no | | | `filter[competition][from]` | query | number | no | | | `filter[keyword_count][to]` | query | integer | no | | | `filter[keyword_count][from]` | query | integer | no | | | `filter[characters_count][to]` | query | integer | no | | | `filter[characters_count][from]` | query | integer | no | | | `filter[multi_keyword_excluded]` | query | string | no | | | `filter[multi_keyword_included]` | query | string | no | | #### Quickstart Search for related keywords for a given source and keyword using the required query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/keyword-research/v1/keywords/related?source=de&keyword=keyword+research" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `total` integer and a `keywords` array. Each item in `keywords` is an object that can include fields like `keyword` and `volume`, along with other keyword metrics from the schema. ```json { "total": 2, "keywords": [ { "keyword": "keyword research tools", "volume": 1900, "cpc": 1.24, "relevance": 98 } ] } ``` ## About ## What it does The Keyword Research API returns search metrics and new keyword ideas from SE Ranking's keyword database. Send a list of keywords or a seed term with a `source` database (for example `de`), and get JSON with `volume`, `cpc`, `difficulty`, `competition`, and `intents` for each keyword. The export endpoint scores up to 5,000 keywords in one POST and can include monthly history with `history_from` and `history_to`. Four discovery endpoints expand a seed `keyword` into similar, related, question, and long-tail keywords. Filter ideas by volume, CPC, difficulty, competition, intent, SERP features, and word count, then sort and page through results with `limit` and `offset`. Use this keyword research API as a keyword search volume API inside content tools, to build topic clusters from question keywords, to score a backlog of target terms by difficulty, or to feed PPC planning with CPC data. Agencies use the keyword API to pull research into client spreadsheets and dashboards. Check who ranks for the winning terms with the [SERP API](https://apyhub.com/se-ranking/service/serp-results-classic), gauge the links needed to compete with the [Backlinks API](https://apyhub.com/se-ranking/service/backlinks), and group keywords from existing articles with the [Keyword Clustering API](https://apyhub.com/apyhub/service/extract-and-group-keywords-from-article). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/se-ranking/service/keyword-research * * * --- title: Analyze AI Search Performance API slug: ai-search url: https://apyhub.com/se-ranking/service/ai-search provider: "SE Ranking SEO & AI Search API" categories: [Artificial Intelligence, Marketing, SEO] tags: [ai-visibility, ai-search, geo, llm-seo, brand-monitoring] auth: api_key version: 1.0.0 service_type: job endpoints: 6 atoms: 500-40000 --- # Analyze AI Search Performance API AI visibility API that shows how a brand or domain appears in AI search: brand and link presence, prompts, and share of voice. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/se-ranking/ai-search/v1/ai-search/overview/by-engine/time-series` | What it does Returns an AI search overview for a given engine, source, and target as a JSON object… | 4000 | | GET | `https://api.eu.apyhub.com/se-ranking/ai-search/v1/ai-search/discover-brand` | What it does Discovers brand names from the supplied target and source values using the selected sc… | 500 | | GET | `https://api.eu.apyhub.com/se-ranking/ai-search/v1/ai-search/overview/aggregated/time-series` | What it does Retrieves an aggregated AI search overview across engines for the requested target and… | 10000 | | POST | `https://api.eu.apyhub.com/se-ranking/ai-search/v1/ai-search/overview/leaderboard` | What it does Returns an AI search leaderboard for a primary target and up to 10 competitors, using… | 40000 | | GET | `https://api.eu.apyhub.com/se-ranking/ai-search/v1/ai-search/prompts-by-target` | What it does Returns a list of prompts for the specified engine, target, source, and scope, with op… | 10000 | | GET | `https://api.eu.apyhub.com/se-ranking/ai-search/v1/ai-search/prompts-by-brand` | What it does Returns a list of prompts for a given brand and source, with optional sorting and filt… | 10000 | ## Endpoint reference ### Get AI Search Overview — Single Engine (Trend) `GET https://api.eu.apyhub.com/se-ranking/ai-search/v1/ai-search/overview/by-engine/time-series` · 4000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `brand` | query | string | no | | | `scope` | query | string | no | One of: domain, base_domain, url. Default: `base_domain`. | | `engine` | query | string | yes | | | `source` | query | string | yes | | | `target` | query | string | yes | | #### Quickstart Fetch the time-series overview for an AI search engine by passing the required query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/ai-search/v1/ai-search/overview/by-engine/time-series?engine=ai-overview&source=us&target=seranking.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with two top-level objects: `summary` and `time_series`. - `summary` contains `link_presence`, `brand_presence`, `average_position`, and `ai_opportunity_traffic`, each as an object with `current`, `previous`, `change_percent`, and `change_absolute` number fields. - `time_series` contains arrays for `ai_traffic`, `link_presence`, `organic_traffic`, `overall_traffic`, and `average_position`; each array item has a `date` string in `YYYY-MM` format and a numeric `value`. ```json { "summary": { "link_presence": { "current": 0, "previous": 0, "change_percent": 0, "change_absolute": 0 } }, "time_series": { "ai_traffic": [ { "date": "2024-01", "value": 0 } ] } } ``` ### discover brand `GET https://api.eu.apyhub.com/se-ranking/ai-search/v1/ai-search/discover-brand` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `scope` | query | string | yes | One of: domain, base_domain, url. Default: `base_domain`. | | `source` | query | string | yes | | | `target` | query | string | yes | | #### Quickstart Find brand suggestions for a target by passing the required query parameters in a simple GET request. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/ai-search/v1/ai-search/discover-brand?source=us&target=seranking.com&scope=base_domain" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `brands` array of strings. Each string is a discovered brand name. ```json { "brands": [ "Example" ] } ``` ### Get AI Search Overview — All Engines (Trend) `GET https://api.eu.apyhub.com/se-ranking/ai-search/v1/ai-search/overview/aggregated/time-series` · 10000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `brand` | query | string | no | | | `scope` | query | string | no | One of: domain, base_domain, url. Default: `base_domain`. | | `source` | query | string | yes | | | `target` | query | string | yes | | #### Quickstart Compare AI search metrics for a target against a source using the required query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/ai-search/v1/ai-search/overview/aggregated/time-series?source=us&target=seranking.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with optional `summary` and `time_series` objects. - `summary` contains metric objects such as `link_presence`, `brand_presence`, `average_position`, and `ai_opportunity_traffic`, each with `current`, `previous`, `change_percent`, and `change_absolute` numbers. - `time_series` contains arrays such as `ai_traffic`, `link_presence`, `organic_traffic`, `overall_traffic`, and `average_position`, where each item has a `date` string in `YYYY-MM` format and a numeric `value`. ```json { "summary": { "link_presence": { "current": 12.5, "previous": 10.2, "change_percent": 22.55, "change_absolute": 2.3 } }, "time_series": { "ai_traffic": [ { "date": "2024-05", "value": 120.4 } ] } } ``` ### Compare Brand vs Competitors (AI Leaderboard) `POST https://api.eu.apyhub.com/se-ranking/ai-search/v1/ai-search/overview/leaderboard` · 40000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `scope` | body | string | no | One of: domain, base_domain, url. Default: `base_domain`. | | `source` | body | string | yes | | | `engines` | body | array of string | yes | | | `primary.brand` | body | string | no | | | `primary.target` | body | string | no | | | `competitors` | body | array of object | yes | | | `competitors[].brand` | body | string | no | | | `competitors[].target` | body | string | no | | #### Quickstart Compare one primary brand against at least one competitor across selected AI engines. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/ai-search/v1/ai-search/overview/leaderboard" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "source": "us", "engines": ["ai-overview"], "primary": { "brand": "SE Ranking", "target": "seranking.com" }, "competitors": [ { "brand": "Semrush", "target": "semrush.com" } ] }' ``` #### What you'll get back Returns a JSON object with three top-level fields: `results` is an object keyed by domain, then by engine; `leaderboard` is an array of ranked result objects; and `request_metadata` is an object summarizing the request context. ```json { "results": {}, "leaderboard": [ { "rank": 1, "domain": "example.com", "link_presence": 1, "brand_presence": 1, "share_of_voice": 0.75, "is_primary_target": true } ], "request_metadata": { "source": "example.com", "engines": ["ai-overview"], "primary": "Example", "competitors": ["Competitor"] } } ``` ### prompts by target `GET https://api.eu.apyhub.com/se-ranking/ai-search/v1/ai-search/prompts-by-target` · 10000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `sort` | query | string | no | One of: volume, type, snippet_length. Default: `volume`. | | `limit` | query | integer | no | Default: `100`. | | `scope` | query | string | yes | One of: domain, base_domain, url. Default: `base_domain`. | | `engine` | query | string | yes | | | `offset` | query | integer | no | Default: `0`. | | `source` | query | string | yes | | | `target` | query | string | yes | | | `sort_order` | query | string | no | One of: asc, desc. Default: `desc`. | | `filter[volume][to]` | query | integer | no | | | `filter[volume][from]` | query | integer | no | | | `filter[keyword_count][to]` | query | integer | no | | | `filter[keyword_count][from]` | query | integer | no | | | `filter[characters_count][to]` | query | integer | no | | | `filter[characters_count][from]` | query | integer | no | | | `filter[multi_keyword_excluded]` | query | string | no | | | `filter[multi_keyword_included]` | query | string | no | | #### Quickstart Fetch prompts for a target search term with the required query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/ai-search/v1/ai-search/prompts-by-target?engine=ai-mode&target=seranking.com&source=us&scope=base_domain" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `date` as a string date, `total` as an integer, and `prompts` as an array of objects. Each prompt object can include `type`, `answer` (with `text` and `links`), `prompt`, and `volume`. ```json { "date": "2026-07-27", "total": 1, "prompts": [ { "type": "Link", "answer": { "text": "Some example answer", "links": ["https://example.com"] }, "prompt": "ai search prompts", "volume": 100 } ] } ``` ### prompts by brand `GET https://api.eu.apyhub.com/se-ranking/ai-search/v1/ai-search/prompts-by-brand` · 10000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `sort` | query | string | no | One of: volume, type, snippet_length. Default: `volume`. | | `brand` | query | string | yes | | | `limit` | query | integer | no | Default: `100`. | | `engine` | query | string | yes | | | `offset` | query | integer | no | Default: `0`. | | `source` | query | string | yes | | | `sort_order` | query | string | no | One of: asc, desc. Default: `desc`. | | `filter[volume][to]` | query | integer | no | | | `filter[volume][from]` | query | integer | no | | | `filter[keyword_count][to]` | query | integer | no | | | `filter[keyword_count][from]` | query | integer | no | | | `filter[characters_count][to]` | query | integer | no | | | `filter[characters_count][from]` | query | integer | no | | | `filter[multi_keyword_excluded]` | query | string | no | | | `filter[multi_keyword_included]` | query | string | no | | #### Quickstart Fetch brand-related prompts by passing the required query parameters for engine, brand, and source. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/ai-search/v1/ai-search/prompts-by-brand?engine=perplexity&brand=SE%20Ranking&source=us" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `date` as a string in `YYYY-MM-DD` format, `total` as an integer, and `prompts` as an array of prompt objects. Each prompt object can include `type` (string), `answer` (object with `text` and `links`), `prompt` (string), and `volume` (integer). ```json { "date": "2026-07-27", "total": 1, "prompts": [ { "type": "Brand", "answer": { "text": "Example answer", "links": ["https://example.com"] }, "prompt": "Example prompt", "volume": 100 } ] } ``` ## About ## What it does The AI Visibility API measures how a brand or domain shows up in AI search answers. Send a `target` domain, a `source` market, and an `engine`, and get back JSON with brand presence, link presence, average position, and monthly time series. Six endpoints cover the workflow. Discover Brand returns the brand names tied to a domain. The overview endpoints report trends for one engine or for all engines combined. The leaderboard compares your brand against 1 to 10 competitors and returns a ranked list with `share_of_voice`. Prompts by Target and Prompts by Brand list the prompts where you appear, with answer text, links, and volume, sortable and filterable up to 1,000 rows per call. Set `scope` to `domain`, `base_domain`, or `url` to control matching. Engine values include `chatgpt`, `perplexity`, `gemini`, `ai-overview`, and `ai-mode`. SEO teams use this AI visibility API for AI visibility tracking in client reports, share-of-voice benchmarks, and finding prompts where a brand is missing. Agencies use it as an AI search visibility API that adds LLM visibility metrics to existing dashboards. AI agents can call it through ApyHub MCP to answer brand-monitoring questions on demand. Find rivals to benchmark with the [Competitor Analysis API](https://apyhub.com/namastesumalya/service/identify-competitors), compare classic search performance with the [Domain Analysis API](https://apyhub.com/se-ranking/service/domain-analysis), and check AI overviews on the live results page with the [SERP API](https://apyhub.com/se-ranking/service/serp-results-classic). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/se-ranking/service/ai-search * * * --- title: Audit Website SEO API slug: website-audit url: https://apyhub.com/se-ranking/service/website-audit provider: "SE Ranking SEO & AI Search API" categories: [Developer Tools, SEO] tags: [seo-audit, website-audit, technical-seo, site-crawler] auth: api_key version: 1.0.0 service_type: job endpoints: 12 atoms: 1-2000 --- # Audit Website SEO API SEO audit API from SE Ranking: crawl a domain, then get a health score, errors, warnings, and issues per page, with JS rendering. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/report` | What it does Retrieves the audit report for a specific site audit identified by auditid. The respon… | 1 | | GET | `https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/links` | What it does Returns the links found for a site audit. You provide the auditid in the query string,… | 10 | | POST | `https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/recheck/standard` | What it does Rechecks an existing standard site audit identified by auditid and triggers a new audi… | 2000 | | POST | `https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/standard` | What it does Creates a standard HTML crawl audit for the specified domain. You can optionally provi… | 2000 | | POST | `https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/recheck/advanced` | What it does Rechecks an existing website audit using the provided auditid query parameter. The suc… | 2000 | | GET | `https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/issues` | What it does Returns the issues associated with a specific website audit URL. You can identify the… | 10 | | POST | `https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/advanced` | What it does Creates a new advanced website audit for the specified domain. You can optionally incl… | 2000 | | GET | `https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/status` | What it does Retrieves the current status and, once available, summary results for a website audit… | 10 | | GET | `https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/pages` | What it does Retrieves the list of pages that were crawled for a specific site audit. The request t… | 10 | | GET | `https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits` | What it does Returns a paginated list of website audit records. You can filter the list by search t… | 10 | | GET | `https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/issue-pages` | What it does Returns the list of page URLs associated with a specific audit issue, along with the t… | 10 | | GET | `https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/history` | What it does Retrieves audit history for a specific website audit on a given date. It accepts the a… | 10 | ## Endpoint reference ### Get audit report `GET https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/report` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `audit_id` | query | string | yes | | #### Quickstart Fetch a website audit report by passing the required `audit_id` as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/report?audit_id=12345" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields as declared by the schema: `version` (string), `sections` (array), `audit_time` (string), `is_finished` (boolean), `total_pages` (integer), `domain_props` (object), `total_errors` (integer), `total_passed` (integer), `score_percent` (integer), `total_notices` (integer), and `total_warnings` (integer). ```json { "version": "1.0", "sections": [], "audit_time": "2026-07-27T12:00:00Z", "is_finished": true, "total_pages": 3, "domain_props": { "expdate": null, "backlinks": "1250", "index_google": "yes" }, "total_errors": 2, "total_passed": 18, "score_percent": 92, "total_notices": 4, "total_warnings": 1 } ``` ### List Crawled Page Links `GET https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/links` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | | | `offset` | query | integer | no | Default: `0`. | | `audit_id` | query | string | yes | | | `page_type` | query | string | no | One of: all, internal, external. Default: `all`. | | `filter[1][type]` | query | string | no | One of: and, or. | | `filter[0][param]` | query | string | no | | | `filter[0][value]` | query | string | no | | | `filter[1][param]` | query | string | no | | | `filter[1][value]` | query | string | no | | #### Quickstart Fetch the links for a specific site audit by passing its required `audit_id` as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/links?audit_id=12345" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `items` (an array of link objects) and `total` (an integer count). Each item may include fields such as `id`, `url`, `type`, `title`, `anchor`, `status`, `nofollow`, `source_url`, `anchor_type`, and `source_noindex`. ```json { "items": [ { "id": "link_123", "url": "https://example.com/about", "type": "hyperlink", "title": "About Us", "anchor": "About", "status": "200", "nofollow": "0" } ], "total": 1 } ``` ### Recheck audit standard `POST https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/recheck/standard` · 2000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `audit_id` | query | string | yes | | #### Quickstart Rechecks a standard site audit by passing the required `audit_id` as a query parameter. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/recheck/standard?audit_id=12345" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a minimal acknowledgement; see the Docs tab for the full response shape. ### Create standard audit `POST https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/standard` · 2000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `title` | body | string | no | | | `domain` | body | string | yes | | | `settings.hide` | body | string | no | | | `settings.allow` | body | string | no | | | `settings.login` | body | string | no | | | `settings.max_req` | body | integer | no | Default: `500`. | | `settings.disallow` | body | string | no | | | `settings.max_size` | body | integer | no | Default: `3000`. | | `settings.password` | body | string | no | | | `settings.max_depth` | body | integer | no | Default: `10`. | | `settings.max_pages` | body | integer | no | Default: `1000`. | | `settings.min_words` | body | integer | no | Default: `250`. | | `settings.max_h1_len` | body | integer | no | Default: `100`. | | `settings.max_h2_len` | body | integer | no | Default: `100`. | | `settings.user_agent` | body | integer | no | 0 SE Ranking bot, 1 Googlebot, 2 Googlebot Image, 3 Bingbot, 4 Yahoo! Slurp, 5 YandexBot, 6 BaiduSpider, 7 Chrome/Windows, 8 Chrome/macOS, 9 Chrome/iOS, 10 Firefox/Windows, 11 Firefox/Linux, 12 Safar… | | `settings.send_report` | body | integer | no | One of: 0, 1. Default: `1`. | | `settings.source_file` | body | integer | no | One of: 0, 1. Default: `0`. | | `settings.source_site` | body | integer | no | One of: 0, 1. Default: `1`. | | `settings.check_robots` | body | integer | no | One of: 0, 1. Default: `1`. | | `settings.custom_params` | body | string | no | Default: `utm_source, utm_medium, utm_term, utm_content, utm_campaign, cid, PHPSESSID`. | | `settings.ignore_params` | body | integer | no | One of: 0, 1, 2. Default: `0`. | | `settings.max_redirects` | body | integer | no | Default: `5`. | | `settings.max_title_len` | body | integer | no | Default: `65`. | | `settings.min_title_len` | body | integer | no | Default: `20`. | | `settings.report_emails` | body | string | no | Default: ``. | | `settings.ignore_noindex` | body | integer | no | One of: 0, 1. Default: `0`. | | `settings.source_sitemap` | body | integer | no | One of: 0, 1. Default: `1`. | | `settings.ignore_nofollow` | body | integer | no | One of: 0, 1. Default: `0`. | | `settings.source_subdomain` | body | integer | no | One of: 0, 1. Default: `0`. | | `settings.max_description_len` | body | integer | no | Default: `158`. | | `settings.min_description_len` | body | integer | no | Default: `1`. | #### Quickstart Create a standard site audit by sending the required `domain` field. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/standard" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"domain":"example.com"}' ``` #### What you'll get back Returns a JSON object with an `id` integer field, which is the created audit ID. ```json { "id": 123 } ``` ### Recheck audit advanced `POST https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/recheck/advanced` · 2000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `audit_id` | query | string | yes | | #### Quickstart Recheck an existing site audit by its `audit_id` query parameter. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/recheck/advanced?audit_id=12345" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a minimal acknowledgement; see the Docs tab for the full response shape. ### Get All Issues for a Specific URL `GET https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/issues` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | no | | | `url_id` | query | integer | no | | | `audit_id` | query | string | yes | | #### Quickstart Fetch audit issues for a site audit by `audit_id`: ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/issues?audit_id=12345" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with optional top-level `url` string, `issues` array, and `page_data` object. Each item in `issues` is an object that may include `code`, `type` (`error`, `warning`, or `notice`), `group`, and a `snippet` object. ```json { "url": "https://example.com", "issues": [ { "code": "meta-description-too-short", "type": "warning", "group": "metadata", "snippet": { "type": "html", "value": [] } } ], "page_data": {} } ``` ### Create advanced audit `POST https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/advanced` · 2000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `title` | body | string | no | | | `domain` | body | string | yes | | | `settings.hide` | body | string | no | | | `settings.allow` | body | string | no | | | `settings.login` | body | string | no | | | `settings.max_req` | body | integer | no | Default: `500`. | | `settings.disallow` | body | string | no | | | `settings.max_size` | body | integer | no | Default: `3000`. | | `settings.password` | body | string | no | | | `settings.max_depth` | body | integer | no | Default: `10`. | | `settings.max_pages` | body | integer | no | Default: `1000`. | | `settings.min_words` | body | integer | no | Default: `250`. | | `settings.max_h1_len` | body | integer | no | Default: `100`. | | `settings.max_h2_len` | body | integer | no | Default: `100`. | | `settings.user_agent` | body | integer | no | 0 SE Ranking bot, 1 Googlebot, 2 Googlebot Image, 3 Bingbot, 4 Yahoo! Slurp, 5 YandexBot, 6 BaiduSpider, 7 Chrome/Windows, 8 Chrome/macOS, 9 Chrome/iOS, 10 Firefox/Windows, 11 Firefox/Linux, 12 Safar… | | `settings.send_report` | body | integer | no | One of: 0, 1. Default: `1`. | | `settings.source_file` | body | integer | no | One of: 0, 1. Default: `0`. | | `settings.source_site` | body | integer | no | One of: 0, 1. Default: `1`. | | `settings.check_robots` | body | integer | no | One of: 0, 1. Default: `1`. | | `settings.custom_params` | body | string | no | Default: `utm_source, utm_medium, utm_term, utm_content, utm_campaign, cid, PHPSESSID`. | | `settings.ignore_params` | body | integer | no | One of: 0, 1, 2. Default: `0`. | | `settings.max_redirects` | body | integer | no | Default: `5`. | | `settings.max_title_len` | body | integer | no | Default: `65`. | | `settings.min_title_len` | body | integer | no | Default: `20`. | | `settings.report_emails` | body | string | no | Default: ``. | | `settings.ignore_noindex` | body | integer | no | One of: 0, 1. Default: `0`. | | `settings.source_sitemap` | body | integer | no | One of: 0, 1. Default: `1`. | | `settings.ignore_nofollow` | body | integer | no | One of: 0, 1. Default: `0`. | | `settings.source_subdomain` | body | integer | no | One of: 0, 1. Default: `0`. | | `settings.max_description_len` | body | integer | no | Default: `158`. | | `settings.min_description_len` | body | integer | no | Default: `1`. | #### Quickstart Create an advanced website audit for a domain using the required `domain` field. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/advanced" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"domain":"example.com"}' ``` #### What you'll get back Returns a JSON object with an `id` integer field. ```json { "id": 12345 } ``` ### Get audit status `GET https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/status` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `audit_id` | query | string | yes | | #### Quickstart Check the status of a website audit by passing the required `audit_id` as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/status?audit_id=12345" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with optional top-level fields such as `status` (a string), `audit_time` (a string), `start_time` (a string), `total_pages` (an integer), `total_errors` (an integer), `total_passed` (an integer), and `total_warnings` (an integer). ```json { "status": "finished", "audit_time": "2026-07-27T12:34:56Z", "start_time": "2026-07-27T12:00:00Z", "total_pages": 42, "total_errors": 3, "total_passed": 37, "total_warnings": 2 } ``` ### Get all crawled pages `GET https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/pages` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Default: `100`. | | `offset` | query | integer | no | Default: `0`. | | `audit_id` | query | string | yes | | #### Quickstart Fetch the audited pages for a specific audit by passing its required `audit_id` as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/pages?audit_id=12345" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with an `items` array and a `total` integer. Each `items` entry is an object with page audit details such as `url`, `title`, `status`, and other string fields. ```json { "items": [ { "id": "page-1", "url": "https://example.com/", "title": "Home", "status": "200" } ], "total": 1 } ``` ### List audits `GET https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits` · 10 atoms · accepts `application/json` #### Quickstart List website audit runs with the default page size. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits?limit=100&offset=0" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with an `items` array and a `total` integer. Each item is a website audit object with fields like `id`, `url`, `stats`, `status`, and `last_update`. ```json { "items": [ { "id": 123, "url": "https://example.com", "error": null, "stats": { "score": 98, "errors": 0, "crawled": 120, "notices": 2, "warnings": 1 }, "title": "Example Site Audit", "is_new": 0, "status": "finished", "site_id": 45, "version": "1.0", "group_id": 7, "prev_stats": null, "has_project": true, "last_update": "2026-07-27", "error_params": null, "owner_account_id": 9 } ], "total": 1 } ``` ### Get audit pages by issue `GET https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/issue-pages` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `code` | query | string | yes | | | `limit` | query | integer | no | Default: `100`. | | `offset` | query | integer | no | Default: `0`. | | `audit_id` | query | string | yes | | #### Quickstart Fetch the issue pages for a specific audit by passing the required `audit_id` and `code` as query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/issue-pages?audit_id=12345&code=mobile" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields: `urls` (an array of strings), `urls_type` (a string), and `total_urls` (an integer). ```json { "urls": ["https://example.com/page-1", "https://example.com/page-2"], "urls_type": "simple_urls_array", "total_urls": 2 } ``` ### Get audit history by date `GET https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/history` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `date` | query | string (date) | yes | | | `audit_id` | query | string | yes | | #### Quickstart Fetch the audit history for a specific audit ID and date using query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/website-audit/v1/site-audit/audits/history?audit_id=12345&date=2024-01-15" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields: `totals` (an object with `total_pages`, `total_errors`, `total_passed`, and `total_warnings`), `version` (string), `settings` (object), `audit_time` (string), `pages_data` (object keyed by issue code with integer values), and `domain_data` (object). ```json { "totals": { "total_pages": 12, "total_errors": 3, "total_passed": 120, "total_warnings": 8 }, "version": "1.0.0", "settings": {}, "audit_time": "2024-01-15T10:30:00Z", "pages_data": { "E001": 2, "W002": 6 }, "domain_data": {} } ``` ## About ## What it does The SEO Audit API crawls a whole domain and reports its technical SEO health. Send a `domain` with optional crawl `settings`, get back an audit `id`, and fetch a report with `score_percent`, `total_errors`, `total_warnings`, `total_notices`, and `total_passed`. Create a standard audit for an HTML crawl or an advanced audit with JavaScript rendering. Settings control `max_pages` (up to 300,000), `max_depth`, `user_agent` (including Googlebot and Bingbot), robots.txt and sitemap sources, and thresholds such as `max_title_len` and `min_words`. Audits move through `queued`, `processing`, and `finished`, so poll the status endpoint before reading results. Then list crawled pages, internal and external links, pages affected by an issue `code`, or every issue for one URL, and compare crawl history by date. Teams use this SEO audit API for scheduled monitoring, release checks before a deploy, and before-and-after comparisons when fixes ship. Agencies run it as a site audit API across client sites and recheck audits in standard or advanced mode from their own tools. Seed the crawl scope with the [Sitemap Extraction API](https://apyhub.com/apyhub/service/extract-sitemap-from-url-api), review the external link profile with the [Backlinks API](https://apyhub.com/se-ranking/service/backlinks), and confirm ranking changes after fixes with the [SERP API](https://apyhub.com/se-ranking/service/serp-results-classic). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/se-ranking/service/website-audit * * * --- title: Get SERP Results API slug: serp-results-classic url: https://apyhub.com/se-ranking/service/serp-results-classic provider: "SE Ranking SEO & AI Search API" categories: [Data Extraction, SEO] tags: [serp, serp-api, search-results, seo, rank-tracking] auth: api_key version: 1.0.0 service_type: job endpoints: 5 atoms: 250-500 --- # Get SERP Results API Pull Google search results for any keyword by location, language and device with SE Ranking's SERP API. Async tasks, advanced results and raw HTML. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/se-ranking/serp-results-classic/v1/serp/classic/tasks` | What it does Creates one or more SERP Classic tasks based on the search queries submitted in the re… | 500 | | GET | `https://api.eu.apyhub.com/se-ranking/serp-results-classic/v1/serp/classic/tasks` | What it does Lists SERP Classic tasks, or retrieves a specific task's result when a taskid is provi… | 250 | | GET | `https://api.eu.apyhub.com/se-ranking/serp-results-classic/v1/serp/classic/tasks/html` | What it does Retrieves the raw HTML dump for a SERP Classic task, identified by its taskid query pa… | 250 | | GET | `https://api.eu.apyhub.com/se-ranking/serp-results-classic/v1/serp/classic/tasks/results_advanced` | What it does Retrieves the advanced (detailed) results for a completed SERP Classic task, using the… | 500 | | GET | `https://api.eu.apyhub.com/se-ranking/serp-results-classic/v1/serp/classic/locations` | What it does Looks up SERP Classic-supported search locations, filterable by a free-text query, an… | 250 | ## Endpoint reference ### Add task `POST https://api.eu.apyhub.com/se-ranking/serp-results-classic/v1/serp/classic/tasks` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `tag` | body | string | no | Optional user-defined label for the task, used for tracking/organizing tasks on your end. No effect on task execution. | | `query` | body | array of string | yes | Search queries to submit. One task is created per query in the array. | | `device` | body | string | yes | Device type for the task (e.g. desktop, mobile). | | `location_id` | body | integer | yes | Location identifier. | | `language_code` | body | string | yes | Language code for the task. | | `search_engine` | body | string | yes | Search engine to use (e.g. google). | #### Quickstart Create a new classic SERP task with a minimal JSON body. Authenticate using the apy-token request header. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/serp-results-classic/v1/serp/classic/tasks" \ -H "Content-Type: application/json" \ -H "apy-token: $APY_TOKEN" \ -d '{ "query": ["seo report"], "device": "desktop", "location_id": 12998, "language_code": "es", "search_engine": "google" }' ``` #### What you'll get back Returns an array of task objects, one per query submitted, each with an `id` you can use to poll for status/results. See the Docs tab for the full response shape. ### List tasks / Get task results `GET https://api.eu.apyhub.com/se-ranking/serp-results-classic/v1/serp/classic/tasks` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `task_id` | query | string | no | The task identifier to fetch the HTML dump for. | #### Quickstart Fetch a SERP classic task by its ID using your API key in the query string. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/serp-results-classic/v1/serp/classic/tasks?task_id=176899957" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a status object while the task is still processing (e.g. `{"status": "processing"}`). Once the task completes, a fuller result payload is expected — see the Docs tab, pending confirmation. ### Get HTML dump `GET https://api.eu.apyhub.com/se-ranking/serp-results-classic/v1/serp/classic/tasks/html` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `task_id` | query | string | no | The task identifier to fetch the HTML dump for. | #### Quickstart Fetch a SERP classic task's HTML result by its `task_id` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/serp-results-classic/v1/serp/classic/tasks/html?task_id=123456" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Expected to return the raw HTML content for the task ### Get advanced results `GET https://api.eu.apyhub.com/se-ranking/serp-results-classic/v1/serp/classic/tasks/results_advanced` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `task_id` | query | string | no | Identifier of the task to fetch results for. | #### Quickstart Fetch the advanced results for a classic SERP task by passing its `task_id` as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/serp-results-classic/v1/serp/classic/tasks/results_advanced?task_id=123456" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a single object containing `request_metadata`, a `summary`, and an `items` array with the full ranked SERP content (AI overview, organic results, people-also-ask, related searches, etc.). ### Get locations `GET https://api.eu.apyhub.com/se-ranking/serp-results-classic/v1/serp/classic/locations` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `q` | query | string | no | Search term used to look up locations. | | `include` | query | string | no | Additional locations to include in the results. | | `country_code` | query | string | no | Country code used to scope the location lookup. | #### Quickstart Fetch the SERP classic locations for a query, with optional filters passed as query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/serp-results-classic/v1/serp/classic/locations?q=new%20york&include=all&country_code=us" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Expected to return a list of matching locations ## About ## What it does The SE Ranking SERP API collects search results for any query, device, and location, then returns them as ranked JSON or the raw HTML page. Send a `query` array with `device`, `location_id`, `language_code`, and `search_engine` (for example `google`), and each query becomes its own task with an `id`. Tasks run asynchronously. Poll with `task_id` until the task completes, or set a `pingback_url` to get a callback. The advanced results endpoint returns `request_metadata`, a `summary` of detected SERP features, and an `items` array in ranked order, covering organic listings, AI overviews, People Also Ask, and related searches. The HTML dump endpoint returns the original page source. Look up a valid `location_id` by name or `country_code` with the locations endpoint. Teams use this SERP API for rank tracking across cities and devices, competitor monitoring, and SERP feature research. SEO platforms and agencies use the SE Ranking API to feed dashboards with fresh Google SERP data from their own code. AI agents can call it through ApyHub MCP to check live rankings on request. Build the query list with the [Keyword Research API](https://apyhub.com/se-ranking/service/keyword-research), size up ranking domains with the [Domain Analysis API](https://apyhub.com/se-ranking/service/domain-analysis), and pull titles and descriptions of ranking URLs with the [URL Metadata API](https://apyhub.com/namastesumalya/service/extract-metadata-from-url-api). Track how brands appear in AI answers with the [AI Visibility API](https://apyhub.com/se-ranking/service/ai-search). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/se-ranking/service/serp-results-classic * * * --- title: Analyze Backlinks API slug: backlinks url: https://apyhub.com/se-ranking/service/backlinks provider: "SE Ranking SEO & AI Search API" categories: [SEO] tags: [backlinks, seo, link-analysis, referring-domains, anchor-text, domain-authority] auth: api_key version: 1.0.0 service_type: job endpoints: 44 atoms: 100-2000 --- # Analyze Backlinks API Backlinks API from SE Ranking: send a domain, host, or URL and get backlinks, referring domains, anchors, authority, and link history. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/export` | What it does Starts an asynchronous export of backlinks data for the specified target and returns a… | 2000 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/export/status` | What it does Checks the status of a backlink export task and returns the task identifier, current t… | 500 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/referring-ips` | What it does Returns a JSON object containing a referringips array for the specified target. Each a… | 750 | | POST | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/referring-ips` | What it does Lists the referring IPs for a target passed in the request body. The response returns… | 750 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/referring-subnets/count` | What it does Returns the total count of referring subnets (C-blocks) for a given target. The reques… | 100 | | POST | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/referring-subnets/count` | What it does Counts the total number of referring subnets for the submitted target(s) and returns t… | 100 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority/domain` | What it does Retrieves the domain authority data for the specified target domain and returns it as… | 200 | | POST | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority/domain` | What it does Calculates domain authority for the target domain(s) you submit in the request body. T… | 200 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains/history/count` | What it does Retrieves the daily count of new and lost referring domains for a target, using query… | 200 | | POST | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains/history/count` | What it does Returns the daily count of new and lost referring domains for a target. You send the t… | 200 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/indexed-pages` | What it does Returns a JSON object containing a pages array of indexed pages related to the supplie… | 1000 | | POST | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/indexed-pages` | What it does Returns a JSON object containing a pages array of indexed pages related to the supplie… | 1000 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority/domain/distribution` | What it does Returns the authority distribution for a target passed as a query parameter. The respo… | 1000 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains/count` | What it does Returns the total referring domains count for a specified target. You provide the targ… | 500 | | POST | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains/count` | What it does Returns the total referring domains count for the provided target in the request body.… | 500 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/raw` | What it does Fetches backlinks for a target in cursor-based batches. The request is sent as query p… | 200 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains/history` | What it does Returns a list of referring domains that are new or lost for the specified target, wit… | 200 | | POST | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains/history` | What it does Returns a list of referring domains that are new or lost for the specified target, fil… | 200 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority/page` | What it does Returns the page authority information for a target URL. The response contains an auth… | 500 | | POST | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority/page` | What it does Calculates page authority for the target URL(s) provided in the request body and retur… | 500 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority/domain/history` | What it does Returns the domain authority history for a target domain as a JSON object containing a… | 250 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains` | What it does Returns a JSON object containing a refdomains array of referring-domain records for th… | 200 | | POST | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains` | What it does Lists referring domains for a target provided in the request body. The endpoint return… | 200 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority` | What it does Returns page and domain authority metrics for the requested target. The request is sen… | 250 | | POST | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority` | What it does Returns authority data for one or more target URLs submitted in the request body. The… | 250 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/history/cumulative` | What it does Retrieves cumulative backlinks history for a target and returns the backlink count ove… | 250 | | POST | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/history/cumulative` | What it does Returns cumulative backlink counts over time for a specified target. You provide the t… | 250 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/anchors` | What it does Returns backlink anchor text data for the specified target. The response contains an a… | 200 | | POST | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/anchors` | What it does Retrieves backlink anchor texts for the target you provide in the request body and ret… | 200 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/summary` | What it does Returns backlink summary data for the specified target. You can choose the lookup mode… | 2000 | | POST | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/summary` | What it does Returns backlink summary data for one target or a batch of targets submitted in the re… | 2000 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/metrics` | What it does Retrieves backlink-related metrics for the specified target using query parameters. Th… | 250 | | POST | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/metrics` | What it does Returns backlink metrics for one target or a batch of targets submitted in the request… | 250 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/all` | What it does Returns a list of backlinks for the supplied target, with optional query parameters to… | 250 | | POST | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/all` | What it does Retrieves a list of backlinks for the specified target and returns them in a JSON obje… | 250 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/count` | What it does Returns the total backlinks count for the specified target, with optional query contro… | 500 | | POST | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/count` | What it does Counts the total number of backlinks for the target you submit in the request body. Yo… | 500 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/history` | What it does Returns a list of new and lost backlinks for the specified target, with optional filte… | 200 | | POST | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/history` | What it does Returns a list of new and lost backlinks for the target you submit in the request body… | 200 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority/page/history` | What it does Gets the page authority history for a target URL or domain over a requested date range… | 500 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/history/count` | What it does Returns daily counts of new and lost backlinks for the specified target. The endpoint… | 1000 | | POST | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/history/count` | What it does Returns a JSON object containing newlostbacklinkscount, an array of daily backlink cou… | 1000 | | GET | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/referring-ips/count` | What it does Returns the total referring IPs count for the specified target. The request accepts th… | 100 | | POST | `https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/referring-ips/count` | What it does Returns referring IP count metrics for the supplied target in the request body. The re… | 100 | ## Endpoint reference ### Export Backlinks `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/export` · 2000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | query | string | no | One of: domain, host, url. Default: `host`. | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | #### Quickstart Export backlink data for a target URL, domain, or host with the required `target` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/export?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with optional `task_id` and `task_status` fields. `task_id` is a string for the created export task, and `task_status` is a string such as `queued_for_processing`, `processing`, `complete`, `rejected`, or `unknown`. ```json { "task_id": "task_12345", "task_status": "queued_for_processing" } ``` ### Check Backlinks Export Status `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/export/status` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `task_id` | query | string | yes | | #### Quickstart Check the export task status by passing the required `task_id` as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/export/status?task_id=1_1612479" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with optional top-level `task_id`, `task_status`, and `download_file` fields. - `task_id` is a string for the task being checked. - `task_status` is a string enum such as `queued_for_processing`, `processing`, `complete`, `rejected`, or `unknown`. - `download_file` is a string URL or path when available, or `null`. ```json { "task_id": "task-12345", "task_status": "complete", "download_file": "https://example.com/download.csv" } ``` ### List Referring IPs `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/referring-ips` · 750 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | query | string | no | One of: domain, host, url. Default: `host`. | | `limit` | query | integer | no | Default: `100`. | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | | `order_by` | query | string | no | One of: backlinks, refdomains. Default: `backlinks`. | #### Quickstart Fetch the referring IPs for a target host, domain, or URL with the required `target` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/referring-ips?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `referring_ips` array. Each item is an object with `ip`, `backlinks`, and `refdomains` fields. ```json { "referring_ips": [ { "ip": "192.0.2.10", "backlinks": 42, "refdomains": 7 } ] } ``` ### List Referring IPs `POST https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/referring-ips` · 750 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | body | string | no | One of: domain, host, url. | | `limit` | body | integer | no | | | `target` | body | string | yes | | | `order_by` | body | string | no | One of: backlinks, refdomains. | | `output` | query | string | no | One of: json, xml. Default: `json`. | #### Quickstart Look up the referring IPs for a target backlink profile. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/referring-ips?output=json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"target":"apyhub.com"}' ``` #### What you'll get back Returns a JSON object with a `referring_ips` array. Each item is an object with `ip`, `backlinks`, and `refdomains` fields. ```json { "referring_ips": [ { "ip": "192.0.2.1", "backlinks": 42, "refdomains": 7 } ] } ``` ### Count Referring Subnets `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/referring-subnets/count` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | query | string | no | One of: domain, host, url. Default: `host`. | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | #### Quickstart Get the count of referring subnets for a target by passing the required `target` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/referring-subnets/count?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `metrics` array. Each item in `metrics` is an object with a `target` string and a `referring_subnets` integer. ```json { "metrics": [ { "target": "example.com", "referring_subnets": 42 } ] } ``` ### Count Referring Subnets `POST https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/referring-subnets/count` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | body | string | no | One of: domain, host, url. | | `target` | body | array of string | yes | | | `output` | query | string | no | One of: json, xml. Default: `json`. | #### Quickstart Count referring subnets for a target domain, host, or URL using the default JSON output. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/referring-subnets/count?output=json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"target":["apyhub.com"],"mode":"domain"}' ``` #### What you'll get back Returns a JSON object with a `metrics` array. Each item in `metrics` is an object with `target` as a string and `referring_subnets` as an integer. ```json { "metrics": [ { "target": "example.com", "referring_subnets": 42 } ] } ``` ### Get Domain Authority `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority/domain` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | #### Quickstart Look up backlink authority for a domain by passing the required `target` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority/domain?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with an `authority` array. Each item in the array is an object with a `target` string and a `domain_inlink_rank` integer. ```json { "authority": [ { "target": "example.com", "domain_inlink_rank": 42 } ] } ``` ### Get Domain Authority `POST https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority/domain` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `target` | body | array of string | yes | | | `output` | query | string | no | One of: json, xml. Default: `json`. | #### Quickstart Look up backlink authority for one target domain. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority/domain?output=json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"target":["apyhub.com"]}' ``` #### What you'll get back Returns a JSON object with an `authority` array. Each item is an object with `target` as a string and `domain_inlink_rank` as an integer. ```json { "authority": [ { "target": "example.com", "domain_inlink_rank": 42 } ] } ``` ### Get New/Lost Referring Domains — Daily Counts `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains/history/count` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | query | string | no | One of: domain, host, url. Default: `host`. | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | | `date_to` | query | string (date) | no | | | `date_from` | query | string (date) | no | | | `new_lost_type` | query | string | no | One of: new, lost. | #### Quickstart Check backlink referring domain history count for a target, using the required query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains/history/count?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `new_lost_refdomains_count` array. Each item in the array is an object that can include `new` and `lost` integers plus a `date` string in `date` format. ```json { "new_lost_refdomains_count": [ { "new": 12, "date": "2024-01-01", "lost": 3 } ] } ``` ### Get New/Lost Referring Domains — Daily Counts `POST https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains/history/count` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | body | string | no | One of: domain, host, url. | | `target` | body | string | yes | | | `date_to` | body | string (date) | no | | | `date_from` | body | string (date) | no | | | `new_lost_type` | body | string | no | One of: new, lost. | | `output` | query | string | no | One of: json, xml. Default: `json`. | #### Quickstart Fetch a count history for a single target domain or URL. `output` is sent as a query parameter, and the required `target` goes in the JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains/history/count?output=json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"target":"apyhub.com"}' ``` #### What you'll get back Returns a JSON object with a `new_lost_refdomains_count` array. Each array item is an object with `new` and `lost` integer counts and a `date` string in `date` format. ```json { "new_lost_refdomains_count": [ { "new": 12, "date": "2024-01-01", "lost": 3 } ] } ``` ### List Indexed Pages by Backlinks `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/indexed-pages` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | query | string | no | One of: domain, host, url. Default: `host`. | | `limit` | query | integer | no | Default: `100`. | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | | `order_by` | query | string | no | Default: `backlinks`. | #### Quickstart Fetch indexed pages for a target site by passing the required `target` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/indexed-pages?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `pages` array. Each item in `pages` is an object that may include `url` as a string, `backlinks` as an integer, and `refdomains` as an integer. ```json { "pages": [ { "url": "https://example.com/page-one", "backlinks": 42, "refdomains": 8 } ] } ``` ### List Indexed Pages by Backlinks `POST https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/indexed-pages` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | body | string | no | One of: domain, host, url. | | `limit` | body | integer | no | | | `target` | body | string | yes | | | `order_by` | body | string | no | One of: backlinks, refdomains. | | `output` | query | string | no | One of: json, xml. Default: `json`. | #### Quickstart Fetch indexed pages for a target site by passing the required `target` query parameter. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/indexed-pages?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `pages` array. Each item in `pages` is an object that may include `url` as a string, `backlinks` as an integer, and `refdomains` as an integer. ```json { "pages": [ { "url": "https://example.com/page-one", "backlinks": 42, "refdomains": 8 } ] } ``` ### Get Domain Authority Distribution `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority/domain/distribution` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | query | string | no | One of: domain, host, url. Default: `host`. | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | #### Quickstart Get the backlink authority distribution for a target domain, host, or URL. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority/domain/distribution?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `distribution` array. Each item in `distribution` is an object with `domains`, `range_from`, and `range_to` integer fields. ```json { "distribution": [ { "domains": 12, "range_from": 0, "range_to": 10 } ] } ``` ### Count Referring Domains `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains/count` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | query | string | no | One of: domain, host, url. Default: `host`. | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | #### Quickstart Get the number of referring domains for a target by passing the required `target` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains/count?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `metrics` array. Each item in `metrics` is an object with a `target` string and a `refdomains` integer. ```json { "metrics": [ { "target": "example.com", "refdomains": 42 } ] } ``` ### Count Referring Domains `POST https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains/count` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | body | string | no | One of: domain, host, url. | | `target` | body | array of string | yes | | | `output` | query | string | no | One of: json, xml. Default: `json`. | #### Quickstart Count referring domains for a target by sending the required `target` in the JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains/count?output=json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"target":["apyhub.com"]}' ``` #### What you'll get back Returns a JSON object with a `metrics` array. Each item in `metrics` is an object with a `target` string and a `refdomains` integer. ```json { "metrics": [ { "target": "example.com", "refdomains": 123 } ] } ``` ### Get Raw Backlinks (Cursor-Paginated) `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/raw` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | query | string | no | One of: domain, host, url. Default: `host`. | | `next` | query | string | no | | | `limit` | query | integer | no | Default: `10000`. | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | | `per_domain` | query | integer | no | | #### Quickstart Fetch raw backlinks for a target URL or domain using the required `target` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/raw?target=apyhub.com.com&mode=host" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `backlinks` array and an optional `next` string cursor for pagination. Each item in `backlinks` is an object describing one backlink record. ```json { "next": "cursor-token", "backlinks": [ { "url_from": "https://example.org/page", "url_to": "https://example.com/", "anchor": "Example site", "title": "Example Page", "nofollow": false, "first_seen": "2024-01-15", "last_visited": "2024-01-20", "inlink_rank": 42, "domain_inlink_rank": 18 } ] } ``` ### List New/Lost Referring Domains `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains/history` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | query | string | no | One of: domain, host, url. Default: `host`. | | `limit` | query | integer | no | Default: `100`. | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | | `date_to` | query | string (date) | no | | | `order_by` | query | string | no | One of: new_lost_date, domain_inlink_rank, inlink_rank. Default: `new_lost_date`. | | `date_from` | query | string (date) | no | | | `new_lost_type` | query | string | no | One of: new, lost. | #### Quickstart Fetch historical referring domains for a target by passing the required `target` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains/history?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `new_lost_refdomains` array. Each item in the array is an object that may include `backlinks`, `refdomain`, `first_seen`, `new_lost_date`, `new_lost_type`, `dofollow_backlinks`, and `domain_inlink_rank`. ```json { "new_lost_refdomains": [ { "backlinks": 12, "refdomain": "example.com", "first_seen": "2024-01-15", "new_lost_date": "2024-03-01", "new_lost_type": "new", "dofollow_backlinks": 10, "domain_inlink_rank": 42 } ] } ``` ### List New/Lost Referring Domains `POST https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains/history` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | body | string | no | One of: domain, host, url. | | `target` | body | string | yes | | | `date_to` | body | string (date) | no | | | `date_from` | body | string (date) | no | | | `new_lost_type` | body | string | no | One of: new, lost. | | `output` | query | string | no | One of: json, xml. Default: `json`. | #### Quickstart Fetch the history of new or lost referring domains for a target, using the required `target` field and the default JSON output. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains/history?output=json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "target": "apyhub.com" }' ``` #### What you'll get back Returns a JSON object with a `new_lost_refdomains` array. Each item in the array is an object with fields like `backlinks`, `refdomain`, `first_seen`, `new_lost_date`, `new_lost_type`, `dofollow_backlinks`, and `domain_inlink_rank`. ```json { "new_lost_refdomains": [ { "backlinks": 12, "refdomain": "refexample.com", "first_seen": "2024-01-10", "new_lost_date": "2024-01-15", "new_lost_type": "new", "dofollow_backlinks": 10, "domain_inlink_rank": 42 } ] } ``` ### Get Page Authority `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority/page` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | #### Quickstart Look up backlink authority for a target URL. The `target` is required, and `output=json` is the default query format. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority/page?target=https://apyhub.com&output=json" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with an `authority` array. Each item in the array is an object with a `target` string and an `inlink_rank` integer. ```json { "authority": [ { "target": "https://example.com/page", "inlink_rank": 42 } ] } ``` ### Get Page Authority `POST https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority/page` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `target` | body | array of string | yes | | | `output` | query | string | no | One of: json, xml. Default: `json`. | #### Quickstart Look up authority data for a target backlink page and return it as JSON. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority/page?output=json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"target":["apyhub.com"]}' ``` #### What you'll get back Returns a JSON object with an `authority` array. Each item in the array is an object with a `target` string and an `inlink_rank` integer. ```json { "authority": [ { "target": "https://example.com/page", "inlink_rank": 42 } ] } ``` ### Get Domain Authority History `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority/domain/history` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | | `date_to` | query | string (date) | no | | | `date_from` | query | string (date) | no | | | `granularity` | query | string | no | Example: `by_day`. | #### Quickstart Fetch backlink authority history for a target domain with the required `target` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority/domain/history?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `history` array. Each item in `history` is an object with a `date` string and a `domain_inlink_rank` integer. ```json { "history": [ { "date": "2024-01-01", "domain_inlink_rank": 42 } ] } ``` ### List Referring Domains `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | query | string | no | One of: domain, host, url. Default: `host`. | | `limit` | query | integer | no | Default: `100`. | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | | `order_by` | query | string | no | One of: new_lost_date, domain_inlink_rank, inlink_rank. Default: `new_lost_date`. | #### Quickstart Fetch referring domains for a target using the required `target` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `refdomains` array. Each item in the array can include `backlinks` (integer), `refdomain` (string), `first_seen` (date string), `dofollow_backlinks` (integer), and `domain_inlink_rank` (integer). ```json { "refdomains": [ { "backlinks": 42, "refdomain": "example.com", "first_seen": "2024-01-15", "dofollow_backlinks": 40, "domain_inlink_rank": 87 } ] } ``` ### List Referring Domains `POST https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | body | string | no | One of: domain, host, url. | | `limit` | body | integer | no | | | `target` | body | string | yes | | | `output` | query | string | no | One of: json, xml. Default: `json`. | #### Quickstart Get referring domains for a target site with the default JSON output. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/refdomains?output=json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "target": "apyhub.com" }' ``` #### What you'll get back Returns a JSON object with a `refdomains` array. Each item is an object that can include `backlinks`, `refdomain`, `first_seen`, `dofollow_backlinks`, and `domain_inlink_rank`. ```json { "refdomains": [ { "backlinks": 42, "refdomain": "example.org", "first_seen": "2024-01-15", "dofollow_backlinks": 38, "domain_inlink_rank": 7 } ] } ``` ### Get Page & Domain Authority (Combined) `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | #### Quickstart Get page and domain authority for a target URL by passing the required `target` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority?target=https://apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with an `authority` array. Each item in the array is an object that can include `target` (string), `inlink_rank` (integer), and `domain_inlink_rank` (integer). ```json { "authority": [ { "target": "https://example.com/", "inlink_rank": 42, "domain_inlink_rank": 58 } ] } ``` ### Get Page & Domain Authority (Combined) `POST https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `target` | body | array of string | yes | | | `output` | query | string | no | One of: json, xml. Default: `json`. | #### Quickstart Get authority metrics for a target URL or domain. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority?output=json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"target":["https://apyhub.com"]}' ``` #### What you'll get back Returns a JSON object with an `authority` array. Each item in the array is an object with `target` as a string, `inlink_rank` as an integer, and `domain_inlink_rank` as an integer. ```json { "authority": [ { "target": "https://example.com", "inlink_rank": 42, "domain_inlink_rank": 55 } ] } ``` ### Get Cumulative Backlinks Over Time `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/history/cumulative` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | query | string | no | One of: domain, host, url. Default: `host`. | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | | `date_to` | query | string (date) | no | | | `date_from` | query | string (date) | no | | #### Quickstart Fetch cumulative backlink history for a target domain or URL using the required `target` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/history/cumulative?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `backlinks_count` array. Each item in the array is an object with a `date` string and a `backlinks` integer. ```json { "backlinks_count": [ { "date": "2024-01-01", "backlinks": 128 } ] } ``` ### Get Cumulative Backlinks Over Time `POST https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/history/cumulative` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | body | string | no | One of: domain, host, url. | | `target` | body | string | yes | | | `date_to` | body | string (date) | no | | | `date_from` | body | string (date) | no | | | `output` | query | string | no | One of: json, xml. Default: `json`. | #### Quickstart Get cumulative backlink history for a target URL, domain, or host. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/history/cumulative?output=json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"target":"apyhub.com"}' ``` #### What you'll get back Returns a JSON object with a `backlinks_count` array. Each item in the array is an object with a `date` string and a `backlinks` integer. ```json { "backlinks_count": [ { "date": "2024-01-01", "backlinks": 1234 } ] } ``` ### List Backlink Anchor Texts `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/anchors` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | query | string | no | One of: domain, host, url. Default: `host`. | | `limit` | query | integer | no | Default: `100`. | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | | `order_by` | query | string | no | One of: backlinks, refdomains. Default: `backlinks`. | #### Quickstart Fetch anchor text backlinks for a target URL or domain with the required `target` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/anchors?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with an `anchors` array. Each item in `anchors` is an object with fields like `anchor`, `backlinks`, `first_seen`, `refdomains`, `last_visited`, `dofollow_backlinks`, and `nofollow_backlinks`. ```json { "anchors": [ { "anchor": "example anchor", "backlinks": 12, "first_seen": "2024-01-15", "refdomains": 5, "last_visited": "2024-06-01", "dofollow_backlinks": 9, "nofollow_backlinks": 3 } ] } ``` ### List Backlink Anchor Texts `POST https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/anchors` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | body | string | no | One of: domain, host, url. | | `limit` | body | integer | no | | | `target` | body | string | yes | | | `order_by` | body | string | no | One of: backlinks, refdomains. | | `output` | query | string | no | One of: json, xml. Default: `json`. | #### Quickstart Fetch backlink anchor data for a target domain, host, or URL. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/anchors?output=json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"target":"apyhub.com"}' ``` #### What you'll get back Returns a JSON object with an `anchors` array. Each item in `anchors` is an object that can include `anchor`, `backlinks`, `first_seen`, `refdomains`, `last_visited`, `dofollow_backlinks`, and `nofollow_backlinks`. ```json { "anchors": [ { "anchor": "Example site", "backlinks": 12, "first_seen": "2024-01-15", "refdomains": 3, "last_visited": "2024-06-20", "dofollow_backlinks": 9, "nofollow_backlinks": 3 } ] } ``` ### Get Backlink Profile Summary `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/summary` · 2000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | query | string | no | One of: domain, host, url. Default: `host`. | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | #### Quickstart Fetch backlink summary data for a target site. `mode` and `output` use their defaults, so only `target` is included. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/summary?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `summary` array. Each item in `summary` is an object containing backlink summary metrics such as `target`, `backlinks`, `refdomains`, `anchors`, `ips`, and related nested lists like `top_tlds`, `top_countries`, `top_pages_by_backlinks`, and `top_anchors_by_backlinks`. ```json { "summary": [ { "target": "example.com", "backlinks": 120, "refdomains": 45, "anchors": 18 } ] } ``` ### Get Backlink Profile Summary `POST https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/summary` · 2000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | body | string | no | One of: domain, host, url. Default: `host`. | | `target` | body | array of string | yes | | | `output` | query | string | no | One of: json, xml. Default: `json`. | #### Quickstart Fetch backlink summary data for a target domain or URL. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/summary?output=json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"target":["apyhub.com"],"mode":"domain"}' ``` #### What you'll get back Returns a JSON object with a `summary` array. Each item in the array is an object containing backlink metrics for a target, such as `target`, `backlinks`, `refdomains`, `anchors`, `ips`, `subnets`, and related top lists like `top_tlds`, `top_countries`, `top_pages_by_backlinks`, and `top_anchors_by_backlinks`. ```json { "summary": [ { "target": "example.com", "backlinks": 1234, "refdomains": 56, "anchors": 78 } ] } ``` ### Get Backlink Metrics Overview `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/metrics` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | query | string | no | One of: domain, host, url. Default: `host`. | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | #### Quickstart Look up backlink metrics for a target by passing the required `target` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/metrics?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `metrics` array. Each item in `metrics` is an object that may include backlink counts and related totals for the requested target. ```json { "metrics": [ { "target": "example.com", "backlinks": 0, "refdomains": 0, "ips": 0, "subnets": 0, "edu_backlinks": 0, "gov_backlinks": 0, "dofollow_backlinks": 0, "nofollow_backlinks": 0 } ] } ``` ### Get Backlink Metrics Overview `POST https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/metrics` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | body | string | no | One of: domain, host, url. Default: `host`. | | `target` | body | array of string | yes | | | `output` | query | string | no | One of: json, xml. Default: `json`. | #### Quickstart Look up backlink metrics for a single target and return the result as JSON. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/metrics?output=json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"target":["apyhub.com"]}' ``` #### What you'll get back Returns a JSON object with a `metrics` array. Each item in `metrics` is an object with fields like `target`, `backlinks`, `refdomains`, `ips`, `subnets`, `edu_backlinks`, `gov_backlinks`, `dofollow_backlinks`, and `nofollow_backlinks`. ```json { "metrics": [ { "target": "example.com", "backlinks": 123, "refdomains": 45, "ips": 12, "subnets": 8, "edu_backlinks": 2, "gov_backlinks": 1, "dofollow_backlinks": 100, "nofollow_backlinks": 23 } ] } ``` ### List Backlinks (Filtered) `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/all` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | query | string | no | One of: domain, host, url. Default: `host`. | | `limit` | query | integer | no | Default: `100`. | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | | `order_by` | query | string | no | One of: date_found, domain_inlink_rank, inlink_rank. Default: `date_found`. | | `per_domain` | query | integer | no | | | `anchor_filter` | query | string | no | | | `url_to_filter` | query | string | no | | | `inlink_rank_to` | query | integer | no | Default: `100`. | | `nofollow_filter` | query | string | no | One of: nofollow_only, dofollow_only. | | `url_from_filter` | query | string | no | | | `inlink_rank_from` | query | integer | no | Default: `0`. | | `anchor_filter_mode` | query | string | no | One of: contains, does_not_contain. Default: `contains`. | | `url_to_filter_mode` | query | string | no | One of: contains, does_not_contain. Default: `contains`. | | `url_from_filter_mode` | query | string | no | One of: contains, does_not_contain. Default: `contains`. | | `domain_inlink_rank_to` | query | integer | no | Default: `100`. | | `domain_inlink_rank_from` | query | integer | no | Default: `0`. | #### Quickstart Fetch backlinks for a target site by passing the required `target` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/all?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `backlinks` array. Each item in the array is an object that may include fields like `url_from`, `url_to`, `anchor`, `title`, `nofollow`, `inlink_rank`, `domain_inlink_rank`, and date strings such as `first_seen` and `last_visited`. ```json { "backlinks": [ { "url_from": "https://blog.example.com/post-1", "url_to": "https://example.com/", "anchor": "Example", "nofollow": false, "inlink_rank": 42, "domain_inlink_rank": 58, "first_seen": "2024-01-12", "last_visited": "2024-02-03" } ] } ``` ### List Backlinks (Filtered) `POST https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/all` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | body | string | no | One of: domain, host, url. Default: `host`. | | `limit` | body | integer | no | | | `target` | body | string | yes | | | `order_by` | body | string | no | One of: date_found, domain_inlink_rank, inlink_rank. | | `per_domain` | body | integer | no | | | `output` | query | string | no | One of: json, xml. Default: `json`. | #### Quickstart Fetch backlinks for a target URL or domain. This example uses the required `target` field and the default `output=json`. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/all?output=json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"target":"https://apyhub.com"}' ``` #### What you'll get back Returns a JSON object with a `backlinks` array. Each item in `backlinks` is an object that may include fields such as `url_from`, `url_to`, `anchor`, `title`, `alt`, `image`, `nofollow`, `first_seen`, `last_visited`, `inlink_rank`, and `domain_inlink_rank`. ```json { "backlinks": [ { "url_from": "https://blog.example.org/post", "url_to": "https://example.com", "anchor": "Example site", "nofollow": false, "first_seen": "2024-01-15", "inlink_rank": 42 } ] } ``` ### Count Total Backlinks `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/count` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | query | string | no | One of: domain, host, url. Default: `host`. | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | #### Quickstart Fetch the backlink count for a target by passing it as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/count?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `metrics` array. Each item in `metrics` is an object with a `target` string and a `backlinks` integer. ```json { "metrics": [ { "target": "example.com", "backlinks": 1234 } ] } ``` ### Count Total Backlinks `POST https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/count` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | body | string | no | One of: domain, host, url. Default: `host`. | | `target` | body | array of string | yes | | | `output` | query | string | no | One of: json, xml. Default: `json`. | #### Quickstart Count backlinks for a single target by posting its `target` in JSON, with the result format set in the query string. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/count?output=json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"target":["apyhub.com"]}' ``` #### What you'll get back Returns a JSON object with a `metrics` array. Each item in `metrics` is an object with a `target` string and a `backlinks` integer. ```json { "metrics": [ { "target": "example.com", "backlinks": 42 } ] } ``` ### List New/Lost Backlinks `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/history` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | query | string | no | One of: domain, host, url. Default: `host`. | | `limit` | query | integer | no | Default: `100`. | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | | `date_to` | query | string (date) | no | | | `dofollow` | query | string | no | One of: dofollow, nofollow, undefined. | | `order_by` | query | string | no | One of: new_lost_date, domain_inlink_rank, inlink_rank. Default: `new_lost_date`. | | `url_from` | query | string | no | | | `date_from` | query | string (date) | no | | | `link_type` | query | string | no | One of: href, redirect. | | `anchor_type` | query | string | no | One of: text, image, undefined. | | `new_lost_type` | query | string | no | One of: new, lost. | #### Quickstart Fetch backlink history for a target host, domain, or URL using the required `target` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/history?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `new_lost_backlinks` array field. Each item in the array is an object describing a backlink history record, with fields such as `url_from`, `url_to`, `new_lost_date`, `new_lost_type`, and related backlink metadata. ```json { "new_lost_backlinks": [ { "url_from": "https://example.com/article", "url_to": "https://targetsite.com/page", "new_lost_date": "2024-01-15", "new_lost_type": "new" } ] } ``` ### List New/Lost Backlinks `POST https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/history` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | body | string | no | One of: domain, host, url. | | `target` | body | string | yes | | | `date_to` | body | string (date) | no | | | `date_from` | body | string (date) | no | | | `output` | query | string | no | One of: json, xml. Default: `json`. | #### Quickstart Fetch backlink history for a target site or URL. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/history?output=json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"target":"https://apyhub.com","mode":"url"}' ``` #### What you'll get back Returns a JSON object with a `new_lost_backlinks` array. Each item in the array is an object describing one backlink record, with fields such as `url_from`, `url_to`, `anchor`, `first_seen`, `new_lost_date`, `new_lost_type`, and other backlink metadata. ```json { "new_lost_backlinks": [ { "url_from": "https://example.com/page-a", "url_to": "https://example.com", "anchor": "Example", "first_seen": "2024-01-01", "new_lost_date": "2024-01-15", "new_lost_type": "new" } ] } ``` ### Get Page Authority History `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority/page/history` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | | `date_to` | query | string (date) | no | | | `date_from` | query | string (date) | no | | | `granularity` | query | string | no | Example: `by_week`. | #### Quickstart Get backlink authority history for a target URL or domain by passing the required `target` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/authority/page/history?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `history` array. Each item in `history` is an object with a `date` string and an `inlink_rank` integer. ```json { "history": [ { "date": "2024-01-01", "inlink_rank": 42 } ] } ``` ### Get New/Lost Backlinks — Daily Counts `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/history/count` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | query | string | no | One of: domain, host, url. Default: `host`. | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | | `date_to` | query | string (date) | no | | | `dofollow` | query | string | no | One of: dofollow, nofollow, undefined. | | `url_from` | query | string | no | | | `date_from` | query | string (date) | no | | | `link_type` | query | string | no | One of: href, redirect. | | `anchor_type` | query | string | no | One of: text, image, undefined. | | `new_lost_type` | query | string | no | One of: new, lost. | #### Quickstart Fetch backlink history counts for a target by passing the required `target` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/history/count?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `new_lost_backlinks_count` array. Each array item is an object that may include `new` and `lost` integers plus a `date` string in `YYYY-MM-DD` format. ```json { "new_lost_backlinks_count": [ { "date": "2024-01-01", "new": 12, "lost": 3 } ] } ``` ### Get New/Lost Backlinks — Daily Counts `POST https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/history/count` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | body | string | no | One of: domain, host, url. | | `target` | body | string | yes | | | `date_to` | body | string (date) | no | | | `date_from` | body | string (date) | no | | | `output` | query | string | no | One of: json, xml. Default: `json`. | #### Quickstart Get backlink history counts for a target domain, host, or URL. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/history/count?output=json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "target": "apyhub.com" }' ``` #### What you'll get back Returns a JSON object with a `new_lost_backlinks_count` array. Each array item is an object with `new` (integer), `date` (string date), and `lost` (integer). ```json { "new_lost_backlinks_count": [ { "new": 12, "date": "2024-01-01", "lost": 3 } ] } ``` ### Count Referring IPs `GET https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/referring-ips/count` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | query | string | no | One of: domain, host, url. Default: `host`. | | `output` | query | string | no | One of: json, xml. Default: `json`. | | `target` | query | string | yes | | #### Quickstart Check the number of referring IPs for a target by passing it as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/referring-ips/count?target=apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `metrics` array. Each item in `metrics` is an object with a `target` string and a `referring_ips` integer. ```json { "metrics": [ { "target": "example.com", "referring_ips": 42 } ] } ``` ### Count Referring IPs `POST https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/referring-ips/count` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `mode` | body | string | no | One of: domain, host, url. | | `target` | body | array of string | yes | | | `output` | query | string | no | One of: json, xml. Default: `json`. | #### Quickstart Count the referring IPs for one target by sending its mode and target in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/se-ranking/backlinks/v1/backlinks/referring-ips/count?output=json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"target":["apyhub.com"],"mode":"domain"}' ``` #### What you'll get back Returns a JSON object with a `metrics` array. Each item in `metrics` is an object with a `target` string and a `referring_ips` integer. ```json { "metrics": [ { "target": "example.com", "referring_ips": 42 } ] } ``` ## About ## What it does The Backlinks API returns the backlink profile of any domain, host, or URL as JSON or XML. Send a `target` and a `mode` (`domain`, `host`, or `url`) and get backlink counts, referring domains, anchor texts, referring IPs and subnets, and page and domain authority scores. Its 44 endpoints cover the profile from different angles. List individual backlinks with `url_from`, `url_to`, `anchor`, nofollow status, and first-seen dates, filtered by authority, anchor, or URL. Track new and lost backlinks and referring domains by day with `date_from` and `date_to`, and read cumulative backlink and authority history. Many endpoints accept a POST body with several targets, so one backlink API call can check a batch. Raw backlinks page through results with a `next` cursor, up to 100,000 rows per call, and large exports run as tasks that return a `.csv.gz` file. Use this Backlinks API to build a backlink checker into an SEO tool, monitor lost links for clients, audit anchor text distribution, or compare link profiles across competitors. Link-building teams use referring domain lists to find outreach targets. Find the rivals to compare with the [Competitor Analysis API](https://apyhub.com/namastesumalya/service/identify-competitors), add organic traffic and keyword data with the [Domain Analysis API](https://apyhub.com/se-ranking/service/domain-analysis), and fix broken links found by the [SEO Audit API](https://apyhub.com/se-ranking/service/website-audit). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/se-ranking/service/backlinks * * * --- title: Advanced Domain Analysis API slug: domain-analysis url: https://apyhub.com/se-ranking/service/domain-analysis provider: "SE Ranking SEO & AI Search API" categories: [Data Extraction, Marketing, SEO] tags: [seo, keyword-analysis, domain-analysis, competitor-research, organic-search, paid-search] auth: api_key version: 1.0.0 service_type: sync endpoints: 10 atoms: 500 --- # Advanced Domain Analysis API Run in-depth competitive analysis on any domain. Powered by SE Ranking data for traffic, keyword, and visibility research across competitors. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/overview/worldwide/url` | What it does Retrieves a worldwide URL overview for the url you pass in the query string. The respo… | 500 | | GET | `https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/competitors` | What it does Returns a list of competing domains for the given source domain, using the supplied do… | 500 | | GET | `https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/keywords` | What it does Returns a list of domain keyword ranking records for the requested query parameters. E… | 500 | | GET | `https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/ads` | What it does Returns paid ads data for either a keyword or a domain. The request is sent as query p… | 500 | | GET | `https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/overview/db` | What it does Gets a domain overview by region for the supplied query parameters and returns two sum… | 500 | | GET | `https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/overview/worldwide` | What it does Returns a worldwide domain overview for the specified domain. The response contains se… | 500 | | GET | `https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/pages` | What it does Returns a list of pages for a domain lookup, with each item including the page URL, ti… | 500 | | GET | `https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/keywords/comparison` | What it does Compares keyword overlap and gaps between two domains or URLs, returning a filtered, o… | 500 | | GET | `https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/overview/history` | What it does Returns domain traffic and keyword history for the requested query parameters. The res… | 500 | | GET | `https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/subdomains` | What it does Returns a list of subdomains for the domain identified by the query parameters. The re… | 500 | ## Endpoint reference ### Get Worldwide URL Overview `GET https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/overview/worldwide/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | yes | | | `fields` | query | string | no | | #### Quickstart Fetch a worldwide domain overview for a URL by passing the target URL as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/overview/worldwide/url?url=https%3A%2F%2Fseranking.com%2Fapi.html" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with two optional array fields: `adv` and `organic`. Each array contains objects with `source` (always `"worldwide"`), `price_sum` as a number, `traffic_sum` as an integer, and `keywords_count` as an integer. ```json { "adv": [ { "source": "worldwide", "price_sum": 1250.5, "traffic_sum": 3400, "keywords_count": 87 } ], "organic": [ { "source": "worldwide", "price_sum": 980.0, "traffic_sum": 12800, "keywords_count": 214 } ] } ``` ### Get Domain Competitors `GET https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/competitors` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `type` | query | string | no | One of: organic, adv. Default: `organic`. | | `domain` | query | string | yes | | | `source` | query | string | yes | | #### Quickstart Fetch competitor domains for a given source and domain. The `type` query parameter is optional, so this minimal call uses the default `organic` value. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/competitors?source=us&domain=seranking.com&type=organic" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON array of competitor objects. Each object can include `domain`, `price_sum`, `traffic_sum`, `total_keywords`, `common_keywords`, `domain_relevance`, and `missing_keywords`. ```json [ { "domain": "competitor.com", "price_sum": 123.45, "traffic_sum": 6789, "total_keywords": 250, "common_keywords": 42, "domain_relevance": 0.67, "missing_keywords": 208 } ] ``` ### Get Domain Keywords `GET https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/keywords` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | no | | | `cols` | query | string | no | | | `page` | query | integer | no | Default: `1`. | | `type` | query | string | no | One of: organic, adv. Default: `organic`. | | `year` | query | integer | no | | | `limit` | query | integer | no | Default: `100`. | | `month` | query | integer | no | | | `domain` | query | string | no | | | `source` | query | string | yes | | | `order_type` | query | string | no | One of: asc, desc. Default: `desc`. | | `pos_change` | query | string | no | One of: up, down, new, lost, diff, same. | | `filter[url]` | query | string | no | | | `order_field` | query | string | no | One of: traffic, volume, position, cpc, competition, kei, difficulty, traffic_percent, price. Default: `traffic`. | | `filter[cpc][to]` | query | number | no | | | `filter[intents]` | query | string | no | | | `filter[keyword]` | query | string | no | | | `with_subdomains` | query | boolean | no | Default: `true`. | | `filter[cpc][from]` | query | number | no | | | `filter[price][to]` | query | number | no | | | `filter[volume][to]` | query | integer | no | | | `filter[price][from]` | query | number | no | | | `filter[traffic][to]` | query | integer | no | | | `filter[position][to]` | query | integer | no | | | `filter[volume][from]` | query | integer | no | | | `filter[serp_features]` | query | string | no | | | `filter[traffic][from]` | query | integer | no | | | `filter[difficulty][to]` | query | integer | no | | | `filter[position][from]` | query | integer | no | | | `filter[competition][to]` | query | number | no | | | `filter[difficulty][from]` | query | integer | no | | | `filter[competition][from]` | query | number | no | | | `filter[keyword_count][to]` | query | integer | no | | | `filter[keyword_count][from]` | query | integer | no | | | `filter[traffic_percent][to]` | query | number | no | | | `filter[characters_count][to]` | query | integer | no | | | `filter[serp_features_2][mode]` | query | string | no | One of: with_link, without_link. | | `filter[traffic_percent][from]` | query | number | no | | | `filter[characters_count][from]` | query | integer | no | | | `filter[multi_keyword_excluded]` | query | string | no | | | `filter[multi_keyword_included]` | query | string | no | | | `filter[serp_features_2][value][0]` | query | string | no | | #### Quickstart Fetch keyword data for a domain by providing the required `source` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/keywords?source=us&domain=apyhub.com&type=organic&limit=10&page=1&order_field=traffic&order_type=desc" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON array of objects. Each object can include keyword metrics such as `keyword` (string), `volume` (integer), `traffic` (integer), `position` (integer), `cpc` (number), `price` (number), `difficulty` (integer), `competition` (number), `traffic_percent` (number), `url` (string), `intents` (array of `I`, `N`, `T`, `C`, `L`), and other fields shown in the schema. ```json [ { "keyword": "running shoes", "volume": 5400, "traffic": 120, "position": 3 } ] ``` ### Get Domain Paid Ads `GET https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/ads` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `to` | query | string | no | YYYY-MM | | `from` | query | string | no | YYYY-MM | | `page` | query | integer | no | Default: `1`. | | `limit` | query | integer | no | Default: `100`. | | `domain` | query | string | no | | | `source` | query | string | yes | | | `keyword` | query | string | no | | #### Quickstart Get domain ads data by providing the required `source` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/ads?source=us&domain=booking.com&limit=10&page=1" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON array. Each item is one of two object shapes: a keyword-based result with fields like `domain`, `snippets`, `ads_count`, `price_sum`, `traffic_sum`, and `keywords_count`; or a domain-based result with `cpc`, `volume`, `keyword`, `snippets`, `ads_count`, and `competition`. ```json [ { "domain": "example.com", "snippets": {}, "ads_count": 12, "price_sum": 34.5, "traffic_sum": 1200, "keywords_count": 8 } ] ``` ### Get Regional Domain Overview `GET https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/overview/db` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | no | | | `domain` | query | string | no | | | `source` | query | string | no | | | `with_subdomains` | query | boolean | no | Default: `true`. | #### Quickstart Fetch the domain overview by providing the required `source` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/overview/db?source=us&domain=seranking.com&with_subdomains=true" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with optional `adv` and `organic` object fields. Each object contains domain overview metrics such as `year`, `month`, `target`, `base_domain`, counts, traffic, and price totals. ```json { "adv": { "year": 2024, "month": 1, "target": "example.com", "top1_2": 10, "top3_5": 20, "top6_8": 5, "top9_11": 2, "price_sum": 123.45, "base_domain": "example.com", "traffic_sum": 1000, "keywords_count": 42, "keywords_up_count": 10, "keywords_new_count": 4, "keywords_down_count": 3, "keywords_lost_count": 1, "keywords_equal_count": 24 }, "organic": { "year": 2024, "month": 1, "target": "example.com", "top1_5": 8, "top6_10": 12, "top11_20": 15, "top21_50": 30, "price_sum": 98.76, "top51_100": 60, "base_domain": "example.com", "traffic_sum": 2000, "keywords_count": 60, "keywords_up_count": 12, "keywords_new_count": 6, "keywords_down_count": 4, "keywords_lost_count": 2, "keywords_equal_count": 36 } } ``` ### Get Worldwide Domain Overview `GET https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/overview/worldwide` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | no | | | `domain` | query | string | yes | | | `fields` | query | string | no | | | `currency` | query | string | no | Default: `USD`. | | `show_zones_list` | query | string | no | One of: 0, 1. Default: `0`. | | `with_subdomains` | query | integer | no | One of: 0, 1. Default: `1`. | #### Quickstart Fetch a worldwide domain overview for a domain by passing it as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/overview/worldwide?domain=seranking.com¤cy=USD&with_subdomains=1" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with two top-level array fields: `adv` and `organic`. Each array contains objects with domain overview metrics such as `source`, `country`, `price_sum`, `traffic_sum`, `keywords_count`, `positions_tops`, and the position counters. ```json { "adv": [], "organic": [] } ``` ### Get Top Domain Pages `GET https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/pages` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `type` | query | string | no | One of: organic, adv. Default: `organic`. | | `limit` | query | integer | no | Default: `1000`. | | `scope` | query | string | yes | One of: base_domain, domain, url. | | `offset` | query | integer | no | | | `source` | query | string | yes | | | `target` | query | string | yes | | | `order_type` | query | string | no | One of: asc, desc. Default: `desc`. | | `order_field` | query | string | no | One of: keywords_count, traffic_sum, traffic_percent, price_sum. Default: `keywords_count`. | | `filter[domain_url]` | query | string | no | | | `filter[price_sum][to]` | query | number | no | | | `filter[price_sum][from]` | query | number | no | | | `filter[traffic_sum][to]` | query | integer | no | | | `filter[traffic_sum][from]` | query | integer | no | | | `filter[keywords_count][to]` | query | integer | no | | | `filter[keywords_count][from]` | query | integer | no | | | `filter[domain_traffic_percent][to]` | query | number | no | | | `filter[domain_traffic_percent][from]` | query | number | no | | #### Quickstart Fetch domain pages by passing the required `target`, `scope`, and `source` query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/pages?target=seranking.com&scope=domain&source=us&type=organic&limit=100" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON array of objects. Each object can include `url`, `title`, `intents`, `price_sum`, `traffic_sum`, `keywords_count`, and `traffic_percent`. ```json [ { "url": "https://example.com/pricing", "title": "Pricing", "price_sum": 120.5, "traffic_sum": 3400, "keywords_count": 85, "traffic_percent": 12.4 } ] ``` ### Compare Domain Keywords `GET https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/keywords/comparison` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | no | | | `cols` | query | string | no | | | `diff` | query | string | no | One of: 0, 1. Default: `0`. | | `page` | query | integer | no | Default: `1`. | | `type` | query | string | no | One of: organic, adv. Default: `organic`. | | `limit` | query | integer | no | Default: `100`. | | `domain` | query | string | no | | | `source` | query | string | yes | | | `compare` | query | string | yes | | | `order_type` | query | string | no | One of: asc, desc. Default: `asc`. | | `order_field` | query | string | no | One of: keyword, volume, cpc, competition, difficulty, position. Default: `keyword`. | | `filter[cpc][to]` | query | number | no | | | `filter[intents]` | query | string | no | | | `filter[keyword]` | query | string | no | | | `filter[cpc][from]` | query | number | no | | | `filter[volume][to]` | query | integer | no | | | `filter[volume][from]` | query | integer | no | | | `filter[serp_features]` | query | string | no | | | `filter[difficulty][to]` | query | integer | no | | | `filter[competition][to]` | query | number | no | | | `filter[difficulty][from]` | query | integer | no | | | `filter[competition][from]` | query | number | no | | | `filter[multi_keyword_excluded]` | query | string | no | | | `filter[multi_keyword_included]` | query | string | no | | #### Quickstart Compare keyword data between two sources for a domain and return the matching keyword rows. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/keywords/comparison?source=us&domain=apple.com&compare=samsung.com&type=organic&limit=10" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON array of objects. Each object can include `keyword` as a string, `volume` and `difficulty` as integers, `cpc` and `competition` as numbers, and `position` as an integer or `null`. ```json [ { "cpc": 1.25, "volume": 9900, "keyword": "domain analysis", "position": 3, "difficulty": 42, "competition": 0.78 } ] ``` ### Get Domain Historical Trends `GET https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/overview/history` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | no | | | `type` | query | string | no | One of: organic, adv. Default: `organic`. | | `domain` | query | string | no | | | `source` | query | string | yes | | | `with_subdomains` | query | integer | no | One of: 0, 1. Default: `1`. | #### Quickstart Fetch the domain history for a source by passing the required `source` query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/overview/history?source=us&domain=seranking.com&type=organic&with_subdomains=1" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON array of objects. Each object may include fields such as `year`, `month`, `top1_2`, `top1_5`, `top3_5`, `top6_8`, `top6_10`, `top9_11`, `top11_20`, `top21_50`, `price_sum`, `top51_100`, `traffic_sum`, and `keywords_count`. ```json [ { "year": 2024, "month": 1, "top1_2": 12, "top1_5": 18, "top3_5": 9, "top6_8": 6, "top6_10": 4, "top9_11": 3, "top11_20": 15, "top21_50": 27, "price_sum": 124.5, "top51_100": 8, "traffic_sum": 3200, "keywords_count": 54 } ] ``` ### Get Domain Subdomains `GET https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/subdomains` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `type` | query | string | no | One of: organic, adv. Default: `organic`. | | `limit` | query | integer | no | Default: `1000`. | | `scope` | query | string | yes | One of: base_domain, domain. | | `offset` | query | integer | no | | | `source` | query | string | yes | | | `target` | query | string | yes | | | `order_type` | query | string | no | One of: asc, desc. Default: `desc`. | | `order_field` | query | string | no | One of: keywords_count, traffic_sum, traffic_percent, price_sum. Default: `keywords_count`. | | `filter[domain_url]` | query | string | no | | | `filter[price_sum][to]` | query | number | no | | | `filter[price_sum][from]` | query | number | no | | | `filter[traffic_sum][to]` | query | integer | no | | | `filter[traffic_sum][from]` | query | integer | no | | | `filter[keywords_count][to]` | query | integer | no | | | `filter[keywords_count][from]` | query | integer | no | | | `filter[domain_traffic_percent][to]` | query | number | no | | | `filter[domain_traffic_percent][from]` | query | number | no | | #### Quickstart Fetch subdomains for the required target and scope, using the source you want to query. ```bash curl -X GET "https://api.eu.apyhub.com/se-ranking/domain-analysis/v1/domain/subdomains?target=seranking.com&scope=domain&source=us&type=organic&limit=1000" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON array of objects. Each object can include `url` (string), `price_sum` (number), `traffic_sum` (integer), `keywords_count` (integer), and `traffic_percent` (number). ```json [ { "url": "blog.example.com", "price_sum": 120.5, "traffic_sum": 3400, "keywords_count": 87, "traffic_percent": 12.4 } ] ``` ## About ## What it does Domain Analysis helps you inspect a domain’s organic and paid search footprint, compare competitors, and review keyword-level performance across regions and time. Send a domain or URL together with a source, and get back structured SEO data for pages, subdomains, rankings, ads, and overview metrics. The endpoints support both current snapshots and historical views, plus worldwide and region-specific breakdowns. You can sort and filter by traffic, keywords, price, position, CPC, difficulty, competition, and intent, depending on the endpoint. Use Domain Analysis when you need to map a site’s search visibility, find competing domains, or track keyword movement over time. For example, you can pull the pages driving the most traffic, compare keyword overlap between two domains, or inspect paid ads and their snippets for a target keyword or domain. The responses are designed for direct ingestion into dashboards, reporting pipelines, or internal SEO tooling. You get fields such as `url`, `title`, `keyword`, `traffic_sum`, `keywords_count`, `price_sum`, `cpc`, `volume`, `position`, `difficulty`, `competition`, and intent or ranking breakdowns where the endpoint provides them. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/se-ranking/service/domain-analysis * * * --- title: Compare Beaches Around the World slug: beaches-information url: https://apyhub.com/ryanvinson/service/beaches-information provider: Ryan Vinson categories: [Geolocation, Travel] tags: [beaches, tides, water-quality, travel-data, location-data, beach-conditions] auth: api_key version: 1.0.0 service_type: sync endpoints: 8 atoms: 10 --- # Compare Beaches Around the World Look up beach details and location data through a single REST call. Useful for travel apps, destination guides, and location-aware recommendations. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/ryanvinson/beaches-information/countries` | What it does Returns a list of countries available from the service, along with the total count and… | 10 | | GET | `https://api.eu.apyhub.com/ryanvinson/beaches-information` | What it does Searches for beaches and returns a paginated list of matching beach records along with… | 10 | | GET | `https://api.eu.apyhub.com/ryanvinson/beaches-information/:id` | What it does Returns the details for a single beach identified by its path id. The response is a JS… | 10 | | GET | `https://api.eu.apyhub.com/ryanvinson/beaches-information/:id/conditions` | What it does Returns beach condition records for the beach identified by id. The response includes… | 10 | | GET | `https://api.eu.apyhub.com/ryanvinson/beaches-information/scored` | What it does Returns a paginated list of top rated beaches. You can control the page size and start… | 10 | | GET | `https://api.eu.apyhub.com/ryanvinson/beaches-information/:id/rules` | What it does Retrieves the rules for a specific beach identified by its integer id, returning the b… | 10 | | GET | `https://api.eu.apyhub.com/ryanvinson/beaches-information/:id/amenities` | What it does Retrieves the amenities information for a specific beach identified by its numeric id.… | 10 | | GET | `https://api.eu.apyhub.com/ryanvinson/beaches-information/tides/:beach_id` | What it does Returns the tide forecast for a specific beach identified by beachid. The response is… | 10 | ## Endpoint reference ### List available countries `GET https://api.eu.apyhub.com/ryanvinson/beaches-information/countries` · 10 atoms · accepts `application/json` #### Quickstart This GET request fetches the beach counts summary from the endpoint. ```bash curl -X GET "https://api.eu.apyhub.com/ryanvinson/beaches-information/countries" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `count` integer and a `results` array. Each item in `results` is an object with a `country` string and a `beach_count` integer. ```json { "count": 2, "results": [ { "country": "Greece", "beach_count": 12 }, { "country": "Croatia", "beach_count": 8 } ] } ``` ### Search Beaches `GET https://api.eu.apyhub.com/ryanvinson/beaches-information` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Default: `100`. | | `state` | query | string | no | | | `offset` | query | integer | no | Default: `0`. | | `search` | query | string | no | | | `country` | query | string | no | | #### Quickstart List beach records with the default limit. ```bash curl -X GET "https://api.eu.apyhub.com/ryanvinson/beaches-information?limit=100&offset=0" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with two required top-level fields: `count` as an integer, and `results` as an array of beach objects. Each result includes `id`, `name`, `state`, `latitude`, `longitude`, `nearest_buoy_id`, and `nearest_tide_station`. ```json { "count": 47, "results": [ { "id": 1, "name": "Venice Beach", "state": "CA", "latitude": 33.985, "longitude": -118.469, "nearest_buoy_id": "46025", "nearest_tide_station": "9410660" } ] } ``` ### Get Beach Details `GET https://api.eu.apyhub.com/ryanvinson/beaches-information/:id` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | path | integer | yes | | #### Quickstart Fetch a beach record by its `id` path parameter. ```bash curl -X GET "https://api.eu.apyhub.com/ryanvinson/beaches-information/:id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level fields: `id` (integer), `name` (string), `state` (string), `latitude` (number or null), `longitude` (number or null), `description` (string), `nearest_buoy_id` (string), `nearest_tide_station` (string), `beach_day_score` (number or null), `water_quality` (object or null), `weather` (object or null), `ocean_conditions` (object or null), `rules` (array of objects), and `amenities` (array of objects). The `id` field is read-only. ```json { "id": 123, "name": "Example Beach", "state": "CA", "latitude": 34.0123, "longitude": -118.4951, "description": "A sample beach record.", "nearest_buoy_id": "buoy-001", "nearest_tide_station": "tide-station-01", "beach_day_score": 8.5, "water_quality": {}, "weather": {}, "ocean_conditions": {}, "rules": [], "amenities": [] } ``` ### Get Beach Conditions `GET https://api.eu.apyhub.com/ryanvinson/beaches-information/:id/conditions` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | path | integer | yes | | | `limit` | query | integer | no | Default: `30`. | | `offset` | query | integer | no | Default: `0`. | #### Quickstart Fetch beach-day forecast data for a specific beach ID, with optional paging via query parameters. ```bash curl -X GET "https://api.eu.apyhub.com/ryanvinson/beaches-information/:id/conditions?limit=30&offset=0" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `beach_id` as an integer, `count` as an integer, and `results` as an array of objects. Each result object includes `id`, `beach_id`, `date`, `water_quality`, `weather`, `ocean_conditions`, `tides`, and `beach_day_score`. ```json { "beach_id": 123, "count": 1, "results": [ { "id": 1, "beach_id": 123, "date": "2026-07-16", "water_quality": {}, "weather": {}, "ocean_conditions": {}, "tides": [], "beach_day_score": 8.5 } ] } ``` ### Get Top Rated Beaches `GET https://api.eu.apyhub.com/ryanvinson/beaches-information/scored` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `limit` | query | integer | no | Default: `50`. | | `offset` | query | integer | no | Default: `0`. | #### Quickstart List beaches with the default page size. ```bash curl -X GET "https://api.eu.apyhub.com/ryanvinson/beaches-information/scored?limit=50&offset=0" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `count` and `results` fields. `count` is an integer, and `results` is an array of beach objects; each item includes fields such as `id`, `name`, `state`, `latitude`, `longitude`, `description`, `nearest_buoy_id`, `nearest_tide_station`, `beach_day_score`, `water_quality`, `weather`, `ocean_conditions`, `rules`, and `amenities`. ```json { "count": 1, "results": [ { "id": 123, "name": "Bondi Beach", "state": "NSW", "latitude": -33.8908, "longitude": 151.2743, "description": "Popular beach in Sydney.", "nearest_buoy_id": "buoy-001", "nearest_tide_station": "Bondi", "beach_day_score": 8.5, "water_quality": {}, "weather": {}, "ocean_conditions": {}, "rules": [], "amenities": [] } ] } ``` ### Get Beach Rules `GET https://api.eu.apyhub.com/ryanvinson/beaches-information/:id/rules` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | path | integer | yes | | #### Quickstart Fetch the beach rules for a specific beach ID. Replace `123` with the beach ID you want to look up. ```bash curl -X GET "https://api.eu.apyhub.com/ryanvinson/beaches-information/:id/rules" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a required `beach_id` integer and a required `rules` array. Each item in `rules` is an object with `category`, `status`, and `notes` fields. ```json { "beach_id": 123, "rules": [ { "category": "dogs", "status": "allowed", "notes": "Dogs are allowed on the south side." } ] } ``` ### Get Beach Amenities `GET https://api.eu.apyhub.com/ryanvinson/beaches-information/:id/amenities` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | path | integer | yes | | #### Quickstart Fetch a beach’s amenities by its path `id`. ```bash curl -X GET "https://api.eu.apyhub.com/ryanvinson/beaches-information/:id/amenities" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `beach_id` integer and an `amenities` array of objects. Each amenity object includes `category` (string enum), `available` (boolean), `hours` (string), and `notes` (string). ```json { "beach_id": 123, "amenities": [ { "category": "restrooms", "available": true, "hours": "08:00-20:00", "notes": "Near the main entrance" } ] } ``` ### Get tide Forecast `GET https://api.eu.apyhub.com/ryanvinson/beaches-information/tides/:beach_id` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `beach_id` | path | integer | yes | | #### Quickstart Fetch tide predictions for a beach by its `beach_id` path parameter. ```bash curl -X GET "https://api.eu.apyhub.com/ryanvinson/beaches-information/tides/:beach_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `beach_id` integer and a `tide_predictions` array. Each item in `tide_predictions` is an object with a `date` string in `YYYY-MM-DD` format and a `tides` array of objects. ```json { "beach_id": 123, "tide_predictions": [ { "date": "2026-07-16", "tides": [] } ] } ``` ## About ## What it does Beach Information gives you searchable beach records, local rules, amenities, conditions, and tide forecasts in one API. Use it to look up beaches by country, state, or name, then pull the details you need for a trip planner, beach safety app, or location directory. List available countries with a beach count, or search beaches with `country`, `state`, `search`, `limit`, and `offset`. Search results return each beach's `id`, `name`, `state`, `latitude`, `longitude`, `nearest_buoy_id`, and `nearest_tide_station`, with optional fields like `country`, `nudism`, `lifeguard`, and `surf_spot` when available. For a specific beach `id`, get the full beach record: `description`, `beach_day_score`, `water_quality`, `weather`, `ocean_conditions`, `rules`, and `amenities`. Rules are broken out by category and status, and amenities include availability, hours, and notes for items such as restrooms, showers, lifeguards, parking, food, accessibility, and rentals. Use the conditions and tide endpoints when you need time-based data. Beach conditions return dated entries with `water_quality`, `weather`, `ocean_conditions`, `tides`, and `beach_day_score`. Tide forecasts return `beach_id` and a list of `tide_predictions` by date, each with its tide entries. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/ryanvinson/service/beaches-information * * * --- title: "PlaySocket Puzzle & Brain Games API" slug: playsocket-game-engine url: https://apyhub.com/gyanesh5009/service/playsocket-game-engine provider: gyanesh kumar categories: [Smart Generation] tags: [games, graphql, sudoku, brain-training, education, developer-tools, java, spring-boot] auth: api_key version: v1 service_type: sync endpoints: 1 atoms: 3 --- # PlaySocket Puzzle & Brain Games API Generate Sudoku puzzles and Schulte tables via GraphQL. Returns puzzle grids, solutions, difficulty levels, and randomized board layouts. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/gyanesh5009/playsocket-game-engine/api/games` | What it does Executes a GraphQL query against the PlaySocket GraphQL Gateway and returns the corres… | 3 | ## Endpoint reference ### Generate Sudoku, Schulte & Stroop Boards `POST https://api.eu.apyhub.com/gyanesh5009/playsocket-game-engine/api/games` · 3 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `query` | body | string | yes | The GraphQL query document to execute. Example: `query { newSudokuBoard(limit: 1, difficulty: "HARD", size: 9) { grids { value s…`. | | `variables` | body | object | no | Optional map of GraphQL variables referenced in the query. Example: `{"size":5}`. | | `operationName` | body | string | no | Optional name of the operation to execute if the query contains multiple named operations. Example: `NewSchulteTable`. | #### Quickstart Run a GraphQL query to generate a **Sudoku board**, **Schulte Table**, or **Stroop Test table**. ##### Generate a Sudoku Board ```bash curl -X POST "https://api.eu.apyhub.com/gyanesh5009/playsocket-game-engine/api/games" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "query": "query { newSudokuBoard(limit: 1, difficulty: \"HARD\", size: 9) { grids { value solution difficulty } results message } }" }' ``` ##### Generate a Schulte Table ```bash curl -X POST "https://api.eu.apyhub.com/gyanesh5009/playsocket-game-engine/api/games" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "query": "query { newSchulteTable(size: 5) { schulteBoard message } }" }' ``` ##### Generate a Stroop Test ```bash curl -X POST "https://api.eu.apyhub.com/gyanesh5009/playsocket-game-engine/api/games" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "query": "query { newStroopTable(size: 5, difficulty: \"HARD\") { stroopBoard { colorName actualColor } difficulty message } }" }' ``` #### What you'll get back The API returns a JSON object with optional `data` and `errors` fields. On success, `data` contains the result of the selected GraphQL query. ##### Sudoku Response The `newSudokuBoard` field contains `grids`, an array of generated puzzle objects, `results`, the number of grids returned, and `message`, a status string. ```json { "data": { "newSudokuBoard": { "grids": [ { "value": [["1", " ", "3"]], "solution": [["1", "2", "3"]], "difficulty": "HARD" } ], "results": 1, "message": "Data fetched successfully." } } } ``` ##### Schulte Table Response The `newSchulteTable` field contains `schulteBoard`, a two-dimensional array of integers, and `message`. ```json { "data": { "newSchulteTable": { "schulteBoard": [ [1, 8, 15, 22, 9], [19, 4, 12, 25, 2], [7, 21, 14, 5, 18], [23, 10, 3, 16, 24], [11, 6, 20, 13, 17] ], "message": "Data fetched successfully." } } } ``` ##### Stroop Test Response The `newStroopTable` field contains `stroopBoard`, a two-dimensional array of `Color` objects. Each color object contains `colorName` and `actualColor`, along with the selected `difficulty` and a status `message`. ```json { "data": { "newStroopTable": { "stroopBoard": [ [ { "colorName": "RED", "actualColor": "BLUE" }, { "colorName": "GREEN", "actualColor": "GREEN" } ], [ { "colorName": "BLUE", "actualColor": "RED" }, { "colorName": "YELLOW", "actualColor": "GREEN" } ] ], "difficulty": "HARD", "message": "Data fetched successfully." } } } ``` #### Available GraphQL Queries | Query | Parameters | Returns | | ----------------- | ----------------------------- | ------------------- | | `newSudokuBoard` | `limit`, `difficulty`, `size` | Sudoku puzzle grids | | `newSchulteTable` | `size` | Schulte Table | | `newStroopTable` | `size`, `difficulty` | Stroop Test table | All three games can be requested through the same **PlaySocket GraphQL Gateway** by selecting the appropriate query and fields. ## About ## What it does PlaySocket Game Generator gives you a **GraphQL endpoint** that creates puzzle and brain-game boards for **Sudoku, Schulte Table, and Stroop Table** use cases. Send a query in `body.query`, and optionally pass `body.variables` and `body.operationName` when your GraphQL document uses variables or multiple named operations. For **Sudoku**, `newSudokuBoard` returns a wrapper with `results`, `message`, and `grids`. Each grid includes a `value` 2D array for the puzzle, a `solution` 2D array for the solved board, and a `difficulty` value of `EASY`, `MEDIUM`, or `HARD`. This makes it useful when you need generated puzzle content for games, training exercises, or quiz-style experiences. For **Schulte Tables**, `newSchulteTable` returns a `message` and a randomized `schulteBoard` 2D integer grid sized according to the request. You can use it anywhere you need a generated layout for attention, timing, visual search, or brain-training gameplay. For the **Stroop Test**, `newStroopTable` generates a randomized Stroop Table board based on the requested `size` and `difficulty`. It returns a `stroopBoard` containing color entries, where each entry provides a `colorName` and its `actualColor`. This allows you to create cognitive-training gameplay that tests attention, response inhibition, and cognitive flexibility. The response is **GraphQL-shaped**: successful payloads come back under `data`, while validation or execution issues appear in `errors` with optional `path` and `locations`. Use PlaySocket Game Generator when your application needs dynamically generated **puzzle, attention, and brain-training game content** without having to build the underlying generation logic yourself. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/gyanesh5009/service/playsocket-game-engine * * * --- title: "Compare Features & Costs across Cloud Providers" slug: get-field-values url: https://apyhub.com/multicloud/service/get-field-values provider: Multicloud.io categories: [Developer Tools] tags: [cloud-computing, server-pricing, instance-catalog, cloud-regions, gpu-instances, infrastructure-data] auth: api_key version: 1.0.0 service_type: sync endpoints: 3 atoms: 100 --- # Compare Features & Costs across Cloud Providers Get canonical lists for providers, price types, processor vendors, accelerator vendors, and architectures. Built for filters, forms, and validation. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/multicloud/get-field-values` | What it does Returns a JSON object containing the available values for several field categories use… | 100 | | GET | `https://api.eu.apyhub.com/multicloud/get-field-values/locations` | What it does Returns a paginated list of locations. You can filter the list by provider, region, or… | 100 | | GET | `https://api.eu.apyhub.com/multicloud/get-field-values/servers` | What it does Returns a paginated list of server listings that match the provided filters and sortin… | 100 | ## Endpoint reference ### Get Field Values `GET https://api.eu.apyhub.com/multicloud/get-field-values` · 100 atoms · accepts `application/json` #### Quickstart Fetch the available field values with the required API key header. ```bash curl -X GET "https://api.eu.apyhub.com/multicloud/get-field-values" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with five array fields: `providers`, `price_types`, `processor_vendors`, `accelerator_vendors`, and `processor_architectures`. Each field is an array of strings listing the unique values for that category. ```json { "providers": [ "AWS", "AZURE", "GCE", "OCI" ], "processor_architectures": [ "arm64", "arm64_mac", "x86_64", "x86_64_mac" ], "processor_vendors": [ "AMD", "AWS", "Ampere", "Apple", "Google", "Intel", "NVIDIA" ], "accelerator_vendors": [ "AMD", "AWS", "Habana", "NVIDIA" ], "price_types": [ "ON_DEMAND", "SPOT" ] } ``` ### List Locations `GET https://api.eu.apyhub.com/multicloud/get-field-values/locations` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `page` | query | integer | no | Page number for pagination Default: `1`. | | `zone` | query | string | no | Filter by zone name | | `region` | query | string | no | Filter by region name | | `sort_by` | query | string | no | Sort results by field | | `per_page` | query | integer | no | Number of items per page Default: `20`. | | `provider` | query | string | no | Filter by cloud provider | | `sort_order` | query | string | no | Sort order (ascending or descending) | #### Quickstart List locations, using the default page size and page 1. ```bash curl -X GET "https://api.eu.apyhub.com/multicloud/get-field-values/locations?page=1&per_page=20" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with: - `data` — an array of location objects - `metadata` — a pagination object with `total_results`, `total_pages`, `current_page`, and `page_size` Each item in `data` includes `id`, `provider`, `region`, and `display_name`, with optional `zone`, `created_at`, and `updated_at`. ```json { "data": [ { "id": "aws-us-east-1a", "provider": "aws", "region": "us-east-1", "display_name": "US East 1a", "zone": "us-east-1a" } ], "metadata": { "total_results": 1, "total_pages": 1, "current_page": 1, "page_size": 20 } } ``` ### List Servers `GET https://api.eu.apyhub.com/multicloud/get-field-values/servers` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `page` | query | integer | no | Page number for pagination Default: `1`. | | `region` | query | string | no | Filter by region name - case-insensitive. Supports regex patterns (e.g., 'eu-.*') | | `sort_by` | query | string | no | Field to sort by Default: `price_per_hour`. | | `max_risk` | query | integer | no | Maximum acceptable pre-emption risk level for spot instances (0-5) | | `per_page` | query | integer | no | Number of items per page Default: `20`. | | `provider` | query | string | no | Filter by cloud provider - case-insensitive | | `max_vcpus` | query | integer | no | Maximum number of vCPUs | | `min_vcpus` | query | integer | no | Minimum number of vCPUs | | `price_type` | query | string | no | Filter by pricing type - case-insensitive. Valid: 'SPOT' or 'ON_DEMAND' | | `sort_order` | query | string | no | Sort order (asc/desc) Default: `asc`. | | `instance_type` | query | string | no | Filter by instance type/name. Supports regex patterns (e.g., t3.*) | | `max_memory_gb` | query | number | no | Maximum RAM in GB | | `min_memory_gb` | query | number | no | Minimum RAM in GB | | `max_storage_gb` | query | number | no | Maximum storage size in GB | | `min_storage_gb` | query | number | no | Minimum storage size in GB | | `has_accelerator` | query | boolean | no | Filter for servers with any accelerator/GPU | | `accelerator_name` | query | string | no | Filter by accelerator/GPU name. Supports regex patterns (e.g., 'V100.*') | | `processor_vendor` | query | string | no | Filter by processor vendor | | `processor_min_ghz` | query | number | no | Minimum processor speed in GHz | | `accelerator_vendor` | query | string | no | Filter by accelerator vendor | | `max_price_per_hour` | query | number | no | Maximum price per hour in USD | | `max_price_per_month` | query | number | no | Maximum estimated price per month in USD | | `min_accelerator_count` | query | integer | no | Minimum number of accelerators/GPUs | | `processor_architecture` | query | string | no | Filter by CPU architecture | | `min_multi_core_benchmark` | query | number | no | Minimum multi-core benchmark score | | `min_accelerator_memory_gb` | query | number | no | Minimum memory per accelerator in GB | | `min_single_core_benchmark` | query | number | no | Minimum single-core benchmark score | | `min_total_accelerator_memory_gb` | query | number | no | Minimum total accelerator memory in GB | #### Quickstart Fetch a page of server listings with the default pagination settings. ```bash curl -X GET "https://api.eu.apyhub.com/multicloud/get-field-values/servers?page=1&per_page=20" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with: - `data` array of server listing objects - `metadata` object with pagination details Each server listing includes required fields like `catalog_id`, `provider`, `region`, `instance_type`, `vcpus`, `memory_gb`, `storage_gb`, `price_per_hour`, and `price_per_month`. ```json { "data": [], "metadata": { "total_results": 0, "total_pages": 0, "current_page": 1, "page_size": 20 } } ``` ## About ## What it does Cloud Server Catalog gives you a searchable inventory of cloud locations and server offerings across providers. Use it to look up provider, region, zone, instance type, pricing, CPU and memory specs, storage, accelerators, and architecture in a consistent format. Send query filters such as page, region, provider, price_type, instance_type, max_risk, vCPU and memory bounds, storage bounds, accelerator fields, processor fields, and sorting options. The List Servers endpoint returns a paginated `data` array plus `metadata` with `total_results`, `total_pages`, `current_page`, and `page_size`. Each server record includes fields like `catalog_id`, `provider`, `region`, `instance_type`, `vcpus`, `memory_gb`, `storage_gb`, `price_per_hour`, and `price_per_month`, with optional fields for risk, zone, disk details, accelerator details, benchmark scores, and price currency. Use List Locations when you need the regional catalog view instead of per-instance pricing. It accepts filters for page, zone, region, provider, and sort controls, then returns paginated location records with `id`, `provider`, `region`, `display_name`, and optional `zone`, `created_at`, and `updated_at` values. Get Field Values returns the reference lists behind the catalog, including `providers`, `price_types`, `processor_vendors`, `accelerator_vendors`, and `processor_architectures`. That is useful when you want to build filters, dropdowns, or validation rules from the same source as the server data. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/multicloud/service/get-field-values * * * --- title: Resume Screening API slug: resume-screening-api url: https://apyhub.com/namastesumalya/service/resume-screening-api provider: Sumalya APIs categories: [Artificial Intelligence, HR] tags: [resume-screening, candidate-ranking, hiring, hr-automation, talent-assessment, job-fit] auth: api_key version: v1 service_type: sync endpoints: 2 atoms: 300-500 alias: sumalya-resume-screening-api --- # Resume Screening API Score a resume against a job title and get strengths, gaps, a verdict, and security risk notes. Rank multiple candidates for hiring workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/resume-screening-api` | What it does Screens a resume against a job title and returns a structured assessment of the candid… | 300 | | POST | `https://api.eu.apyhub.com/namastesumalya/resume-screening-api/bulk` | What it does Screens multiple resumes against a job title and returns a ranked list of candidate re… | 500 | ## Endpoint reference ### Screen Resume `POST https://api.eu.apyhub.com/namastesumalya/resume-screening-api` · 300 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `jobTitle` | body | string | yes | | | `resumeContent` | body | string | yes | | #### Quickstart Send a resume and job title to get a screening result. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/resume-screening-api" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"jobTitle":"Software Engineer","resumeContent":"Experienced software engineer with 5+ years building web applications in JavaScript, TypeScript, and Python."}' ``` #### What you'll get back Returns a JSON object with `score` as an integer, `verdict` as a string, `strengths` and `gaps` as arrays of strings, `integrityNotes` as a string, and `securityReport` as an object with `flags` and `riskLevel`. ```json { "score": 82, "verdict": "Strong match", "strengths": ["Relevant software engineering experience", "Modern web stack"], "integrityNotes": "Resume appears consistent with the job title.", "securityReport": { "flags": [], "riskLevel": "low" }, "gaps": ["No cloud infrastructure experience mentioned"] } ``` ### Screen Resume in Bulk `POST https://api.eu.apyhub.com/namastesumalya/resume-screening-api/bulk` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `resumes` | body | array of string | yes | | | `jobTitle` | body | string | yes | | #### Quickstart Send a job title and a list of resumes to get candidates ranked for that role. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/resume-screening-api/bulk" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "jobTitle": "Software Engineer", "resumes": [ "Senior backend engineer with 8 years of experience in Node.js, Python, PostgreSQL, and AWS.", "Product designer with 5 years of experience in Figma, user research, and design systems." ] }' ``` #### What you'll get back Returns a JSON object with a `rankedCandidates` array. Each item in the array is an object with `id` integer, `score` integer, and `summary` string fields. ```json { "rankedCandidates": [ { "id": 0, "score": 0.95, "summary": "Highly qualified candidate with 8 years of experience, including professional Python development, backend architecture, and cloud infrastructure proficiency." }, { "id": 1, "score": 0.1, "summary": "Candidate profile is focused on product design and UI/UX with no relevant experience in software engineering or Python development." } ], "_cacheInfo": { "cacheEnabled": true, "cachedEntriesCount": 0, "note": "Context caching applied to 2 candidates. Estimated 75% cost reduction on cached content.", "estimatedTokenSavings": 0 } } ``` ## About ## What it does Resume Screening scores resumes against a job title, then returns a decision-ready assessment you can use in hiring workflows. Send a `jobTitle` and a `resumeContent` string for a single candidate, or send a `jobTitle` plus an array of `resumes` for bulk ranking. For a single resume, Resume Screening returns `score`, `verdict`, `strengths`, `gaps`, `integrityNotes`, and a nested `securityReport` with `flags` and `riskLevel`. That gives you both fit signals and a quick check for suspicious or low-trust content in the same response. For bulk screening, the API returns `rankedCandidates`, where each item includes an `id`, `score`, and `summary`. Use it to sort applicants for a role, shortlist candidates before manual review, or add a scoring layer to an internal recruiting tool. The responses are structured for automation, so you can feed them into applicant tracking systems, review dashboards, or hiring pipelines without extra parsing logic. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/resume-screening-api * * * --- title: Resume Optimizer (ATS) API slug: optimize-resume-ats url: https://apyhub.com/namastesumalya/service/optimize-resume-ats provider: Sumalya APIs categories: [HR, SEO, Smart Generation] tags: [ats, resume-optimization, resume, recruiting] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 250 alias: sumalya-resume-optimizer-ats-api --- # Resume Optimizer (ATS) API Rewrite a resume for a target job title and get before and after ATS scores, the improved version, and the list of keywords added. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/optimize-resume-ats` | What it does Optimizes the submitted resume content for ATS based on the provided job title, and re… | 250 | ## Endpoint reference ### Optimize a resume for ATS `POST https://api.eu.apyhub.com/namastesumalya/optimize-resume-ats` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `jobTitle` | body | string | no | Example: `Backend Engineer`. | | `resumeContent` | body | string | no | Example: `Original resume content...`. | #### Quickstart Send a job title and resume text to get an ATS-optimized rewrite. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/optimize-resume-ats" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "resumeContent": "I made some websites and fixed bugs in Javascript.", "jobTitle": "Senior Software Engineer" }' ``` #### What you'll get back Returns a JSON object with `beforeScore` and `afterScore` integers, an `improvedVersion` string, and an `atsKeywordsAdded` array of strings. ```json { "afterScore": 82, "beforeScore": 35, "improvedVersion": "Architected responsive web applications and optimized JavaScript performance...", "atsKeywordsAdded": ["Architecture", "Optimization", "Performance", "Scalability"] } ``` ## About ## What it does Resume ATS Optimizer rewrites a resume for a target job title and returns an ATS-focused version with score changes and keywords added. Send a `jobTitle` and the original `resumeContent`, and get back the before/after scores, an `improvedVersion`, and the `atsKeywordsAdded` array. Use it when you want to tailor a resume for a specific role without manually guessing which phrases an applicant tracking system will prioritize. The response gives you a simple signal of impact through `beforeScore` and `afterScore`, so you can compare the original content with the optimized version. Because the inputs are just plain text, it fits into résumé builders, career tools, internal hiring workflows, or editor features that help candidates adapt a single resume for multiple job postings. You can use the optimized copy as a review draft, a generated suggestion, or the basis for an export step elsewhere in your product. The output is intentionally focused: a rewritten resume string plus the keywords that were added. That makes it easy to display the changes, store the result, or feed it into a downstream document-generation flow. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/optimize-resume-ats * * * --- title: Advanced Website Similarity Analysis API slug: analyze-website-similarity url: https://apyhub.com/namastesumalya/service/analyze-website-similarity provider: Sumalya APIs categories: [Artificial Intelligence, SEO] tags: [website-similarity, competitor-analysis, seo, website-analysis] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 2000 alias: sumalya-advanced-website-similarity-analysis-api --- # Advanced Website Similarity Analysis API Compare a list of website URLs and get an overall similarity score, per-site SEO scores, AI summaries, and concrete improvement suggestions. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/analyze-website-similarity` | What it does Analyzes and compares the website URLs you submit in the request body, then returns a… | 2000 | ## Endpoint reference ### Advanced Similarity Analysis `POST https://api.eu.apyhub.com/namastesumalya/analyze-website-similarity` · 2000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `urls` | body | array of string | yes | List of website URLs to analyze and compare. | #### Quickstart Send one or more website URLs to compare their similarity. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/analyze-website-similarity" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"urls":["https://notion.so","https://clickup.com"]}' ``` #### What you'll get back Returns a JSON object with top-level `tier`, `service`, `insights`, and `timestamp` fields. `insights` is an object containing `global` similarity details and `siteReports` for each analyzed URL. ```json { "tier": "standard", "service": "analyze-website-similarity", "insights": { "global": { "explanation": "The submitted websites share similar content structure and topic focus.", "similarityScore": 78.4 }, "siteReports": [ { "url": "https://example.com", "seoScore": 82, "aiSummary": "A concise business website with a clear value proposition.", "suggestedImprovements": ["Add more internal links", "Improve meta descriptions"] } ] }, "timestamp": "2026-07-08T12:34:56Z" } ``` ## About ## What it does Website Similarity Analysis compares a list of website URLs and returns a scored report for each one, plus an overall similarity result across the set. Send one or more website URLs in the `urls` array. The response includes a `tier` value, the `service` name used for the report, and `timestamp` for when the analysis was generated. Under `insights.global`, you get an `explanation` of the match results and a `similarityScore` from 0 to 100. For each submitted URL, `insights.siteReports` provides the `url`, an `seoScore`, an AI-generated `aiSummary`, and a list of `suggestedImprovements`. That makes it useful when you need to compare competitor pages, audit similar landing pages, or group websites by positioning before a content review. Use it when you want a quick, structured read on how closely a set of sites align, without manually comparing page by page. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/analyze-website-similarity * * * --- title: Global Pricing Recommendations API slug: generate-global-pricing-recommendations url: https://apyhub.com/namastesumalya/service/generate-global-pricing-recommendations provider: Sumalya APIs categories: [E-commerce Quick Tools, Finance] tags: [pricing, price-localization, purchasing-power-parity, saas-pricing] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 alias: sumalya-global-pricing-reccomendations-api --- # Global Pricing Recommendations API Generate country-specific subscription prices from a base price, currency, and home country. Returns local prices with a justification for each. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/generate-global-pricing-recommendations` | What it does Generates pricing recommendations for multiple international markets based on a base s… | 100 | ## Endpoint reference ### Generate Global Pricing Recommendations `POST https://api.eu.apyhub.com/namastesumalya/generate-global-pricing-recommendations` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `basePrice` | body | number | yes | Base subscription price in the home market. Example: `29.99`. | | `homeCountry` | body | string | yes | ISO 3166-1 alpha-3 three-letter country code representing the home market (e.g., USA, IND, GBR). Example: `USA`. | | `baseCurrency` | body | string | yes | ISO 4217 currency code for the base price (e.g., USD, EUR, INR). Example: `USD`. | | `billingFrequency` | body | string | no | Billing cycle for the subscription. Defaults to monthly if not provided. One of: monthly, weekly, annually. Default: `monthly`. Example: `monthly`. | | `annualDiscountPercent` | body | number | no | Discount percentage applied for annual billing plans. Must be between 0 and 100. Example: `20`. | #### Quickstart Generate pricing recommendations for a subscription using your base price, currency, and home country. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/generate-global-pricing-recommendations" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "basePrice": 29.99, "baseCurrency": "USD", "homeCountry": "USA" }' ``` #### What you'll get back Returns a JSON object with a `recommendations` array. Each item in the array is an object with `countryCode`, `countryName`, `justification`, and `recommendedPrice` fields. ```json { "recommendations": [ { "countryCode": "IND", "countryName": "India", "justification": "Adjusted from your base price using Purchasing Power Parity (PPP), local wage data, and currency conversion for a monthly billing cycle.", "recommendedPrice": "₹499" } ] } ``` ## About ## What it does Global Pricing Recommendations helps you generate market-specific subscription prices from a single home-market price. Send a `basePrice`, `baseCurrency`, and `homeCountry`, and you get back a list of recommended prices for international markets. Each recommendation includes the target `countryCode`, `countryName`, a `recommendedPrice` formatted in the local currency, and a `justification` explaining how the figure was derived. The request can also include `billingFrequency` (`monthly`, `weekly`, or `annually`) and an `annualDiscountPercent` for annual plans. Use Global Pricing Recommendations when you need to localize pricing for different countries without maintaining separate pricing logic in your app. It is useful for subscription products, regional launch planning, and pricing experiments where you want a consistent method for translating a base price into local market recommendations. The response is structured for easy downstream use in dashboards, internal tools, or pricing workflows that need to compare countries and present the rationale alongside each suggested price. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/generate-global-pricing-recommendations * * * --- title: Interview Prep Pack API slug: generate-a-tailored-interview-prep-pack url: https://apyhub.com/namastesumalya/service/generate-a-tailored-interview-prep-pack provider: Sumalya APIs categories: [HR, Smart Generation] tags: [interview-questions, interview-prep, recruiting, hr] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 750 alias: sumalya-interview-prep-pack-api --- # Interview Prep Pack API Generate interview questions and target answers from a job title and resume content. Built for structured hiring prep tied to a real candidate. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/generate-a-tailored-interview-prep-pack` | What it does Generates a tailored interview prep pack from the provided resume content and job titl… | 750 | ## Endpoint reference ### Generate a tailored interview prep pack `POST https://api.eu.apyhub.com/namastesumalya/generate-a-tailored-interview-prep-pack` · 750 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `jobTitle` | body | string | yes | Example: `Senior Cloud Architect`. | | `resumeContent` | body | string | yes | Example: `Resume content to analyze...`. | #### Quickstart Send your resume content and target job title to generate a tailored interview prep pack. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/generate-a-tailored-interview-prep-pack" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "resumeContent": "Resume content to analyze...", "jobTitle": "Senior Cloud Architect" }' ``` #### What you'll get back Returns a JSON object with a `questions` array. Each item in the array is an object with `category`, `question`, and `targetAnswer` string fields. ```json { "questions": [ { "category": "Technical", "question": "Can you walk through the architectural decision-making process for choosing Lambda over EKS for this scale?", "targetAnswer": "Should discuss cold starts, concurrency limits, and cost-benefit analysis vs serverless." } ] } ``` ## About ## What it does Interview Prep Pack generates tailored interview questions from a job title and resume content. Send a candidate profile and the role you are hiring for, and it returns a set of interview questions with target answers aligned to the experience in that resume. Use it when you want interview loops grounded in the actual background on the page, not a generic question bank. The output is a `questions` array, and each item includes a `category`, the `question` to ask, and a `targetAnswer` that highlights what a strong response should cover. That makes it useful for recruiters, hiring managers, and internal talent teams preparing structured interviews, screening calls, or role-specific question sets. You can generate prep material for technical, behavioral, or domain-focused interviews by varying the `jobTitle` and the resume text you provide. Interview Prep Pack is a good fit when you need consistent prep packs across many candidates while keeping the questions tied to the specific role and background. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/generate-a-tailored-interview-prep-pack * * * --- title: Advanced Shortlist API slug: executive-level-shortlist url: https://apyhub.com/namastesumalya/service/executive-level-shortlist provider: Sumalya APIs categories: [Artificial Intelligence, HR] tags: [resume-screening, candidate-ranking, recruiting, hr] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 500 alias: sumalya-advanced-shortlist-api --- # Advanced Shortlist API Rank resume summaries against a job title and get topCandidates plus an executiveReport. Built for fast HR screening and shortlist review. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/executive-level-shortlist` | What it does Generates an executive-level shortlist from the submitted resumes and job title. The r… | 500 | ## Endpoint reference ### Get an executive-level shortlist of top candidates `POST https://api.eu.apyhub.com/namastesumalya/executive-level-shortlist` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `resumes` | body | array of string | no | Example: `["PhD background with massive data experience at Uber.","Strong production ML e…`. | | `jobTitle` | body | string | no | Example: `Senior ML Engineer`. | #### Quickstart Send a job title and a list of resumes to get an executive shortlist. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/executive-level-shortlist" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"jobTitle":"Senior ML Engineer","resumes":["PhD background with massive data experience at Uber.","Strong production ML experience at FAANG scale."]}' ``` #### What you'll get back Returns a JSON object with `topCandidates` and `executiveReport` fields. `topCandidates` is an array of candidate objects with `name`, `rank`, and `fitReason`; `executiveReport` is a string summary of the pool. ```json { "topCandidates": [ { "name": "Candidate 1", "rank": 1, "fitReason": "PhD background with massive data experience at Uber." } ], "executiveReport": "The candidate pool is exceptionally strong in algorithmic theory but lacks practical experience in MLOps pipelines." } ``` ## About ## What it does Executive Shortlist ranks a set of resumes against a job title and returns the strongest matches, plus a short report you can use to review the overall pool. Send a `jobTitle` and an array of `resumes` as plain text. The response gives you `topCandidates`, each with a `name`, `rank`, and `fitReason`, so you can surface the best-fit people and see why they were chosen. It also returns an `executiveReport` string that summarizes the strengths and gaps across the candidate pool. Use Executive Shortlist when you need a fast first pass on a hiring pipeline: screening applicants for a senior ML role, comparing internal candidates for promotion, or preparing a concise briefing for recruiters and hiring managers. The output is structured enough to feed into an HR workflow, shortlist dashboard, or internal review tool without extra parsing. Because the service works from resume text rather than parsed CV fields, it fits early-stage triage and bulk review where you already have candidate summaries and want an ordered shortlist with a brief rationale. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/executive-level-shortlist * * * --- title: Extract Structured Data API slug: extract-structured-data url: https://apyhub.com/namastesumalya/service/extract-structured-data provider: Sumalya APIs categories: [Data Extraction, SEO] tags: [structured-data, schema-org, json-ld, seo] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 alias: sumalya-extract-structured-data-api --- # Extract Structured Data API Check any URL for schema markup and get structuredData, schemaCount, hasBreadcrumbs, and hasOrganization back for SEO audits and automation. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/extract-structured-data` | What it does Extracts structured data from the website at the given URL and returns a JSON object s… | 100 | ## Endpoint reference ### Extract structured data from a website `POST https://api.eu.apyhub.com/namastesumalya/extract-structured-data` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string | no | Example: `https://schema.org`. | #### Quickstart Send the page URL to extract its structured data. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/extract-structured-data" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://schema.org"}' ``` #### What you'll get back Returns a JSON object with these top-level fields: `url` (string), `schemaCount` (integer), `hasBreadcrumbs` (boolean), `structuredData` (array of objects), and `hasOrganization` (boolean). ```json { "url": "https://schema.org", "schemaCount": 1, "hasBreadcrumbs": false, "structuredData": [ { "url": "https://schema.org", "name": "Schema.org", "@type": "WebSite", "@context": "https://schema.org" } ], "hasOrganization": false } ``` ## About ## What it does Structured Data Extractor checks a website URL and returns the structured data it finds on the page. Send a `url`, and you get back the same `url`, a `schemaCount`, booleans for `hasBreadcrumbs` and `hasOrganization`, and a `structuredData` array containing the parsed objects. Use it when you need to inspect a site’s schema markup for SEO audits, content validation, or competitive analysis. It gives you a quick way to confirm whether a page exposes breadcrumb data or organization markup without parsing HTML yourself. The response is compact and easy to consume in automation pipelines. You can use `schemaCount` to spot pages with no structured data, branch on `hasBreadcrumbs` for navigation-rich pages, or process the `structuredData` array directly when you need the underlying objects. Structured Data Extractor is a good fit for crawlers, SEO tooling, and internal QA checks where you need a simple structured-data snapshot from a webpage. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/extract-structured-data * * * --- title: Skill Extraction API slug: extract-skills url: https://apyhub.com/namastesumalya/service/extract-skills provider: Sumalya APIs categories: [Artificial Intelligence, HR] tags: [resume-parsing, skill-extraction, recruiting, hr] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 250 alias: sumalya-skill-extraction-api --- # Skill Extraction API Extract technical skills, soft skills, certifications, and years of experience from resume text for ATS parsing, scoring, and profile enrichment. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/extract-skills` | What it does Extracts structured skill information from a resume text payload and returns the detec… | 250 | ## Endpoint reference ### Extract skills from a resume `POST https://api.eu.apyhub.com/namastesumalya/extract-skills` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `resumeContent` | body | string | no | Example: `Resume content to extract structured skill data from...`. | #### Quickstart Send a resume’s text to extract skills information from it. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/extract-skills" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"resumeContent":"Resume content to extract structured skill data from..."}' ``` #### What you'll get back Returns a JSON object with these top-level fields: `softSkills` (array of strings), `certifications` (array of strings), `experienceYears` (integer), and `technicalSkills` (array of strings). ```json { "softSkills": ["Academic Research", "Technical Writing"], "certifications": ["Google Professional Data Engineer"], "experienceYears": 10, "technicalSkills": ["NLP", "Deep Learning", "Python", "PyTorch"] } ``` ## About ## What it does Resume Skill Extraction reads resume text and returns structured skill data you can use in hiring workflows, candidate profiles, or parsing pipelines. Send `resumeContent` as a string in the request body, and get back the skills the resume mentions. The response includes `technicalSkills`, `softSkills`, `certifications`, and `experienceYears` when they can be identified from the input. That makes it useful when you need to normalize unstructured resumes into fields your ATS, CRM, or internal review tools can store and filter. Use Resume Skill Extraction to prefill candidate records, rank applicants by relevant technologies, or separate credentialed candidates from general experience matches. Because the output is already structured, you can feed it directly into scoring, search indexing, or downstream enrichment without writing your own resume parser. If the resume text does not contain a field, the response only includes what was found. Keep the input focused on the resume content you want analyzed. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/extract-skills * * * --- title: Evaluate SEO Health API slug: evaluate-seo-health url: https://apyhub.com/chisleroff/service/evaluate-seo-health provider: Website Intelligence categories: [Marketing, SEO] tags: [seo-audit, page-audit, structured-data, rich-results, metadata, technical-seo] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 50 alias: chisleroff-evaluate-seo-health-api --- # Evaluate SEO Health API Audit a webpage and get a score, grade, structured-data breakdown, and the top fixes. Built for checking metadata and rich-result readiness. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/chisleroff/evaluate-seo-health` | What it does Evaluates the SEO health of a webpage given its url and returns an SEO report for that… | 50 | ## Endpoint reference ### Evaluate SEO Health `POST https://api.eu.apyhub.com/chisleroff/evaluate-seo-health` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | URL of the webpage to extract, audit, or validate content from (http/https only). | #### Quickstart Check the SEO health of a webpage by sending its URL. ```bash curl -X POST "https://api.eu.apyhub.com/chisleroff/evaluate-seo-health" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://apyhub.com"}' ``` #### What you'll get back Returns a JSON object with these top-level fields: `url` (string), `grade` (string), `score` (integer), `breakdown` (object), `top_fixes` (array of strings), and `source_url` (string). The `breakdown` object can include `warnings`, `json_ld_count`, `has_open_graph`, `critical_errors`, `microdata_count`, `has_twitter_card`, `rich_results_total`, `rich_results_eligible`, and `structured_data_present`. ```json { "url": "https://apyhub.com", "score": 89, "grade": "B", "breakdown": { "structured_data_present": true, "json_ld_count": 22, "microdata_count": 0, "has_open_graph": true, "has_twitter_card": true, "rich_results_eligible": 5, "rich_results_total": 5, "critical_errors": 0, "warnings": 5 }, "top_fixes": [ "\"logo\": \"https://example.com/logo.png\"", "\"contactPoint\": { \"@type\": \"ContactPoint\", \"telephone\": \"+1-555-123-4567\", \"contactType\": \"customer service\" }", "\"founder\": { \"@type\": \"Person\", \"name\": \"Founder Name\" }", "\"numberOfEmployees\": \"50\"", "\"aggregateRating\": { \"@type\": \"AggregateRating\", \"ratingValue\": \"4.5\", \"bestRating\": \"5\", \"ratingCount\": \"120\" }" ], "source_url": "https://apyhub.com" } ``` ## About ## What it does SEO Health Checker evaluates a webpage URL and returns a structured audit of its search-engine signals. Send it an http or https URL, and you get a score, a grade, and a breakdown of the page’s SEO-related metadata and structured data. Use it when you need a quick technical read on a landing page, blog post, or product page before publishing. The response includes counts for warnings, critical errors, JSON-LD items, microdata items, and rich results, plus booleans for Open Graph, Twitter Card, and structured data presence. That makes it useful for spotting missing metadata and comparing pages in a crawl or content QA workflow. You also get a `top_fixes` array with the main issues to address, along with the audited `url` and `source_url`. If you are building an internal SEO review tool or automating pre-publish checks, this gives you a compact machine-readable summary without parsing the page yourself. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/chisleroff/service/evaluate-seo-health * * * --- title: Validate HTML API slug: validate-html url: https://apyhub.com/chisleroff/service/validate-html provider: Website Intelligence categories: [Developer Tools, SEO] tags: [html-validation, structured-data, seo, schema-markup, metadata-audit] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 50 alias: chisleroff-validate-html-api --- # Validate HTML API Validate raw HTML for JSON-LD, microdata, meta tags, Open Graph, and Twitter cards. Returns warnings, errors, and rich result eligibility. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/chisleroff/validate-html` | What it does Validates the structured data found in raw HTML content. It accepts an HTML string in… | 50 | ## Endpoint reference ### Validate HTML `POST https://api.eu.apyhub.com/chisleroff/validate-html` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `html` | body | string | yes | Raw HTML content to validate for structured data (max 5,000,000 characters). | #### Quickstart Send the HTML you want to validate as a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/chisleroff/validate-html" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"html":"Example

Hello world

"}' ``` #### What you'll get back Returns a JSON object with these top-level fields when present: `url` and `source_url` are strings, `json_ld`, `microdata` are arrays of objects, `meta_tags`, `open_graph`, and `twitter_card` are objects, and `summary` is an object with `warnings` and `critical_errors` integers, `overall_score` as a number, `total_entities` as an integer, and `types_found` and `rich_results_eligible` as arrays of strings. ```json { "url": "https://example.com/page", "json_ld": [], "summary": { "warnings": 0, "types_found": [], "overall_score": 0, "total_entities": 0, "critical_errors": 0, "rich_results_eligible": [] }, "meta_tags": {}, "microdata": [], "open_graph": {}, "source_url": "https://example.com/page", "twitter_card": {} } ``` ## About ## What it does HTML Validator checks a page’s markup for structured data and related SEO signals. Send raw HTML in the `html` field, and get back the detected structured-data and metadata objects the page exposes. Use it to audit pages before release, spot missing or malformed schema markup, and confirm that search engines can read the signals you intend to publish. The response includes the page `url` when available, plus `json_ld`, `microdata`, `meta_tags`, `open_graph`, and `twitter_card` data extracted from the HTML. The `summary` object gives you a quick read on what was found: `warnings`, `critical_errors`, `overall_score`, `total_entities`, `types_found`, and `rich_results_eligible`. That makes it useful for automated QA in CI, content checks in CMS workflows, or bulk review of landing pages after template changes. If you work on technical SEO or structured data, HTML Validator gives you a compact way to inspect what’s actually present in the document without parsing it yourself. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/chisleroff/service/validate-html * * * --- title: Check Rich Results API slug: check-rich-results url: https://apyhub.com/chisleroff/service/check-rich-results provider: Website Intelligence categories: [SEO] tags: [seo, structured-data, rich-results, schema-markup, page-audit] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 alias: chisleroff-check-rich-results-api --- # Check Rich Results API Audit any webpage for rich result eligibility. Returns the types checked, eligibility status, and missing or recommended fields for each type. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/chisleroff/check-rich-results` | What it does Checks a webpage URL for rich-results eligibility and returns a structured report of t… | 100 | ## Endpoint reference ### Check Rich Results `POST https://api.eu.apyhub.com/chisleroff/check-rich-results` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | URL of the webpage to extract, audit, or validate content from (http/https only). | #### Quickstart Check whether a webpage is eligible for rich results by sending its URL. ```bash curl -X POST "https://api.eu.apyhub.com/chisleroff/check-rich-results" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://apyhub.com"}' ``` #### What you'll get back Returns a JSON object with these top-level fields: `url` and `source_url` are URI strings, `summary` is an object, and `eligible` / `not_eligible` are arrays of result objects. `summary` includes `types_checked` (array of strings), `eligible_count` (integer), and `total_types_checked` (integer). Each item in `eligible` and `not_eligible` may include `type`, `status`, `fields_missing`, `fields_present`, and `fields_recommended`. ```json { "url": "https://apyhub.com", "summary": { "types_checked": ["Article"], "eligible_count": 1, "total_types_checked": 1 }, "eligible": [], "source_url": "https://apyhub.com", "not_eligible": [] } ``` ## About ## What it does Rich Results Checker audits a webpage URL and tells you whether the page is eligible for rich results. Send an http/https URL in the request body, and the response returns the checked page URL, a summary, and per-type eligibility details. Use Rich Results Checker when you want to verify structured-data coverage before publishing or when you need to diagnose why a page is not eligible for a specific result type. The summary includes the list of rich result types checked, the number of eligible types, and the total number of types evaluated. For each eligible or not eligible type, the response includes the type name, status, fields present, fields missing, and fields recommended. That makes it easier to spot exactly which markup properties need to be added or corrected on a page. This is a good fit for SEO checks in content pipelines, CMS validation, and QA workflows where you need a machine-readable assessment of structured data on a live page. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/chisleroff/service/check-rich-results * * * --- title: Extract Product Information API slug: extract-product-information url: https://apyhub.com/chisleroff/service/extract-product-information provider: Website Intelligence categories: [Data Extraction, E-commerce Quick Tools] tags: [product, data-extraction, ecommerce, scraping] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 alias: chisleroff-extract-product-information-api --- # Extract Product Information API Product data API that reads a product page URL and returns name, price, currency, brand, SKU, images, rating and availability as JSON. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/chisleroff/extract-product-information` | What it does Extracts product details from a product page URL and returns the parsed product inform… | 100 | ## Endpoint reference ### Extract product information from a URL `POST https://api.eu.apyhub.com/chisleroff/extract-product-information` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string | yes | Product page URL to extract details from (http/https only) Example: `https://example.com/blog/product`. | #### Quickstart Send the product page URL you want to extract details from. ```bash curl -X POST "https://api.eu.apyhub.com/chisleroff/extract-product-information" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://apyhub.com"}' ``` #### What you'll get back Returns a JSON object with optional top-level fields for the extracted product data, such as `sku`, `name`, `brand`, `price`, `images`, `rating`, `currency`, `confidence`, `source_url`, `description`, `availability`, `review_count`, and `extraction_method`. ```json { "name": "API Marketplace for Teams, Developers, and AI Agents", "price": "", "currency": "", "description": "ApyHub: The API marketplace for developers and AI agents to discover, consume secure, compliant APIs. Simplify integration and accelerate development.", "images": [ "https://apyhub.com/meta-apyhub-new.png", "data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2748%27%20height=%2738%27/%3e", "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7", "https://apyhub.com/gdpr.svg" ], "sku": "", "brand": "", "availability": "", "rating": null, "review_count": null, "source_url": "https://apyhub.com", "extraction_method": "dom", "confidence": { "name": 0.66, "price": 0, "images": 0.64, "brand": 0 } } ``` ## About ## What it does The product data API pulls structured product details from a product page. Send a product page `url` (http or https) in the request body, and get back the fields the page exposes: `name`, `price`, `currency`, `brand`, `sku`, `images`, `description`, `availability`, `rating` and `review_count`, plus the `source_url` and the `extraction_method` used. Product pages are built differently on every store, so the response includes a `confidence` score for name, price, images and brand. Use it to accept high-confidence records automatically and route the rest to review. Fields a page doesn't publish come back empty or null. Use the product data API to enrich a catalog from supplier or manufacturer pages, build product feeds for comparison sites and ads, track competitor prices and stock status over time, and turn a pasted product link into a prefilled listing form. Use it on pages you own or have the right to process. For food products, send the extracted description to the [Ingredient Parser API](https://apyhub.com/ingredients/service/parse-ingredients) to get allergens and additives. Resize the returned `images` for your own catalog with the [Image Resize API](https://apyhub.com/apyhub/service/resize-image). To see which platform a competitor's store runs on, use the [Tech Stack Detection API](https://apyhub.com/chisleroff/service/detect-tech-stack). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/chisleroff/service/extract-product-information * * * --- title: Dynamic OG Image API slug: dynamic-og-image-generation url: https://apyhub.com/chisleroff/service/dynamic-og-image-generation provider: Website Intelligence categories: [Marketing, Smart Generation] tags: [og-image, open-graph, image-generation, social-preview, branding] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 50 alias: chisleroff-dynamic-og-image-api --- # Dynamic OG Image API Generate Open Graph images from title and styling fields. Returns a binary image for blog posts, product pages, and social sharing cards. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/chisleroff/dynamic-og-image-generation` | What it does Generates a dynamic Open Graph image from the provided body fields and returns the ima… | 50 | ## Endpoint reference ### Dynamic OG Image Generation `POST https://api.eu.apyhub.com/chisleroff/dynamic-og-image-generation` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `tag` | body | string | no | Tag/label pill text. | | `title` | body | string | yes | Main headline for the OG image. | | `author` | body | string | no | | | `domain` | body | string | no | Domain name to display. | | `bg_color` | body | string | no | Hex background color. Default: `#1a202c`. | | `subtitle` | body | string | no | Subtitle text. | | `template` | body | string | no | One of: blog, minimal, bold, card. Default: `blog`. | | `background` | body | string | no | One of: solid, gradient, gradient_horizontal, gradient_vertical, pattern, mesh. Default: `solid`. | | `text_color` | body | string | no | Hex text color. Default: `#ffffff`. | | `accent_color` | body | string | no | Hex accent color (auto-derived if omitted). | | `reading_time` | body | string | no | Reading time label. | #### Quickstart Generate an OG image by sending the required `title` field in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/chisleroff/dynamic-og-image-generation" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "title": "How to Build APIs with FastAPI", "subtitle": "A complete guide to building production-ready APIs", "bg_color": "#4f46e5", "template": "blog", "background": "gradient", "author": "Jane Doe", "domain": "blog.example.com", "reading_time": "8 min read", "tag": "Tutorial" }' ``` #### What you'll get back Returns a binary file containing the generated image. ## About ## What it does Dynamic OG Image Generator creates Open Graph images from a single request. Send a title and optional styling fields, and you get back a binary image you can use for social previews, link cards, and blog sharing. Use the `body` object to set the main `title` and, if needed, `tag`, `subtitle`, `author`, `domain`, and `reading_time`. You can also control the look with `template`, `background`, `bg_color`, `text_color`, and `accent_color`. The service supports blog, minimal, bold, and card layouts, plus solid, gradient, horizontal gradient, vertical gradient, pattern, and mesh backgrounds. This is a good fit when you need consistent preview images without generating them in your app or hand-designing each one. For example, you can create share images for new articles, product pages, or docs pages from the same endpoint and keep the styling aligned across your site. Dynamic OG Image Generator returns the image as a binary response, so you can store it, serve it directly, or feed it into your publishing pipeline. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/chisleroff/service/dynamic-og-image-generation * * * --- title: Job Description Generator API slug: generate-job-description url: https://apyhub.com/namastesumalya/service/generate-job-description provider: Sumalya APIs categories: [HR, Smart Generation] tags: [job-description, recruiting, hr, ai-writing] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 300 alias: sumalya-job-description-generator-api --- # Job Description Generator API Generate a full job description from a role title and requirements. Returns ATS, LinkedIn, and interview scorecard versions for hiring teams. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/generate-job-description` | What it does Generates a complete job-description package from the supplied role details. The reque… | 300 | ## Endpoint reference ### Generate a complete job description `POST https://api.eu.apyhub.com/namastesumalya/generate-job-description` · 300 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `title` | body | string | no | Example: `CTO`. | | `requirements` | body | string | no | Example: `15+ years experience, scaling to 1M users, AI/ML background.`. | #### Quickstart Generate a job description from a role title and requirements. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/generate-job-description" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"title":"CTO","requirements":"15+ years experience, scaling to 1M users, AI/ML background."}' ``` #### What you'll get back Returns a JSON object with these top-level fields: - `fullJD` (`string`): the full job description. - `atsVersion` (`string`): an ATS-friendly version of the job description. - `linkedInPost` (`string`): a LinkedIn-ready post. - `interviewScorecard` (`array[string]`): a list of interview scorecard criteria. ```json { "fullJD": "...", "atsVersion": "...", "linkedInPost": "We're looking for a visionary builder...", "interviewScorecard": [ "Scaling Experience", "Strategic Vision", "Technical Mentorship" ] } ``` ## About ## What it does Job Description Generator turns a role title and optional requirements into hiring copy you can use across your recruiting workflow. Send a `body` object with `title` and `requirements`, and get back generated job content tailored to that role. Use it when you need a first draft for a new opening, a standardized version for ATS systems, or a shorter version for external channels. The response includes `fullJD`, `atsVersion`, `linkedInPost`, and an `interviewScorecard`, so you can publish, screen, and interview from the same request. Job Description Generator is useful when hiring teams need to move quickly without starting from a blank page. Provide the role and the must-have experience, then adapt the returned content to match your company tone, seniority level, and interview process. This is a good fit for product, engineering, and leadership hiring where you want consistent structure and role-specific language without manually rewriting each posting. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/generate-job-description * * * --- title: Extract Article From Web API slug: extract-article url: https://apyhub.com/chisleroff/service/extract-article provider: Website Intelligence categories: [Data Extraction] tags: [article-extraction, web-scraping, content-extraction, metadata-extraction, page-parsing] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 alias: chisleroff-extract-article-from-web-api --- # Extract Article From Web API Extract article text from a webpage URL with the title, author, date, images, language, word count, source URL, and confidence scores. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/chisleroff/extract-article` | What it does Extracts article content and metadata from a webpage URL. The request sends a webpage… | 100 | ## Endpoint reference ### Extract Article `POST https://api.eu.apyhub.com/chisleroff/extract-article` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | URL of the webpage to extract, audit, or validate content from (http/https only). | #### Quickstart Send the webpage URL you want to extract as JSON. ```bash curl -X POST "https://api.eu.apyhub.com/chisleroff/extract-article" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://apyhub.com/blog/what-is-an-ics-file"}' ``` #### What you'll get back Returns a JSON object with article fields such as `body`, `date`, `title`, `author`, `images`, `language`, `confidence`, `source_url`, and `word_count`, when available. ```json { "title": "API Marketplace for Teams, Developers, and AI Agents", "author": "", "date": "", "body": "

Yes. ApyHub includes APIs to convert files between formats including PDF, Word, Excel, CSV, images (JPEG, PNG, WebP), audio, and video. You can also compress, resize, crop, add watermarks, generate thumbnails, and manipulate multimedia content programmatically.

", "images": [ "https://apyhub.com/meta-apyhub-new.png" ], "word_count": 36, "language": "en", "source_url": "https://apyhub.com", "confidence": { "title": 0.48, "body": 0.46, "author": 0, "date": 0 } } ``` ## About ## What it does Article Extractor pulls the main content from a webpage and returns a clean article record you can use in your app or pipeline. Send a `url`, get back extracted text plus metadata such as `title`, `author`, `date`, `images`, `language`, `word_count`, `source_url`, and per-field `confidence` scores. Use it when you need to turn messy web pages into structured content for search indexing, content ingestion, reading apps, monitoring, or editorial workflows. The response is designed for pages where the article body is embedded in surrounding layout, ads, navigation, or other non-essential markup. Because the endpoint works from a webpage URL, it fits common automation tasks like validating whether a page has publishable article content, building a content feed from public sources, or auditing source pages before downstream processing. If the extractor cannot identify a field, the schema reflects that by omitting it rather than inventing extra structure. Article Extractor keeps the output focused on what was actually found on the page, so you can store, display, rank, or review the extracted article data with minimal post-processing. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/chisleroff/service/extract-article * * * --- title: Technical Comparison of Webpages API slug: technical-comparison url: https://apyhub.com/namastesumalya/service/technical-comparison provider: Sumalya APIs categories: [SEO] tags: [website-comparison, technical-seo, competitor-analysis, website-audit] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 alias: sumalya-technical-comparison-of-webpages-api --- # Technical Comparison of Webpages API Compare multiple website URLs and get technical SEO data for each page, including metadata, headings, links, accessibility, and load time. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/technical-comparison` | What it does Compares the technical and SEO characteristics of multiple websites from a list of URL… | 100 | ## Endpoint reference ### Technical Comparison `POST https://api.eu.apyhub.com/namastesumalya/technical-comparison` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `urls` | body | array of string | yes | List of website URLs to compare for technical and SEO analysis. Minimum of 2 URLs required. | #### Quickstart Compare the technical and SEO details for at least two website URLs. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/technical-comparison" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "urls": [ "https://example.com", "https://www.wikipedia.org" ] }' ``` #### What you'll get back Returns a JSON object with `results`, `service`, `version`, and `timestamp` fields. `results` is an array of per-URL comparison objects; each item includes the analyzed `url`, `status`, and, when available, a `technicalReport` object with technical, SEO, accessibility, connectivity, and performance data. ```json { "results": [ { "url": "https://example.com", "status": "success", "technicalReport": {} } ], "service": "Enhanced Technical Comparison", "version": "1.0", "timestamp": "2026-07-08T12:00:00Z" } ``` ## About ## What it does Technical Comparison analyzes two or more website URLs and returns a per-site technical and SEO report you can compare side by side. Send an array of URLs, and you get a structured result for each one with its status and report data. For each URL, Technical Comparison can return page metadata such as the title, charset, keywords, language, canonical URL, and meta description. It also includes heading structure details like H1 text, H2 and H3 counts, plus total headings, so you can quickly compare page structure across sites. The response also surfaces practical checks for modern web pages: whether the page is served over SSL, whether it appears mobile-friendly, how many links it contains, and how many of those are internal versus external. For accessibility review, it reports image counts, missing alt text, and an alt-text score. Use Technical Comparison when auditing competitor landing pages, checking template consistency across a portfolio of sites, or spotting on-page SEO differences between pages before a redesign or migration. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/technical-comparison * * * --- title: Security Header Full Audit API slug: audit-website-security-headers url: https://apyhub.com/namastesumalya/service/audit-website-security-headers provider: Sumalya APIs categories: ["Security & Privacy", SEO] tags: [security-headers, website-security, http-headers, security-audit] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 alias: sumalya-security-header-full-audit-api --- # Security Header Full Audit API Audit a URL's security headers and get a score, per-header status, and recommendations. Covers CSP, HSTS, and the other browser protections. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/audit-website-security-headers` | What it does Audits the security headers for a website URL and returns the URL, an overall score, r… | 100 | ## Endpoint reference ### Audit website security headers `POST https://api.eu.apyhub.com/namastesumalya/audit-website-security-headers` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string | yes | Example: `example.com`. | #### Quickstart Checks a website’s security headers by sending its URL in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/audit-website-security-headers" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"example.com"}' ``` #### What you'll get back Returns a JSON object with `url` as a string, `score` as an integer, `recommendations` as an array of strings, and `security_headers` as an object. ```json { "url": "example.com", "score": 67, "recommendations": ["Add Content-Security-Policy header"], "security_headers": { "csp": "missing", "hsts": "present", "x_frame_options": "present" } } ``` ## About ## What it does Website Security Headers audits a site’s HTTP security headers and returns a simple score, the URL checked, and practical recommendations. Send a URL in the request body and get back the header status for common protections, including `csp`, `hsts`, and `x_frame_options`. Use it when you want a quick security baseline for a production site, a staging environment, or a customer-facing landing page. The response tells you which headers are present or missing, so you can spot gaps that affect browser-side protection and harden your deployment without manual inspection. The output is easy to use in internal dashboards, CI checks, or security review workflows. The `recommendations` array gives you concrete next steps, such as adding a `Content-Security-Policy` header, while the `score` helps you compare sites or track improvements over time. If you need a lightweight check for common web hardening headers, Website Security Headers gives you the core signal in one response. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/audit-website-security-headers * * * --- title: Webpage Technical Performance Audit API slug: perform-technical-performance-audit url: https://apyhub.com/namastesumalya/service/perform-technical-performance-audit provider: Sumalya APIs categories: [SEO] tags: [page-speed, website-performance, technical-seo, website-audit] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 alias: sumalya-webpage-technical-performance-audit-api --- # Webpage Technical Performance Audit API Check a webpage for canonical tags, robots.txt, SSL status, and performance scores. Returns issues and an overall score for technical SEO review. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/perform-technical-performance-audit` | What it does Performs a technical performance audit for a webpage URL and returns the audited URL,… | 100 | ## Endpoint reference ### Perform a technical performance audit of a webpage `POST https://api.eu.apyhub.com/namastesumalya/perform-technical-performance-audit` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string | no | Example: `example.com`. | #### Quickstart Check a website’s technical performance audit by sending its URL. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/perform-technical-performance-audit" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://example.com"}' ``` #### What you'll get back Returns a JSON object with these top-level fields: `url` string, `audit` object, `issues` array of strings, and `overall_score` integer. The `audit` object contains `canonical` string, `robots_txt` string, `ssl_status` string, and `performance_score` integer. ```json { "url": "example.com", "audit": { "canonical": "present", "robots_txt": "found", "ssl_status": "valid", "performance_score": 82 }, "issues": ["Improve page load speed"], "overall_score": 78 } ``` ## About ## What it does Website Performance Audit checks a webpage for technical signals that affect crawlability and speed. Send a `url`, and it returns the `url` plus an `audit` object with `canonical`, `robots_txt`, `ssl_status`, and `performance_score`, along with an `overall_score` and an `issues` array of string findings. Use it when you want a fast, programmatic read on whether a page is set up correctly for search engines and users. The response tells you whether a canonical tag is present, whether `robots.txt` was found, whether SSL is valid, and how the page scored on performance. The `issues` list gives you concise remediation hints you can pass straight into an internal QA workflow or CMS review process. Because the input is just a URL, Website Performance Audit fits into site monitoring, pre-launch checks, and SEO regression testing. You can run it on landing pages, product pages, or any public webpage before it goes live, then compare `overall_score` and `performance_score` over time to catch technical drift. The output is simple enough for automation and specific enough for developers to act on without scraping a browser report. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/perform-technical-performance-audit * * * --- title: Security Headers Audit API slug: security-headers-audit url: https://apyhub.com/chisleroff/service/security-headers-audit provider: Website Intelligence categories: ["Security & Privacy", SEO] tags: [security-headers, website-security, http-headers, security-audit] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 alias: chisleroff-security-headers-audit-api --- # Security Headers Audit API Security headers API that checks a page for CSP, HSTS, X-Frame-Options and more, and returns a letter score plus the raw header values. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/chisleroff/security-headers-audit` | What it does Audits the security headers present on the webpage at the given URL and returns a JSON… | 100 | ## Endpoint reference ### Security Headers Audit `POST https://api.eu.apyhub.com/chisleroff/security-headers-audit` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | URL of the webpage to extract, audit, or validate content from (http/https only). | #### Quickstart Send the webpage URL you want audited in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/chisleroff/security-headers-audit" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://apyhub.com"}' ``` #### What you'll get back Returns a JSON object with these top-level fields: - `score` (`string`) - `details` (`object` with string values) - `has_csp` (`boolean`) - `has_hsts` (`boolean`) - `has_x_content_type` (`boolean`) - `has_referrer_policy` (`boolean`) - `has_x_frame_options` (`boolean`) Example response: ```json { "has_hsts": true, "has_csp": false, "has_x_frame_options": true, "has_x_content_type": true, "has_referrer_policy": true, "score": "B", "details": { "strict-transport-security": "max-age=31536000; includeSubDomains; preload", "content-security-policy": "Missing", "x-frame-options": "DENY", "x-content-type-options": "nosniff", "referrer-policy": "no-referrer-when-downgrade" } } ``` ## About ## What it does The security headers API checks which browser security headers a webpage sends. Send a page `url` (http or https) and get back a letter `score`, a true or false flag for each header, and a `details` map with the raw value of every header it found, or `Missing` when one is absent. It covers the five headers most security reviews start with: Content-Security-Policy (`has_csp`), Strict-Transport-Security (`has_hsts`), X-Frame-Options (`has_x_frame_options`), X-Content-Type-Options (`has_x_content_type`) and Referrer-Policy (`has_referrer_policy`). The raw values let you go past presence and check the settings themselves, such as an HSTS `max-age` or a `DENY` frame policy. Use the security headers API as a CI gate that fails a deploy when a header disappears, run a scheduled security headers check across login pages and customer portals, collect evidence for SOC 2 and ISO 27001 reviews, and flag weak headers when onboarding a vendor or reviewing a client site. For TLS, cookie flags and exposure checks in one report, use the [Website Security Audit API](https://apyhub.com/dosvak/service/website-security-audit). To add meta tags, performance and broken links to the same scan, use the [Website Audit API](https://apyhub.com/chisleroff/service/full-site-audit). For certificate expiry and issuer, the [Domain Availability API](https://apyhub.com/tlderscom/service/domain-pricing-tld-registrar-information) includes an SSL check. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/chisleroff/service/security-headers-audit * * * --- title: Validate Schema API slug: validate-schema url: https://apyhub.com/chisleroff/service/validate-schema provider: Website Intelligence categories: [Data Extraction, Data Validation, SEO] tags: [json-ld, schema-org, seo, validation, structured-data] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 alias: chisleroff-validate-schema-api --- # Validate Schema API Validate structured data on any URL and retrieve JSON-LD, microdata, meta tags, Open Graph, Twitter cards, and a validation summary. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/chisleroff/validate-schema` | What it does Validates structured data found on a webpage URL and returns the extracted metadata an… | 100 | ## Endpoint reference ### Validate Schema (Structured Data) `POST https://api.eu.apyhub.com/chisleroff/validate-schema` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | URL of the webpage to extract, audit, or validate content from (http/https only). | #### Quickstart Check a webpage and return its structured metadata from the URL you provide. ```bash curl -X POST "https://api.eu.apyhub.com/chisleroff/validate-schema" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://apyhub.com"}' ``` #### What you'll get back Returns a JSON object with top-level fields such as `url` and `source_url` as strings, plus structured metadata objects/arrays like `json_ld`, `microdata`, `open_graph`, `twitter_card`, and `meta_tags`. It also includes a `summary` object with numeric and array fields describing the page analysis. ```json { "url": "https://apyhub.com", "json_ld": [], "summary": { "warnings": 0, "types_found": [], "overall_score": 0, "total_entities": 0, "critical_errors": 0, "rich_results_eligible": [] }, "meta_tags": {}, "microdata": [], "open_graph": {}, "source_url": "https://apyhub.com", "twitter_card": {} } ``` ## About ## What it does Schema Validator checks a webpage at a given URL and returns the structured data and metadata it finds. Send an http or https URL in the request body, and get back the page URL, any JSON-LD objects, microdata, meta tags, Open Graph data, Twitter card data, and a validation summary. Use Schema Validator when you need to inspect how a page is exposing structured data for search engines and social platforms. The response summary includes warning and critical error counts, the total number of entities found, the types detected, an overall score, and any rich-results eligibility signals it can identify. This is useful for SEO audits, content QA, and schema troubleshooting on product pages, articles, local business pages, and landing pages. You can confirm whether a page is emitting the markup you expect without parsing the HTML yourself. If you need to compare what a page publishes across JSON-LD, microdata, and social metadata, Schema Validator gives you the structured result in one response. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/chisleroff/service/validate-schema * * * --- title: Detect Tech Stack API slug: detect-tech-stack url: https://apyhub.com/chisleroff/service/detect-tech-stack provider: Website Intelligence categories: [Data Extraction, Developer Tools, SEO] tags: [seo, web, tech, analysis] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 50 alias: chisleroff-detect-tech-stack-api --- # Detect Tech Stack API Tech stack API that takes any webpage URL and returns the frameworks, CMS, analytics and libraries it runs on as a JSON list. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/chisleroff/detect-tech-stack` | What it does Detects the technology stack used by a webpage from the URL you provide. The response… | 50 | ## Endpoint reference ### Detect Tech Stack `POST https://api.eu.apyhub.com/chisleroff/detect-tech-stack` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | URL of the webpage to extract, audit, or validate content from (http/https only). | #### Quickstart Send a webpage URL to detect the technologies used on that site. ```bash curl -X POST "https://api.eu.apyhub.com/chisleroff/detect-tech-stack" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://apyhub.com"}' ``` #### What you'll get back Returns a JSON object with `source_url` as a string URI and `technologies` as an array of strings. ```json { "technologies": [ "Next.js", "Tailwind CSS", "Google Tag Manager", "Google Analytics" ], "source_url": "https://apyhub.com" } ``` ## About ## What it does The tech stack API identifies the technologies a website runs on. Send a webpage `url` (http or https) in the request body, and get back the `source_url` plus a `technologies` array with the names of what it detected, such as `Next.js`, `Tailwind CSS`, `Google Tag Manager` and `Google Analytics`. It covers front-end frameworks, CMS platforms, CSS libraries, analytics and tag managers, and other client and server-side tools. The response is a flat list of names, which keeps it easy to store, compare and filter. Run the same URL over time to see when a site adds or drops a tool, or check each competitor URL to compare their stacks side by side. Use the tech stack API as a website technology checker in sales and lead enrichment, to find prospects running a platform you integrate with or replace. Agencies can scope a migration before quoting, security teams can inventory the third-party scripts on their own properties, and product teams can see what competitors build with. For lead enrichment, pull emails and phone numbers from the same site with the [Contact Extraction API](https://apyhub.com/chisleroff/service/extract-contact-information) and check its registration and SSL details with the [Domain Availability API](https://apyhub.com/tlderscom/service/domain-pricing-tld-registrar-information). For a wider page review that also covers performance, broken links and security headers, use the [Full Site Audit API](https://apyhub.com/chisleroff/service/full-site-audit). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/chisleroff/service/detect-tech-stack * * * --- title: Full Site Audit API slug: full-site-audit url: https://apyhub.com/chisleroff/service/full-site-audit provider: Website Intelligence categories: [SEO] tags: [seo, analysis, site, audit] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 alias: chisleroff-full-site-audit-api --- # Full Site Audit API Check any webpage for metadata, tech stack, performance, broken links, security headers, and mobile-friendliness in one SEO and QA call. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/chisleroff/full-site-audit` | What it does Audits a webpage from the provided URL and returns a structured report with metadata,… | 100 | ## Endpoint reference ### Full Site Audit `POST https://api.eu.apyhub.com/chisleroff/full-site-audit` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | URL of the webpage to extract, audit, or validate content from (http/https only). | #### Quickstart Check a webpage and get back its audit details in one request. ```bash curl -X POST "https://api.eu.apyhub.com/chisleroff/full-site-audit" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://apyhub.com"}' ``` #### What you'll get back Returns a JSON object with fields such as `url`, `meta_tags`, `source_url`, `tech_stack`, `performance`, `broken_links`, `security_headers`, and `is_mobile_friendly`, depending on what the audit finds. ```json { "url": "https://apyhub.com", "meta_tags": { "title": "API Marketplace for Teams, Developers, and AI Agents", "description": "ApyHub: The API marketplace for developers and AI agents to discover, consume secure, compliant APIs. Simplify integration and accelerate development.", "canonical": "https://apyhub.com", "og_title": "API Marketplace for Teams, Developers, and AI Agents", "og_description": "ApyHub: The API marketplace for developers and AI agents to discover, consume secure, compliant APIs. Simplify integration and accelerate development.", "og_image": "https://apyhub.com/meta-apyhub-new.png", "twitter_card": "summary_large_image" }, "tech_stack": [ "Next.js", "Tailwind CSS", "Google Tag Manager", "Google Analytics" ], "security_headers": { "has_hsts": true, "has_csp": false, "has_x_frame_options": true, "has_x_content_type": true, "has_referrer_policy": true, "score": "B", "details": { "strict-transport-security": "max-age=31536000; includeSubDomains; preload", "content-security-policy": "Missing", "x-frame-options": "DENY", "x-content-type-options": "nosniff", "referrer-policy": "no-referrer-when-downgrade" } }, "performance": { "page_size_bytes": 141736, "page_size_readable": "138.4 KB", "load_time_ms": 722, "num_requests": 60 }, "broken_links": [], "is_mobile_friendly": true, "source_url": "https://apyhub.com" } ``` ## About ## What it does The website audit API checks a single webpage and returns a structured health report in one call. Send a page `url` (http or https) and get back its meta tags, performance, broken links, security headers, detected tech stack and a mobile-friendly flag. `meta_tags` covers the title, description, canonical URL, Open Graph title, description and image, and the Twitter card. `performance` returns `load_time_ms`, `num_requests` and page size. `broken_links` lists the links on the page that fail. `security_headers` reports HSTS, CSP, X-Frame-Options, X-Content-Type-Options and Referrer-Policy, with the raw header values and a letter `score`. `is_mobile_friendly` and `tech_stack` complete the report. Use the website audit API to check pages before and after a release, catch missing meta descriptions or Open Graph images when a CMS publishes new content, run a broken link checker across key landing pages on a schedule, and give clients a quick technical snapshot of their homepage during a sales call. Each call audits one URL. To crawl a whole site and track SEO issues across every page, use the [SEO Site Audit API](https://apyhub.com/se-ranking/service/website-audit). For a deeper look at browser security settings, use the [Security Headers API](https://apyhub.com/chisleroff/service/security-headers-audit), and for the stack alone, the [Tech Stack API](https://apyhub.com/chisleroff/service/detect-tech-stack). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/chisleroff/service/full-site-audit * * * --- title: Extract Contact Information API slug: extract-contact-information url: https://apyhub.com/chisleroff/service/extract-contact-information provider: Website Intelligence categories: [Data Extraction, Data Validation, Marketing] tags: [scraping, extraction, data-extraction, contact] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 alias: chisleroff-extract-contact-information-api --- # Extract Contact Information API Extract emails, phones, addresses, and social links from any webpage URL. Built for lead enrichment, site audits, and contact data validation. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/chisleroff/extract-contact-information` | What it does Extracts contact details from a webpage identified by URL and returns the discovered c… | 100 | ## Endpoint reference ### Extract Contact Information `POST https://api.eu.apyhub.com/chisleroff/extract-contact-information` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | URL of the webpage to extract, audit, or validate content from (http/https only). | #### Quickstart Send the webpage URL you want to scan for contact details. ```bash curl -X POST "https://api.eu.apyhub.com/chisleroff/extract-contact-information" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://apyhub.com/blog"}' ``` #### What you'll get back Returns a JSON object with these top-level fields when they are found: `emails`, `phones`, and `addresses` are arrays of strings; `confidence` is an object with numeric `emails`, `phones`, and `social` scores; `source_url` is the page URL used for extraction; and `social_links` is an object whose values are social profile URLs. ```json { "emails": [ "support@apyhub.com" ], "phones": [ "+31508080421" ], "addresses": [ "Keizersgracht 520H, Amsterdam, North Holland, 1017EK, NL" ], "social_links": { "x": "https://x.com/apyhub", "linkedin": "https://www.linkedin.com/company/apyhub", "instagram": "https://www.instagram.com/apyhub/", "youtube": "https://www.youtube.com/@apyhub", "facebook": "https://www.facebook.com/apyhub" }, "source_url": "https://apyhub.com/blog", "confidence": { "emails": 0.91, "phones": 0.89, "addresses": 0.88, "social": 0.9 } } ``` ## About ## What it does Contact Extraction pulls contact details from a webpage URL and returns the values it finds in a structured response. Send a page URL, and extract emails, phone numbers, addresses, and social links from the content. Use Contact Extraction when you need to turn public web pages into usable lead or contact records. The request body only needs a `url`, so it fits cleanly into scraping workflows, prospecting pipelines, or site audits where you want to verify whether a business page exposes contact information. The response includes `emails`, `phones`, `addresses`, and `social_links`, plus a `source_url` so you can trace the result back to the page that was processed. It also returns `confidence` scores for `emails`, `phones`, and `social`, which can help you filter low-quality matches or prioritize manual review. If you are building enrichment or validation steps around website content, Contact Extraction gives you the contact fields in a predictable JSON format without forcing you to parse the page yourself. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/chisleroff/service/extract-contact-information * * * --- title: Convert HTML to Markdown API slug: convert-html-to-markdown url: https://apyhub.com/chisleroff/service/convert-html-to-markdown provider: Website Intelligence categories: [Data Extraction, Developer Tools, File Conversion] tags: [html, markdown, content-extraction, llm, conversion] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 50 alias: chisleroff-convert-html-to-markdown-api --- # Convert HTML to Markdown API Convert any webpage URL into clean Markdown with title, character count, and a readability flag. Built for content ingestion, archiving, and docs. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/chisleroff/convert-html-to-markdown` | What it does Converts the HTML content of a webpage into Markdown. You provide the webpage URL, and… | 50 | ## Endpoint reference ### Convert HTML to Markdown `POST https://api.eu.apyhub.com/chisleroff/convert-html-to-markdown` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | URL of the webpage to convert to Markdown (http/https only, max 2048 chars). | #### Quickstart Convert a webpage into Markdown by sending its URL. ```bash curl -X POST "https://api.eu.apyhub.com/chisleroff/convert-html-to-markdown" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.html"}' ``` #### What you'll get back Returns a JSON object with `title` as a string, `markdown` as a string, `character_count` as an integer, and `readability_success` as a boolean. ```json { "title": "Apy Samples", "markdown": "# **A consequuntur voluptatem ut mollitia voluptatem.**\n\nLorem ipsum dolor sit amet. Aut aspernatur quibusdam hic amet quas nam internos consequatur et ipsam repellendus ut galisum obcaecati. In repudiandae ipsa aut dolor asperiores et sint voluptatem aut voluptates quia. Nam numquam enim ut dolorum sunt **Et doloremque cum temporibus debitis aut labore delectus et odit tempore** in autem odio. Aut impedit fugit ut voluptate rerum sit culpa voluptatem ab galisum perferendis qui dignissimos minima est galisum perferendis et consequatur dolorem. Eum velit Quis ut nobis consequuntur *Quo aperiam est fugiat quas ut fugiat dolorem ut voluptatum exercitationem* aut quia temporibus. Rem rerum voluptas et quis voluptatum et veniam temporibus et tempore galisum et odit error est animi consequuntur. Et magni deleniti et molestiae corporis eos possimus itaque ut placeat quis hic fuga ratione qui fugiat porro aut praesentium repellat.\n\n![](https://assets.apyhub.com/samples/sample.jpg)\n\nEt aliquam obcaecati ut doloremque impedit *Est rerum aut sunt mollitia et laborum adipisci qui temporibus maxime*. A rerum beatae eum cupiditate quas non maxime unde in autem quia est similique repellat est placeat magnam vel aperiam suscipit. Vel quas Quis At facilis aperiam et perspiciatis voluptate? Est exercitationem dolorem sit quis cupiditate [Nihil est harum corporis sed perferendis facilis qui accusantium quas](https://apyhub.com/utility/converter-doc-pdf) 33 molestiae tenetur. Eos architecto pariatur aut saepe quidem ut provident eveniet sed tempore earum sit internos numquam aut consequuntur iste qui repudiandae maxime. Sed voluptatibus blanditiis et modi deserunt **Sit voluptas**. Ut laudantium dolorem ut perspiciatis sapiente est alias consequuntur non repellendus ducimus et minima aspernatur eum dolores quasi. Aut quos eaque vel consequuntur atque sed quaerat voluptate quo iure dolores. Et consectetur corrupti aut eligendi dolor sed suscipit eligendi aut possimus sunt sit numquam rerum.\n\n1. Non sequi voluptatum vel architecto debitis et voluptatem mollitia.\n2. At velit voluptatem cum similique nihil.\n3. Sed tempore dolorem a voluptatem saepe vel blanditiis nulla.\n\n**Quo consequuntur quod qui quia ratione.**\n\nSed consequatur excepturi *Eum galisum eos ipsum quaerat ea pariatur possimus* rem omnis veritatis hic necessitatibus fugiat. Est pariatur aliquid [Eum autem et laudantium autem ut delectus debitis quo necessitatibus enim](https://apyhub.com/utility/converter-doc-pdf). Qui voluptates aperiam non inventore voluptatibuset iste id asperiores aut voluptas molestiae! Eum aperiam corporis id amet architecto est fugiat corporis et dolor numquam. Aut expedita itaque ut quis nihil est sapiente exercitationem et illum labore ea saepe cupiditate et tempore sequi!\n\n**Eum quibusdam velit est asperiores totam.**\n\nEst accusamus dolores At dolor suscipit id molestiae exercitationem ut dolor tempore qui error voluptate qui labore dolorem. Sit dolores iure qui necessitatibus praesentium qui Quis porro id dolorem quod. Et iusto repellat [33 illo sed enim galisum id laudantium beatae](https://apyhub.com/utility/converter-doc-pdf)! Qui assumenda maiores sed tempore doloribus est explicabo galisum At enim nihil sit nulla repellendus ut reprehenderit repudiandae.\n\n`Est unde voluptas Est iure aut eaque amet ut cumque eligendi est sunt assumenda est mollitia nulla aut molestiae neque? Et cumque enim sed cumque Quis ea voluptatem animi At voluptatem labore cum placeat illum rem illo quaerat. Et excepturi voluptas et tenetur repellendus vel quos ipsa et deleniti odit id consequatur voluptatibus et reiciendis corporis non maxime eius.`\n\n**Est enim et quibusdam placeat est Quis rerum.**\n\nEt officia facilis aut voluptatibus provident **Quo minus non dolores commodi** ut voluptatem ipsa qui fugit doloribus non illo tempore! Eos repellat asperiores et numquam eveniet ut incidunt laboriosam aut quam quisquam qui amet ratione. Cum voluptate neque ut voluptas dicta sed natus magni. Aut sint dolorum est blanditiis aperiam sed accusantium galisum et aperiam quia qui repellat sunt ex iure consequuntur. Qui quam mollitia *Et nesciunt est soluta explicabo in accusamus consequuntur* qui magni aliquam et voluptas porro. Qui sint dolorem et adipisci dolorem et incidunt enim sed nulla consectetur. Qui architecto reprehenderitet repellat qui recusandae necessitatibus. Est quibusdam exercitationem et cupiditate numquam sed enim voluptas quo fuga ducimus eum nostrum sapiente? Est incidunt ratione non voluptatem incidunt eos nulla eum facere internos.\n\nSed alias voluptas **Aut deserunt qui quisquam quidem non vero** qui laborum voluptatem non veritatis velit! Ut delectus corrupti ut explicabo nisiet accusamus ea dignissimos minus. Sed repudiandae officia qui quod expedita et necessitatibus deleniti quo recusandae temporibus At nobis omnis qui voluptas quis. Et sunt enim et laboriosam sunt [Sed officia aut omnis dolor](https://apyhub.com/utility/converter-doc-pdf) in aliquid debitis et fugiat blanditiis ut voluptas aliquid? Eum dolor consequatur et voluptatem dolorem sed ipsa modi ut sunt quisquam est corrupti nulla eum magnam maiores ut eius nisi? Ut eius voluptatum ut perferendis quos est optio impedit non fugiat veniam rem dolor autem eum mollitia eveniet hic soluta rerum. Hic culpa blanditiis et rerum fugit deleniti?\n\nEst natus dolores eos illo iure **Et perspiciatis non voluptas quia** aut expedita officiis et quam necessitatibus et voluptatem deserunt. Ab amet provident qui nesciunt praesentium et natus aspernatur in recusandae sunt. Sit laboriosam saepe non voluptates eligendi et corporis galisum vel ipsam sint quo sunt assumenda in voluptas quia et neque voluptatem. Aut ullam dolor [Eos ipsum](https://apyhub.com/utility/converter-doc-pdf) aut quas deserunt. Non veniam magni ut nihil deleniti *Et mollitia*. Et commodi possimus sed expedita quae non galisum molestiae in magni suscipit. Et modi adipisci eos laudantium dolorem sed rerum nobis? In explicabo nesciunt et molestiae consequatur sit corrupti ipsum. Et illum rerum vel minus sunt aut ipsam facilis qui omnis vero sed voluptatem quia a officiis consequatur ab incidunt error.\n\n- A sunt obcaecati hic voluptatem inventore sit quis autem id quisquam architecto.\n- Quo nobis natus est nobis illum est omnis optio.\n- Sed consequatur odio quo rerum quod sed doloremque quam!\n\nSed quod ducimus ut quam eligendi est tempora voluptate sit alias itaque id neque culpa nam quaerat nulla non delectus velit. Sed galisum optio **33 alias qui voluptatem iste aut eius quaerat** hic dolorum nisi 33 facere nisi. Et assumenda consequatur et quia blanditiis [Aut dicta est quia porro](https://apyhub.com/utility/converter-doc-pdf) qui voluptatem ducimus id iure tenetur aut doloremque explicabo. Eos explicabo omnis ut dicta sint sed suscipit iste sit galisum ut vitae illum. Ut soluta expedita ea magnam velit est rerum porro a accusamus internos. Eos saepe consequuntur non provident rerumaut facilis ut quidem nihil. Ut consequatur sequi eum velit sint aut neque amet qui delectus reprehenderit sed beatae voluptas. Aut dolor odio ut iste laudantium est impedit rerum eum delectus impedit qui cupiditate enim. Cum exercitationem optio id vero internos qui aliquid quod sit autem ipsam hic sint necessitatibus sit quae blanditiis et delectus neque!\n\nQui sequi aliquam qui consectetur explicabo non nesciunt nemo ut Quis nostrum?", "character_count": 7430, "readability_success": true } ``` ## About ## What it does HTML to Markdown converts a webpage URL into clean Markdown. Send a page URL in the request body and get back the page title, the Markdown version of the content, a character count, and a readability_success flag. Use it when you need page content in a format that is easier to store, diff, review, or pass into documentation and publishing workflows. It is a good fit for content ingestion pipelines, knowledge-base imports, article archiving, and automated summaries that start from live web pages. The input is simple: a body object with a single url field. The URL must use http or https and can be up to 2048 characters. The response is equally direct, giving you the extracted title plus markdown text you can render or persist as plain text markup. If you are building a crawler, migration script, or content analysis tool, HTML to Markdown gives you a structured way to turn web pages into a developer-friendly text format without manual cleanup. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/chisleroff/service/convert-html-to-markdown * * * --- title: Advanced Webpage to PDF API slug: pdf-from-url url: https://apyhub.com/chisleroff/service/pdf-from-url provider: Website Intelligence categories: [File Conversion, Smart Generation] tags: [pdf-conversion, html-to-pdf, web-to-pdf, document-generation, file-conversion] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 alias: chisleroff-advanced-webpage-to-pdf-api --- # Advanced Webpage to PDF API Convert any http or https page into a PDF binary. Set page size, margins, headers, footers, and background printing for archive-ready output. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/chisleroff/pdf-from-url` | What it does Converts a web page at a given URL into a PDF file. The request body lets you control… | 100 | ## Endpoint reference ### PDF from URL `POST https://api.eu.apyhub.com/chisleroff/pdf-from-url` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | URL of the web page to convert to PDF (http/https only). | | `landscape` | body | boolean | no | Page orientation: true for landscape, false for portrait. Default: `false`. | | `page_size` | body | string | no | Page size: A4, Letter, Legal, A3, Tabloid. Default: `A4`. | | `margin_top` | body | string | no | Top margin with CSS units, e.g. 10mm. Default: `10mm`. | | `footer_html` | body | string | no | Custom footer HTML, supports pageNumber/totalPages spans. | | `header_html` | body | string | no | Custom header HTML, supports pageNumber/totalPages spans. | | `margin_left` | body | string | no | Left margin with CSS units. Default: `10mm`. | | `margin_right` | body | string | no | Right margin with CSS units. Default: `10mm`. | | `margin_bottom` | body | string | no | Bottom margin with CSS units. Default: `10mm`. | | `print_background` | body | boolean | no | Print background graphics. Default: `true`. | #### Quickstart Convert a web page into a PDF by sending its URL. ```bash curl -X POST "https://api.eu.apyhub.com/chisleroff/pdf-from-url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://apyhub.com"}' ``` #### What you'll get back Returns a binary PDF file, which is the generated PDF content. ## About ## What it does PDF from URL turns a web page URL into a PDF file. Send an http or https page address and receive a binary PDF in return, ready to store, download, or attach to a workflow. Use it when you need a printable snapshot of live web content: invoices rendered from a customer portal, archived copies of articles, internal documentation exports, or reports generated from dashboard pages. The request body accepts a required `url` plus layout options like `landscape`, `page_size`, margins, `print_background`, and optional `header_html` and `footer_html` for page numbering or custom branding. The output is a PDF binary, so it fits cleanly into document pipelines and file-handling jobs. If your application needs to capture exactly what a browser renders without building your own print flow, this endpoint gives you a direct conversion path from URL to PDF. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/chisleroff/service/pdf-from-url * * * --- title: Convert and Format raw HTML to PDF API slug: pdf-from-html url: https://apyhub.com/chisleroff/service/pdf-from-html provider: Website Intelligence categories: [File Conversion, File Manipulation, Smart Generation] tags: [html, pdf, raw, format] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 100 alias: chisleroff-convert-and-format-raw-html-to-pdf-api --- # Convert and Format raw HTML to PDF API Convert raw HTML into a PDF file with page size, margins, orientation, and background control. Built for invoices, reports, and exports. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/chisleroff/pdf-from-html` | What it does Converts raw HTML into a PDF document. You send HTML plus optional page and margin set… | 100 | ## Endpoint reference ### PDF from HTML `POST https://api.eu.apyhub.com/chisleroff/pdf-from-html` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `html` | body | string | yes | Raw HTML content to convert to PDF (max 5,000,000 characters). | | `landscape` | body | boolean | no | Page orientation: true for landscape, false for portrait. Default: `false`. | | `page_size` | body | string | no | Page size: A4, Letter, Legal, A3, Tabloid. Default: `A4`. | | `margin_top` | body | string | no | Top margin with CSS units. Default: `10mm`. | | `margin_left` | body | string | no | Left margin with CSS units. Default: `10mm`. | | `margin_right` | body | string | no | Right margin with CSS units. Default: `10mm`. | | `margin_bottom` | body | string | no | Bottom margin with CSS units. Default: `10mm`. | | `print_background` | body | boolean | no | Print background graphics. Default: `true`. | #### Quickstart Convert a small HTML snippet into a PDF file. ```bash curl -X POST "https://api.eu.apyhub.com/chisleroff/pdf-from-html" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"html":"

Hello, world!

"}' ``` #### What you'll get back Returns a binary file download containing the generated PDF. ## About ## What it does HTML to PDF turns raw HTML into a PDF binary you can store, email, or attach to workflows. Send an HTML document in the required `body.html` field, and the response comes back as a PDF file. Use the optional page settings to control how the document is rendered. You can switch between portrait and landscape with `landscape`, choose a paper format with `page_size` (`A4`, `Letter`, `Legal`, `A3`, or `Tabloid`), and tune the margins with `margin_top`, `margin_left`, `margin_right`, and `margin_bottom`. Set `print_background` when you need background colors and graphics preserved in the output. This is a fit for invoice generation, report export, contract snapshots, and any workflow where HTML is already the source of truth. Build the page once in your app, send the rendered markup to HTML to PDF, and return a downloadable PDF without a manual print step. Because the output is a binary PDF, it can slot directly into document pipelines, storage systems, or delivery jobs that expect a file rather than JSON. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/chisleroff/service/pdf-from-html * * * --- title: Temporary and Disposable Emails API slug: temporary-and-disposable-emails-api url: https://apyhub.com/boomlify/service/temporary-and-disposable-emails-api provider: Boomlify categories: [Communications, "Security & Privacy"] tags: [temporary-email, disposable-email, email-inbox, throwaway-email, email-testing, burner-email] auth: api_key version: v1 service_type: sync endpoints: 3 atoms: 25 alias: boomlify-temp-mail --- # Temporary and Disposable Emails API Temp mail API for developers: create disposable inboxes that last 10 minutes to permanently, read messages as JSON, and use custom domains. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/boomlify/temporary-and-disposable-emails-api` | What it does Creates a temporary email address. You can control the email lifetime with the time qu… | 25 | | GET | `https://api.eu.apyhub.com/boomlify/temporary-and-disposable-emails-api/messages/:id` | What it does Retrieves email messages for the email address identified by the path id. The response… | 25 | | DELETE | `https://api.eu.apyhub.com/boomlify/temporary-and-disposable-emails-api/:id` | What it does Deletes a temporary email identified by its UUID path parameter. The response returns… | 25 | ## Endpoint reference ### Create Temporary Email `POST https://api.eu.apyhub.com/boomlify/temporary-and-disposable-emails-api` · 25 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `time` | query | string | no | One of: 10min, 1hour, 1day, permanent. Default: `10min`. Example: `10min`. | | `domain` | query | string | no | Example: `example.com`. | #### Quickstart Create a temporary email address with the default 10-minute lifetime. ```bash curl -X POST "https://api.eu.apyhub.com/boomlify/temporary-and-disposable-emails-api?time=10min" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with top-level `success` and `message` fields, a `meta` object with a `timestamp`, and a `data` object containing the created email details. - `success` is a boolean indicating whether the request succeeded. - `message` is a status string. - `meta.timestamp` is an ISO 8601 date-time string. - `data` is an object that includes `email`, `meta`, and `success`. ```json { "success": true, "message": "Request processed successfully", "meta": { "timestamp": "2023-10-27T10:00:00Z" }, "data": { "success": true, "meta": { "tier": "10min", "user_id": "user_123", "request_time": "2023-10-27T10:00:00Z" }, "email": { "id": "550e8400-e29b-41d4-a716-446655440000", "domain": "example.com", "address": "demo@example.com", "time_tier": "10min", "created_at": "2023-10-27T10:00:00Z", "expires_at": "2023-10-27T10:10:00Z", "time_remaining": { "minutes": 10, "seconds": 0, "total_ms": 600000, "human_readable": "10 minutes" }, "is_custom_domain": false } } } ``` ### Retrieve Email Messages `GET https://api.eu.apyhub.com/boomlify/temporary-and-disposable-emails-api/messages/:id` · 25 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | path | string (uuid) | yes | Example: `550e8400-e29b-41d4-a716-446655440000`. | | `limit` | query | integer | no | Default: `25`. Example: `25`. | | `offset` | query | integer | no | Default: `0`. Example: `0`. | #### Quickstart Fetch a single message by its UUID. ```bash curl -X GET "https://api.eu.apyhub.com/boomlify/temporary-and-disposable-emails-api/messages/:id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `data`, `meta`, `message`, and `success` fields. The `data` field is an object containing the message response payload, `meta.timestamp` is a date-time string, `message` is a status message, and `success` is a boolean. ```json { "data": {}, "meta": { "timestamp": "2023-10-27T10:00:00Z" }, "message": "Request processed successfully", "success": true } ``` ### Delete Temporary Email `DELETE https://api.eu.apyhub.com/boomlify/temporary-and-disposable-emails-api/:id` · 25 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | path | string (uuid) | yes | | #### Quickstart Delete a temporary email by its UUID `id`. ```bash curl -X DELETE "https://api.eu.apyhub.com/boomlify/temporary-and-disposable-emails-api/:id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `data`, `meta`, `message`, and `success` fields. The `data` field is an object containing response details such as `meta`, `message`, and `success`. ```json { "data": { "meta": { "user_id": "user_123", "email_id": "550e8400-e29b-41d4-a716-446655440000", "deleted_at": "2023-10-27T10:00:00Z" }, "message": "Request processed successfully", "success": true }, "meta": { "timestamp": "2023-10-27T10:00:00Z" }, "message": "Request processed successfully", "success": true } ``` ## About ## What it does The Temp Mail API creates temporary, disposable email inboxes on demand. Choose how long each inbox lives (10 minutes, 1 hour, 1 day, or permanent), optionally use your own domain, and read incoming messages as JSON, including sender, subject, and HTML or plain-text body. Delete an inbox as soon as you're done with it. Use it to test sign-up and verification emails, run automated QA flows, and keep throwaway registrations out of real mailboxes. Each call costs 25 atoms, and you can start on ApyHub's free tier: 5 API calls per day and 3,000 atoms per month, with no card required. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/boomlify/service/temporary-and-disposable-emails-api * * * --- title: Generate Hospitality Product Categories API slug: generate-hospitality-product-categories url: https://apyhub.com/sharpapi/service/generate-hospitality-product-categories provider: SharpAPI categories: [Artificial Intelligence, Smart Generation, Travel] tags: [hospitality, travel-categories, content-classification, category-generation, taxonomy, asynchronous-jobs] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-50 alias: sharpapi-hospitality-product-categories --- # Generate Hospitality Product Categories API Generate ranked hospitality category names from travel content. Returns job status plus category names and weights for taxonomy workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/generate-hospitality-product-categories` | What it does Submits a job to generate hospitality product categories from the provided content. Th… | 50 | | GET | `https://api.eu.apyhub.com/sharpapi/generate-hospitality-product-categories/job/status/:job_id` | What it does Checks the status of a previously submitted hospitality product category generation jo… | 1 | ## Endpoint reference ### Generate Hospitality Product Categories - Submit Job `POST https://api.eu.apyhub.com/sharpapi/generate-hospitality-product-categories` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `city` | body | string | no | Specify the city to travel. | | `content` | body | string | yes | Provide the content to generate travel product categories. | | `context` | body | string | no | Provide additional context to improve paraphrasing accuracy. | | `country` | body | string | no | Specify the country to travel. | | `language` | body | string | no | Specify the language of the output. Default: `English`. | | `voice_tone` | body | string | no | Specify the voice tone. Default: `neutral`. | | `max_quantity` | body | number | no | Maximum number of product categories to generate. | #### Quickstart Submit a hospitality content job with the required `content` field. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/generate-hospitality-product-categories" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"Hotels in Paris"}' ``` #### What you'll get back Returns a JSON object with: - `job_id` (`string`, UUID): the unique identifier of the submitted job ```json { "job_id": "831f5f92-13dd-49f2-aaf1-b27dbb6829cd" } ``` ### Generate Hospitality Product Categories - Check Job Status `GET https://api.eu.apyhub.com/sharpapi/generate-hospitality-product-categories/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Check the status of a hospitality categories generation job by its `job_id`. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/generate-hospitality-product-categories/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. `data` contains the job `id` (UUID), `type` (`api_job_result`), and `attributes`, which include the job `type`, `status`, and `result` array. ```json { "data": { "id": "550e8400-e29b-41d4-a716-446655440000", "type": "api_job_result", "attributes": { "type": "tth_hospitality_product_categories", "status": "success", "result": [ { "name": "Hotel Amenities", "weight": 0.92 } ] } } } ``` ## About ## What it does Hospitality Product Categories generates a ranked list of product category names from your travel or hospitality content. Send a `content` string, and you can also include `city`, `country`, `language`, `context`, `voice_tone`, and `max_quantity` to shape the output. The submit endpoint returns a `job_id`, so you can process larger requests asynchronously. Use Hospitality Product Categories when you need structured category ideas from unstructured text: hotel collections, destination guides, tour packages, amenity groupings, or marketplace merchandising for a travel brand. The service is built for content classification and category generation, not for booking or geocoding. Poll the job status endpoint with the returned `job_id`. When the job finishes successfully, the response includes a `result` array with category objects. Each object contains a `name` and a `weight`, letting you sort or filter categories by relevance in your own workflow. If you are building content operations, travel commerce tooling, or an AI-assisted taxonomy generator, this service gives you machine-readable category suggestions you can plug into dashboards, search filters, or CMS pipelines. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/generate-hospitality-product-categories * * * --- title: Detect Email Address API slug: detect-email-addresses url: https://apyhub.com/sharpapi/service/detect-email-addresses provider: SharpAPI categories: [Data Extraction, Data Validation, Developer Tools] tags: [content, detect, text, email] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-50 alias: sharpapi-detect-emails --- # Detect Email Address API Extract email addresses from any block of text with an async job flow. Submit the content, then poll for an array of detected email strings. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/detect-email-addresses` | What it does Submits an asynchronous job to detect email addresses from the provided content. The r… | 50 | | GET | `https://api.eu.apyhub.com/sharpapi/detect-email-addresses/job/status/:job_id` | What it does Retrieves the current status of a Detect Emails job by its job ID. The response return… | 1 | ## Endpoint reference ### Submit Detect Emails job `POST https://api.eu.apyhub.com/sharpapi/detect-email-addresses` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Provide the content from where email addresses needs to be detected. | #### Quickstart Submit text to detect email addresses asynchronously. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/detect-email-addresses" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"Please contact jane.doe@example.com or support@company.io for help."}' ``` #### What you'll get back Returns a JSON object with a `job_id` string — the UUID of the submitted job. Poll the job status endpoint with this id to retrieve the result. ```json { "job_id": "58751fe3-8097-45a2-9405-5480ef90b8d0" } ``` ### Get Detect Emails job status `GET https://api.eu.apyhub.com/sharpapi/detect-email-addresses/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Check the status of a detection job by replacing `:job_id` with your job UUID. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/detect-email-addresses/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. Inside `data`, `id` and `type` are strings, and `attributes` is an object containing `type` (string), `result` (an array of strings), and `status` (string). ```json { "data": { "id": "job_123", "type": "job", "attributes": { "type": "detect-email-addresses", "result": ["alice@example.com", "bob@example.com"], "status": "completed" } } } ``` ## About ## What it does Email Address Detection scans a block of text and returns any email addresses it finds. Send the content in `body.content`, get back a `job_id` for the asynchronous job, then poll the job status endpoint with the job ID. Use Email Address Detection when you need to pull contact addresses out of raw text from support tickets, lead notes, scraped pages, documents, or chat logs. It is useful when you already have unstructured content and need to isolate email addresses without building your own pattern-matching logic. The status response returns a `data` object with `id`, `type`, and `attributes`. Inside `attributes`, you can read the job `type`, `status`, and `result`, where `result` is an array of strings containing the detected email addresses. This service is a good fit for workflows that normalize inbound text before enrichment, CRM import, or validation steps. It gives you a simple async flow: submit content, check status, and read the extracted email list when the job completes. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/detect-email-addresses * * * --- title: Generate Product Review Sentiment API slug: generate-product-review-sentiment url: https://apyhub.com/sharpapi/service/generate-product-review-sentiment provider: SharpAPI categories: [Artificial Intelligence, Smart Generation] tags: [sentiment-analysis, review-analysis, text-classification, opinion-mining, async-jobs] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-50 alias: sharpapi-generate-product-review-sentiment --- # Generate Product Review Sentiment API Analyze product review text asynchronously and get back a score and an opinion label. Built for moderation, feedback triage, and dashboards. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/generate-product-review-sentiment` | What it does Submits an asynchronous job to analyze the sentiment of product review text provided i… | 50 | | GET | `https://api.eu.apyhub.com/sharpapi/generate-product-review-sentiment/job/status/:job_id` | What it does Retrieves the current status of a Generate Product Review Sentiment job by its jobid.… | 1 | ## Endpoint reference ### Submit Generate Product Review Sentiment job `POST https://api.eu.apyhub.com/sharpapi/generate-product-review-sentiment` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Provide review text to analyze the sentiment. | #### Quickstart Submit a review text for asynchronous sentiment analysis. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/generate-product-review-sentiment" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"The product arrived quickly and works exactly as expected."}' ``` #### What you'll get back Returns a JSON object with a `job_id` string — the UUID of the submitted job. Poll the job status endpoint with this id to retrieve the result. ```json { "job_id": "8b6da84e-2d2e-4cb7-9193-00db6f1557c3" } ``` ### Get Generate Product Review Sentiment job status `GET https://api.eu.apyhub.com/sharpapi/generate-product-review-sentiment/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Check the status of a sentiment-analysis job by its job ID. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/generate-product-review-sentiment/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. The `data` object can include `id` and `type` strings, plus an `attributes` object with `type`, `status`, and a `result` object containing `score` and `opinion` strings. ```json { "data": { "id": "job_123", "type": "job", "attributes": { "type": "sentiment", "status": "completed", "result": { "score": "0.82", "opinion": "positive" } } } } ``` ## About ## What it does Review Sentiment Analysis scores product review text and returns the inferred opinion for each submitted job. Send a review in the `content` field, get back a `job_id`, then poll the job status endpoint until processing finishes. The status response includes a `data` object with `id`, `type`, and `attributes`. Inside `attributes`, you can read the job `status`, the result `type`, and a `result` object containing `score` and `opinion` when the analysis is available. Use Review Sentiment Analysis when you need to sort customer feedback into positive or negative buckets, flag reviews for moderation, or feed sentiment signals into reporting dashboards. It fits pipelines that process reviews at scale without requiring you to model the text yourself. Because the service is asynchronous, it works well for batch submissions and background processing. Submit the text, track the job by UUID, and consume the result only when the status changes to a completed state. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/generate-product-review-sentiment * * * --- title: "Generate Tours & Activities Product Categories API" slug: generate-tours-activities-product-categories url: https://apyhub.com/sharpapi/service/generate-tours-activities-product-categories provider: SharpAPI categories: [Marketing, Smart Generation, Travel] tags: [travel, tours-activities, product-categorization, ai-classification] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-50 alias: sharpapi-travel-activities-product-categories --- # Generate Tours & Activities Product Categories API Classify travel content into ranked tours and activities categories. Returns job status plus category names and weights for search and taxonomy. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/generate-tours-activities-product-categories` | What it does Submits an async job to generate tours and activities product categories from the prov… | 50 | | GET | `https://api.eu.apyhub.com/sharpapi/generate-tours-activities-product-categories/job/status/:job_id` | What it does Checks the status of a previously submitted job for generating tours and activities pr… | 1 | ## Endpoint reference ### Generate Tours & Activities Product Categories Submit Job `POST https://api.eu.apyhub.com/sharpapi/generate-tours-activities-product-categories` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `city` | body | string | no | Specify the city of travel. Example: `Sample value`. | | `content` | body | string | yes | Provide the content to generate travel product categories. Example: `Sample value`. | | `context` | body | string | no | Provide additional context to improve paraphrasing accuracy Example: `Sample value`. | | `country` | body | string | no | Specify the country related to travel. Example: `Sample value`. | | `language` | body | string | no | Specify the language of the output, defaults to English Example: `Sample value`. | | `max_quantity` | body | number | no | Specify the maximum length of the paraphrased content | #### Quickstart Submit a travel content generation job with the required `content` field. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/generate-tours-activities-product-categories" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "content": "Best family-friendly attractions in Paris" }' ``` #### What you'll get back Returns a JSON object with a `job_id` string — the UUID of the submitted job. Poll the job status endpoint with this id to retrieve the result. ```json { "job_id": "d4b1bfda-371e-4e8c-b63f-340a7cccdeeb" } ``` ### Generate Tours & Activities Product Categories Check Job Status `GET https://api.eu.apyhub.com/sharpapi/generate-tours-activities-product-categories/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | Example: `5de4887a-0dfd-49b6-8edb-9280e468c210`. | #### Quickstart Check the status of a job by its `job_id`. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/generate-tours-activities-product-categories/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. `data` contains `id` and `type` for the job result, plus an `attributes` object with `status`, `type`, and `result`. `status` is one of `success`, `failed`, `running`, or `queued`. ```json { "data": { "id": "55bc3311-d16e-4949-83a0-d367b7f79f89", "type": "api_job_result", "attributes": { "status": "success", "type": "tth_ta_product_categories", "result": [ { "name": "Boat Tours", "weight": 9.5 } ] } } } ``` ## About ## What it does Tour Category Generator turns travel content into ranked tours-and-activities product categories. Send a content string, and optionally add city, country, language, context, and max_quantity to shape the output. The job returns a job_id first, then a status record when you check the job. Use it when you need to map destination copy, activity descriptions, or curated travel inventory into a normalized category list. The submitted content drives the classification; city and country can help anchor the travel context, while language lets you request the output in the language you need. When the job finishes, the status response includes a result array of category objects with name and weight, along with a status value of success, failed, running, or queued. That makes it easy to sort category suggestions by relevance and feed them into travel search, merchandising, or content organization workflows. Tour Category Generator is a good fit for travel platforms that need structured categories from unstructured copy without building their own taxonomy pipeline. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/generate-tours-activities-product-categories * * * --- title: Generate Travel Review Sentiment API slug: generate-travel-review-sentiment url: https://apyhub.com/sharpapi/service/generate-travel-review-sentiment provider: SharpAPI categories: [Artificial Intelligence, Smart Generation, Travel] tags: [sentiment-analysis, travel, review-analysis] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-50 alias: sharpapi-travel-review-sentiment --- # Generate Travel Review Sentiment API Analyze travel review text asynchronously and get a sentiment score with an opinion label. Built for feedback triage and review analytics. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/generate-travel-review-sentiment` | What it does Submits review text for asynchronous travel-review sentiment analysis. The request bod… | 50 | | GET | `https://api.eu.apyhub.com/sharpapi/generate-travel-review-sentiment/job/status/:job_id` | What it does Checks the status of a travel review sentiment analysis job by its jobid and returns t… | 1 | ## Endpoint reference ### Generate Travel Review Sentiment Submit Job `POST https://api.eu.apyhub.com/sharpapi/generate-travel-review-sentiment` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Provide Review text to analyze the sentiment. Example: `Sample value`. | #### Quickstart Submit a travel review for sentiment analysis with a short text review. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/generate-travel-review-sentiment" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"The hotel was clean, the staff were friendly, and the location was perfect."}' ``` #### What you'll get back Returns a JSON object with a `job_id` string — the UUID of the submitted job. Poll the job status endpoint with this id to retrieve the result. ```json { "job_id": "947963b5-1559-434b-9ae3-9146a6114d79" } ``` ### Generate Travel Review Sentiment Check Job Status `GET https://api.eu.apyhub.com/sharpapi/generate-travel-review-sentiment/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | Example: `5de4887a-0dfd-49b6-8edb-9280e468c210`. | #### Quickstart Check the status of a travel review sentiment job by its `job_id` path parameter. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/generate-travel-review-sentiment/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a required `data` object. The `data` object includes `id` and `type` strings, plus an `attributes` object containing `status`, `type`, and optionally `result` with `score` and `opinion`. ```json { "data": { "id": "f85b7ac5-33cd-4796-8935-dc8c22219946", "type": "api_job_result", "attributes": { "type": "tth_review_sentiment", "status": "success", "result": { "score": 95, "opinion": "POSITIVE" } } } } ``` ## About ## What it does Travel Review Sentiment analyzes review text and returns a sentiment classification for travel feedback. Send a `content` string in the request body, get back a `job_id`, then poll the job status endpoint until the result is ready. Use it when you need to triage hotel, airline, tour, or destination reviews without reading every comment manually. The workflow is asynchronous, so it fits longer text or batch-style review processing where you submit a job first and check results later. When the job completes successfully, the status response includes a `data` object with `id`, `type`, and `attributes`. Inside `attributes`, you get the job `status` plus a `result` object containing a numeric `score` and an `opinion` value such as `POSITIVE`. That makes it straightforward to route highly negative reviews to support, summarize customer feedback, or score destination sentiment in an analytics pipeline. Travel Review Sentiment is a good fit for travel platforms, feedback dashboards, reputation monitoring, and moderation workflows that only need a compact sentiment result rather than full text analysis. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/generate-travel-review-sentiment * * * --- title: Generate Thank You E-mail API slug: generate-thank-you-email url: https://apyhub.com/sharpapi/service/generate-thank-you-email provider: SharpAPI categories: [Communications, Smart Generation] tags: [email-generation, ai-writing, text-generation] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-50 alias: sharpapi-generate-thankyou-email --- # Generate Thank You E-mail API Generate a thank-you email from a short brief, with language, length, context, and tone controls. Returns a job ID, status URL, and final copy. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/generate-thank-you-email` | What it does Submits an asynchronous job to generate a thank-you email from the supplied content an… | 50 | | GET | `https://api.eu.apyhub.com/sharpapi/generate-thank-you-email/job/status/:job_id` | What it does Retrieves the current status of a Generate Thankyou Email job identified by its jobid.… | 1 | ## Endpoint reference ### Submit Generate Thankyou Email job `POST https://api.eu.apyhub.com/sharpapi/generate-thank-you-email` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Product name and its parameters to generate the thank you Email. | | `context` | body | string | no | An additional flexible instructions for content processing. | | `language` | body | string | no | Specify the language of the output, defaults to English | | `max_length` | body | number | no | Specify the maximum length of email in words. eg. 100 | | `voice_tone` | body | string | no | Specify the voice tone of the output. It can be adjectives like funny or joyous, or even the name of a famous writer. | #### Quickstart Send the required `content` to generate a thank-you email as an async job. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/generate-thank-you-email" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"Thank you email for a new customer purchasing a wireless headset"}' ``` #### What you'll get back Returns a JSON object with a `job_id` string — the UUID of the submitted job. Poll the job status endpoint with this id to retrieve the result. ```json { "job_id": "549acbf4-697f-4d13-b403-faa7814bfc60" } ``` ### Get Generate Thankyou Email job status `GET https://api.eu.apyhub.com/sharpapi/generate-thank-you-email/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Check the status of a generated thank-you email job. Replace `:job_id` in the URL with the `job_id` returned by the submit endpoint. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/generate-thank-you-email/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. Inside `data`, `id` and `type` are strings, and `attributes` is an object with `type` and `status` strings plus a `result` object containing an `email` string. ```json { "data": { "id": "job_123", "type": "job", "attributes": { "type": "generate-thank-you-email", "result": { "email": "Thank you for your time and support." }, "status": "completed" } } } ``` ## About ## What it does Thank You Email Generator creates a thank-you email from a short content brief and returns the generated message asynchronously. Send a `body` object with the required `content` field, which should describe the product name and parameters you want reflected in the email. You can also include `context` for extra instructions, `language` to set the output language, `max_length` to cap the email length in words, and `voice_tone` to steer the style. The POST endpoint returns a `job_id` so you can track generation without blocking your workflow. When the job finishes, the status endpoint returns a structured response containing the job `status` and the generated `email` inside `data.attributes.result`. That makes it easy to plug into systems that need a concise follow-up message after a purchase, interview, support interaction, event registration, or referral. Use Thank You Email Generator when you need a quick, readable thank-you note without building your own prompt pipeline. It fits into CRM automations, post-interaction workflows, and internal tools where the input is a short brief and the output is a finished email body. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/generate-thank-you-email * * * --- title: URls Detector API slug: detect-urls url: https://apyhub.com/sharpapi/service/detect-urls provider: SharpAPI categories: [Data Extraction, Developer Tools, SEO] tags: [url-detection, link-extraction, text-parsing, web-scraping, developer-tools] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-1000 alias: sharpapi-urls-detector-api --- # URls Detector API Extract URLs from any content string and poll for results. Returns each detected link with its full URL and protocol for parsing and moderation. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/detect-urls` | What it does Submits content for asynchronous URL detection and returns identifiers you can use to… | 1000 | | GET | `https://api.eu.apyhub.com/sharpapi/detect-urls/job/status/:job_id` | What it does Checks the status of an asynchronous URL-detection job by job ID and returns the job r… | 1 | ## Endpoint reference ### URLs Detector - Submit Job `POST https://api.eu.apyhub.com/sharpapi/detect-urls` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | The content from which URLs are to be detected. | #### Quickstart Submit text content to detect URLs in it. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/detect-urls" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"Check out https://apyhub.com and https://docs.apyhub.com for more details."}' ``` #### What you'll get back Returns a JSON object with a `job_id` string — the UUID of the submitted job. Poll the job status endpoint with this id to retrieve the result. ```json { "job_id": "ea6ff234-1b4b-4b60-acf2-8343ec37aa02" } ``` ### URLs Detector - Check Job Status `GET https://api.eu.apyhub.com/sharpapi/detect-urls/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Check the status of a detect-urls job by its job ID. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/detect-urls/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. The `data` object contains `id` and `type`, plus an `attributes` object with `type`, `result`, and `status`. ```json { "data": { "id": "2f3d9d3a-8c2d-4f2e-9c7f-3a1b2c4d5e6f", "type": "api_job_result", "attributes": { "type": "content_detect_urls", "result": [ { "url": "https://example.com", "protocol": "https" } ], "status": "success" } } } ``` ## About ## What it does URL Detector finds web links in text and returns them in a structured job result. Send a `content` string, receive a `job_id`, then poll the status endpoint until the job finishes. When the job succeeds, the result includes a `data` object with `id`, `type`, and `attributes`. Inside `attributes`, you get the job `type`, the final `status`, and a `result` array of detected URLs. Each item in that array includes the full `url` and its `protocol`, so you can separate `https` links from `mailto`, `tel`, `ftp`, and other schemes. Use URL Detector when you need to pull links out of user-submitted text, support tickets, documents, or logs before saving them, validating them, or turning them into clickable references. It fits well in moderation pipelines, content ingestion jobs, and link audit workflows where you need the exact URLs rather than a broad text analysis. The API is asynchronous, which makes it suitable for larger inputs and background processing. Check `status` for `queued`, `running`, `failed`, or `success`, then read the detected URLs from `attributes.result` once processing is complete. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/detect-urls * * * --- title: Detect Phones Numbers API slug: detect-phone-numbers url: https://apyhub.com/sharpapi/service/detect-phone-numbers provider: SharpAPI categories: [Data Validation, Developer Tools] tags: [phone-number-extraction, pii-detection, text-analysis] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-50 alias: sharpapi-detect-phone-numbers --- # Detect Phones Numbers API Detect phone numbers inside free-form text and poll the job for parsed_number and detected_number results. Built for cleanup and validation. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/detect-phone-numbers` | What it does Submits an asynchronous job to detect phone numbers from the provided content. The res… | 50 | | GET | `https://api.eu.apyhub.com/sharpapi/detect-phone-numbers/job/status/:job_id` | What it does Returns the current status of a Detect Phone Numbers job identified by jobid. The resp… | 1 | ## Endpoint reference ### Submit Detect Phone Numbers job `POST https://api.eu.apyhub.com/sharpapi/detect-phone-numbers` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Provide the content from where mobile number needs to be detected. | #### Quickstart Submit text containing phone numbers to start an asynchronous detection job. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/detect-phone-numbers" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"Call me at +1 415 555 0134 or +44 20 7946 0958."}' ``` #### What you'll get back Returns a JSON object with a `job_id` string — the UUID of the submitted job. Poll the job status endpoint with this id to retrieve the result. ```json { "job_id": "7cc14d8f-f0c6-4104-98c1-1f521a5f3438" } ``` ### Get Detect Phone Numbers job status `GET https://api.eu.apyhub.com/sharpapi/detect-phone-numbers/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Check the status of a phone-number detection job by its job ID. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/detect-phone-numbers/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. Inside `data`, `id` and `type` are strings, and `attributes` is an object containing `type` (string), `status` (string), and `result` (an array of objects with `parsed_number` and `detected_number` strings). ```json { "data": { "id": "job_123", "type": "job", "attributes": { "type": "phone-number-detection", "status": "completed", "result": [ { "parsed_number": "+14155552671", "detected_number": "+14155552671" } ] } } } ``` ## About ## What it does Phone Number Detector finds phone numbers in text and returns the detected results asynchronously. Send a content string, get back a job_id, then poll the job status endpoint until the job completes. Use it when you need to scan user-generated text, notes, tickets, chat logs, or imported documents for phone numbers without building your own parsing logic. The submitted content is the only input for the detection job, so it fits cleanly into automated validation or enrichment workflows. When the job finishes, the status response includes a data object with attributes.status and attributes.result. Each result item contains parsed_number and detected_number, letting you compare the normalized number with the original value that was found in the text. Phone Number Detector is a good fit for contact cleanup, lead processing, compliance checks, and any workflow where phone numbers need to be identified from free-form text before further processing. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/detect-phone-numbers * * * --- title: Job Positions API slug: list-job-positions url: https://apyhub.com/sharpapi/service/list-job-positions provider: SharpAPI categories: [HR] tags: [job-titles, job-positions, hr, reference-data] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 1000 alias: sharpapi-job-positions-api --- # Job Positions API List job positions with IDs, names, slugs, and pagination metadata. Optionally include related roles with relevancy weights for hiring tools. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/sharpapi/list-job-positions` | What it does Returns a paginated list of job positions. You can filter the results by name, and opt… | 1000 | ## Endpoint reference ### List Job Positions `GET https://api.eu.apyhub.com/sharpapi/list-job-positions` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `name` | query | string | no | | | `per_page` | query | integer | no | Default: `1`. | | `include_related` | query | boolean | no | Default: `false`. | #### Quickstart List job positions with the default page size. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/list-job-positions?per_page=1" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `data` (an array of job position objects), `meta` (pagination details), and `links` (pagination URLs). ```json { "data": [ { "id": "550e8400-e29b-41d4-a716-446655440000", "name": "Software Engineer", "slug": "software-engineer" } ], "meta": { "to": 1, "from": 1, "path": "https://example.com", "links": [], "total": 1, "per_page": 1, "last_page": 1, "current_page": 1 }, "links": { "last": "https://example.com?page=1", "next": null, "prev": null, "first": "https://example.com?page=1" } } ``` ## About ## What it does Job Position Directory returns a paginated list of job positions with stable identifiers, names, and URL-friendly slugs. Send optional query parameters to filter by `name`, control `per_page`, and include related roles when you need a richer view of the job taxonomy. Use it when you need a canonical source of role names for hiring flows, onboarding forms, search autocomplete, or internal HR tooling. The response gives you a `data` array of job position objects, plus pagination `meta` and navigation `links` so you can build result lists page by page. When `include_related` is set to `true`, each job position can also include `related_job_positions`, with related role IDs, names, slugs, and relevancy `weight` values. That makes it useful for suggesting adjacent roles, building role-mapping logic, or grouping similar positions in a talent product. If you only need the basics, keep the request simple and work from `id`, `name`, and `slug`. If you need relationship data, opt in explicitly and use the returned weights to rank the related positions. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/list-job-positions * * * --- title: Related Job Positions Generator API slug: related-job-positions-generator url: https://apyhub.com/sharpapi/service/related-job-positions-generator provider: SharpAPI categories: [HR, Smart Generation] tags: [hr, job-titles, recruiting, career-pathing, role-generation] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-50 alias: sharpapi-ai-related-job-position-generator --- # Related Job Positions Generator API Generate related job titles from a role name. Submit a position, poll for results, and get weighted suggestions for recruiting or job search. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/related-job-positions-generator` | What it does Submits an asynchronous job to generate related job positions from a provided job role… | 50 | | GET | `https://api.eu.apyhub.com/sharpapi/related-job-positions-generator/job/status/:job_id` | What it does Checks the status of a previously submitted related job positions generation job using… | 1 | ## Endpoint reference ### Related Job Positions Generator - Submit Job `POST https://api.eu.apyhub.com/sharpapi/related-job-positions-generator` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Provide a job position/role to generate related job positions for. | | `language` | body | string | no | Specify the language of the output. Default: `English`. | | `max_quantity` | body | number | no | Maximum number of related job positions to generate. | #### Quickstart Submit a job to generate related positions for a role. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/related-job-positions-generator" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"Product Manager","language":"English","max_quantity":5}' ``` #### What you'll get back Returns a JSON object with a `job_id` string — the UUID of the submitted job. Poll the job status endpoint with this id to retrieve the result. ```json { "job_id": "352ad2e4-191d-4ca5-bc75-38f87e04ede5" } ``` ### Related Job Positions Generator - Check Job Status `GET https://api.eu.apyhub.com/sharpapi/related-job-positions-generator/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Check the status of a related-job-positions generation job by its `job_id`. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/related-job-positions-generator/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object field. `data` contains the job result metadata, including `id`, `type`, and `attributes`; `attributes` includes `type`, `result`, and `status`. ```json { "data": { "id": "550e8400-e29b-41d4-a716-446655440000", "type": "api_job_result", "attributes": { "type": "hr_related_job_positions", "result": { "job_position": "Software Engineer", "related_job_positions": [ { "name": "Backend Engineer", "weight": 0.92 } ] }, "status": "success" } } } ``` ## About ## What it does Related Job Positions generates related roles from a job title or position you send in the request body. Submit a `content` string, and optionally set `language` and `max_quantity` to control the output language and how many suggestions you want back. The first POST returns a `job_id`. Use the status endpoint to poll by `job_id` until the job is complete. When the job succeeds, the response includes the original `job_position` and a `related_job_positions` array. Each related role includes a `name` and a `weight` so you can rank or filter the suggestions in your own workflow. Use Related Job Positions when you need to expand a single role into nearby titles for recruiting, candidate search, career-path mapping, or internal taxonomy cleanup. For example, you can start with “Data Analyst” and build a shortlist of adjacent positions to power job recommendations or search suggestions. The API is asynchronous, which makes it suitable for longer-running generation jobs without blocking your application. You submit once, then fetch the result when the status changes to `success`. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/related-job-positions-generator * * * --- title: Generate Product Categories API slug: generate-product-categories url: https://apyhub.com/sharpapi/service/generate-product-categories provider: SharpAPI categories: [Artificial Intelligence, E-commerce Quick Tools, Smart Generation] tags: [product-categorization, catalog-management, taxonomy, e-commerce, classification] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-50 alias: sharpapi-generate-product-categories --- # Generate Product Categories API Generate category suggestions from product content and poll for results. Returns ranked category names with weights for catalog and SKU tagging. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/generate-product-categories` | What it does Submits a job to generate product categories from the provided product content and opt… | 50 | | GET | `https://api.eu.apyhub.com/sharpapi/generate-product-categories/job/status/:job_id` | What it does Checks the status of an asynchronous product-category generation job using its job ID.… | 1 | ## Endpoint reference ### Generate Product Categories `POST https://api.eu.apyhub.com/sharpapi/generate-product-categories` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Product name and its parameters. | | `context` | body | string | no | List of other categories to consider. | | `language` | body | string | no | Default: `English`. | | `voice_tone` | body | string | no | | | `max_quantity` | body | integer | no | | #### Quickstart Submit a product description to generate categories for it. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/generate-product-categories" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "content": "Wireless noise-cancelling headphones with Bluetooth connectivity" }' ``` #### What you'll get back Returns a JSON object with a `job_id` string — the UUID of the submitted job. Poll the job status endpoint with this id to retrieve the result. ```json { "job_id": "cf22cd59-7cab-432c-8d90-e8d376d63960" } ``` ### Check Product Categories Status `GET https://api.eu.apyhub.com/sharpapi/generate-product-categories/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | | #### Quickstart Check the status of a product-categories job by its `job_id` in the path. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/generate-product-categories/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. Inside `data`, `id` is the job UUID, `type` is the resource type, and `attributes` contains the job `status` and, when available, the `result` array of category objects. ```json { "data": { "id": "2f6c7c7b-8f2d-4b7a-9f3a-2b1c9d8e4a11", "type": "api_job_result", "attributes": { "status": "success", "result": [ { "name": "Electronics", "weight": 0.92 } ] } } } ``` ## About ## What it does Product Category Generator takes a product name and supporting parameters, then returns a job you can poll until category suggestions are ready. Send the `content` field with the product name and its parameters, and optionally include `context` for other categories to consider, `language`, `voice_tone`, and `max_quantity`. Use it when you need to organise a catalog, map new SKUs into a taxonomy, or draft category suggestions for onboarding workflows. The initial response includes a `job_id`, so you can track the asynchronous request without blocking your app. When the job completes, the status endpoint returns the current `status` as `running`, `queued`, `failed`, or `success`. On success, the result is an array of category objects with `name` and `weight`, which lets you rank or filter the suggested categories in your own system. Product Category Generator is a fit for e-commerce tooling, content classification, and catalog operations where you need machine-generated category candidates from product input. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/generate-product-categories * * * --- title: Detect Spam API slug: detect-spam url: https://apyhub.com/sharpapi/service/detect-spam provider: SharpAPI categories: [Artificial Intelligence, Data Validation, Marketing] tags: [spam-detection, content-moderation, text-classification] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-50 alias: sharpapi-detect-spam --- # Detect Spam API Submit text for spam screening and poll the job for results. Returns a score, a pass flag, and a reason for moderation and comment workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/detect-spam` | What it does Submits content for asynchronous spam detection and returns identifiers for checking t… | 50 | | GET | `https://api.eu.apyhub.com/sharpapi/detect-spam/job/status/:job_id` | What it does Retrieves the current status of a Detect Spam job by its jobid. The response returns a… | 1 | ## Endpoint reference ### Submit Detect Spam job `POST https://api.eu.apyhub.com/sharpapi/detect-spam` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Provide the content to check whether it is spam. | #### Quickstart Submit text to the spam detector for asynchronous analysis. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/detect-spam" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"This is a limited-time offer. Click here to claim your prize!"}' ``` #### What you'll get back Returns a JSON object with a `job_id` string — the UUID of the submitted job. Poll the job status endpoint with this id to retrieve the result. ```json { "job_id": "c5c42851-027b-485a-80b1-3ffd8cde04b7" } ``` ### Get Detect Spam job status `GET https://api.eu.apyhub.com/sharpapi/detect-spam/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Check the status of an existing spam-detection job by its job ID. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/detect-spam/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object containing `id`, `type`, and `attributes`. Inside `attributes`, you’ll get `type`, `status`, and a `result` object with `pass`, `score`, and `reason`. ```json { "data": { "id": "550e8400-e29b-41d4-a716-446655440000", "type": "job", "attributes": { "type": "spam-detection", "status": "completed", "result": { "pass": true, "score": 98, "reason": "Message appears to be legitimate." } } } } ``` ## About ## What it does Spam Detection lets you submit text content and check whether it is likely to be spam. Send a `content` string in the job request, then use the returned `job_id` to track processing asynchronously. The submission response gives you a `job_id` for polling. When the job completes, the status endpoint returns a `data` object with `attributes.status` and, when available, a `result` object containing `pass`, `score`, and `reason`. Use Spam Detection when you need to screen user-generated text before publishing or routing it into a workflow. Typical cases include contact-form submissions, comments, sign-up messages, and other free-text inputs where you want an automated spam check without blocking the main request path. Because the API is asynchronous, it fits batch processing and background moderation flows. You send the text once, then read the job status until the result is ready. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/detect-spam * * * --- title: Generate Keywords/Tags API slug: generate-keywords-tags url: https://apyhub.com/sharpapi/service/generate-keywords-tags provider: SharpAPI categories: [Artificial Intelligence, SEO, Smart Generation] tags: [keywords, keyword-generation, seo, content-analysis, text-classification] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-50 alias: sharpapi-generate-keywords-tags --- # Generate Keywords/Tags API Generate keyword lists from a content string, with optional context, language, tone of voice, and maximum quantity. Poll for the async result. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/generate-keywords-tags` | What it does Submits an asynchronous job to generate keywords/tags from provided content. The reque… | 50 | | GET | `https://api.eu.apyhub.com/sharpapi/generate-keywords-tags/job/status/:job_id` | What it does Checks the status of a Generate Keywords Tags background job identified by its job ID… | 1 | ## Endpoint reference ### Submit Generate Keywords Tags job `POST https://api.eu.apyhub.com/sharpapi/generate-keywords-tags` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Provide the content to generate keywords. | | `context` | body | string | no | An optional context parameter is also available. It can be used to add additional processing instructions for the content. | | `language` | body | string | no | Specify the language of the output, defaults to English | | `voice_tone` | body | string | no | Specify the voice tone of the output. It can be adjectives like funny or joyous, or even the name of a famous writer. | | `max_quantity` | body | number | no | Maximum number of keywords to generate. | #### Quickstart Submit content to generate keyword tags as an asynchronous job. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/generate-keywords-tags" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"How to grow a small business online","language":"en"}' ``` #### What you'll get back Returns a JSON object with a `job_id` string — the UUID of the submitted job. Poll the job status endpoint with this id to retrieve the result. ```json { "job_id": "23e41760-5bb8-4f05-b5ab-c012b3c723e1" } ``` ### Get Generate Keywords Tags job status `GET https://api.eu.apyhub.com/sharpapi/generate-keywords-tags/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Fetch the status of a keyword-tags generation job by its job ID. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/generate-keywords-tags/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. The `data` object can include `id`, `type`, and an `attributes` object; `attributes` may contain `type`, `result` (an array of strings), and `status`. ```json { "data": { "id": "job_123", "type": "job", "attributes": { "type": "generate-keywords-tags", "result": ["keyword one", "keyword two"], "status": "completed" } } } ``` ## About ## What it does Keyword Generator turns your source content into a list of keywords you can use for SEO, tagging, categorisation, or content planning. Send it a `content` string, optionally add `context` for extra processing instructions, choose a `language`, set a `voice_tone`, and cap the output with `max_quantity`. Use it when you need fast keyword ideas from an article, product description, landing page draft, or any other block of text. The job runs asynchronously: submit the content, get back a `job_id`, then poll the job status endpoint until the result is ready. When the job completes, the status response includes a `data` object with `id`, `type`, and `attributes`. Inside `attributes`, you get the job `status` and the generated `result` array of strings. That makes it easy to pipe the output into search workflows, metadata editors, internal taxonomies, or AI-assisted publishing pipelines. Keyword Generator is a good fit when you want a lightweight way to derive keyword lists from raw copy without building your own extraction logic. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/generate-keywords-tags * * * --- title: Generate Product Introduction API slug: generate-product-introduction url: https://apyhub.com/sharpapi/service/generate-product-introduction provider: SharpAPI categories: [Artificial Intelligence, Marketing, Smart Generation] tags: [ecommerce, introduction, product] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-50 alias: sharpapi-generate-product-intro --- # Generate Product Introduction API Generate a product introduction from your content, with language, length, and tone options. Poll the job status URL and collect the finished copy. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/generate-product-introduction` | What it does Submits a job to generate a product introduction from the provided content. The endpoi… | 50 | | GET | `https://api.eu.apyhub.com/sharpapi/generate-product-introduction/job/status/:job_id` | What it does Checks the status of a product-introduction generation job by job ID. The response ret… | 1 | ## Endpoint reference ### Generate Product Introduction `POST https://api.eu.apyhub.com/sharpapi/generate-product-introduction` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | | | `language` | body | string | no | Default: `English`. | | `max_length` | body | integer | no | | | `voice_tone` | body | string | no | | #### Quickstart Submit product content to generate an introduction. This call sends the required `content` field in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/generate-product-introduction" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "content": "Our smart water bottle tracks hydration and reminds you to drink throughout the day." }' ``` #### What you'll get back Returns a JSON object with a `job_id` string — the UUID of the submitted job. Poll the job status endpoint with this id to retrieve the result. ```json { "job_id": "7b421ced-711f-4583-a848-9f531e91c42f" } ``` ### Check Product Intro Status `GET https://api.eu.apyhub.com/sharpapi/generate-product-introduction/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | | #### Quickstart Check the status of a product introduction job by its `job_id`. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/generate-product-introduction/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. `data` includes the job `id` and `type`, plus an `attributes` object with `status` and, when available, `result.product_intro`. ```json { "data": { "id": "uuid-1234", "type": "api_job_result", "attributes": { "status": "success", "result": { "product_intro": "Introducing our new wireless earbuds, designed for all-day comfort and clear sound." } } } } ``` ## About ## What it does Product Introduction Generator creates a product introduction from your content. Send a `content` string, and you can also set `language`, `max_length`, and `voice_tone` in the request body to steer the output. Use it when you need a concise intro for a landing page, app store listing, marketing draft, or internal product brief. The POST request returns a `job_id`, so generation runs asynchronously and you can poll for completion without blocking your workflow. Check the job status with `job_id` through `GET /job/status/:job_id`. The status response includes the job `id`, the current `status` (`queued`, `running`, `success`, or `failed`), and, when complete, a `result` object containing `product_intro`. Product Introduction Generator fits pipelines that need AI-written copy with a controllable tone and length, while keeping the response format simple for downstream automation. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/generate-product-introduction * * * --- title: Skills Database API slug: skills-database url: https://apyhub.com/sharpapi/service/skills-database provider: SharpAPI categories: [Developer Tools, HR] tags: [skills, skills-taxonomy, hr, reference-data] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 1000 alias: sharpapi-skills-database-api --- # Skills Database API Look up skills by name and page through the full skills list. Returns skill IDs, names, slugs, related skills, and pagination metadata. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/sharpapi/skills-database` | What it does Retrieves a paginated skills database result set, optionally filtered by skill name an… | 1000 | ## Endpoint reference ### Skills Database `GET https://api.eu.apyhub.com/sharpapi/skills-database` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `name` | query | string | no | Example: `5de4887a-0dfd-49b6-8edb-9280e468c210`. | | `per_page` | query | string | no | Example: `5de4887a-0dfd-49b6-8edb-9280e468c210`. | | `include_related` | query | string | no | Example: `5de4887a-0dfd-49b6-8edb-9280e468c210`. | #### Quickstart Search the skills database by name and include related skills in the results. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/skills-database?name=PHP&include_related=true" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `data`, `links`, and `meta` fields. `data` is an array of skill objects, `links` is an object with pagination URLs, and `meta` is an object with pagination details. ```json { "data": [ { "id": "df0d4541-2a03-49ba-aefc-6cb46f6cc26c", "name": "PHP", "slug": "php", "related_skills": [ { "id": "064887a2-1dc1-4523-9dc1-a7fa68d85f07", "name": "API Development", "slug": "api-development", "weight": 6 } ] } ], "links": { "first": "https://apyhub.com/api/v1/utilities/skills_list?name=PHP&include_related=true&page=1", "last": "https://apyhub.com/api/v1/utilities/skills_list?name=PHP&include_related=true&page=2", "prev": null, "next": "https://apyhub.com/api/v1/utilities/skills_list?name=PHP&include_related=true&page=2" }, "meta": { "current_page": 1, "from": 1, "last_page": 2, "links": [], "path": "https://apyhub.com/api/v1/utilities/skills_list", "per_page": 15, "to": 15, "total": 25 } } ``` ## About ## What it does Skills Directory lets you look up skills by name and page through a skills list. Send a `name`, `per_page`, or `include_related` query, and get back structured skill records with their related skills, along with pagination metadata and navigation links. Each item in `data` includes an `id`, `name`, `slug`, and `related_skills` array. Related skills are returned with their own `id`, `name`, `slug`, and `weight`, which makes it easy to rank or group adjacent skills in your product. The response also includes `meta` fields such as `current_page`, `from`, `last_page`, `per_page`, `to`, and `total`, plus `links` for `first`, `last`, `prev`, and `next` pages. Use Skills Directory when you need a canonical skills list for search, filtering, onboarding flows, job taxonomy, or recommendation systems. For example, you can match a user-entered skill name to the catalog, then surface related skills to suggest next steps or similar capabilities. Because the response is already normalized, you can feed it directly into autocomplete, internal tooling, or analytics without additional reshaping. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/skills-database * * * --- title: Global Salary Benchmark API slug: estimate-market-salary-range url: https://apyhub.com/namastesumalya/service/estimate-market-salary-range provider: Sumalya APIs categories: [Artificial Intelligence, HR] tags: [salary-estimation, compensation, hiring, recruiting, hr-analytics] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 750 alias: sumalya-global-salary-benchmark-api --- # Global Salary Benchmark API Estimate a market salary range from job title, location, and resume content. Returns market context plus minimum, maximum, and currency. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/estimate-market-salary-range` | What it does Estimates a market salary range for a candidate from the provided job title, location,… | 750 | ## Endpoint reference ### Estimate the market salary range for a candidate `POST https://api.eu.apyhub.com/namastesumalya/estimate-market-salary-range` · 750 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `jobTitle` | body | string | yes | Example: `Staff Software Engineer`. | | `location` | body | string | yes | Example: `New York, NY`. | | `resumeContent` | body | string | yes | Example: `Candidate experience and skills...`. | #### Quickstart Estimate a market salary range for a job by sending the job title, location, and resume content in a JSON request body. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/estimate-market-salary-range" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "jobTitle": "Staff Software Engineer", "location": "New York, NY", "resumeContent": "Candidate experience and skills..." }' ``` #### What you'll get back Returns a JSON object with two top-level fields: `marketContext` is a string describing the salary market context, and `estimatedRange` is an object containing `min` and `max` integers plus a `currency` string. ```json { "marketContext": "NYC Fintech salaries for Staff roles with HFT experience are at an all-time high.", "estimatedRange": { "min": 250000, "max": 450000, "currency": "USD" } } ``` ## About ## What it does Salary Range Estimator estimates a market salary band for a candidate from a job title, location, and resume content. Send those three inputs, and get back a market context string plus an estimated range with min, max, and currency. Use it when you need to benchmark compensation during recruiting, pre-screening, or offer planning. The response is designed to be easy to plug into hiring workflows: one field explains the market context, and one structured object gives the salary range in a standard currency format. Salary Range Estimator is useful for internal comp checks, recruiter tooling, and applicant-facing guidance where you want a fast estimate grounded in the role, location, and experience described in the resume. Keep in mind that the output is an estimate, not a contractual offer or payroll record. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/estimate-market-salary-range * * * --- title: Job Description Generator API slug: job-description-generator url: https://apyhub.com/sharpapi/service/job-description-generator provider: SharpAPI categories: [HR, Smart Generation] tags: [cv, hr, resume, job] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-50 alias: sharpapi-ai-job-description-generator --- # Job Description Generator API Generate structured job descriptions from a title and hiring context. Returns requirements, responsibilities, and a short summary for HR teams. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/job-description-generator` | What it does Submits a job-description generation request and starts an async job. The request body… | 50 | | GET | `https://api.eu.apyhub.com/sharpapi/job-description-generator/job/status/:job_id` | What it does Checks the status of a previously submitted job description generation job by job ID a… | 1 | ## Endpoint reference ### Job Description Generator - Submit Job `POST https://api.eu.apyhub.com/sharpapi/job-description-generator` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `name` | body | string | yes | The job title for the position (e.g., Senior PHP Software Engineer). | | `remote` | body | boolean | no | Specifies if the job is remote. | | `context` | body | string | no | Additional context or requirements (e.g., add requirement of C-class driving license). | | `country` | body | string | no | The country where the job is located (e.g., United Kingdom). | | `language` | body | string | no | The language for the job description (e.g., English). | | `voice_tone` | body | string | no | The tone of voice for the description (e.g., neutral, professional). | | `company_name` | body | string | no | The name of the company offering the position (e.g., Apple Inc). | | `visa_sponsored` | body | boolean | no | Specifies if visa sponsorship is available. | | `employment_type` | body | string | no | Type of employment (e.g., full time, part time, contract). | | `optional_skills` | body | array of string | no | A list of optional skills for the position. Example: `["AWS RDS","GitFlow"]`. | | `required_skills` | body | array of string | no | A list of required skills for the position. Example: `["PHP8","Laravel"]`. | | `minimum_education` | body | string | no | The minimum required education level (e.g., Bachelor Degree). | | `minimum_work_experience` | body | string | no | The minimum required work experience (e.g., 5 years). | #### Quickstart Submit a job description generation request with the required job title. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/job-description-generator" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"Senior PHP Software Engineer"}' ``` #### What you'll get back Returns a JSON object with a `job_id` string — the UUID of the submitted job. Poll the job status endpoint with this id to retrieve the result. ```json { "job_id": "4443651e-378c-4daf-b1a5-bd341358bdf7" } ``` ### Job Description Generator - Check Job Status `GET https://api.eu.apyhub.com/sharpapi/job-description-generator/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Check the status of a job by its `job_id`. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/job-description-generator/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. Inside `data`, the `id` is a UUID, `type` is the response type, and `attributes` contains the job status plus the generated result data when available. ```json { "data": { "id": "2f1c2d4a-8c9d-4f4b-9f86-8c5f2f0d5d2e", "type": "api_job_result", "attributes": { "type": "hr_job_description", "result": { "job_requirements": "- 3+ years of experience\n- Strong communication skills", "job_responsibilities": "- Write job descriptions\n- Collaborate with hiring managers", "job_short_description": "A concise summary of the generated job description." }, "status": "success" } } } ``` ## About ## What it does Job Description Generator creates structured job descriptions from a job title and optional hiring context. Send a `name` and, when needed, add fields like `remote`, `country`, `language`, `voice_tone`, `company_name`, `visa_sponsored`, `employment_type`, `optional_skills`, `required_skills`, `minimum_education`, `minimum_work_experience`, and `context`. Use it when you need a fast first draft for a new opening, a localized posting, or a role description that reflects specific hiring constraints. The submit endpoint returns a `job_id` so you can track generation asynchronously. When the job finishes, the status endpoint returns a `data` object with `id`, `type`, and `attributes`. Inside `attributes`, you get `status` plus a `result` object containing `job_requirements`, `job_responsibilities`, and `job_short_description`. Job Description Generator is useful for HR teams, recruiters, and internal tools that need consistent job copy without hand-writing every posting. It fits workflows where a title, a few requirements, and basic role metadata need to become a ready-to-review description. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/job-description-generator * * * --- title: Web Scraping API slug: scrape-url url: https://apyhub.com/sharpapi/service/scrape-url provider: SharpAPI categories: [Data Extraction, SEO] tags: [extract, text, web] auth: api_key version: 1.0 service_type: sync endpoints: 1 atoms: 1000 alias: sharpapi-web-scraping-api --- # Web Scraping API Scrape any URL and get page content, metadata, and links in a structured response. Built for indexing, SEO checks, and content monitoring. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/sharpapi/scrape-url` | What it does Fetches and scrapes the URL provided in the url query parameter, then returns the orig… | 1000 | ## Endpoint reference ### Scrape a URL `GET https://api.eu.apyhub.com/sharpapi/scrape-url` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string (uri) | yes | Example: `https://apyhub.com/`. | #### Quickstart Scrape a page by passing its URL as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/scrape-url?url=https%3A%2F%2Fapyhub.com%2F" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `url` and `timestamp` string fields, plus a `scraped_data` object containing the extracted page data. ```json { "url": "https://apyhub.com/", "timestamp": "2025-01-15T08:56:04.946195Z", "scraped_data": {} } ``` ## About ## What it does Web Scraper lets you send a URL and get back the page’s captured content and metadata in a structured response. It echoes the scraped `url`, adds a UTC `timestamp`, and returns `scraped_data` for the page. Use it when you need to inspect a live page without building your own crawler. The response can include `title`, document-level `headers`, standard `meta_tags`, `open_graph` values, `twitter_card` values, `content_html`, `content_markdown`, `content_structured`, `content_lists`, `content_keywords_index`, `detected_language`, and extracted `links` split into `internal` and `external` arrays. That makes it useful for page monitoring, content indexing, SEO checks, competitive analysis, and lightweight data collection. The input is simple: pass a single `url` query parameter. The output is built for downstream processing, so you can store the returned page text, inspect metadata, or follow discovered links in your own workflow. If you only need page title and metadata, you can ignore the heavier content fields and work with the specific parts you need. Web Scraper is a good fit for developer tools that need reliable page retrieval and structured page analysis from one request. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/scrape-url * * * --- title: Candidate Comparison API slug: compare-two-candidates-head-to-head url: https://apyhub.com/namastesumalya/service/compare-two-candidates-head-to-head provider: Sumalya APIs categories: [Artificial Intelligence, HR, Smart Generation] tags: [candidate-comparison, resume-screening, hiring, talent-acquisition, job-fit, llm-ranking] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 1000 alias: sumalya-candidate-comparison-api --- # Candidate Comparison API Compare two resumes against a job title and get a winner, rationale, and skill-by-skill matrix for hiring review and shortlist ranking. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/compare-two-candidates-head-to-head` | What it does Compares two candidate resumes against a job title and returns a winner, a rationale,… | 1000 | ## Endpoint reference ### Compare two candidates head-to-head `POST https://api.eu.apyhub.com/namastesumalya/compare-two-candidates-head-to-head` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `resumeA` | body | string | yes | Example: `Resume content of candidate A...`. | | `resumeB` | body | string | yes | Example: `Resume content of candidate B...`. | | `jobTitle` | body | string | yes | Example: `Senior Software Engineer`. | #### Quickstart Compare two candidates against a job title by sending their resumes in one JSON request. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/compare-two-candidates-head-to-head" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "resumeA": "Resume content of candidate A...", "resumeB": "Resume content of candidate B...", "jobTitle": "Senior Software Engineer" }' ``` #### What you'll get back Returns a JSON object with optional top-level fields: `winner` and `rationale` are strings, and `comparisonMatrix` is an object. When present, `comparisonMatrix` can include `experience`, `softSkills`, and `technicalSkills`, each as a string. ```json { "winner": "B", "rationale": "Candidate B's alignment with modern cloud-native practices makes them a better fit for our future-state architecture.", "comparisonMatrix": { "experience": "A has deeper tenure (15y vs 8y), but B has more relevant modern stack experience.", "softSkills": "Both demonstrate strong leadership, but B shows better alignment with modern agile engineering cultures.", "technicalSkills": "A is legacy-enterprise focused; B is cloud-native and high-performance focused." } } ``` ## About ## What it does Candidate Comparison compares two resumes against a job title and returns a structured head-to-head assessment. Send `resumeA`, `resumeB`, and `jobTitle`, and get back a `winner`, a short `rationale`, and a `comparisonMatrix` covering `experience`, `softSkills`, and `technicalSkills`. Use it when you need a fast first-pass screen before a recruiter or hiring manager reviews the full packet. It helps you turn unstructured resumes into a consistent comparison for the same role, which is useful for shortlist ranking, interview triage, or building an internal hiring workflow that needs a clear recommendation. The response is simple to consume: one candidate is identified as the winner, with supporting text for why they were chosen. The comparison matrix breaks the decision into specific dimensions so you can show the basis for the result in your own UI or audit trail. Candidate Comparison is designed for resume-to-role evaluation, not general document parsing. If your workflow starts with two candidate resumes and a target position, this endpoint gives you a direct, machine-readable comparison. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/compare-two-candidates-head-to-head * * * --- title: Related Skills Generator API slug: related-skills-generator url: https://apyhub.com/sharpapi/service/related-skills-generator provider: SharpAPI categories: [HR, Smart Generation] tags: [cv, hr, resume, skills] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-50 alias: sharpapi-ai-related-skills-generator --- # Related Skills Generator API Generate related job positions or skills from a role name. Returns ranked results with weights through an async job status response. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/related-skills-generator` | What it does Submits an async job to generate related job positions from a provided role or job tit… | 50 | | GET | `https://api.eu.apyhub.com/sharpapi/related-skills-generator/job/status/:job_id` | What it does Checks the status of a previously submitted related-skills generation job using its jo… | 1 | ## Endpoint reference ### Related Skills Generator - Submit Job `POST https://api.eu.apyhub.com/sharpapi/related-skills-generator` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Provide a job position/role to generate related job positions for. | | `language` | body | string | no | Specify the language of the output. Default: `English`. | | `max_quantity` | body | number | no | Maximum number of related job positions to generate. | #### Quickstart Submit a job to generate related job positions from a role. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/related-skills-generator" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"Software Engineer","language":"English","max_quantity":5}' ``` #### What you'll get back Returns a JSON object with a `job_id` string — the UUID of the submitted job. Poll the job status endpoint with this id to retrieve the result. ```json { "job_id": "5a46e047-d97e-474d-9d19-84e1a0060813" } ``` ### Related Skills Generator - Check Job Status `GET https://api.eu.apyhub.com/sharpapi/related-skills-generator/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Check the status of a related-skills generation job by replacing `:job_id` with your UUID job ID. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/related-skills-generator/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object field. `data` contains `id` and `type`, plus an `attributes` object with `type`, `result`, and `status`. ```json { "data": { "id": "8b7f2f0a-7b8c-4d6d-9c2f-5a1f2a3c4d5e", "type": "api_job_result", "attributes": { "type": "hr_related_skills", "result": [ { "name": "Talent Acquisition Specialist", "weight": 0.92 } ], "status": "success" } } } ``` ## About ## What it does Related Skills Generator takes a job position or role and returns a ranked list of related job positions or skills. Send a `content` string, optionally set `language`, and use `max_quantity` to limit how many related results you want back. The service submits the request as a job and returns a `job_id` for polling. When the job finishes, the status response includes a `data` object with `id`, `type`, and `attributes`. Inside `attributes`, you get the job `status` and a `result` array of objects with `name` and `weight`, so you can sort, filter, or display the related roles by relevance. Use Related Skills Generator when you need adjacent roles for search, recommendations, career-path mapping, or HR taxonomy enrichment. For example, you can start from "Backend Developer" and build a list of nearby roles to support job matching or related-skill suggestions in a recruiting workflow. Because the endpoint is asynchronous, you can submit a request, store the job identifier, and fetch the result once the status changes from `queued` or `running` to `success` or `failed`. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/related-skills-generator * * * --- title: Bias and Inclusion Scan API slug: scan-bias-and-inclusion url: https://apyhub.com/namastesumalya/service/scan-bias-and-inclusion provider: Sumalya APIs categories: [Artificial Intelligence, HR] tags: [hr, hiring, job-description, bias-detection, inclusion, text-analysis] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 1000 alias: sumalya-bias-and-inclusion-scan-api --- # Bias and Inclusion Scan API Review job description text for bias and inclusion issues. Returns a verdict, rationale, and comparison matrix for hiring copy checks. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/scan-bias-and-inclusion` | What it does Scans a job description for biased or exclusionary wording and returns the phrases it… | 1000 | ## Endpoint reference ### Scan job descriptions for bias and inclusivity `POST https://api.eu.apyhub.com/namastesumalya/scan-bias-and-inclusion` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | no | Example: `We are looking for a rockstar developer who can work 80 hours a week.`. | #### Quickstart Scan a job description for biased or exclusionary wording. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/scan-bias-and-inclusion" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"We are looking for a rockstar developer who can work 80 hours a week."}' ``` #### What you'll get back Returns a JSON object with `biasedPhrases` (the flagged wording, each with a reason and a suggested replacement), an `isInclusive` boolean, and `revisedText` containing the rewritten job description. ```json { "biasedPhrases": [ { "original": "rockstar", "reason": "This is a gender-coded term often associated with masculine-leaning language, which can discourage qualified female candidates.", "suggestion": "developer" }, { "original": "work 80 hours a week", "reason": "This creates a legal risk regarding labor laws and creates an environment hostile to caregivers, people with disabilities, or anyone seeking a sustainable work-life balance.", "suggestion": "work full-time hours" } ], "isInclusive": false, "revisedText": "We are looking for a dedicated developer to join our team for a full-time position." } ``` ## About ## What it does Bias and Inclusion Scan reviews a job description for biased or exclusionary language. Send the `text` of a role description, and you get back `biasedPhrases` — each flagged phrase with the `reason` it was flagged and a suggested replacement — an `isInclusive` verdict, and `revisedText` containing the whole posting rewritten with those suggestions applied. Use it when you want to screen hiring copy before it goes live, clean up an inherited job template, or check whether your wording discourages part of your candidate pool. The response is designed for downstream review flows: `biasedPhrases` shows a reviewer exactly what to look at and why, while `revisedText` gives you a ready-to-use rewrite. This is useful for recruiting teams, ATS integrations, and internal HR tooling that need a fast consistency check on job ads. It helps you catch gender-coded terms, unrealistic hour expectations, and other wording that may deter qualified applicants — and it explains each call so reviewers can accept or override it. Bias and Inclusion Scan is a simple way to turn subjective job-post review into a repeatable API step. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/scan-bias-and-inclusion * * * --- title: Proofread Text + Grammar Check API slug: proofread-text-grammar-check url: https://apyhub.com/sharpapi/service/proofread-text-grammar-check provider: SharpAPI categories: [Artificial Intelligence, Smart Generation] tags: [check, content, text] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-50 alias: sharpapi-proofread-grammer-check --- # Proofread Text + Grammar Check API Send text and get it back with grammar and spelling mistakes fixed. An AI proofreading API for drafts, support replies and user content. Try it free. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/proofread-text-grammar-check` | What it does Submits text for proofreading and grammar checking as an asynchronous job. It accepts… | 50 | | GET | `https://api.eu.apyhub.com/sharpapi/proofread-text-grammar-check/job/status/:job_id` | What it does Checks the status of a previously submitted proofread/grammar-check job using its job… | 1 | ## Endpoint reference ### Proofread Text + Grammar Check - Submit Job `POST https://api.eu.apyhub.com/sharpapi/proofread-text-grammar-check` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Provide the content to proofread. | #### Quickstart Submit text for proofreading and grammar checking. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/proofread-text-grammar-check" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"Please review this sentence for grammar and spelling mistakes."}' ``` #### What you'll get back Returns a JSON object with a `job_id` string — the UUID of the submitted job. Poll the job status endpoint with this id to retrieve the result. ```json { "job_id": "e41af380-bc53-44bd-988d-0d14165a9d05" } ``` ### Proofread Text + Grammar Check - Check Job Status `GET https://api.eu.apyhub.com/sharpapi/proofread-text-grammar-check/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Check the status of a proofread job by its `job_id`. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/proofread-text-grammar-check/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. `data` includes `id` and `type`, plus an `attributes` object with `type`, `result`, and `status` fields. `status` is one of `running`, `failed`, `queued`, or `success`. ```json { "data": { "id": "550e8400-e29b-41d4-a716-446655440000", "type": "api_job_result", "attributes": { "type": "content_proofread", "result": "The proofread and grammar-corrected version of the provided content.", "status": "success" } } } ``` ## About ## What it does The Proofread Text and Grammar Check API is an AI proofreading API that fixes grammar and spelling mistakes in any text. Send a draft and get back a corrected version, ready to publish or store. It takes one field, `content`, with the text you want checked. Proofreading runs as a job: the submit call returns a `job_id` straight away, and you poll the status endpoint no more than once per second. The `status` moves from `queued` to `running`, then to `success` or `failed`, and on success `data.attributes.result` holds the corrected text. The API returns the fully corrected text, not a list of individual suggestions. That makes it a good fit for automation, where you want clean text without a person reviewing each change: cleaning up user-generated content and reviews before they go live, correcting product descriptions and CMS copy in bulk, polishing support replies and help articles, and fixing text produced by other tools or AI models before it reaches customers. Grammarly discontinued its developer SDK in January 2024 and does not offer a public API, so if you need grammar checking inside your own product or workflow, an API like this one is the way to add it. For spelling correction only, use the [Correct Text Spelling API](https://apyhub.com/dosvak/service/spellcheck-text). To reword text in a different tone instead of correcting it, use the [Paraphrase Text API](https://apyhub.com/sharpapi/service/paraphrase-text), and to publish the corrected text in other languages, use the [Translate Text API](https://apyhub.com/sharpapi/service/translate-text). You can try it right here in the playground. Start for free with 5 API calls a day, no card required, and check your own text before you commit. The API is also available through [ApyHub MCP](https://apyhub.com/mcp), so AI agents can proofread their own output directly before sending it on. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/proofread-text-grammar-check * * * --- title: Career Trajectory and Loyalty API slug: analyze-candidate-career-trajectory url: https://apyhub.com/namastesumalya/service/analyze-candidate-career-trajectory provider: Sumalya APIs categories: [Artificial Intelligence, HR] tags: [hr-analytics, resume-analysis, candidate-screening, career-trajectory, loyalty-scoring] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 500 alias: sumalya-career-trajectory-and-loyalty-api --- # Career Trajectory and Loyalty API Turn resume history into a trajectory summary, career gaps, pivots, and a loyalty score. Built for recruiter screening and candidate review. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/analyze-candidate-career-trajectory` | What it does Analyzes the provided resume content to identify career gaps, career pivots, an overal… | 500 | ## Endpoint reference ### Analyze a candidate’s career trajectory and loyalty `POST https://api.eu.apyhub.com/namastesumalya/analyze-candidate-career-trajectory` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `resumeContent` | body | string | no | Example: `Career history and timeline details...`. | #### Quickstart Send a resume summary to analyze a candidate’s career trajectory. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/analyze-candidate-career-trajectory" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"resumeContent":"Career history and timeline details..."}' ``` #### What you'll get back Returns a JSON object with these top-level fields: - `gaps` is an array of objects, each with: - `period` string - `observation` string - `pivots` is an array of strings - `trajectory` is a string - `loyaltyScore` is an integer ```json { "gaps": [ { "period": "2018-2020", "observation": "Planned career sabbatical for travel." } ], "pivots": [ "Transitioned from Corporate Big Tech to Startup Entrepreneurship in 2023" ], "trajectory": "Fast-track / Entrepreneurial", "loyaltyScore": 6 } ``` ## About ## What it does Candidate Career Analysis reviews a resume timeline and returns a structured read on career movement, gaps, and retention signals. Send `resumeContent`, and get back `trajectory`, `loyaltyScore`, `pivots`, and `gaps`. Use it when you need a fast screening signal from a candidate profile. The `gaps` array includes each `period` and an `observation` explaining what the timeline suggests. The `pivots` list highlights notable role or industry changes, while `trajectory` summarises the overall path in a short label such as steady growth or entrepreneurial movement. `loyaltyScore` gives you a simple integer you can use alongside the rest of your hiring workflow. That makes this service useful for recruiter dashboards, applicant triage, and internal review tools that need to compare career histories consistently without parsing resumes by hand. Candidate Career Analysis is built for resume text only. Keep the input to the candidate’s career history and timeline details, and use the returned structure to support downstream ranking, review, or summarisation logic. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/analyze-candidate-career-trajectory * * * --- title: SEO Tags Generator API slug: generate-seo-tags url: https://apyhub.com/sharpapi/service/generate-seo-tags provider: SharpAPI categories: [Marketing, SEO, Smart Generation] tags: [content, link, seo] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-50 alias: sharpapi-generate-seo-tags --- # SEO Tags Generator API Generate SEO meta tags from page content, with optional language and tone of voice. Returns a job ID, status URL, and the finished meta_tags. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/generate-seo-tags` | What it does Submits content to generate SEO tags asynchronously. The request body includes the sou… | 50 | | GET | `https://api.eu.apyhub.com/sharpapi/generate-seo-tags/job/status/:job_id` | What it does Checks the status of an asynchronous SEO tag generation job identified by jobid. When… | 1 | ## Endpoint reference ### Generate SEO Tags `POST https://api.eu.apyhub.com/sharpapi/generate-seo-tags` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Provide the content to generate SEO tags. | | `language` | body | string | no | Specify the language of the output. Default: `English`. | | `voice_tone` | body | string | no | Specify the voice tone of the output. It can be adjectives like funny or joyous, or even the name of a famous writer. | #### Quickstart Submit content to generate SEO tags asynchronously using the required `content` field. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/generate-seo-tags" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "content": "How to improve website SEO with simple on-page techniques." }' ``` #### What you'll get back Returns a JSON object with a `job_id` string — the UUID of the submitted job. Poll the job status endpoint with this id to retrieve the result. ```json { "job_id": "fbb41657-811b-4c96-9929-4783b9504c6f" } ``` ### Check SEO Tags Status `GET https://api.eu.apyhub.com/sharpapi/generate-seo-tags/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | | #### Quickstart Check the status of a generated SEO tags job by passing its `job_id` in the URL path. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/generate-seo-tags/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. Inside `data`, `id` is the job UUID, `type` is the job result type, and `attributes.status` is the current job status. When the job succeeds, `attributes.result.meta_tags` contains the generated SEO meta tags. ```json { "data": { "id": "550e8400-e29b-41d4-a716-446655440000", "type": "api_job_result", "attributes": { "type": "seo_generate_tags", "status": "success", "result": { "meta_tags": { "title": "Example Page Title", "description": "Example page description", "keywords": "seo, meta tags, example" } } } } } ``` ## About ## What it does SEO Tag Generator turns page content into a structured set of SEO meta tags. Send `content`, and optionally set `language` and `voice_tone`; the job returns a `job_id` you can poll for completion. Use it when you need consistent metadata for blog posts, landing pages, product pages, or CMS imports without hand-writing titles and descriptions for every page. The output is a `meta_tags` object containing fields such as `title`, `description`, `keywords`, `author`, `og:title`, `og:description`, `og:image`, `og:url`, `og:type`, `og:site_name`, `twitter:card`, `twitter:title`, `twitter:description`, `twitter:image`, and `twitter:creator`. Because generation runs asynchronously, the workflow fits batch jobs as well as on-demand content pipelines. You submit the content once, check job status by `job_id`, and read the generated tags from the result when the job succeeds. SEO Tag Generator is useful anywhere you want page metadata that is derived from the source text and returned in a predictable structure for publishing, preview cards, and search optimization workflows. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/generate-seo-tags * * * --- title: Extract and Translate Article Content from Web Page API slug: translate-article-content url: https://apyhub.com/namastesumalya/service/translate-article-content provider: Sumalya APIs categories: [SEO, Smart Generation] tags: [translation, article-translation, content-localization, web-content, multilingual] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 1000 alias: sumalya-extract-and-translate-article-content-from-web-page-api --- # Extract and Translate Article Content from Web Page API Translate a web article from its URL into any target language. Returns the translated title, author, publication name, and full body text. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/translate-article-content` | What it does Translates the content of an article from a web page into a target language. The reque… | 1000 | ## Endpoint reference ### Translate article content from a web page `POST https://api.eu.apyhub.com/namastesumalya/translate-article-content` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string | yes | Example: `https://example.com/article`. | | `targetLanguage` | body | string | yes | Example: `Spanish`. | #### Quickstart Translate an article by sending its URL and your target language. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/translate-article-content" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://example.com/article", "targetLanguage": "Spanish" }' ``` #### What you'll get back Returns a JSON object with a `url` string and a `translated_content` object. The `translated_content` object includes `title`, `author`, `language`, `publicationName`, and `translated_body` fields. ```json { "url": "https://example.com/article", "translated_content": { "title": "El futuro de la inteligencia artificial", "author": "John Doe", "language": "Spanish", "publicationName": "Tech Blog", "translated_body": "Este artículo explora cómo la inteligencia artificial está transformando los sistemas de contenido..." } } ``` ## About ## What it does Article Translator takes a web article URL and translates the article content into a target language. Send the source `url` and the desired `targetLanguage`, and it returns the original `url` alongside a `translated_content` object. The translated payload includes the article `title`, `author`, `language`, `publicationName`, and `translated_body`. That makes it useful when you need to localize news, blog posts, or knowledge-base articles while keeping the article metadata attached to the translated text. Use Article Translator when you need to present the same article to readers in another language, feed translated content into a publishing workflow, or build a multilingual content library without manually copying text between tools. Because the response is structured, you can store the translated body, show the translated title in your UI, and keep the publication details associated with the source article. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/translate-article-content * * * --- title: Resume/CV Job Match Score API slug: resume-cv-job-match-score url: https://apyhub.com/sharpapi/service/resume-cv-job-match-score provider: SharpAPI categories: [Artificial Intelligence, HR] tags: [cv, hr, resume, job] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-1000 alias: sharpapi-resume-job-match-score --- # Resume/CV Job Match Score API Compare a resume file against a plain-text job description. Returns match scores, explanations, and job status for recruiter screening and ATS. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/resume-cv-job-match-score` | What it does Submits a resume/CV and a job description for an asynchronous match-score job. The end… | 1000 | | GET | `https://api.eu.apyhub.com/sharpapi/resume-cv-job-match-score/job/status/:job_id` | What it does Checks the status of a resume/CV job match scoring job by its jobid and returns the jo… | 1 | ## Endpoint reference ### Resume/CV Job Match Score - Submit Job `POST https://api.eu.apyhub.com/sharpapi/resume-cv-job-match-score` · 1000 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Resume/CV file (PDF, DOCX, TXT, etc.). | | `content` | body | string | yes | Full job description in plain text. | | `language` | body | string | no | Language for explanations. Default: `English`. | #### Quickstart Upload a resume and a job description to get a matching job submission started. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/resume-cv-job-match-score" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/resume.pdf" \ -F "content=We are looking for a Python engineer with experience in APIs and cloud infrastructure." ``` #### What you'll get back Returns a JSON object with a `job_id` string — the UUID of the submitted job. Poll the job status endpoint with this id to retrieve the result. ```json { "job_id": "a8b764e9-5011-4770-afc5-aedf1769bd8e" } ``` ### Resume/CV Job Match Score - Check Job Status `GET https://api.eu.apyhub.com/sharpapi/resume-cv-job-match-score/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Check the status of a job by its UUID in the path. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/resume-cv-job-match-score/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. Inside `data`, `id` is the job result UUID, `type` is the resource type, `attributes` contains the result details, and `status` is one of `running`, `failed`, `queued`, or `success`. ```json { "data": { "id": "550e8400-e29b-41d4-a716-446655440000", "type": "api_job_result", "attributes": { "type": "hr_resume_job_match_score", "result": { "match_scores": { "overall_match": 85.5 }, "explanations": { "skills_match": "Strong alignment with the role requirements." } } }, "status": "success" } } ``` ## About ## What it does Resume Job Match Score compares a resume or CV against a job description and returns structured match results for hiring workflows. Send a resume file plus the job description text, and get back a job ID for polling. Use it when you want to screen applicants consistently before a recruiter reviews them. The submit endpoint accepts a binary file in PDF, DOCX, TXT, or similar formats, along with the job description in plain text. You can also set the language used for explanations. When the job completes, the status endpoint returns a result object with match scores and human-readable explanations. The scores cover overall_match and a range of hiring signals such as skills_match, experience_match, education_match, soft_skills_match, technical_stack_match, job_title_relevance, recent_role_relevance, certifications_match, project_experience_match, and more. The response also includes the job status, so you can track whether the analysis is queued, running, successful, or failed. Resume Job Match Score is a fit for ATS enrichment, recruiter triage, and shortlist ranking where you need both a numeric comparison and transparent reasoning behind it. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/resume-cv-job-match-score * * * --- title: Paraphrase Text API slug: paraphrase-text url: https://apyhub.com/sharpapi/service/paraphrase-text provider: SharpAPI categories: [Artificial Intelligence, Smart Generation] tags: [paraphrase, rewrite-text, ai-writing, text-generation] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-50 alias: sharpapi-paraphrase-text --- # Paraphrase Text API Rewrite text with AI while keeping its meaning. Set the tone, language and maximum length, and get the paraphrased text back as JSON. Try it free. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/paraphrase-text/paraphrase` | What it does Submits a paraphrasing job for the provided text content. The request body includes th… | 50 | | GET | `https://api.eu.apyhub.com/sharpapi/paraphrase-text/summarize/job/status/:job_id` | What it does Checks the status of a previously submitted paraphrase job using its job ID. When the… | 1 | ## Endpoint reference ### Paraphrase Text - Submit Job `POST https://api.eu.apyhub.com/sharpapi/paraphrase-text/paraphrase` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Provide the content to paraphrase. | | `context` | body | string | no | Provide additional context to improve paraphrasing accuracy. | | `language` | body | string | no | Specify the language of the output. Default: `English`. | | `max_length` | body | number | no | Specify the maximum length of the paraphrased content. | | `voice_tone` | body | string | no | Specify the voice tone of the output. Can be an adjective like funny or joyous, or even the name of a famous writer. | #### Quickstart Submit text for paraphrasing as a JSON job request. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/paraphrase-text/paraphrase" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"The meeting was productive and covered all key points."}' ``` #### What you'll get back Returns a JSON object with a `job_id` string — the UUID of the submitted job. Poll the job status endpoint with this id to retrieve the result. ```json { "job_id": "fcf7bd36-51b6-4d0a-99dc-6c5279895d61" } ``` ### Paraphrase Text - Check Job Status `GET https://api.eu.apyhub.com/sharpapi/paraphrase-text/summarize/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Check the status of a paraphrase job by its job ID. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/paraphrase-text/summarize/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a top-level `data` object. `data` contains the job `id`, `type`, and an `attributes` object with `type`, `result`, and `status`. When the job is complete, `attributes.result.paraphrase` holds the paraphrased text. ```json { "data": { "id": "8d2f7c3a-2f5e-4a0a-9d8a-1e2b3c4d5e6f", "type": "api_job_result", "attributes": { "type": "content_paraphrase", "result": { "paraphrase": "..." }, "status": "success" } } } ``` ## About ## What it does The Paraphrase Text API is an AI paraphrasing API that rewrites text in new words while keeping its meaning. Send the text you want reworded, choose the tone, language and length you need, and get the paraphrased version back as JSON. You control the rewrite with a few fields. `content` is the text to paraphrase and is the only required field. `voice_tone` sets the style, either as an adjective like `formal`, `friendly` or `funny`, or as the name of a famous writer. `language` sets the output language and defaults to English. `max_length` caps how long the result can be, and `context` tells the model what the text is for, for example "product description for an online shop", so the rewrite fits its purpose. Paraphrasing runs as a job. Submit the text to `/paraphrase` and you get back a `job_id` straight away. Poll the status endpoint no more than once per second. The `status` moves from `queued` to `running`, then to `success` or `failed`, and on success the rewritten text is in `data.attributes.result.paraphrase`. Common uses include writing several versions of the same product description, adapting one message for different audiences or channels, changing the tone of support replies and help articles, simplifying technical text for non-technical readers, and refreshing older content with new wording. To put the rewritten text into another language, use the [Translate Text API](https://apyhub.com/sharpapi/service/translate-text). To check spelling and grammar before you publish, use the [Proofread Text and Grammar Check API](https://apyhub.com/sharpapi/service/proofread-text-grammar-check), and to shorten long text instead of rewording it, use the [Summarize Text API](https://apyhub.com/sharpapi/service/summarize-text). You can try it right here in the playground. Start for free with 5 API calls a day, no card required, and paraphrase your own text before you commit. The API is also available through [ApyHub MCP](https://apyhub.com/mcp), so AI agents can call it directly when a workflow needs text reworded in a specific tone. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/paraphrase-text * * * --- title: Summarize Multiple Article Insights API slug: summarize-multiple-article-insights-api url: https://apyhub.com/namastesumalya/service/summarize-multiple-article-insights-api provider: Sumalya APIs categories: [Artificial Intelligence, Smart Generation] tags: [article-summarization, content-analysis, text-summary, batch-processing, url-processing, tldr] auth: api_key version: v1 service_type: sync endpoints: 2 atoms: 1000-1500 alias: sumalya-summarize-multiple-article-insights-api --- # Summarize Multiple Article Insights API Summarize one article or a batch of article URLs in a single request. Built for digests, research workflows, and editorial content review. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/namastesumalya/summarize-multiple-article-insights-api` | What it does Summarizes the article at the provided URL and returns article metadata along with the… | 1000 | | POST | `https://api.eu.apyhub.com/namastesumalya/summarize-multiple-article-insights-api` | What it does Summarizes multiple articles in a single POST request. Send an array of article URLs i… | 1500 | ## Endpoint reference ### Summarize an Article `GET https://api.eu.apyhub.com/namastesumalya/summarize-multiple-article-insights-api` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | yes | Example: `https://example.com/article`. | #### Quickstart Fetch a summary for an article URL by passing the URL as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/namastesumalya/summarize-multiple-article-insights-api?url=https://example.com/article" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with optional top-level fields: `url`, `title`, `author`, `summary`, and `publication`. Each field is a string when present, describing the source article and its summarized content. ```json { "url": "https://example.com/article", "title": "The Future of AI in Content Creation", "author": "Jane Smith", "summary": "This article explores how artificial intelligence is transforming content creation workflows...", "publication": "Medium" } ``` ### Batch Summarize Multiple Articles `POST https://api.eu.apyhub.com/namastesumalya/summarize-multiple-article-insights-api` · 1500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `urls` | body | array of string | no | Example: `["https://example.com/article1","https://example.com/article2"]`. | #### Quickstart Send a list of article URLs to get back a batch of summaries. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/summarize-multiple-article-insights-api" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "urls": [ "https://example.com/article1", "https://example.com/article2" ] }' ``` #### What you'll get back Returns a JSON object with a `data` array. Each item in the array is an object with `title` and `summary` string fields for one summarized article. ```json { "data": [ { "title": "The Future of AI in Content Creation", "summary": "This article explores how artificial intelligence is transforming content creation workflows..." } ] } ``` ## About ## What it does Article Summarizer helps you summarize one article or many at once. Send a single article request with no documented inputs, or submit a batch of article URLs in `body.urls` with the POST endpoint, and receive a summarized result in response. Use it when you need to turn long reading lists into shorter briefs, build a content review workflow, or process article collections before storing them in a knowledge base. The batch endpoint is designed for arrays of URL strings, so you can summarize multiple pages in one request instead of calling the service repeatedly. Article Summarizer is a fit for newsroom tools, research assistants, content monitoring, and internal digest generators. It gives you a simple way to reduce article volume without adding your own extraction or summarization pipeline. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/summarize-multiple-article-insights-api * * * --- title: Summarize Text API slug: summarize-text url: https://apyhub.com/sharpapi/service/summarize-text provider: SharpAPI categories: [Artificial Intelligence, Smart Generation] tags: [summarization, text-summary, tldr] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-50 alias: sharpapi-summarize-text --- # Summarize Text API Summarize text asynchronously with optional context, language, max length, and tone of voice. Returns a job ID, status URL, and final summary. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/summarize-text` | What it does Starts an async text-summarization job. You submit the content and optional processing… | 50 | | GET | `https://api.eu.apyhub.com/sharpapi/summarize-text/job/status/:job_id` | What it does Checks the status of an existing text-summarization job identified by jobid and return… | 1 | ## Endpoint reference ### Submit Summarize Text job `POST https://api.eu.apyhub.com/sharpapi/summarize-text` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Provide the content to summarize. Example: `Sample value`. | | `context` | body | string | no | Additional processing instructions for the content. Example: `Sample value`. | | `language` | body | string | no | Specify the language of the output, defaults to English. Example: `Sample value`. | | `max_length` | body | number | no | Specify the maximum length of the summary in words .(For example: 100). | | `voice_tone` | body | string | no | Specify the voice tone of the output. It can be adjectives like funny or joyous, or even the name of a famous writer. Example: `Sample value`. | #### Quickstart Submit text for summarization as a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/summarize-text" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"Artificial intelligence is transforming how teams write, analyze, and automate work.","context":"Create a concise executive summary.","language":"English","max_length":100,"voice_tone":"clear"}' ``` #### What you'll get back Returns a JSON object with a `job_id` string — the UUID of the submitted job. Poll the job status endpoint with this id to retrieve the result. ```json { "job_id": "d6e2ea09-bd68-463f-b4a1-b2fd2954fe57" } ``` ### Get Summarize Text job status `GET https://api.eu.apyhub.com/sharpapi/summarize-text/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | Example: `5de4887a-0dfd-49b6-8edb-9280e468c210`. | #### Quickstart Check the status of a summarization job by replacing `:job_id` with your job ID. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/summarize-text/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. `data` includes `id` and `type` strings, plus an `attributes` object containing the job `status`, `type`, and a `result.summary` string when available. ```json { "data": { "id": "5fa45f0e-6680-4f64-8528-3f085a87bd2f", "type": "api_job_result", "attributes": { "type": "content_summarize", "status": "success", "result": { "summary": "..." } } } } ``` ## About ## What it does Text Summarizer turns long text into a shorter summary. Send it content, optionally add context, choose the output language, set a maximum length in words, and adjust the voice tone. The service returns a job ID so you can track processing asynchronously. Use Text Summarizer when you need to condense articles, reports, support transcripts, or internal notes into something easier to scan. The `content` field is required. You can also pass `context` to guide how the text should be summarized, `language` to set the output language, `max_length` to cap summary length, and `voice_tone` to shape the style of the result. When the job completes, the status endpoint returns a structured result with the job `status`, the job `type`, and a `summary` string inside the response data. That makes it straightforward to build workflows that queue summaries, poll for completion, and store the final text in a CMS, knowledge base, or review queue. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/summarize-text * * * --- title: Extract and Generate Editorial Digest from Multiple Web Pages API slug: generate-newsletter-digest url: https://apyhub.com/namastesumalya/service/generate-newsletter-digest provider: Sumalya APIs categories: [Marketing, Smart Generation] tags: [newsletter, content-digest, summarization, tldr] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 1000 alias: sumalya-extract-and-generate-editorial-digest-from-multiple-web-pages-api --- # Extract and Generate Editorial Digest from Multiple Web Pages API Summarize multiple URLs into a single digest with sources, a summary, and key takeaways. Built for newsletters, research briefs, and reviews. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/generate-newsletter-digest` | What it does Generates a newsletter digest from multiple web pages you provide as URLs. The respons… | 1000 | ## Endpoint reference ### Generate a newsletter digest from multiple web pages `POST https://api.eu.apyhub.com/namastesumalya/generate-newsletter-digest` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `urls` | body | array of string | yes | A required array of URL strings pointing to the target web pages to be digested. Example: `["https://example.com/article1","https://example.com/article2"]`. | #### Quickstart Send a list of article URLs to generate a newsletter digest. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/generate-newsletter-digest" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"urls":["https://example.com/article1","https://example.com/article2"]}' ``` #### What you'll get back Returns a JSON object with an optional `digest` object. When present, `digest` contains `sources` as an array of strings, `summary` as a string, and `key_takeaways` as an array of strings. ```json { "digest": { "sources": [ "https://example.com/article1", "https://example.com/article2" ], "summary": "This digest combines insights from multiple articles discussing advancements in AI-driven content systems.", "key_takeaways": [ "AI is transforming content workflows", "Automation improves scalability" ] } } ``` ## About ## What it does Newsletter Digest turns multiple web pages into a single digest. Send an array of URL strings in `urls`, and it returns a digest object with the original `sources`, a `summary`, and a list of `key_takeaways`. Use it when you need to review several articles, blog posts, or announcements without reading each page end to end. The output is designed for newsletter workflows, editorial triage, research briefings, and internal updates where you want the main points pulled together from a set of links. `Newsletter Digest` keeps the response focused on the source URLs you provide and distills them into a compact, readable result. Developers can pass article links from a content queue, then store the summary and takeaways for downstream publishing, review, or display. Because the response includes the input `sources`, you can trace each digest back to the pages that were used to generate it. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/generate-newsletter-digest * * * --- title: Generate Keyword Clusters API slug: generate-keyword-clusters url: https://apyhub.com/namastesumalya/service/generate-keyword-clusters provider: Sumalya APIs categories: [Marketing, SEO] tags: [seo, keyword-analysis, content-analysis, topic-clustering, article-analysis] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 600 alias: sumalya-generate-keyword-clusters-api --- # Generate Keyword Clusters API Group keywords from an article URL into topic clusters, a primary topic, and related keywords for SEO strategy and content analysis. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/namastesumalya/generate-keyword-clusters` | What it does Generates keyword clusters for an article identified by its URL. The response returns… | 600 | ## Endpoint reference ### Generate keyword clusters from an article `GET https://api.eu.apyhub.com/namastesumalya/generate-keyword-clusters` · 600 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | yes | Example: `https://example.com/article`. | #### Quickstart Fetch keyword clusters for an article URL by passing the required `url` as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/namastesumalya/generate-keyword-clusters?url=https://example.com/article" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with `url` as a string, `clusters` as an array of objects, `primary_topic` as a string, and `related_keywords` as an array of strings. ```json { "url": "https://example.com/article", "clusters": [ { "topic": "AI Tools", "keywords": ["ChatGPT", "automation tools"] } ], "primary_topic": "Artificial Intelligence", "related_keywords": ["AI automation", "machine learning", "content generation"] } ``` ## About ## What it does Keyword Clusters takes an article URL and groups the article's terms into topical clusters. Send a URL, and you get back the source URL, a primary_topic, an array of clusters, and a related_keywords list. Use the clusters to see which themes dominate a page without manually reading through every mention. Each cluster includes a topic label and the keywords grouped under it, which makes it easier to map content to search intent, build topic briefs, or identify gaps in an article set. Keyword Clusters is a fit for SEO workflows, content analysis, and editorial research. If you're auditing a page, planning internal links, or comparing how one article covers a subject versus another, the response gives you a compact structured summary you can feed into downstream tools. Because the input is just a URL, it is easy to slot into crawlers, content pipelines, and CMS enrichment jobs. The output stays focused on topic-level grouping, so you can use it as-is or combine it with your own ranking, tagging, or reporting logic. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/generate-keyword-clusters * * * --- title: Translate Text API slug: translate-text url: https://apyhub.com/sharpapi/service/translate-text provider: SharpAPI categories: [Artificial Intelligence, Smart Generation, Standard Data] tags: [content, link, seo, job] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-50 alias: sharpapi-translate-text --- # Translate Text API Submit text with optional context, source language, and tone of voice. Track the job and collect translated content with from and to metadata. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/translate-text` | What it does Submits a text translation job using the supplied content and optional translation gui… | 50 | | GET | `https://api.eu.apyhub.com/sharpapi/translate-text/job/status/:job_id` | What it does Checks the status of a previously submitted text-translation job identified by jobid.… | 1 | ## Endpoint reference ### Translate Text Submit Job `POST https://api.eu.apyhub.com/sharpapi/translate-text` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Provide the content to translate. Example: `Sample value`. | | `context` | body | string | no | Provide additional context to the translated text, such as use case examples or additional explanations. Example: `Sample value`. | | `language` | body | string | no | Specify the language of the content which needs to be translated.(For example: 'German'). Example: `Sample value`. | | `voice_tone` | body | string | no | Specify the voice tone of the output. It can be adjectives like funny or joyous, or even the name of a famous writer. Example: `Sample value`. | #### Quickstart Send the text you want translated in a JSON body to start a translation job. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/translate-text" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "content": "Hello, how are you?" }' ``` #### What you'll get back Returns a JSON object with a required `job_id` string field identifying the translation job. ```json { "job_id": "7a37675e-7e89-4257-9e91-23151c17e5e7" } ``` ### Translate Text Check Job Status `GET https://api.eu.apyhub.com/sharpapi/translate-text/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | Example: `5de4887a-0dfd-49b6-8edb-9280e468c210`. | #### Quickstart Check the status of a translate-text job by its `job_id`. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/translate-text/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. `data` contains `id` and `type` strings, plus an `attributes` object with `status` and `type`; when the job is complete, `attributes.result` includes the translated content and language pair. ```json { "data": { "id": "5de4887a-0dfd-49b6-8edb-9280e468c210", "type": "api_job_result", "attributes": { "status": "success", "type": "content_translate", "result": { "content": "Translated text here", "to_language": "English", "from_language": "French" } } } } ``` ## About ## What it does Text Translation lets you submit text for translation as an asynchronous job, then check the job status and retrieve the translated result when it is ready. Send a `content` string, and optionally include `context`, `language`, and `voice_tone` to guide the translation. `context` helps disambiguate terms, `language` specifies the language of the source content, and `voice_tone` lets you steer style toward a tone such as funny, joyous, or a named authorial voice. The submit endpoint returns a `job_id` immediately so you can track the translation without blocking your workflow. Use it when you need translated copy in a content pipeline, multilingual support workflow, or batch processing job. Poll `/job/status/:job_id` with the returned `job_id` to see whether the job is `queued`, `running`, `success`, or `failed`. When a job completes successfully, the status response includes the translated `content` along with `from_language` and `to_language`, so you can store or route the result with its language metadata. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/translate-text * * * --- title: Extract Metadata From URL API slug: extract-metadata-from-url-api url: https://apyhub.com/namastesumalya/service/extract-metadata-from-url-api provider: Sumalya APIs categories: [Data Extraction, SEO] tags: [metadata-extraction, web-scraping, url-parsing, seo, batch-processing] auth: api_key version: v1 service_type: sync endpoints: 2 atoms: 300-500 alias: sumalya-extract-metadata-from-url-api --- # Extract Metadata From URL API URL metadata API: send one URL or a batch, get each article's title, author, publication date, word count and reading time. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/namastesumalya/extract-metadata-from-url-api` | What it does Extracts metadata from the URL you provide and returns the discovered page/article fie… | 300 | | POST | `https://api.eu.apyhub.com/namastesumalya/extract-metadata-from-url-api` | What it does Extracts metadata for multiple URLs in a single request and returns an array of metada… | 500 | ## Endpoint reference ### Extract Metadata From a URL `GET https://api.eu.apyhub.com/namastesumalya/extract-metadata-from-url-api` · 300 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | yes | Example: `https://example.com/article`. | #### Quickstart Fetch metadata for a webpage by passing its `url` as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/namastesumalya/extract-metadata-from-url-api?url=https://apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with these top-level string fields: `url`, `title`, `author`, `platform`, `reading_time`, `publication_date`, and `publication_name`. ```json { "url": "https://apyhub.com/article", "title": "Understanding AI in Modern Applications", "author": "John Doe", "platform": "Medium", "reading_time": "4 min", "publication_date": "2025-02-10T00:00:00Z", "publication_name": "Medium" } ``` ### Batch Extract Metadata From Multiple URLs `POST https://api.eu.apyhub.com/namastesumalya/extract-metadata-from-url-api` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `urls` | body | array of string | no | Example: `["https://example.com/article1","https://example.com/article2"]`. | #### Quickstart Send a list of URLs to extract metadata from multiple pages in one request. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/extract-metadata-from-url-api" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"urls":["https://apyhub.com","https://apify.com"]}' ``` #### What you'll get back Returns a JSON object with a `data` array. Each item is an object that may include `url`, `title`, `author`, `platform`, `reading_time`, `publication_date`, and `publication_name`. ```json { "data": [ { "url": "https://example.com/article", "title": "Understanding AI in Modern Applications", "author": "John Doe", "platform": "Medium", "reading_time": "4 min", "publication_date": "2025-02-10T00:00:00Z", "publication_name": "Medium" } ] } ``` ## About ## What it does The URL Metadata API reads an article or blog post and returns its publishing details as JSON. Send one page as `url` to the GET endpoint, or an array of `urls` to the POST batch endpoint, and get back `title`, `author`, `publicationName`, `publicationDate`, `platform`, `wordCount`, and `readingTime` for each page. Some platforms, such as Medium, also return a `coverImage`. It works best on article pages such as blog posts and news stories. Known platforms like Medium are named in `platform`, and other sites come back as `Generic`. Dates follow the source page's format, so normalize `publicationDate` before you sort or store it. When a page can't be read, the response falls back to defaults such as `Untitled Article`, `Unknown Author`, and a `wordCount` of 0, so treat those as a miss. Use the URL metadata API to build reading lists and content catalogs with author and date, show reading time next to saved links, index a blog archive, or audit your own posts for missing authors and dates during an SEO review. The batch endpoint enriches a whole list of URLs in one request. For the full article text, use the [Article Content API](https://apyhub.com/namastesumalya/service/extract-article-content). To collect every URL on a site first, run the [Sitemap Extraction API](https://apyhub.com/apyhub/service/extract-sitemap-from-url-api). For preview cards with images, descriptions, and favicons, the [Link Preview API](https://apyhub.com/apyhub/service/generate-link-preview) returns Open Graph data. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/extract-metadata-from-url-api * * * --- title: Extract Article Content from Web Page API slug: extract-article-content url: https://apyhub.com/namastesumalya/service/extract-article-content provider: Sumalya APIs categories: [Data Extraction] tags: [article-extraction, web-scraping, content-extraction, text-mining, batch-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 300-500 alias: sumalya-extract-article-content-from-web-page-api --- # Extract Article Content from Web Page API Article extractor API: send one URL or a batch, get the clean article text plus title, author, publication date and reading time. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/namastesumalya/extract-article-content` | What it does Extracts article content from the web page at the given url and returns structured art… | 300 | | POST | `https://api.eu.apyhub.com/namastesumalya/extract-article-content` | What it does Extracts article content from multiple web page URLs sent in the request body and retu… | 500 | ## Endpoint reference ### Extract article content from a web page `GET https://api.eu.apyhub.com/namastesumalya/extract-article-content` · 300 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | yes | Example: `https://example.com/article`. | #### Quickstart Fetch article metadata and extracted content by passing the article URL as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/namastesumalya/extract-article-content?url=https://example.com/article" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with article details in top-level fields such as `url`, `title`, `author`, `platform`, `wordCount`, `articleBody`, `readingTime`, `publicationDate`, and `publicationName`. ```json { "url": "https://example.com/article", "title": "Understanding Modern Content Pipelines", "author": "John Doe", "platform": "WordPress", "wordCount": 850, "articleBody": "This article explains how modern content pipelines work, including extraction, transformation, and delivery processes...", "readingTime": "4 min", "publicationDate": "2026-02-10T00:00:00Z", "publicationName": "Example Blog" } ``` ### Batch extract article content from multiple web pages `POST https://api.eu.apyhub.com/namastesumalya/extract-article-content` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `urls` | body | array of string | no | Example: `["https://example.com/article1","https://example.com/article2"]`. | #### Quickstart Send one or more article URLs to extract their content. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/extract-article-content" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"urls":["https://example.com/article1","https://example.com/article2"]}' ``` #### What you'll get back Returns a JSON object with a `data` array of extracted article objects and a `count` integer for how many articles were processed. ```json { "data": [ { "url": "https://example.com/article", "title": "Understanding Modern Content Pipelines", "author": "John Doe", "platform": "WordPress", "wordCount": 850, "articleBody": "This article explains how modern content pipelines work, including extraction, transformation, and delivery processes...", "readingTime": "4 min", "publicationDate": "2026-02-10T00:00:00Z", "publicationName": "Example Blog" } ], "count": 2 } ``` ## About ## What it does The Article Extractor API turns a web article into clean text and metadata. Send one page as `url` to the GET endpoint, or an array of `urls` to the POST batch endpoint, and get back the readable body in `articleBody` with navigation, ads, and page chrome stripped out. Each result also includes `title`, `author`, `publicationName`, `publicationDate`, `platform`, `wordCount`, and `readingTime`, plus `coverImage` on platforms such as Medium. Batch responses return a `data` array with one record per URL and a `count` field. `articleBody` is plain text with paragraphs separated by line breaks, ready for search, embeddings, or a language model. It works best on article pages such as blog posts, news stories, and Medium posts. Dates follow the source page's format, so normalize `publicationDate` before you sort on it. Use the article extractor API to feed news and blog content into a RAG pipeline, import posts into a CMS, build a reader view or read-later app, or collect articles for research and content monitoring. AI agents can call it through ApyHub MCP to read a page before answering a question about it. To condense the text, send it to the [AI Summarizer API](https://apyhub.com/apyhub/service/ai-summarize-api). For other languages, the [Article Translation API](https://apyhub.com/namastesumalya/service/translate-article-content) extracts and translates in one call, and the [Article Analysis API](https://apyhub.com/namastesumalya/service/analyze-an-article) scores a page for SEO and content quality. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/extract-article-content * * * --- title: Resume Parser API slug: parse-resume url: https://apyhub.com/sharpapi/service/parse-resume provider: SharpAPI categories: [Artificial Intelligence, Data Extraction, HR] tags: [cv, hr, resume, job] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-50 alias: sharpapi-ai-resume-parser --- # Resume Parser API Parse resumes and CVs into JSON: contact details, work history, education, and skills. Works with PDF, Word, and scanned CVs in 80+ languages. Free tier. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/parse-resume` | What it does Submits a resume/CV file for asynchronous AI parsing and returns identifiers you can u… | 50 | | GET | `https://api.eu.apyhub.com/sharpapi/parse-resume/job/status/:job_id` | What it does Retrieves the current status of an AI resume parsing job by job ID. The response retur… | 1 | ## Endpoint reference ### Submit AI Resume Parser job `POST https://api.eu.apyhub.com/sharpapi/parse-resume` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Provide the Resume/CV file in PDF, DOC, DOCX, TXT, or RTF formats. | | `language` | body | string | no | Specify the language of the Resume, defaults to English. | #### Quickstart Upload a resume file to start an asynchronous parsing job. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/parse-resume" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/resume.pdf" ``` #### What you'll get back Returns a JSON object with a `job_id` string — the UUID of the submitted job. Poll the job status endpoint with this id to retrieve the result. ```json { "job_id": "16e4a61a-2e1a-4ddf-87d5-8da9145144a9" } ``` ### Get AI Resume Parser job status `GET https://api.eu.apyhub.com/sharpapi/parse-resume/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Check the status of a parsed resume job by its job ID. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/parse-resume/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. The `data` object includes `id`, `type`, and `attributes`; `attributes` contains the job `status` and, when available, a `result` object with the parsed resume details. ```json { "data": { "id": "job_123", "type": "job", "attributes": { "type": "resume_parse", "status": "completed", "result": {} } } } ``` ## About ## What it does The Resume Parser API turns resumes and CVs into structured JSON your software can store, search, and filter. For each candidate, you get their contact details, work history with the skills used in each role, education, spoken languages, and certifications. Send a PDF, DOC, DOCX, TXT, or RTF file, or a scan or photo in JPG, PNG, or TIFF format, which is read with OCR automatically. Resumes in 80+ languages are supported. Use it to fill in applicant profiles in your ATS, build a searchable talent database, or process large volumes of applications without manual data entry. Parsing runs in the background: submit the file, then check the job status until the result is ready. Once parsed, you can rank candidates against a role with the [Resume/CV Job Match Score API](https://apyhub.com/sharpapi/service/resume-cv-job-match-score). You can start on ApyHub's free tier with no card required. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/parse-resume * * * --- title: Extract and Compare Multiple Articles from Web Pages API slug: compare-multiple-articles url: https://apyhub.com/namastesumalya/service/compare-multiple-articles provider: Sumalya APIs categories: [Artificial Intelligence, Data Extraction, Smart Generation] tags: [article-comparison, content-analysis, web-articles, topic-overlap, media-analysis] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 1000 alias: sumalya-extract-and-compare-multiple-articles-from-web-pages-api --- # Extract and Compare Multiple Articles from Web Pages API Compare multiple article URLs and get shared themes, topic overlap, style differences, structural contrast, and a perspective analysis. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/namastesumalya/compare-multiple-articles` | What it does Compares multiple web articles from the URLs you submit and returns a JSON object with… | 1000 | ## Endpoint reference ### Compare multiple articles from web pages `POST https://api.eu.apyhub.com/namastesumalya/compare-multiple-articles` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `urls` | body | array of string | no | Example: `["https://example.com/article1","https://example.com/article2"]`. | #### Quickstart Compare two or more article URLs by sending them in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/namastesumalya/compare-multiple-articles" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"urls":["https://example.com/article1","https://example.com/article2"]}' ``` #### What you'll get back Returns a JSON object with a `comparison` object. That `comparison` object may include `shared_themes` as an array of strings, `topic_overlap` as an integer, `style_differences` as an array of strings, `structural_contrast` as a string, and `perspective_analysis` as a string. ```json { "comparison": { "shared_themes": ["AI tools", "automation"], "topic_overlap": 70, "style_differences": ["Article 1 is technical", "Article 2 is conversational"], "structural_contrast": "One is step-based, the other narrative", "perspective_analysis": "Both support AI adoption but differ in execution approach" } } ``` ## About ## What it does Article Comparison compares multiple web articles and returns a structured breakdown of how they relate. Send an array of article URLs, and get back a comparison object you can use to summarise overlap, differences, and viewpoint. The response includes shared themes, a numeric topic_overlap score, style_differences, a structural_contrast summary, and a perspective_analysis field. That makes it useful when you need to group similar coverage, compare competitor commentary, or build editorial workflows that surface how sources align or diverge. Use Article Comparison when you want to analyse a set of links instead of reading them one by one. It fits research tools, content monitoring dashboards, and publishing systems that need a concise comparison of source articles. Because the endpoint returns only comparison data, it stays focused on analysis rather than extraction or summarisation of full article text. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/compare-multiple-articles * * * --- title: Extract and Analyze Content from Web Page API slug: analyze-an-article url: https://apyhub.com/namastesumalya/service/analyze-an-article provider: Sumalya APIs categories: [Artificial Intelligence, Data Extraction, SEO] tags: [article-analysis, content-analysis, seo-score, entity-extraction, text-classification, web-scraping] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 600 alias: sumalya-extract-and-analyze-content-from-web-page-api --- # Extract and Analyze Content from Web Page API Analyze any web article by URL and get entities, an SEO score, content type, reading level, tone, and quality signals for review or automation. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/namastesumalya/analyze-an-article` | What it does Analyzes an article from a web page URL and returns structured metadata about the page… | 600 | ## Endpoint reference ### Analyze an article from a web page `GET https://api.eu.apyhub.com/namastesumalya/analyze-an-article` · 600 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string | yes | Example: `https://example.com/article`. | #### Quickstart Analyze an article by passing its URL as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/namastesumalya/analyze-an-article?url=https%3A%2F%2Fexample.com%2Farticle" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with optional top-level fields such as `url`, `entities`, `seo_score`, `content_type`, `reading_level`, `emotional_tone`, and `quality_signals`. - `url` is a string with the analyzed article URL. - `entities` is an object that may include `people`, `locations`, and `organizations` arrays. - `seo_score` is an integer. - `content_type`, `reading_level`, and `emotional_tone` are strings. - `quality_signals` is an object that may include `clarity`, `engagement`, and `originality` strings. ```json { "url": "https://example.com/article", "entities": { "people": ["Elon Musk"], "locations": ["USA"], "organizations": ["OpenAI"] }, "seo_score": 85, "content_type": "Opinion", "reading_level": "Intermediate", "emotional_tone": "Positive", "quality_signals": { "clarity": "High", "engagement": "Strong", "originality": "Moderate" } } ``` ## About ## What it does Article Analysis lets you send a web page URL and get back structured signals about the article behind it. Use it when you need a quick read on content type, reading level, emotional tone, SEO score, key entities, and quality indicators without building your own parser. Provide the `url` as a query parameter. The response includes the original `url`, an `entities` object with extracted `people`, `locations`, and `organizations`, plus a numeric `seo_score`. You also get `content_type`, `reading_level`, `emotional_tone`, and `quality_signals` for `clarity`, `engagement`, and `originality`. This is useful for newsroom workflows, content review pipelines, competitive monitoring, and editorial dashboards. For example, you can score incoming articles, flag pieces with weak clarity, or group stories by tone and named entities before further processing. Use Article Analysis when you need a compact, machine-readable summary of an article from a public web page and want to route it into search, moderation, or analytics systems. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/namastesumalya/service/analyze-an-article * * * --- title: Invoice Parsing API slug: parse-invoice url: https://apyhub.com/sharpapi/service/parse-invoice provider: SharpAPI categories: [Data Extraction, Finance, Image Processing] tags: [business, finance, invoice] auth: api_key version: 1.0.0 service_type: job endpoints: 2 atoms: 1-50 alias: sharpapi-ai-invoice-parser --- # Invoice Parsing API Submit invoice files and poll for structured results. Extracts buyer, seller, invoice details, financial totals, and line items from PDFs. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/sharpapi/parse-invoice` | What it does Submits an invoice file for asynchronous parsing and returns identifiers for tracking… | 50 | | GET | `https://api.eu.apyhub.com/sharpapi/parse-invoice/job/status/:job_id` | What it does Checks the processing status of an asynchronous invoice parsing job by job ID. When th… | 1 | ## Endpoint reference ### Submit Invoice Parse Job `POST https://api.eu.apyhub.com/sharpapi/parse-invoice` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Provide the Invoice file in PDF, DOC, DOCX, PNG, JPG, JPEG, TIFF, or TIF formats. | | `language` | body | string | no | Specify the language of the Invoice. Defaults to English. Default: `English`. | #### Quickstart Submit an invoice file for parsing by uploading it as JSON in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/sharpapi/parse-invoice" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/invoice.pdf" ``` #### What you'll get back Returns a JSON object with a `job_id` string — the UUID of the submitted job. Poll the job status endpoint with this id to retrieve the result. ```json { "job_id": "a233324c-02cb-4c89-9ec4-fbe736758586" } ``` ### Check Invoice Parse Status `GET https://api.eu.apyhub.com/sharpapi/parse-invoice/job/status/:job_id` · 1 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string | yes | | #### Quickstart Check the status of an invoice parsing job by its job ID. ```bash curl -X GET "https://api.eu.apyhub.com/sharpapi/parse-invoice/job/status/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. `data` includes `id` (the job UUID), `type` (for example, `api_job_result`), and `attributes`, which contains `status` and may include a `result` array with parsed invoice data. ```json { "data": { "id": "2f1c8d8e-4c4b-4d1a-9e7e-8f8f5d3d2f11", "type": "api_job_result", "attributes": { "status": "success" } } } ``` ## About ## What it does Invoice Parser takes an invoice file, submits it for asynchronous processing, and returns structured invoice data you can use in your application. Send a PDF, DOC, DOCX, PNG, JPG, JPEG, TIFF, or TIF file, and optionally set the document language. You get back a job ID for polling. Use it when you need to turn supplier invoices into machine-readable records without building your own extraction pipeline. The status endpoint reports the job state as `queued`, `running`, `success`, or `failed`, and when processing completes it returns the extracted result set. The parsed output can include buyer details with a billing address, seller details with a VAT ID and address, invoice metadata such as currency, issue date, and invoice number, a boolean `is_invoice` flag, financial totals including subtotal, total payable, and total tax amount, plus line items with quantity, subtotal, unit price, and description. Invoice Parser is a good fit for accounts payable workflows, expense systems, document ingestion, and back-office automation where invoice fields need to be captured consistently from scanned or digital files. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/sharpapi/service/parse-invoice * * * --- title: AI Video Shot Change Detection API slug: detect-shot-changes url: https://apyhub.com/apyhub/service/detect-shot-changes provider: ApyHub categories: [Artificial Intelligence, Image Processing] tags: [shot-detection, scene-detection, video-analysis, ai-video] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-video-detect-shot-change --- # AI Video Shot Change Detection API Analyze a video file or URL and get shot change timestamps from Azure or Google. Built for scene segmentation, indexing, and editorial review. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/detect-shot-changes/file` | What it does Uploads a video file and runs shot change detection using the requested service provid… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/detect-shot-changes/url` | What it does Detects shot changes for a video file provided by URL and returns a JSON object with t… | 500 | ## Endpoint reference ### Shot Change Detection via file upload `POST https://api.eu.apyhub.com/apyhub/detect-shot-changes/file` · 500 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `azure_region` | body | string | no | Example: `trial`. | | `azure_account_id` | body | string | no | | | `requested_service` | body | string | yes | One of: azure, google. Example: `azure`. | | `azure_access_token` | body | string | no | | | `google_credential_file` | body | string (binary) | no | Service account JSON (Google routes). | #### Quickstart Upload a file and tell the API which cloud service to use. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-shot-changes/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/video.mp4" \ -F "requested_service=azure" \ -F 'azure_access_token="your-azure_access_token"' \ -F 'azure_account_id="your-azure_account_id"' \ -F 'azure_region="your-azure_region"' ``` #### What you'll get back Returns a JSON object with a required `data` object. Inside `data`, the response may include an `azure` object when `requested_service` is `azure`, or a `google` object when `requested_service` is `google`. ```json { "data": { "azure": {} } } ``` ### Shot Change Detection via URL `POST https://api.eu.apyhub.com/apyhub/detect-shot-changes/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `azure.region` | body | string | no | Example: `trial`. | | `azure.account_id` | body | string | no | Example: `00000000-0000-0000-0000-000000000000`. | | `azure.access_token` | body | string | no | Example: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example`. | | `google.google_language` | body | string | no | Example: `en-US`. | | `google.google_credential_json.type` | body | string | no | Example: `service_account`. | | `google.google_credential_json.auth_uri` | body | string | no | Example: `https://accounts.google.com/o/oauth2/auth`. | | `google.google_credential_json.client_id` | body | string | no | Example: `123456789`. | | `google.google_credential_json.token_uri` | body | string | no | Example: `https://oauth2.googleapis.com/token`. | | `google.google_credential_json.project_id` | body | string | no | Example: `my-gcp-project`. | | `google.google_credential_json.private_key` | body | string | no | Example: `-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n`. | | `google.google_credential_json.client_email` | body | string | no | Example: `svc@my-gcp-project.iam.gserviceaccount.com`. | | `google.google_credential_json.private_key_id` | body | string | no | Example: `abc123`. | | `google.google_credential_json.universe_domain` | body | string | no | Example: `googleapis.com`. | | `google.google_credential_json.client_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/robot/v1/metadata/x509/svc%40project.iam.gserviceacc…`. | | `google.google_credential_json.auth_provider_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/oauth2/v1/certs`. | | `requested_service` | body | string | yes | One of: azure, google. Example: `azure`. | #### Quickstart Check a video URL for shot changes using the Azure service. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-shot-changes/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url":"https://assets.apyhub.com/samples/sample.mp4", "requested_service":"azure", "azure": { "access_token": "your-access_token", "account_id": "your-account_id", "region": "your-region" }}' ``` #### What you'll get back Returns a JSON object with a `data` object field. For `requested_service: "azure"`, `data.azure` may be present and contains the Azure response payload. ```json { "data": { "azure": {} } } ``` ## About ## What it does Shot Change Detection analyzes a video file or video URL and returns detection results under the requested provider response. Send the media as a binary file or as a URL, then choose `requested_service` as `azure` or `google`. Use the `/file` endpoint when you already have the video on hand. It requires `file` and `requested_service`, and can also accept Azure credentials such as `azure_region`, `azure_account_id`, and `azure_access_token`, or a Google service account file in `google_credential_file` for Google routes. Use `/url` when the video is already hosted elsewhere; it requires `url` and `requested_service`, and can include Azure settings in the `azure` object or Google settings in the `google` object, including `google_language` and `google_credential_json`. The response is wrapped in `data` and returns either an `azure` object or a `google` object depending on the selected service. That makes it straightforward to plug into workflows that need to segment long-form video, identify scene boundaries, or trigger downstream processing when the content changes. If you are building media indexing, video review tooling, or highlight extraction, Shot Change Detection gives you a provider-aware endpoint for turning video input into shot-level change results. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | Google | 500 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/detect-shot-changes * * * --- title: AI Video Text Detection API slug: detect-video-text url: https://apyhub.com/apyhub/service/detect-video-text provider: ApyHub categories: [Artificial Intelligence, Data Extraction, Image Processing] tags: [video-ocr, text-detection, video-analysis, ai-video] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-video-detect-text --- # AI Video Text Detection API Extract on-screen text from video URLs or uploads using Azure or Google. Returns provider-specific results for OCR workflows and indexing. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/detect-video-text/url` | What it does Detects text in a video fetched from a URL. You send the video url and choose the OCR… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/detect-video-text/file` | What it does Uploads a video file and runs text detection using either Azure or Google, depending o… | 500 | ## Endpoint reference ### Text Detection via URL `POST https://api.eu.apyhub.com/apyhub/detect-video-text/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `azure.region` | body | string | no | Example: `trial`. | | `azure.account_id` | body | string | no | Example: `00000000-0000-0000-0000-000000000000`. | | `azure.access_token` | body | string | no | Example: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example`. | | `google.google_language` | body | string | no | Example: `en-US`. | | `google.google_credential_json.type` | body | string | no | Example: `service_account`. | | `google.google_credential_json.auth_uri` | body | string | no | Example: `https://accounts.google.com/o/oauth2/auth`. | | `google.google_credential_json.client_id` | body | string | no | Example: `123456789`. | | `google.google_credential_json.token_uri` | body | string | no | Example: `https://oauth2.googleapis.com/token`. | | `google.google_credential_json.project_id` | body | string | no | Example: `my-gcp-project`. | | `google.google_credential_json.private_key` | body | string | no | Example: `-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n`. | | `google.google_credential_json.client_email` | body | string | no | Example: `svc@my-gcp-project.iam.gserviceaccount.com`. | | `google.google_credential_json.private_key_id` | body | string | no | Example: `abc123`. | | `google.google_credential_json.universe_domain` | body | string | no | Example: `googleapis.com`. | | `google.google_credential_json.client_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/robot/v1/metadata/x509/svc%40project.iam.gserviceacc…`. | | `google.google_credential_json.auth_provider_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/oauth2/v1/certs`. | | `requested_service` | body | string | yes | One of: azure, google. Example: `azure`. | #### Quickstart Detect text in a video from a public video URL with the Azure service. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-video-text/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.mp4", "requested_service": "azure", "azure": { "access_token": "your-access_token", "account_id": "your-account_id", "region": "your-region" } }' ``` #### What you'll get back Returns a JSON object with a `data` object. When `requested_service` is `azure`, `data.azure` is present and contains the Azure result. ```json { "data": { "azure": {} } } ``` ### Text Detection via file upload `POST https://api.eu.apyhub.com/apyhub/detect-video-text/file` · 500 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `azure_region` | body | string | no | Example: `trial`. | | `google_language` | body | string | no | Example: `en`. | | `azure_account_id` | body | string | no | | | `requested_service` | body | string | yes | One of: azure, google. Example: `azure`. | | `azure_access_token` | body | string | no | | | `google_credential_file` | body | string (binary) | no | Service account JSON (Google routes). | #### Quickstart Upload a video file and tell the API whether to use the Azure or Google text-detection route. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-video-text/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/video.mp4" \ -F "requested_service=azure" \ -F 'requested_service="azure"' \ -F 'azure_access_token="your-azure_access_token"' \ -F 'azure_account_id="your-azure_account_id"' \ -F 'azure_region="your-azure_region"' ``` #### What you'll get back Returns a JSON object with a `data` object. That `data` object may include an `azure` object when `requested_service` is `azure`, or a `google` object when `requested_service` is `google`. ```json { "data": { "azure": {} } } ``` ## About ## What it does Video Text Detection extracts text from a video when you send either a video URL or an uploaded video file. Choose `azure` or `google` as the `requested_service`, and provide the matching provider fields for that route. Use the `/url` endpoint with a `url` to a video file, or the `/file` endpoint with a binary `file` upload. For Azure requests, the URL route accepts `azure.region`, `azure.account_id`, and `azure.access_token`, while the file route accepts `azure_region`, `azure_account_id`, and `azure_access_token`. For Google requests, the URL route accepts `google.google_language` and `google.google_credential_json`, and the file route accepts `google_language` plus a binary `google_credential_file`. The response wraps provider-specific results under `data.azure` or `data.google`, depending on the service you requested. That makes it suitable for workflows that need to pull visible text from videos for indexing, review, or downstream analysis without tying your app to one OCR provider. Use Video Text Detection when you need to process screen recordings, recorded presentations, product demos, or other video assets where text appears inside the frames. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | Google | 500 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/detect-video-text * * * --- title: AI Video Face Detection API slug: face-detection url: https://apyhub.com/apyhub/service/face-detection provider: ApyHub categories: [Artificial Intelligence, Image Processing] tags: [face-detection, computer-vision, video-analysis, ai-vision] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-video-detect-face --- # AI Video Face Detection API Detect faces in uploaded files or remote URLs using Azure or Google. Returns provider-specific results in a data object for media workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/face-detection/file` | What it does Detects faces from an uploaded file and routes the request to either Azure or Google b… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/face-detection/url` | What it does Detects faces in a media file fetched from a URL. You send the media URL and choose wh… | 500 | ## Endpoint reference ### Face Detection via file upload `POST https://api.eu.apyhub.com/apyhub/face-detection/file` · 500 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `azure_region` | body | string | no | Example: `trial`. | | `azure_account_id` | body | string | no | | | `requested_service` | body | string | yes | One of: azure, google. Example: `azure`. | | `azure_access_token` | body | string | no | | | `google_credential_file` | body | string (binary) | no | Service account JSON (Google routes). | #### Quickstart Upload a face image and request the Azure service. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/face-detection/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/face-image.jpg" \ -F "requested_service=azure" \ -F 'azure_access_token="your-azure_access_token"' \ -F 'azure_account_id="your-azure_account_id"' \ -F 'azure_region="your-azure_region"' ``` #### What you'll get back Returns a JSON object with a `data` object. When `requested_service` is `azure`, the `data` object may include an `azure` object with the detection result. ```json { "data": { "azure": {} } } ``` ### Face Detection via URL `POST https://api.eu.apyhub.com/apyhub/face-detection/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `azure.region` | body | string | no | Example: `trial`. | | `azure.account_id` | body | string | no | Example: `00000000-0000-0000-0000-000000000000`. | | `azure.access_token` | body | string | no | Example: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example`. | | `google.google_language` | body | string | no | Example: `en-US`. | | `google.google_credential_json.type` | body | string | no | Example: `service_account`. | | `google.google_credential_json.auth_uri` | body | string | no | Example: `https://accounts.google.com/o/oauth2/auth`. | | `google.google_credential_json.client_id` | body | string | no | Example: `123456789`. | | `google.google_credential_json.token_uri` | body | string | no | Example: `https://oauth2.googleapis.com/token`. | | `google.google_credential_json.project_id` | body | string | no | Example: `my-gcp-project`. | | `google.google_credential_json.private_key` | body | string | no | Example: `-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n`. | | `google.google_credential_json.client_email` | body | string | no | Example: `svc@my-gcp-project.iam.gserviceaccount.com`. | | `google.google_credential_json.private_key_id` | body | string | no | Example: `abc123`. | | `google.google_credential_json.universe_domain` | body | string | no | Example: `googleapis.com`. | | `google.google_credential_json.client_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/robot/v1/metadata/x509/svc%40project.iam.gserviceacc…`. | | `google.google_credential_json.auth_provider_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/oauth2/v1/certs`. | | `requested_service` | body | string | yes | One of: azure, google. Example: `azure`. | #### Quickstart Detect faces in an image or video URL with the Azure face-detection service. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/face-detection/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.mp4", "requested_service": "azure", "azure": { "access_token": "your-access_token", "account_id": "your-account_id", "region": "your-region" } }' ``` #### What you'll get back Returns a JSON object with a `data` object. When `requested_service` is `azure`, `data.azure` is present; when `requested_service` is `google`, `data.google` is present. ```json { "data": { "azure": {} } } ``` ## About ## What it does Face Detection lets you send an image or video URL and get face-detection results back from either Azure or Google, depending on the provider you select. Use the `/file` endpoint to upload a file, or the `/url` endpoint to point the service at a remote asset. In both cases, the request requires `requested_service`, which must be `azure` or `google`. The file-based route also accepts `azure_region`, `azure_account_id`, `azure_access_token`, and `google_credential_file` where relevant. The URL route accepts a `url`, plus provider-specific fields under `azure` or `google`, including Google credential JSON when you are using the Google route. The response wraps results under `data`, with either an `azure` object or a `google` object present depending on the selected service. That makes it straightforward to plug Face Detection into moderation flows, media indexing, or any workflow that needs to detect faces before you store, route, or analyse visual content. If you are building an app that handles user uploads or remote media links, Face Detection gives you a simple way to separate the transport layer from the detection provider while keeping the contract clear on both sides. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | Google | 500 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/face-detection * * * --- title: AI Video Transcriber API slug: speech-transcription url: https://apyhub.com/apyhub/service/speech-transcription provider: ApyHub categories: [Artificial Intelligence, Audio Processing] tags: [speech-to-text, transcription, video-to-text, audio-to-text] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-video-detect-transcribe --- # AI Video Transcriber API Convert uploaded files or media URLs to text using Azure or Google transcription. Built for speech search, review, and content analytics. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/speech-transcription/file` | What it does Uploads an audio file and returns transcription output for the requested speech servic… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/speech-transcription/url` | What it does Submits a media file URL for speech transcription and routes the request to either Azu… | 500 | ## Endpoint reference ### Speech Transcription via file upload `POST https://api.eu.apyhub.com/apyhub/speech-transcription/file` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `azure_region` | body | string | no | Example: `trial`. | | `google_language` | body | string | no | Example: `en-US`. | | `azure_account_id` | body | string | no | | | `requested_service` | body | string | yes | One of: azure, google. Example: `azure`. | | `azure_access_token` | body | string | no | | | `google_credential_file` | body | string (binary) | no | Service account JSON (Google routes). | #### Quickstart Transcribe a local audio file by sending it with the required service selection. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/speech-transcription/file" \ -H "apy-token: $APY_TOKEN" \ -F 'file=@"sample.mp4"' \ -F 'requested_service="azure"' \ -F 'azure_access_token="your-azure_access_token"' \ -F 'azure_account_id="your-azure_account_id"' \ -F 'azure_region="your-azure_region"' ``` #### What you'll get back Returns a JSON object with a `data` object field. Inside `data`, the API may include an `azure` object when `requested_service` is `azure`, or a `google` object when `requested_service` is `google`. ```json { "data": { "azure": {} } } ``` ### Speech Transcription via URL `POST https://api.eu.apyhub.com/apyhub/speech-transcription/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `azure.region` | body | string | no | Example: `trial`. | | `azure.account_id` | body | string | no | Example: `00000000-0000-0000-0000-000000000000`. | | `azure.access_token` | body | string | no | Example: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example`. | | `google.google_language` | body | string | no | Example: `en-US`. | | `google.google_credential_json.type` | body | string | no | Example: `service_account`. | | `google.google_credential_json.auth_uri` | body | string | no | Example: `https://accounts.google.com/o/oauth2/auth`. | | `google.google_credential_json.client_id` | body | string | no | Example: `123456789`. | | `google.google_credential_json.token_uri` | body | string | no | Example: `https://oauth2.googleapis.com/token`. | | `google.google_credential_json.project_id` | body | string | no | Example: `my-gcp-project`. | | `google.google_credential_json.private_key` | body | string | no | Example: `-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n`. | | `google.google_credential_json.client_email` | body | string | no | Example: `svc@my-gcp-project.iam.gserviceaccount.com`. | | `google.google_credential_json.private_key_id` | body | string | no | Example: `abc123`. | | `google.google_credential_json.universe_domain` | body | string | no | Example: `googleapis.com`. | | `google.google_credential_json.client_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/robot/v1/metadata/x509/svc%40project.iam.gserviceacc…`. | | `google.google_credential_json.auth_provider_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/oauth2/v1/certs`. | | `requested_service` | body | string | yes | One of: azure, google. Example: `azure`. | #### Quickstart Transcribe audio from a URL by sending the file link and choosing the transcription provider. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/speech-transcription/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.mp4", "requested_service": "azure", "azure": { "access_token": "your-access_token", "account_id": "your-account_id", "region": "your-region" } }' ``` #### What you'll get back Returns a JSON object with a top-level `data` field. `data` is an object that may include an `azure` object when `requested_service` is `azure`, or a `google` object when `requested_service` is `google`. ```json { "data": { "azure": {} } } ``` ## About ## What it does Speech Transcription converts audio or video into text through Azure or Google transcription backends. Send a file upload or a media URL, choose the requested service, and include the provider-specific settings needed for that route. With the file endpoint, you upload a binary file and set requested_service to azure or google. Azure routes can include azure_region, azure_account_id, and azure_access_token. Google routes can include google_language and a google_credential_file. With the URL endpoint, you send a media url and can pass Azure settings under azure or Google settings under google, including google_credential_json for Google video routes. The response returns a data object with an azure or google object depending on the requested_service you chose. That makes Speech Transcription useful when you need to extract spoken content from customer calls, meeting recordings, interviews, or uploaded media and hand the result to downstream search, analytics, or review workflows. Use it when your application needs to accept user media, route transcription to a specific cloud provider, and keep the response shape aligned with the provider you selected. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | Google | 500 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/speech-transcription * * * --- title: AI Video Person Detection API slug: detect-persons url: https://apyhub.com/apyhub/service/detect-persons provider: ApyHub categories: [Artificial Intelligence, Image Processing] tags: [person-detection, people-detection, video-analysis, ai-video] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-video-detect-person --- # AI Video Person Detection API Find where people appear in your videos. Upload a video or send a URL, choose Azure or Google video AI, and get the detection results as JSON. Free tier. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/detect-persons/url` | What it does Detects persons in a media file provided by URL and returns a JSON object with a data… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/detect-persons/file` | What it does Uploads a file to run person detection using either the Azure or Google route, based o… | 500 | ## Endpoint reference ### Person Detection via URL `POST https://api.eu.apyhub.com/apyhub/detect-persons/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `azure.region` | body | string | no | Example: `trial`. | | `azure.account_id` | body | string | no | Example: `00000000-0000-0000-0000-000000000000`. | | `azure.access_token` | body | string | no | Example: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example`. | | `google.google_language` | body | string | no | Example: `en-US`. | | `google.google_credential_json.type` | body | string | no | Example: `service_account`. | | `google.google_credential_json.auth_uri` | body | string | no | Example: `https://accounts.google.com/o/oauth2/auth`. | | `google.google_credential_json.client_id` | body | string | no | Example: `123456789`. | | `google.google_credential_json.token_uri` | body | string | no | Example: `https://oauth2.googleapis.com/token`. | | `google.google_credential_json.project_id` | body | string | no | Example: `my-gcp-project`. | | `google.google_credential_json.private_key` | body | string | no | Example: `-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n`. | | `google.google_credential_json.client_email` | body | string | no | Example: `svc@my-gcp-project.iam.gserviceaccount.com`. | | `google.google_credential_json.private_key_id` | body | string | no | Example: `abc123`. | | `google.google_credential_json.universe_domain` | body | string | no | Example: `googleapis.com`. | | `google.google_credential_json.client_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/robot/v1/metadata/x509/svc%40project.iam.gserviceacc…`. | | `google.google_credential_json.auth_provider_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/oauth2/v1/certs`. | | `requested_service` | body | string | yes | One of: azure, google. Example: `azure`. | #### Quickstart Send the video URL and choose the detection service to get a person-detection result. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-persons/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.mp4", "requested_service": "azure", "azure": { "access_token": "your-access_token", "account_id": "your-account_id", "region": "your-region" } }' ``` #### What you'll get back Returns a JSON object with a `data` object field. The `data` object may include an `azure` object when `requested_service` is `azure`, or a `google` object when `requested_service` is `google`. ```json { "data": { "azure": {} } } ``` ### Person Detection via file upload `POST https://api.eu.apyhub.com/apyhub/detect-persons/file` · 500 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `azure_region` | body | string | no | Example: `trial`. | | `azure_account_id` | body | string | no | | | `requested_service` | body | string | yes | One of: azure, google. Example: `azure`. | | `azure_access_token` | body | string | no | | | `google_credential_file` | body | string (binary) | no | Service account JSON (Google routes). | #### Quickstart Upload an image and choose the backend service to detect persons. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-persons/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" \ -F "requested_service=azure" \ -F 'azure_access_token="your-azure_access_token"' \ -F 'azure_account_id="your-azure_account_id"' \ -F 'azure_region="your-azure_region"' ``` #### What you'll get back Returns a JSON object with a `data` object. The `data` object can include an `azure` object when `requested_service` is `azure`, or a `google` object when `requested_service` is `google`. ```json { "data": { "azure": {} } } ``` ## About ## What it does The Person Detection API finds the people in a video. Upload a video or send its URL, choose whether to analyze it with Azure or Google video AI, and get back the detection results as JSON, including where people appear in the video. Use it to find the scenes that contain people in large video libraries, flag content for review in moderation workflows, or tag footage so it's searchable by who appears in it. Results come back in the format of the provider you choose, so if your team already works with Azure or Google video AI, you can use them without changing your code. For faces specifically, use the [Video Face Detection API](https://apyhub.com/apyhub/service/face-detection), and for other things in a video, the [Video Object Detection API](https://apyhub.com/apyhub/service/detect-video-objects). You can start on ApyHub's free tier with no card required. To use it, you need an Azure Video Indexer account or a Google Cloud service account. Pass your credentials with each request, and ApyHub handles the upload, processing, and response. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | Google | 500 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/detect-persons * * * --- title: AI Video Label Detection API slug: detect-video-labels url: https://apyhub.com/apyhub/service/detect-video-labels provider: ApyHub categories: [Artificial Intelligence] tags: [video-labeling, label-detection, video-analysis, ai-video] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-video-detect-label --- # AI Video Label Detection API Analyze a video from a file or URL with Azure or Google. Returns label results for search, moderation, and media cataloguing workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/detect-video-labels/file` | What it does Uploads a file for label detection and routes the request to either Azure or Google ba… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/detect-video-labels/url` | What it does Detects labels in a video fetched from a URL. You send the video URL and choose which… | 500 | ## Endpoint reference ### Label Detection via file upload `POST https://api.eu.apyhub.com/apyhub/detect-video-labels/file` · 500 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `azure_region` | body | string | no | Example: `trial`. | | `azure_account_id` | body | string | no | | | `requested_service` | body | string | yes | One of: azure, google. Example: `azure`. | | `azure_access_token` | body | string | no | | | `google_credential_file` | body | string (binary) | no | Service account JSON (Google routes). | #### Quickstart Upload a video and choose the target service with the required multipart fields. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-video-labels/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/video.mp4" \ -F "requested_service=azure" \ -F 'azure_access_token="your-azure_access_token"' \ -F 'azure_account_id="your-azure_account_id"' \ -F 'azure_region="your-azure_region"' ``` #### What you'll get back Returns a JSON object with a required `data` object. That `data` object may include an `azure` object when `requested_service` is `azure`, or a `google` object when `requested_service` is `google`. ```json { "data": { "azure": {} } } ``` ### Label Detection via URL `POST https://api.eu.apyhub.com/apyhub/detect-video-labels/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `azure.region` | body | string | no | Example: `trial`. | | `azure.account_id` | body | string | no | Example: `00000000-0000-0000-0000-000000000000`. | | `azure.access_token` | body | string | no | Example: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example`. | | `google.google_language` | body | string | no | Example: `en-US`. | | `google.google_credential_json.type` | body | string | no | Example: `service_account`. | | `google.google_credential_json.auth_uri` | body | string | no | Example: `https://accounts.google.com/o/oauth2/auth`. | | `google.google_credential_json.client_id` | body | string | no | Example: `123456789`. | | `google.google_credential_json.token_uri` | body | string | no | Example: `https://oauth2.googleapis.com/token`. | | `google.google_credential_json.project_id` | body | string | no | Example: `my-gcp-project`. | | `google.google_credential_json.private_key` | body | string | no | Example: `-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n`. | | `google.google_credential_json.client_email` | body | string | no | Example: `svc@my-gcp-project.iam.gserviceaccount.com`. | | `google.google_credential_json.private_key_id` | body | string | no | Example: `abc123`. | | `google.google_credential_json.universe_domain` | body | string | no | Example: `googleapis.com`. | | `google.google_credential_json.client_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/robot/v1/metadata/x509/svc%40project.iam.gserviceacc…`. | | `google.google_credential_json.auth_provider_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/oauth2/v1/certs`. | | `requested_service` | body | string | yes | One of: azure, google. Example: `azure`. | #### Quickstart Analyze a video from a public URL by asking the Azure label-detection route for results. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-video-labels/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.mp4", "requested_service":"azure", "azure": { "access_token": "your-access_token", "account_id": "your-account_id", "region": "your-region" }}' ``` #### What you'll get back Returns a JSON object with a `data` object field. For `requested_service: "azure"`, `data.azure` may be present and contains the Azure-specific result object. ```json { "data": { "azure": {} } } ``` ## About ## What it does Video Label Detection analyzes a video from a file upload or a URL and returns label data from either Azure or Google, depending on the service you request. Use the `/file` endpoint when you have the video content in hand, or `/url` when the video is already hosted elsewhere. For both routes, you send `requested_service` as `azure` or `google`. Azure requests can include `azure_region`, `azure_account_id`, and `azure_access_token` on the file route, or an `azure` object with `region`, `account_id`, and `access_token` on the URL route. Google requests can include `google_credential_file` on the file route, or a `google` object with `google_language` and `google_credential_json` on the URL route. The response is wrapped under `data` and includes either an `azure` object or a `google` object, depending on which provider you selected. The schemas do not define fixed label fields, so you should treat the payload as provider-specific label results rather than a rigid document shape. Use Video Label Detection when you need to classify or index video content for moderation, search, media workflows, or internal review systems without building your own video analysis pipeline. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | Google | 500 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/detect-video-labels * * * --- title: AI Video Object Detection API slug: detect-video-objects url: https://apyhub.com/apyhub/service/detect-video-objects provider: ApyHub categories: [Artificial Intelligence, Image Processing] tags: [video-object-detection, computer-vision, object-recognition, azure-vision, google-vision] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-video-detect-object --- # AI Video Object Detection API Detect objects in a video file or URL using Azure or Google routes. Returns provider-specific results under data for media review and indexing. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/detect-video-objects/file` | What it does Uploads a video file and runs object detection using either Azure or Google, based on… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/detect-video-objects/url` | What it does Detects objects in a video provided by URL and returns a JSON object with a data objec… | 500 | ## Endpoint reference ### Object Detection via file upload `POST https://api.eu.apyhub.com/apyhub/detect-video-objects/file` · 500 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `azure_region` | body | string | no | Example: `trial`. | | `azure_account_id` | body | string | no | | | `requested_service` | body | string | yes | One of: azure, google. Example: `azure`. | | `azure_access_token` | body | string | no | | | `google_credential_file` | body | string (binary) | no | Service account JSON (Google routes). | #### Quickstart Upload a video file and tell the API which service to use. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-video-objects/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/video.mp4" \ -F "requested_service=azure" \ -F 'azure_access_token="your-azure_access_token"' \ -F 'azure_account_id="your-azure_account_id"' \ -F 'azure_region="your-azure_region"' ``` #### What you'll get back Returns a JSON object with a `data` object field. Inside `data`, the response may include an `azure` object when `requested_service` is `azure`, or a `google` object when `requested_service` is `google`. ```json { "data": { "azure": {} } } ``` ### Object Detection via URL `POST https://api.eu.apyhub.com/apyhub/detect-video-objects/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `azure.region` | body | string | no | Example: `trial`. | | `azure.account_id` | body | string | no | Example: `00000000-0000-0000-0000-000000000000`. | | `azure.access_token` | body | string | no | Example: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example`. | | `google.google_language` | body | string | no | Example: `en-US`. | | `google.google_credential_json.type` | body | string | no | Example: `service_account`. | | `google.google_credential_json.auth_uri` | body | string | no | Example: `https://accounts.google.com/o/oauth2/auth`. | | `google.google_credential_json.client_id` | body | string | no | Example: `123456789`. | | `google.google_credential_json.token_uri` | body | string | no | Example: `https://oauth2.googleapis.com/token`. | | `google.google_credential_json.project_id` | body | string | no | Example: `my-gcp-project`. | | `google.google_credential_json.private_key` | body | string | no | Example: `-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n`. | | `google.google_credential_json.client_email` | body | string | no | Example: `svc@my-gcp-project.iam.gserviceaccount.com`. | | `google.google_credential_json.private_key_id` | body | string | no | Example: `abc123`. | | `google.google_credential_json.universe_domain` | body | string | no | Example: `googleapis.com`. | | `google.google_credential_json.client_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/robot/v1/metadata/x509/svc%40project.iam.gserviceacc…`. | | `google.google_credential_json.auth_provider_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/oauth2/v1/certs`. | | `requested_service` | body | string | yes | One of: azure, google. Example: `azure`. | #### Quickstart Detect objects in a video from a public URL by specifying the video source and the video backend to use. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-video-objects/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.mp4", "requested_service": "azure", "azure": { "access_token": "your-access_token", "account_id": "your-account_id", "region": "your-region" } }' ``` #### What you'll get back Returns a JSON object with a `data` object. The `data` object may include an `azure` object when `requested_service` is `azure`, or a `google` object when `requested_service` is `google`. ```json { "data": { "azure": {} } } ``` ## About ## What it does Video Object Detection lets you send a video file or a video URL and get detected-object results back through either Azure or Google routes. Use the `POST /file` endpoint when you want to upload a video directly. It requires `file` and `requested_service`, and supports Azure credentials through `azure_region`, `azure_account_id`, and `azure_access_token`, or Google credentials through `google_credential_file`. Use the `POST /url` endpoint when the video is already hosted online. It requires `url` and `requested_service`, and supports Azure settings in `azure.region`, `azure.account_id`, and `azure.access_token`, or Google settings in `google.google_language` and `google.google_credential_json`. The response is wrapped under `data` and returns an `azure` object when you request Azure, or a `google` object when you request Google. The schemas do not define the internal object shape, so you should treat the provider payload as structured detection output specific to that route. Video Object Detection is a fit for moderation pipelines, media indexing, and automated review flows where you need object detection results from uploaded footage or a video link without building separate integrations for each provider. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | Google | 500 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/detect-video-objects * * * --- title: AI Video Brand/Logo Detection API slug: detect-video-brands url: https://apyhub.com/apyhub/service/detect-video-brands provider: ApyHub categories: [Artificial Intelligence] tags: [logo-detection, brand-detection, video-analysis, ai-video] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-video-detect-brand --- # AI Video Brand/Logo Detection API Detect brands and logos in a video URL or uploaded file. Returns provider-scoped output from Azure or Google based on the service you request. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/detect-video-brands/url` | What it does Submits a video URL for brand detection and routes the request to either the Azure or… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/detect-video-brands/file` | What it does Uploads a video file and runs brand detection using the selected service provider. The… | 500 | ## Endpoint reference ### Brand Detection via URL `POST https://api.eu.apyhub.com/apyhub/detect-video-brands/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `azure.region` | body | string | no | Example: `trial`. | | `azure.account_id` | body | string | no | Example: `00000000-0000-0000-0000-000000000000`. | | `azure.access_token` | body | string | no | Example: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example`. | | `google.google_language` | body | string | no | Example: `en-US`. | | `google.google_credential_json.type` | body | string | no | Example: `service_account`. | | `google.google_credential_json.auth_uri` | body | string | no | Example: `https://accounts.google.com/o/oauth2/auth`. | | `google.google_credential_json.client_id` | body | string | no | Example: `123456789`. | | `google.google_credential_json.token_uri` | body | string | no | Example: `https://oauth2.googleapis.com/token`. | | `google.google_credential_json.project_id` | body | string | no | Example: `my-gcp-project`. | | `google.google_credential_json.private_key` | body | string | no | Example: `-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n`. | | `google.google_credential_json.client_email` | body | string | no | Example: `svc@my-gcp-project.iam.gserviceaccount.com`. | | `google.google_credential_json.private_key_id` | body | string | no | Example: `abc123`. | | `google.google_credential_json.universe_domain` | body | string | no | Example: `googleapis.com`. | | `google.google_credential_json.client_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/robot/v1/metadata/x509/svc%40project.iam.gserviceacc…`. | | `google.google_credential_json.auth_provider_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/oauth2/v1/certs`. | | `requested_service` | body | string | yes | One of: azure, google. Example: `azure`. | #### Quickstart Detect brands in a video from a public URL using Azure or Google service credentials. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-video-brands/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.mp4", "requested_service": "azure", "azure": { "access_token": "your-access_token", "account_id": "your-account_id", "region": "your-region" } }' ``` #### What you'll get back Returns a JSON object with a `data` object field. The `data` object contains an `azure` object when `requested_service` is `azure`, or a `google` object when `requested_service` is `google`. ```json { "data": { "azure": {} } } ``` ### Brand Detection via file upload `POST https://api.eu.apyhub.com/apyhub/detect-video-brands/file` · 500 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `azure_region` | body | string | no | Example: `trial`. | | `azure_account_id` | body | string | no | | | `requested_service` | body | string | yes | One of: azure, google. Example: `azure`. | | `azure_access_token` | body | string | no | | | `google_credential_file` | body | string (binary) | no | Service account JSON (Google routes). | #### Quickstart Upload a video file and tell the API which brand-detection service to use. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-video-brands/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/video.mp4" \ -F "requested_service=azure" \ -F 'azure_access_token="your-azure_access_token"' \ -F 'azure_account_id="your-azure_account_id"' \ -F 'azure_region="your-azure_region"' ``` #### What you'll get back Returns a JSON object with a `data` object field. The `data` object may include an `azure` object when `requested_service` is `azure`, or a `google` object when `requested_service` is `google`. ```json { "data": { "azure": {} } } ``` ## About ## What it does Video Brand Detection identifies brands in a video by sending either a video URL or an uploaded file, then returns the analysis in a service-specific response under `data.azure` or `data.google` depending on the provider you request. Use `POST /url` when your video is already hosted online. Send `url` plus `requested_service`, and include the Azure or Google credentials required for that route. Use `POST /file` when you want to upload the video directly. That route accepts `file` and `requested_service`, with Azure connection fields or a Google credential file as needed. The response is intentionally provider-scoped: the top-level `data` object contains either an `azure` object or a `google` object, matching the service you selected. The schema does not expose fixed fields inside those objects, so you can treat them as provider output and handle the contents accordingly in your integration. Video Brand Detection fits moderation, media indexing, campaign tracking, and brand mention workflows where you need to detect brand presence from video assets without building the model pipeline yourself. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | Google | 500 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/detect-video-brands * * * --- title: AI Text Content Classification API slug: content-classification url: https://apyhub.com/apyhub/service/content-classification provider: ApyHub categories: [Artificial Intelligence] tags: [text-classification, content-categorization, nlp, topic-detection] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 500 alias: ai-text-content-classification --- # AI Text Content Classification API Classify text with a Google-backed model. Send text plus requested_service and get structured classification data for moderation and routing. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/content-classification` | What it does Classifies the supplied text using the requested service and returns a JSON object con… | 500 | ## Endpoint reference ### Content Classification `POST https://api.eu.apyhub.com/apyhub/content-classification` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | yes | Example: `ApyHub provides powerful APIs for developers worldwide.`. | | `google.key` | body | string | no | Example: `AIzaSyExampleKey123456789`. | | `google.google_language` | body | string | no | Example: `en`. | | `requested_service` | body | string | yes | One of: google. Example: `google`. | #### Quickstart Send a short piece of text and ask the API to classify it with Google. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/content-classification" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"ApyHub provides powerful APIs for developers worldwide.", "requested_service":"google", "google": { "key": "your-google-key" }}' ``` #### What you'll get back Returns a JSON object with a `data` object field. When `requested_service` is `google`, `data.google` is present and contains the classification result as an object. ```json { "data": { "google": {} } } ``` ## About ## What it does Content Classification lets you send text and get a Google-backed classification response in return. The endpoint accepts a `body` object with `text` and `requested_service`, and supports a `google` object with a `key` and optional `google_language` when you need to pass Google-specific settings. Use it when you need to label or route user-generated text, sort incoming support content, or add lightweight content analysis to a workflow. Because the response wraps the result under `data.google` when `requested_service` is `google`, you can integrate it into an existing parser without guessing at extra fields. The schema is intentionally narrow: you provide the text to classify and the requested service, and the API returns a structured result object. That makes Content Classification a fit for pipelines that need deterministic responses for moderation, enrichment, or downstream AI workflows. If your app already stores language preferences or API credentials, you can pass them through the `google` object alongside the text and keep the integration focused on a single classification call. | Provider (requested_service) | Atoms | |------------------------------|------:| | Google | 500 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/content-classification * * * --- title: AI Text Syntax Analysis API slug: syntax-analysis url: https://apyhub.com/apyhub/service/syntax-analysis provider: ApyHub categories: [Artificial Intelligence, Developer Tools] tags: [syntax-analysis, part-of-speech, nlp, text-analysis] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 500 alias: ai-text-syntax-analysis --- # AI Text Syntax Analysis API Analyze text with a Google-backed syntax service. Send text, encoding, and requested_service, then get a structured data.google result back. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/syntax-analysis` | What it does Analyzes submitted text using the requested syntax-analysis service and returns a JSON… | 500 | ## Endpoint reference ### Syntax Analysis `POST https://api.eu.apyhub.com/apyhub/syntax-analysis` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | yes | Example: `ApyHub provides powerful APIs for developers worldwide.`. | | `google.key` | body | string | no | Example: `AIzaSyExampleKey123456789`. | | `google.google_language` | body | string | no | Example: `en`. | | `encoding` | body | string | yes | Example: `UTF8`. | | `language` | body | string | no | Example: `en`. | | `requested_service` | body | string | yes | One of: google. Example: `google`. | #### Quickstart Send your text and Google settings in a JSON body to analyze syntax with the Google service. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/syntax-analysis" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "text": "ApyHub provides powerful APIs for developers worldwide.", "encoding": "UTF8", "requested_service": "google", "google": { "key": "AIzaSyExampleKey123456789", "google_language": "en" } }' ``` #### What you'll get back Returns a JSON object with a `data` object field. When `requested_service` is `google`, `data.google` may be present as an object with the Google analysis result. ```json { "data": { "google": {} } } ``` ## About ## What it does Syntax Analysis sends your text to a syntax analysis backend and returns the service-specific Google response in a structured `data.google` object. Use it when you need to inspect or normalise text with Google-backed analysis from your own application. The request body requires `text`, `requested_service`, and `encoding`. You can also include `language` and a nested `google` object with `key` and `google_language` when that service-specific configuration is needed. The response is intentionally lightweight: you always get a `data` object, and when `requested_service` is `google`, the Google payload appears under `data.google`. That makes it easy to plug into content workflows, text-processing pipelines, or internal tools that need a consistent wrapper around an external analysis result. For example, you might send article copy, product descriptions, or user-submitted text and store the returned `data.google` payload alongside your own records for later processing. | Provider (requested_service) | Atoms | |------------------------------|------:| | Google | 500 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/syntax-analysis * * * --- title: AI Text Entity Sentiment Analysis API slug: entity-sentiment-analysis url: https://apyhub.com/apyhub/service/entity-sentiment-analysis provider: ApyHub categories: [Artificial Intelligence] tags: [sentiment-analysis, entity-sentiment, nlp, text-analysis] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 500 alias: ai-text-entity-sentiment-analysis --- # AI Text Entity Sentiment Analysis API Analyze sentiment around each entity mentioned in a text. Send text with requested_service=google and receive a data.google result for NLP work. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/entity-sentiment-analysis` | What it does Analyzes the sentiment of entities in the submitted text and returns a JSON object con… | 500 | ## Endpoint reference ### Entity Sentiment Analysis `POST https://api.eu.apyhub.com/apyhub/entity-sentiment-analysis` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | yes | Example: `I love R&B music. Marvin Gaye is the best. Whats Going On is one of my favorite…`. | | `google.key` | body | string | no | Example: `AIzaSyExampleKey123456789`. | | `google.google_language` | body | string | no | Example: `en`. | | `encoding` | body | string | no | Example: `UTF8`. | | `language` | body | string | no | Example: `en`. | | `requested_service` | body | string | yes | One of: google. Example: `google`. | #### Quickstart Analyze the sentiment of a piece of text with the Google service. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/entity-sentiment-analysis" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "text": "I love R&B music. Marvin Gaye is the best. Whats Going On is one of my favorite songs. It was so sad when Marvin Gaye died.", "requested_service": "google", "google": { "key": "your-google-key" } }' ``` #### What you'll get back Returns a JSON object with a `data` object. When `requested_service` is `google`, `data.google` contains the Google sentiment analysis result. ```json { "data": { "google": {} } } ``` ## About ## What it does Entity Sentiment Analysis identifies sentiment for entities mentioned in a text input and returns the result under a `google` object when you request the Google service. Send plain text along with `requested_service` set to `google`, and include optional language settings if you need to guide the analysis. Use it when you need to understand how people feel about specific brands, products, or public figures inside customer reviews, social posts, support tickets, or news coverage. The request schema also allows an optional `google` object with a `key` and `google_language`, plus optional `encoding` and `language` fields for text handling. The response is intentionally compact: a top-level `data` object containing `google` when that service is requested. That makes it easy to plug into moderation flows, social listening dashboards, review analytics, or any pipeline that scores sentiment around named entities rather than whole documents. If your application needs entity-level opinion signals without building your own NLP pipeline, Entity Sentiment Analysis gives you a focused interface for text-based sentiment analysis. | Provider (requested_service) | Atoms | |------------------------------|------:| | Google | 500 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/entity-sentiment-analysis * * * --- title: Convert JSON to Mongoose Schema API slug: convert-json-to-mongoose-schema url: https://apyhub.com/apyhub/service/convert-json-to-mongoose-schema provider: ApyHub categories: [Developer Tools, Smart Generation] tags: [mongoose, json-to-code, schema-generation, mongodb, typescript, developer-tools] auth: api_key version: 1.0.0 service_type: sync endpoints: 9 atoms: 50 alias: converter-json-mongoose --- # Convert JSON to Mongoose Schema API Generate Mongoose schema code from a JSON body, file, or URL. Returns JavaScript or TypeScript output plus type inference metadata for review. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-url-mongoose-url` | What it does Converts JSON fetched from a publicly accessible URL into a Mongoose schema file and r… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-file-mongoose-raw` | What it does Converts an uploaded JSON file into a generated Mongoose schema and returns the result… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-file-mongoose-url` | What it does Uploads a JSON file and converts its contents into a Mongoose schema, then returns a p… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-raw-mongoose-raw` | What it does Converts the provided JSON input into a generated Mongoose schema source string. It re… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-raw-mongoose-url` | What it does Converts the provided raw JSON data into a Mongoose schema and returns a pre-signed S3… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-url-mongoose-raw` | What it does Converts the JSON document found at a public URL into a generated Mongoose schema. It… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-file-mongoose-file` | What it does Uploads a JSON file and converts it into a downloadable Mongoose schema file. The resp… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-raw-mongoose-file` | What it does Converts the provided JSON input into a Mongoose schema file and returns it as a downl… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-url-mongoose-file` | What it does Converts a JSON document fetched from a publicly accessible URL into a downloadable Mo… | 50 | ## Endpoint reference ### Convert JSON from URL to Mongoose schema `POST https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-url-mongoose-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a JSON resource. The response Content-Type must be one of: application/json, text/plain, application/octet-stream, binary/octet-stream. Alternatively, the URL path… | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | | `strict` | query | boolean | no | Default: `true`. | | `timestamps` | query | boolean | no | Default: `true`. | | `versionKey` | query | boolean | no | Default: `false`. | | `detectEnums` | query | boolean | no | Default: `false`. | | `rootModelName` | query | string | no | Example: `User`. | | `useTypescript` | query | boolean | no | Default: `false`. | | `detectObjectId` | query | boolean | no | Default: `true`. | #### Quickstart Generate a Mongoose schema from a public JSON file URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-url-mongoose-url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL to download the generated schema file. ```json { "data": "https://s3.amazonaws.com/bucket/uuid_my-schema.js?X-Amz-Signature=..." } ``` ### Convert uploaded JSON file to Mongoose schema `POST https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-file-mongoose-raw` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | A JSON file to upload. The file MIME type must be application/json. The JSON content must be a non-empty object or array of objects. | | `strict` | query | boolean | no | Default: `true`. | | `timestamps` | query | boolean | no | Default: `true`. | | `versionKey` | query | boolean | no | Default: `false`. | | `detectEnums` | query | boolean | no | Default: `false`. | | `rootModelName` | query | string | no | Example: `User`. | | `useTypescript` | query | boolean | no | Default: `false`. | | `detectObjectId` | query | boolean | no | Default: `true`. | #### Quickstart Upload a JSON file to generate a Mongoose schema from it. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-file-mongoose-raw?strict=true×tamps=true&versionKey=false&detectEnums=false&useTypescript=false&detectObjectId=true" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.json" ``` #### What you'll get back Returns a JSON object with `schema` (string), `warnings` (array of strings), `assumptions` (array of strings), `confidence` (number), and `meta` (object). ```json { "meta": { "fieldCount": 5, "nestedLevels": 2, "hasArrays": false, "hasMixedTypes": false, "sourceSampleSize": 1 }, "schema": "const mongoose = require('mongoose');\nconst { Schema } = mongoose;\n\nconst RootSchema = new Schema({\n name: String,\n age: Number,\n}, { timestamps: true, versionKey: false });\n\nmodule.exports = mongoose.model('Root', RootSchema);\n", "warnings": [ "Schema generated from a single JSON sample — field types and optionality may be incomplete" ], "confidence": 0.62, "assumptions": [ "Field 'createdAt' inferred as Date from ISO string" ] } ``` ### Convert uploaded JSON file to Mongoose schema `POST https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-file-mongoose-url` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | A JSON file to upload. The file MIME type must be application/json. The JSON content must be a non-empty object or array of objects. | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | | `strict` | query | boolean | no | Default: `true`. | | `timestamps` | query | boolean | no | Default: `true`. | | `versionKey` | query | boolean | no | Default: `false`. | | `detectEnums` | query | boolean | no | Default: `false`. | | `rootModelName` | query | string | no | Example: `User`. | | `useTypescript` | query | boolean | no | Default: `false`. | | `detectObjectId` | query | boolean | no | Default: `true`. | #### Quickstart Upload a JSON file to generate a Mongoose schema and return a download link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-file-mongoose-url?strict=true×tamps=true&versionKey=false&detectEnums=false&useTypescript=false&detectObjectId=true" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.json" \ -F "output=my-schema" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed URL to download the generated schema file. ```json { "data": "https://apyhub-outgoing.s3.eu-west-1.amazonaws.com/mono-go/generated/my-schema.js?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=900&X-Amz-Signature=..." } ``` ### Convert raw JSON body to Mongoose schema `POST https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-raw-mongoose-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | any | yes | The request body can be either: Plain object — the entire body is treated as the JSON data to convert: { "name": "John", "age": 30 } Wrapped format — use json for data and config for inline generat… | | `strict` | query | boolean | no | Default: `true`. | | `timestamps` | query | boolean | no | Default: `true`. | | `versionKey` | query | boolean | no | Default: `false`. | | `detectEnums` | query | boolean | no | Default: `false`. | | `rootModelName` | query | string | no | Example: `User`. | | `useTypescript` | query | boolean | no | Default: `false`. | | `detectObjectId` | query | boolean | no | Default: `true`. | #### Quickstart Send a JSON object with the raw data you want converted into a Mongoose schema. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-raw-mongoose-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"John","age":30}' ``` #### What you'll get back Returns a JSON object with `schema` (string), `warnings` (array of strings), `assumptions` (array of strings), `confidence` (number), and `meta` (object). `meta` includes `fieldCount`, `nestedLevels`, `hasArrays`, `hasMixedTypes`, and `sourceSampleSize`. ```json { "schema": "const mongoose = require('mongoose');\n...", "warnings": ["Schema generated from a single JSON sample — field types and optionality may be incomplete"], "assumptions": ["Field 'createdAt' inferred as Date from ISO string"], "confidence": 0.62, "meta": { "fieldCount": 5, "nestedLevels": 2, "hasArrays": false, "hasMixedTypes": false, "sourceSampleSize": 1 } } ``` ### Convert raw JSON body to Mongoose schema `POST https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-raw-mongoose-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | any | yes | The request body can be either: Plain object — the entire body is treated as the JSON data to convert: { "name": "John", "age": 30 } Wrapped format — use json for data and config for inline generat… | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | | `strict` | query | boolean | no | Default: `true`. | | `timestamps` | query | boolean | no | Default: `true`. | | `versionKey` | query | boolean | no | Default: `false`. | | `detectEnums` | query | boolean | no | Default: `false`. | | `rootModelName` | query | string | no | Example: `User`. | | `useTypescript` | query | boolean | no | Default: `false`. | | `detectObjectId` | query | boolean | no | Default: `true`. | #### Quickstart Send your JSON data in the request body to get back a downloadable Mongoose schema file URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-raw-mongoose-url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"John","age":30}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed URI to download the generated schema file. ```json { "data": "https://s3.amazonaws.com/bucket/uuid_my-schema.js?X-Amz-Signature=..." } ``` ### Convert JSON from URL to Mongoose schema `POST https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-url-mongoose-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a JSON resource. The response Content-Type must be one of: application/json, text/plain, application/octet-stream, binary/octet-stream. Alternatively, the URL path… | | `strict` | query | boolean | no | Default: `true`. | | `timestamps` | query | boolean | no | Default: `true`. | | `versionKey` | query | boolean | no | Default: `false`. | | `detectEnums` | query | boolean | no | Default: `false`. | | `rootModelName` | query | string | no | Example: `User`. | | `useTypescript` | query | boolean | no | Default: `false`. | | `detectObjectId` | query | boolean | no | Default: `true`. | #### Quickstart Convert a JSON file from a public URL into a Mongoose schema with the default options. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-url-mongoose-raw?strict=true×tamps=true&versionKey=false&detectEnums=false&useTypescript=false&detectObjectId=true" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns a JSON object with `schema` (string), `warnings` (array of strings), `assumptions` (array of strings), `confidence` (number), and `meta` (object). `meta` includes `fieldCount` (integer), `nestedLevels` (integer), `hasArrays` (boolean), `hasMixedTypes` (boolean), and `sourceSampleSize` (integer). ```json { "schema": "const mongoose = require('mongoose');\n...", "warnings": [], "assumptions": [], "confidence": 0.62, "meta": { "fieldCount": 5, "nestedLevels": 2, "hasArrays": false, "hasMixedTypes": false, "sourceSampleSize": 1 } } ``` ### Convert uploaded JSON file to Mongoose schema `POST https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-file-mongoose-file` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | A JSON file to upload. The file MIME type must be application/json. The JSON content must be a non-empty object or array of objects. | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | | `strict` | query | boolean | no | Default: `true`. | | `timestamps` | query | boolean | no | Default: `true`. | | `versionKey` | query | boolean | no | Default: `false`. | | `detectEnums` | query | boolean | no | Default: `false`. | | `rootModelName` | query | string | no | Example: `User`. | | `useTypescript` | query | boolean | no | Default: `false`. | | `detectObjectId` | query | boolean | no | Default: `true`. | #### Quickstart Upload a JSON file to generate a Mongoose schema file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-file-mongoose-file?strict=true×tamps=true&versionKey=false&detectEnums=false&useTypescript=false&detectObjectId=true" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.json" \ -F "output=my-schema" ``` #### What you'll get back Returns a downloadable Mongoose schema file as a binary response. The file is `.ts` when `useTypescript=true`, otherwise `.js`. ### Convert raw JSON body to Mongoose schema `POST https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-raw-mongoose-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | any | yes | The request body can be either: Plain object — the entire body is treated as the JSON data to convert: { "name": "John", "age": 30 } Wrapped format — use json for data and config for inline generat… | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | | `strict` | query | boolean | no | Default: `true`. | | `timestamps` | query | boolean | no | Default: `true`. | | `versionKey` | query | boolean | no | Default: `false`. | | `detectEnums` | query | boolean | no | Default: `false`. | | `rootModelName` | query | string | no | Example: `User`. | | `useTypescript` | query | boolean | no | Default: `false`. | | `detectObjectId` | query | boolean | no | Default: `true`. | #### Quickstart Send a JSON object with the raw data to convert, and optionally include query parameters to control the generated Mongoose schema. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-raw-mongoose-file" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"John","age":30}' ``` #### What you'll get back Returns a downloadable Mongoose schema file as binary content. The schema is a string with `format: binary` — `.ts` when `useTypescript=true`, otherwise `.js`. ### Convert JSON from URL to Mongoose schema `POST https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-url-mongoose-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a JSON resource. The response Content-Type must be one of: application/json, text/plain, application/octet-stream, binary/octet-stream. Alternatively, the URL path… | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | | `strict` | query | boolean | no | Default: `true`. | | `timestamps` | query | boolean | no | Default: `true`. | | `versionKey` | query | boolean | no | Default: `false`. | | `detectEnums` | query | boolean | no | Default: `false`. | | `rootModelName` | query | string | no | Example: `User`. | | `useTypescript` | query | boolean | no | Default: `false`. | | `detectObjectId` | query | boolean | no | Default: `true`. | #### Quickstart Generate a Mongoose schema file from a public JSON URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-mongoose-schema/json-url-mongoose-file?output=my-schema&strict=true×tamps=true&versionKey=false&detectEnums=false&useTypescript=false&detectObjectId=true" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns a downloadable binary Mongoose schema file. The file is `.ts` when `useTypescript=true`, otherwise `.js`. ## About ## What it does JSON to Mongoose Schema converts JSON objects or uploaded JSON files into Mongoose schema code. Send a JSON payload from the request body, a wrapped body with `json` and optional `config`, an uploaded `.json` file, or a public JSON URL, and get back generated schema output. You can choose whether the result is returned directly as a JSON object, as a downloadable file, or as a pre-signed S3 URL. The generation options exposed by the service include `strict`, `timestamps`, `versionKey`, `detectEnums`, `rootModelName`, `useTypescript`, and `detectObjectId`. Those options let you control schema defaults, model naming, TypeScript output, and how object-like identifiers are inferred. The JSON result endpoints return the generated `schema` string along with `warnings`, `assumptions`, `confidence`, and `meta`. The `meta` object includes `fieldCount`, `nestedLevels`, `hasArrays`, `hasMixedTypes`, and `sourceSampleSize`, which helps you review how much structure was inferred from the input sample. Use JSON to Mongoose Schema when you need to bootstrap a model from fixture data, API responses, seed files, or a sample document before you refine validators and constraints by hand. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-json-to-mongoose-schema * * * --- title: AI Video Explicit Content Detection API slug: explicit-content-detection url: https://apyhub.com/apyhub/service/explicit-content-detection provider: ApyHub categories: [Artificial Intelligence] tags: [content-moderation, nsfw-detection, explicit-content, video-analysis, ai-video] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-video-detect-explicit-content --- # AI Video Explicit Content Detection API Detect explicit material in video files or URLs using Azure or Google routes. Returns provider-specific results for content moderation pipelines. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/explicit-content-detection/file` | What it does Uploads a file for explicit-content detection and routes the request to either the Azu… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/explicit-content-detection/url` | What it does Detects explicit content for a media file provided by URL. The request sends the media… | 500 | ## Endpoint reference ### Explicit Content Detection via file upload `POST https://api.eu.apyhub.com/apyhub/explicit-content-detection/file` · 500 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `azure_region` | body | string | no | Example: `trial`. | | `azure_account_id` | body | string | no | | | `requested_service` | body | string | yes | One of: azure, google. Example: `azure`. | | `azure_access_token` | body | string | no | | | `google_credential_file` | body | string (binary) | no | Service account JSON (Google routes). | #### Quickstart Upload a file and set which OCR service should analyze it. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/explicit-content-detection/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/video.mp4" \ -F "requested_service=azure" \ -F 'azure_access_token="your-azure_access_token"' \ -F 'azure_account_id="your-azure_account_id"' \ -F 'azure_region="your-azure_region"' ``` #### What you'll get back Returns a JSON object with a `data` object. The `data` object may include an `azure` object when `requested_service` is `azure`, or a `google` object when `requested_service` is `google`. ```json { "data": { "azure": {} } } ``` ### Explicit Content Detection via URL `POST https://api.eu.apyhub.com/apyhub/explicit-content-detection/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `azure.region` | body | string | no | Example: `trial`. | | `azure.account_id` | body | string | no | Example: `00000000-0000-0000-0000-000000000000`. | | `azure.access_token` | body | string | no | Example: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example`. | | `google.google_language` | body | string | no | Example: `en-US`. | | `google.google_credential_json.type` | body | string | no | Example: `service_account`. | | `google.google_credential_json.auth_uri` | body | string | no | Example: `https://accounts.google.com/o/oauth2/auth`. | | `google.google_credential_json.client_id` | body | string | no | Example: `123456789`. | | `google.google_credential_json.token_uri` | body | string | no | Example: `https://oauth2.googleapis.com/token`. | | `google.google_credential_json.project_id` | body | string | no | Example: `my-gcp-project`. | | `google.google_credential_json.private_key` | body | string | no | Example: `-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n`. | | `google.google_credential_json.client_email` | body | string | no | Example: `svc@my-gcp-project.iam.gserviceaccount.com`. | | `google.google_credential_json.private_key_id` | body | string | no | Example: `abc123`. | | `google.google_credential_json.universe_domain` | body | string | no | Example: `googleapis.com`. | | `google.google_credential_json.client_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/robot/v1/metadata/x509/svc%40project.iam.gserviceacc…`. | | `google.google_credential_json.auth_provider_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/oauth2/v1/certs`. | | `requested_service` | body | string | yes | One of: azure, google. Example: `azure`. | #### Quickstart Check a video or image URL for explicit content using the Azure service. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/explicit-content-detection/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.mp4", "requested_service": "azure", "azure": { "access_token": "your-access_token", "account_id": "your-account_id", "region": "your-region" } }' ``` #### What you'll get back Returns a JSON object with a `data` object. When `requested_service` is `azure`, `data.azure` is present and contains the service response. ```json { "data": { "azure": {} } } ``` ## About ## What it does Explicit Content Detection analyzes video content for adult or otherwise explicit material. Send a file upload or a public URL, choose `requested_service` as `azure` or `google`, and pass the provider-specific credentials required by that route. Use the `/file` endpoint when the media is already in your system and you want to upload it directly. Use the `/url` endpoint when the content is available at a remote `url`. For Azure routes, the request schema includes fields such as `azure_region`, `azure_account_id`, and `azure_access_token` on file uploads, or an `azure` object with `region`, `account_id`, and `access_token` on URL requests. For Google routes, the file endpoint accepts `google_credential_file`, and the URL endpoint accepts a `google` object with `google_language` and `google_credential_json`. The response is returned under `data`, with an `azure` object when `requested_service` is `azure` and a `google` object when it is `google`. The payload shape is provider-specific, so you can inspect the result structure without guessing at extra fields. Use it to flag user-uploaded videos before publication, screen marketplace media, or add a moderation step to review queues where explicit material needs to be filtered out early. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | Google | 500 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/explicit-content-detection * * * --- title: Convert JSON to Zod Schema API slug: convert-json-to-zod-schema url: https://apyhub.com/apyhub/service/convert-json-to-zod-schema provider: ApyHub categories: [Developer Tools, Smart Generation] tags: [json-schema-generation, zod, schema-generation, json-conversion, developer-tools] auth: api_key version: 1.0.0 service_type: sync endpoints: 9 atoms: 50 alias: converter-json-zod --- # Convert JSON to Zod Schema API Generate Zod schemas from a JSON body, file, or URL. Returns raw schema text, explain output, or downloadable files for typed runtime validation. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-url-zod-raw` | What it does Converts the JSON document available at a public URL into a Zod schema. The request ta… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-file-zod-raw` | What it does Converts an uploaded JSON file into a Zod schema. The request uploads a JSON file and… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-raw-zod-url` | What it does Converts a non-empty raw JSON request body into a Zod schema and returns a pre-signed… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-url-zod-file` | What it does Converts JSON fetched from a publicly accessible URL into a Zod schema and returns it… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-url-zod-url` | What it does Converts JSON fetched from a publicly accessible URL into a Zod schema file and return… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-file-zod-file` | What it does Converts an uploaded JSON file into a downloadable Zod schema file. Depending on the m… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-file-zod-url` | What it does Converts an uploaded JSON file into a Zod schema and returns a pre-signed S3 URL for d… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-raw-zod-raw` | What it does Converts a raw JSON request body into a Zod schema representation. The request accepts… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-raw-zod-file` | What it does Converts a non-empty raw JSON request body into a Zod schema. Depending on the mode qu… | 50 | ## Endpoint reference ### Convert JSON from URL to Zod schema (raw text or explain JSON) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-url-zod-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a JSON resource. The URL must return a content-type of application/json, text/plain, application/octet-stream, or binary/octet-stream, or the Content-Disposition /… | | `mode` | query | string | no | One of: annotated, clean, explain. Default: `annotated`. | | `strict` | query | string | no | One of: true, false. Default: `false`. | #### Quickstart Convert a public JSON URL into a Zod schema by sending the JSON source URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-url-zod-raw?mode=annotated&strict=false" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns a JSON object that may include: - `meta` объект with `mode` and `strict` - `schema` string containing the generated Zod schema - `assumptions` array of strings with any generation assumptions ```json { "meta": { "mode": "annotated", "strict": false }, "schema": "z.object({ ... })", "assumptions": ["..."] } ``` ### Convert uploaded JSON file to Zod schema (raw text or explain JSON) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-file-zod-raw` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | JSON file to convert. The uploaded file must have mimetype application/json and must contain a non-empty JSON object. | | `mode` | query | string | no | One of: annotated, clean, explain. Default: `annotated`. | | `strict` | query | string | no | One of: true, false. Default: `false`. | #### Quickstart Upload a JSON file to generate a Zod schema. This minimal example uses the default request mode and strictness. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-file-zod-raw" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.json" ``` #### What you'll get back Returns a JSON object with optional top-level `meta`, `schema`, and `assumptions` fields. `meta` is an object that may include `mode` and `strict`; `schema` is the generated Zod schema as a string; `assumptions` is an array of strings describing generation assumptions. ```json { "meta": { "mode": "annotated", "strict": false }, "schema": "z.object({ ... })", "assumptions": ["..."] } ``` ### Convert raw JSON body to Zod schema (S3 signed URL) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-raw-zod-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | object | yes | Any non-empty JSON object sent as the request body with Content-Type application/json (or text/plain, which is also accepted and parsed). The body must not be empty. | | `mode` | query | string | no | One of: annotated, clean, explain. Default: `annotated`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | | `strict` | query | string | no | One of: true, false. Default: `false`. | #### Quickstart Send a non-empty JSON object to convert it into a Zod schema, returning a pre-signed download URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-raw-zod-url?mode=annotated&output=sample-output&strict=false" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"Ada Lovelace","role":"engineer"}' ``` #### What you'll get back Returns a JSON object with a `data` string field. The `data` value is a pre-signed S3 URI for downloading the generated schema file. ```json { "data": "https://example.s3.amazonaws.com/generated-schema.ts?..." } ``` ### Convert JSON from URL to Zod schema (downloadable file) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-url-zod-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a JSON resource. The URL must return a content-type of application/json, text/plain, application/octet-stream, or binary/octet-stream, or the Content-Disposition /… | | `mode` | query | string | no | One of: annotated, clean, explain. Default: `annotated`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | | `strict` | query | string | no | One of: true, false. Default: `false`. | #### Quickstart Convert a JSON file at a public URL into a Zod schema by sending the file URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-url-zod-file" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns the Zod schema as a binary `.ts` file, or a JSON explain payload when `mode=explain`. ```json binary ``` ### Convert JSON from URL to Zod schema (S3 signed URL) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-url-zod-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a JSON resource. The URL must return a content-type of application/json, text/plain, application/octet-stream, or binary/octet-stream, or the Content-Disposition /… | | `mode` | query | string | no | One of: annotated, clean, explain. Default: `annotated`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | | `strict` | query | string | no | One of: true, false. Default: `false`. | #### Quickstart Convert a public JSON URL into a Zod schema by sending the source URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-url-zod-url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL for the generated schema file. ```json { "data": "https://s3.amazonaws.com/..." } ``` ### Convert uploaded JSON file to Zod schema (downloadable file) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-file-zod-file` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | JSON file to convert. The uploaded file must have mimetype application/json and must contain a non-empty JSON object. | | `mode` | query | string | no | One of: annotated, clean, explain. Default: `annotated`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | | `strict` | query | string | no | One of: true, false. Default: `false`. | #### Quickstart Upload a JSON file to generate a Zod schema file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-file-zod-file?mode=annotated&output=sample-output&strict=false" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/input.json" ``` #### What you'll get back Returns a downloadable binary `.ts` file containing the generated Zod schema. If `mode=explain`, the same endpoint returns a JSON explain payload instead. ```json "" ``` ### Convert uploaded JSON file to Zod schema (S3 signed URL) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-file-zod-url` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | JSON file to convert. The uploaded file must have mimetype application/json and must contain a non-empty JSON object. | | `mode` | query | string | no | One of: annotated, clean, explain. Default: `annotated`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | | `strict` | query | string | no | One of: true, false. Default: `false`. | #### Quickstart Upload a JSON file to convert it to a Zod schema. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-file-zod-url?mode=annotated&output=my-schema&strict=false" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.json" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL to download the generated file. ```json { "data": "https://s3.amazonaws.com/..." } ``` ### Convert raw JSON body to Zod schema (raw text or explain JSON) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-raw-zod-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | object | yes | Any non-empty JSON object sent as the request body with Content-Type application/json (or text/plain, which is also accepted and parsed). The body must not be empty. | | `mode` | query | string | no | One of: annotated, clean, explain. Default: `annotated`. | | `strict` | query | string | no | One of: true, false. Default: `false`. | #### Quickstart Send a JSON object to generate a Zod schema. This minimal example uses the default annotated mode and strict=false. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-raw-zod-raw?mode=annotated&strict=false" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"Example","age":30}' ``` #### What you'll get back Returns a JSON object with optional top-level `meta`, `schema`, and `assumptions` fields. - `meta` is an object with `mode` and `strict`. - `schema` is a string containing the generated Zod schema. - `assumptions` is an array of strings listing any assumptions made during generation. ```json { "meta": { "mode": "annotated", "strict": false }, "schema": "z.object({...})", "assumptions": [] } ``` ### Convert raw JSON body to Zod schema (downloadable file) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-raw-zod-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | object | yes | Any non-empty JSON object sent as the request body with Content-Type application/json (or text/plain, which is also accepted and parsed). The body must not be empty. | | `mode` | query | string | no | One of: annotated, clean, explain. Default: `annotated`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | | `strict` | query | string | no | One of: true, false. Default: `false`. | #### Quickstart Convert a JSON object into a downloadable Zod schema file with the default annotated output. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-zod-schema/json-raw-zod-file" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"my-schema","version":1}' ``` #### What you'll get back Returns a binary `.ts` file containing the generated Zod schema. The output schema is a single binary value, so there is no JSON wrapper to display. ## About ## What it does JSON to Zod Schema converts a non-empty JSON object into a Zod schema. Send JSON from a request body, an uploaded file, or a publicly accessible URL, and get back a generated schema as raw text, a downloadable `.ts` file, or a pre-signed S3 URL depending on the endpoint you choose. Use `mode` to control the output style: `annotated`, `clean`, or `explain`. Use `strict` when you want stricter schema generation. The URL-based endpoints accept JSON resources served as `application/json`, `text/plain`, `application/octet-stream`, or `binary/octet-stream`, and the file-based endpoints require an uploaded JSON file with `application/json` mimetype. This is useful when you need to turn sample API responses, fixture data, or exported JSON into a starting point for typed validation. Instead of hand-writing Zod by inspection, you can generate a baseline schema and then refine it in your codebase. JSON to Zod Schema returns either the generated `schema` string, an `assumptions` list, and `meta` information for explain mode, or a downloadable/hosted schema file via `data` depending on the endpoint variant. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-json-to-zod-schema * * * --- title: Convert XML to CSV API slug: convert-xml-to-csv url: https://apyhub.com/apyhub/service/convert-xml-to-csv provider: ApyHub categories: [Data Extraction, Developer Tools, File Conversion] tags: [xml-conversion, csv, data-transformation, file-conversion, xml-parser] auth: api_key version: 1.0.0 service_type: sync endpoints: 9 atoms: 50 alias: converter-xml-csv --- # Convert XML to CSV API Convert XML from a raw body, file upload, or URL into CSV text, a downloadable file, or a signed URL. Built for product feeds and ETL pipelines. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-url-csv-raw` | What it does Converts the XML file available at the provided URL into CSV and returns the result as… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-url-csv-file` | What it does Converts an XML file available at a public URL into a downloadable CSV file. The reque… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-file-csv-file` | What it does Converts an uploaded XML file into a downloadable CSV file. The request sends the XML… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-raw-csv-raw` | What it does Converts a raw XML request body into CSV text. The endpoint accepts XML as a string in… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-url-csv-url` | What it does Converts an XML file available at a public URL into a CSV file and returns a pre-signe… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-file-csv-raw` | What it does Converts an uploaded XML file into CSV text. The request body must include a binary fi… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-file-csv-url` | What it does Converts an uploaded XML file into a CSV file and returns a pre-signed S3 URL for the… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-raw-csv-file` | What it does Converts a raw XML request body into a downloadable CSV file. The XML is sent in the r… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-raw-csv-url` | What it does Converts a raw XML request body into a CSV file and returns a pre-signed S3 URL for do… | 50 | ## Endpoint reference ### Convert XML at URL → inline CSV text `POST https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-url-csv-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to an XML file. Example: `https://assets.apyhub.com/samples/sample.xml`. | #### Quickstart Convert an XML file from a public URL to CSV by sending the XML URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-url-csv-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.xml"}' ``` #### What you'll get back Returns a string containing the converted CSV output. ### Convert XML at URL → downloadable CSV file `POST https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-url-csv-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to an XML file. Example: `https://assets.apyhub.com/samples/sample.xml`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Convert a public XML file URL into a CSV download. The optional `output` query parameter is left out for the simplest call. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-url-csv-file" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.xml"}' ``` #### What you'll get back Returns a downloadable CSV file as a binary response. ### Convert uploaded XML file → downloadable CSV file `POST https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-file-csv-file` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | XML file to convert. Must have MIME type text/xml or application/xml. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Convert an XML file to CSV by uploading the XML file as multipart form data. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-file-csv-file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.xml" ``` #### What you'll get back Returns a downloadable CSV file as binary content. ### Convert raw XML body → inline CSV text `POST https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-raw-csv-raw` · 50 atoms · accepts `application/xml` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | string | yes | | #### Quickstart Send your XML in the request body to convert it into CSV. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-raw-csv-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/xml" \ -d 'Alicealice@example.com' ``` #### What you'll get back Returns a plain string containing the CSV output. ### Convert XML at URL → S3 signed URL `POST https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-url-csv-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to an XML file. Example: `https://assets.apyhub.com/samples/sample.xml`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Convert an XML file from a public URL into a CSV file and return a temporary download link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-url-csv-url?output=my-converted-data" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.xml"}' ``` #### What you'll get back Returns a JSON object with a `data` string field — a pre-signed S3 URL pointing to the converted CSV file, valid for 5 minutes. ```json { "data": "https://s3.amazonaws.com/bucket/uuid_sample-output.csv?..." } ``` ### Convert uploaded XML file → inline CSV text `POST https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-file-csv-raw` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | XML file to convert. Must have MIME type text/xml or application/xml. | #### Quickstart Upload an XML file to convert it to raw CSV output. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-file-csv-raw" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.xml" ``` #### What you'll get back Returns a plain string containing the converted CSV output. ### Convert uploaded XML file → S3 signed URL `POST https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-file-csv-url` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | XML file to convert. Must have MIME type text/xml or application/xml. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Upload an XML file to convert it to CSV and get back a downloadable link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-file-csv-url" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.xml" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL for the converted CSV file. ```json { "data": "https://s3.amazonaws.com/bucket/uuid_sample-output.csv?..." } ``` ### Convert raw XML body → downloadable CSV file `POST https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-raw-csv-file` · 50 atoms · accepts `application/xml` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | string | yes | | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Send your XML in the request body and download the converted CSV file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-raw-csv-file?output=my-converted-data" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/xml" \ --data 'Alpha100' ``` #### What you'll get back Returns a downloadable CSV file as a binary response. ### Convert raw XML body → S3 signed URL `POST https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-raw-csv-url` · 50 atoms · accepts `application/xml` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | string | yes | | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Send your XML in the request body to convert it into a CSV file URL, and optionally set the output filename with a query parameter. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-xml-to-csv/xml-raw-csv-url?output=my-converted-data" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/xml" \ --data 'Apple1.25' ``` #### What you'll get back Returns a JSON object with a `data` string field. The `data` value is a pre-signed S3 URI pointing to the converted CSV file, valid for 5 minutes. ```json { "data": "https://s3.amazonaws.com/bucket/uuid_sample-output.csv?..." } ``` ## About ## What it does XML to CSV Converter turns XML from a raw request body, an uploaded file, or a public URL into CSV output. You can receive the result as inline CSV text, a downloadable CSV file, or a pre-signed S3 URL depending on the endpoint you call. Send raw XML in the request body when you already have the document content, or pass a `url` to a publicly accessible XML file. If you prefer file upload workflows, send the XML file itself; the file endpoint accepts `text/xml` or `application/xml` input. Several endpoints also accept an optional `output` value that is used to name the generated CSV artifact. Use XML to CSV Converter when you need to flatten structured XML into a tabular format for spreadsheets, downstream ETL jobs, or CSV-based imports. It fits common automation flows where an XML feed needs to be handed off to another service, stored as a file, or inspected quickly as plain text. The responses stay simple: inline endpoints return CSV text, file endpoints return a downloadable CSV, and URL endpoints return a `data` field containing a temporary signed URL to the converted file. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-xml-to-csv * * * --- title: Convert JSON to GraphQL Schema API slug: convert-json-to-graphql-sdl url: https://apyhub.com/apyhub/service/convert-json-to-graphql-sdl provider: ApyHub categories: [Developer Tools, File Conversion, Smart Generation] tags: [json-to-graphql, graphql-schema, graphql, developer-tools] auth: api_key version: 1.0.0 service_type: sync endpoints: 9 atoms: 50 alias: converter-json-graphql --- # Convert JSON to GraphQL Schema API Convert raw JSON, uploaded files, or JSON URLs into GraphQL SDL. Returns inline text, a .graphql download, or a pre-signed S3 URL. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-file-graphql-url` | What it does Converts an uploaded JSON file into GraphQL SDL and returns a pre-signed S3 URL for th… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-raw-graphql-raw` | What it does Converts a raw JSON object in the request body into GraphQL SDL and returns the SDL as… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-raw-graphql-url` | What it does Converts a raw JSON object sent in the request body into GraphQL SDL, then returns a p… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-url-graphql-file` | What it does Converts the JSON document available at a public URL into a GraphQL SDL file for downl… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-raw-graphql-file` | What it does Converts a raw JSON object in the request body into a downloadable GraphQL SDL file. T… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-url-graphql-raw` | What it does Converts the JSON document available at a public URL into GraphQL SDL and returns the… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-url-graphql-url` | What it does Converts the JSON file available at the provided URL into GraphQL SDL, then returns a… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-file-graphql-raw` | What it does Uploads a JSON file and returns GraphQL SDL as the response. The input must be a JSON… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-file-graphql-file` | What it does Converts an uploaded JSON file into a downloadable GraphQL SDL file. The request uploa… | 50 | ## Endpoint reference ### Convert uploaded JSON file to GraphQL SDL (S3 signed URL) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-file-graphql-url` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | JSON file to convert. Must have MIME type application/json and contain a non-empty JSON object. | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | #### Quickstart Upload a JSON file to convert it into GraphQL SDL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-file-graphql-url?output=my-schema" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.json" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL to the converted file. ```json { "data": "https://example-bucket.s3.amazonaws.com/converted-file" } ``` ### Convert raw JSON body to GraphQL SDL (inline response) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-raw-graphql-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | object | yes | A non-empty JSON object (not an array) to convert to GraphQL SDL. | #### Quickstart Convert a JSON object to GraphQL SDL by sending the object in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-raw-graphql-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"user":{"id":1,"name":"Ada Lovelace"}}' ``` #### What you'll get back Returns a JSON string containing the generated GraphQL SDL. ```json "type User {\n id: Int\n name: String\n}\n\ntype Query {\n user: User\n}" ``` ### Convert raw JSON body to GraphQL SDL (S3 signed URL) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-raw-graphql-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | object | yes | A non-empty JSON object (not an array) to convert to GraphQL SDL. | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | #### Quickstart Convert a JSON object to GraphQL SDL and return a pre-signed download URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-raw-graphql-url?output=my-schema" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"my-schema","version":1}' ``` #### What you'll get back Returns a JSON object with a `data` string — a pre-signed S3 URI for the converted file. ```json { "data": "https://s3.amazonaws.com/..." } ``` ### Convert JSON from URL to GraphQL SDL (downloadable file) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-url-graphql-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Public URL pointing to a JSON file. The response must have a content-type that includes application/json, text/plain, application/octet-stream, or binary/octet-stream; or a content-disposition header… | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | #### Quickstart Convert a public JSON file URL into a downloadable GraphQL SDL file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-url-graphql-file" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns a downloadable GraphQL SDL file as binary data (`.graphql`). ```text (binary file) ``` ### Convert raw JSON body to GraphQL SDL (downloadable file) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-raw-graphql-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | object | yes | A non-empty JSON object (not an array) to convert to GraphQL SDL. | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | #### Quickstart Convert a JSON object into a GraphQL SDL file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-raw-graphql-file" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"sampleField":"sample-value"}' ``` #### What you'll get back Returns a downloadable GraphQL SDL file (`.graphql`) as binary content. ```text (binary file) ``` ### Convert JSON from URL to GraphQL SDL (inline response) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-url-graphql-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Public URL pointing to a JSON file. The response must have a content-type that includes application/json, text/plain, application/octet-stream, or binary/octet-stream; or a content-disposition header… | #### Quickstart Convert a JSON file at a public URL into GraphQL SDL with a single request. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-url-graphql-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns a JSON string containing the generated GraphQL SDL. ```json "type Query {\n ...\n}" ``` ### Convert JSON from URL to GraphQL SDL (S3 signed URL) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-url-graphql-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Public URL pointing to a JSON file. The response must have a content-type that includes application/json, text/plain, application/octet-stream, or binary/octet-stream; or a content-disposition header… | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | #### Quickstart Convert a JSON file at a public URL into GraphQL SDL by sending the file URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-url-graphql-url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL to the converted file. ```json { "data": "https://..." } ``` ### Convert uploaded JSON file to GraphQL SDL (inline response) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-file-graphql-raw` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | JSON file to convert. Must have MIME type application/json and contain a non-empty JSON object. | #### Quickstart Upload a JSON file to convert it into GraphQL SDL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-file-graphql-raw" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.json" ``` #### What you'll get back Returns a plain string containing the generated GraphQL SDL. ```text type Query { ... } ``` ### Convert uploaded JSON file to GraphQL SDL (downloadable file) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-file-graphql-file` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | JSON file to convert. Must have MIME type application/json and contain a non-empty JSON object. | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | #### Quickstart Upload a JSON file to convert it into a GraphQL SDL file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-graphql-sdl/json-file-graphql-file?output=my-schema" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/input.json" ``` #### What you'll get back Returns a downloadable GraphQL SDL file (`.graphql`) as binary content. ```text (binary file) ``` ## About ## What it does Convert JSON into GraphQL SDL with the JSON to GraphQL SDL service. Send a non-empty JSON object, or point it at a public JSON URL or uploaded JSON file, and get GraphQL schema definition language back as inline text, a downloadable `.graphql` file, or a pre-signed S3 URL. Use the raw-body endpoints when you already have JSON in your request payload. Use the file-upload endpoints when your JSON lives in a file, and the URL endpoints when the source is hosted elsewhere. The file-based routes require a JSON file with MIME type `application/json`, while the URL-based routes accept a public URL that serves JSON-compatible content or a `.json` path. The response format depends on the route you choose: inline endpoints return the generated SDL as a string, downloadable-file endpoints return binary GraphQL SDL, and S3-url endpoints return an object with a `data` field containing a pre-signed URI. This is useful when you need to turn API payloads, sample responses, or data exports into a GraphQL schema draft for documentation, prototyping, or schema-first development. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-json-to-graphql-sdl * * * --- title: Convert XML to JSON API slug: convert-xml-to-json url: https://apyhub.com/apyhub/service/convert-xml-to-json provider: ApyHub categories: [Developer Tools, File Conversion] tags: [xml-conversion, json-conversion, xml-parser, file-conversion, developer-tools] auth: api_key version: 1.0.0 service_type: sync endpoints: 9 atoms: 50 alias: converter-xml-json --- # Convert XML to JSON API Convert raw XML, XML files, or XML URLs into JSON. Returns inline data, a downloadable JSON file, or a pre-signed S3 URL for automation and ETL. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-raw-json-raw` | What it does Converts a raw XML request body into JSON. The endpoint accepts the XML as a string in… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-raw-json-url` | What it does Converts a raw XML request body into JSON and returns a pre-signed S3 URL where the co… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-url-json-file` | What it does Converts the XML file available at the provided URL into a downloadable JSON file. The… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-file-json-file` | What it does Converts an uploaded XML file into a downloadable JSON file. The request uploads a bin… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-file-json-url` | What it does Converts an uploaded XML file into JSON and returns a pre-signed S3 URL where the conv… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-raw-json-file` | What it does Converts a raw XML request body into a downloadable JSON file. The XML is sent in the… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-url-json-raw` | What it does Converts the XML file available at the supplied URL into JSON and returns the converte… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-url-json-url` | What it does Converts the XML file available at a public URL into JSON and returns a pre-signed S3… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-file-json-raw` | What it does Converts an uploaded XML file into JSON and returns the converted result inline in the… | 50 | ## Endpoint reference ### Convert raw XML body → inline JSON `POST https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-raw-json-raw` · 50 atoms · accepts `application/xml` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | string | yes | | #### Quickstart Send your XML payload in the request body to convert it into JSON. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-raw-json-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/xml" \ --data 'AliceBobHello!' ``` #### What you'll get back Returns a JSON object. The output schema does not declare any specific top-level fields, so the exact response shape may vary. ### Convert raw XML body → S3 signed URL `POST https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-raw-json-url` · 50 atoms · accepts `application/xml` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | string | yes | | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Send the XML content in the request body to convert it into a JSON file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-raw-json-url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/xml" \ --data 'Hello' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URI for the converted JSON file, valid for 5 minutes. ```json { "data": "https://s3.amazonaws.com/bucket/uuid_sample-output.json?..." } ``` ### Convert XML at URL → downloadable JSON file `POST https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-url-json-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to an XML file. Example: `https://assets.apyhub.com/samples/sample.xml`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Convert an XML file from a public URL into a downloadable JSON file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-url-json-file?output=my-converted-data" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.xml"}' ``` #### What you'll get back Returns a binary JSON file download containing the converted data. ### Convert uploaded XML file → downloadable JSON file `POST https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-file-json-file` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | XML file to convert. Accepted MIME types: text/xml, application/xml, text/plain, application/octet-stream, binary/octet-stream. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Convert an XML file to a JSON file by uploading it as multipart form data. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-file-json-file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/input.xml" ``` #### What you'll get back Returns a downloadable JSON file as binary data. ### Convert uploaded XML file → S3 signed URL `POST https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-file-json-url` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | XML file to convert. Accepted MIME types: text/xml, application/xml, text/plain, application/octet-stream, binary/octet-stream. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Upload an XML file to convert it to JSON and save the result under the default output name. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-file-json-url?output=sample-output" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.xml" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL for the converted JSON file, valid for 5 minutes. ```json { "data": "https://s3.amazonaws.com/bucket/uuid_sample-output.json?..." } ``` ### Convert raw XML body → downloadable JSON file `POST https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-raw-json-file` · 50 atoms · accepts `application/xml` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | string | yes | | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Convert XML text to a downloadable JSON file with a single POST request. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-raw-json-file" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/xml" \ -H "Accept: application/json" \ --data 'ToveJaniReminderMeeting at 3 PM' ``` #### What you'll get back Returns a binary file response containing the converted JSON data. The output schema is a downloadable JSON file (`string` with `format: binary`), so the response body is the file itself rather than a JSON object. ### Convert XML at URL → inline JSON `POST https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-url-json-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to an XML file. Example: `https://assets.apyhub.com/samples/sample.xml`. | #### Quickstart Convert an XML file from a public URL into JSON by sending the file URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-url-json-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.xml"}' ``` #### What you'll get back Returns a JSON object with additional properties; the response shape is not fixed by the schema. ### Convert XML at URL → S3 signed URL `POST https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-url-json-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to an XML file. Example: `https://assets.apyhub.com/samples/sample.xml`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Convert an XML file from a public URL into JSON by sending the XML URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-url-json-url?output=my-converted-data" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.xml" }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL for the converted JSON file, valid for 5 minutes. ```json { "data": "https://s3.amazonaws.com/bucket/uuid_sample-output.json?..." } ``` ### Convert uploaded XML file → inline JSON `POST https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-file-json-raw` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | XML file to convert. Accepted MIME types: text/xml, application/xml, text/plain, application/octet-stream, binary/octet-stream. | #### Quickstart Upload one XML file to convert it into raw JSON output. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-xml-to-json/xml-file-json-raw" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.xml" ``` #### What you'll get back Returns a JSON object. The output schema does not declare any specific top-level fields, so the exact response shape depends on the endpoint behavior. ## About ## What it does XML to JSON Converter turns XML documents into JSON in one step. Send raw XML, an XML file upload, or a public XML URL, and get the converted data back as inline JSON, a downloadable JSON file, or a pre-signed S3 URL depending on the endpoint you choose. Use it when you need to move XML into a JSON-based workflow without writing parsing code. The service accepts raw XML in the request body, XML files in binary upload form, or a `url` pointing to a publicly accessible XML file. For file- and URL-based flows, you can also pass an optional `output` query value to name the generated file. The response format stays simple: either an object containing JSON data, a binary JSON download, or an object with a `data` field that contains a pre-signed S3 URL valid for 5 minutes. That makes it easy to plug into import jobs, ETL pipelines, document processing systems, or automation that needs JSON artifacts instead of XML. Choose XML to JSON Converter when you are normalizing supplier feeds, converting legacy exports, or exposing XML content to services that expect JSON. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-xml-to-json * * * --- title: Convert JSON to YAML API slug: convert-json-to-yaml url: https://apyhub.com/apyhub/service/convert-json-to-yaml provider: ApyHub categories: [Developer Tools, File Conversion] tags: [json, yaml, json-conversion, yaml-conversion, developer-tools, file-conversion] auth: api_key version: 1.0.0 service_type: sync endpoints: 9 atoms: 50 alias: converter-json-yaml --- # Convert JSON to YAML API Convert JSON files, raw JSON bodies, or JSON URLs into YAML. Returns downloadable files, raw text, or pre-signed S3 URLs for config workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-url-yaml-file` | What it does Converts a JSON resource fetched from a public URL into a downloadable YAML file. The… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-file-yaml-file` | What it does Converts an uploaded JSON file into a downloadable YAML file. The request sends a bina… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-file-yaml-url` | What it does Converts an uploaded JSON file into YAML and returns a pre-signed S3 URL for the conve… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-raw-yaml-file` | What it does Converts a raw JSON request body into a downloadable YAML file. The endpoint accepts a… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-url-yaml-raw` | What it does Fetches JSON from a publicly accessible URL and converts it to YAML, returning the res… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-url-yaml-url` | What it does Converts JSON fetched from a publicly accessible URL into YAML and returns a pre-signe… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-file-yaml-raw` | What it does Converts an uploaded JSON file into YAML and returns the result as raw text. The reque… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-raw-yaml-raw` | What it does Converts a non-empty JSON object sent as the request body into YAML and returns the co… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-raw-yaml-url` | What it does Converts a raw JSON request body into YAML and returns a pre-signed S3 URL for the con… | 50 | ## Endpoint reference ### Convert JSON from URL to YAML (downloadable file) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-url-yaml-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a JSON resource. The URL must return a content-type of application/json, text/plain, application/octet-stream, or binary/octet-stream, or the Content-Disposition /… | | `output` | query | string | no | Default: `sample-output`. Example: `my-output`. | #### Quickstart Convert a JSON file from a public URL into a downloadable YAML file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-url-yaml-file" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns a downloadable YAML file (`.yaml`) as binary content. ```yaml # binary file content ``` ### Convert uploaded JSON file to YAML (downloadable file) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-file-yaml-file` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | JSON file to convert. The uploaded file must have mimetype application/json. | | `output` | query | string | no | Default: `sample-output`. Example: `my-output`. | #### Quickstart Upload a JSON file to convert it into a downloadable YAML file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-file-yaml-file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.json" ``` #### What you'll get back Returns a downloadable YAML file (`.yaml`) as binary content. ```yaml # binary file download ``` ### Convert uploaded JSON file to YAML (S3 signed URL) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-file-yaml-url` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | JSON file to convert. The uploaded file must have mimetype application/json. | | `output` | query | string | no | Default: `sample-output`. Example: `my-output`. | #### Quickstart Upload a JSON file to convert it to YAML and get back a download URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-file-yaml-url" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.json" ``` #### What you'll get back Returns a JSON object with a required `data` string field containing a pre-signed S3 URL to the converted file. ```json { "data": "https://example-bucket.s3.amazonaws.com/converted-file.yaml" } ``` ### Convert raw JSON body to YAML (downloadable file) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-raw-yaml-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | object | yes | Any non-empty JSON object. Sent as the request body with Content-Type application/json. The body must not be empty. | | `output` | query | string | no | Default: `sample-output`. Example: `my-output`. | #### Quickstart Convert a JSON object to a downloadable YAML file with the required JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-raw-yaml-file" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"Sample Project","active":true}' ``` #### What you'll get back Returns a downloadable YAML (`.yaml`) file as binary content. ```yaml # binary file download ``` ### Convert JSON from URL to YAML (raw text) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-url-yaml-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a JSON resource. The URL must return a content-type of application/json, text/plain, application/octet-stream, or binary/octet-stream, or the Content-Disposition /… | #### Quickstart Convert a JSON resource from a public URL into YAML by sending the URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-url-yaml-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns a string containing the converted YAML output. ```text name: Example active: true items: - one - two ``` ### Convert JSON from URL to YAML (S3 signed URL) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-url-yaml-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a JSON resource. The URL must return a content-type of application/json, text/plain, application/octet-stream, or binary/octet-stream, or the Content-Disposition /… | | `output` | query | string | no | Default: `sample-output`. Example: `my-output`. | #### Quickstart Convert a JSON file from a public URL into a YAML file by sending the source `url` in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-url-yaml-url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL to the converted file. ```json { "data": "https://..." } ``` ### Convert uploaded JSON file to YAML (raw text) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-file-yaml-raw` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | JSON file to convert. The uploaded file must have mimetype application/json. | #### Quickstart Convert a JSON file to raw YAML by uploading it as multipart form data. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-file-yaml-raw" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.json" ``` #### What you'll get back Returns a JSON string containing the converted YAML output. ```json "key: value\n" ``` ### Convert raw JSON body to YAML (raw text) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-raw-yaml-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | object | yes | Any non-empty JSON object. Sent as the request body with Content-Type application/json. The body must not be empty. | #### Quickstart Convert a JSON object to raw YAML by sending the JSON in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-raw-yaml-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"ApyHub","enabled":true}' ``` #### What you'll get back Returns a JSON string containing the converted YAML output. ```json "name: ApyHub\nenabled: true\n" ``` ### Convert raw JSON body to YAML (S3 signed URL) `POST https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-raw-yaml-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | object | yes | Any non-empty JSON object. Sent as the request body with Content-Type application/json. The body must not be empty. | | `output` | query | string | no | Default: `sample-output`. Example: `my-output`. | #### Quickstart Send a JSON object to convert it to YAML and get back a pre-signed download URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-yaml/json-raw-yaml-url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"ApyHub","enabled":true}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL for the converted file. ```json { "data": "https://..." } ``` ## About ## What it does JSON to YAML Converter turns JSON into YAML and returns it as either a downloadable file, raw text, or a pre-signed S3 URL. You can send JSON as an uploaded file, pass a public JSON URL, or submit a raw JSON body. Use the file-based endpoints when you want a `.yaml` download, the raw-text endpoints when you want YAML inline in the response, and the URL endpoints when your workflow stores the converted file in S3. The URL inputs accept publicly accessible JSON resources, and the uploaded-file endpoints require a JSON file with `application/json` mimetype. This is useful when you need to convert configuration files, sample payloads, or API responses from JSON into YAML for documentation, tooling, or manual review. Send a JSON object and get the same data back in YAML form, without changing the structure by hand. The service also includes raw-body conversion for non-empty JSON objects, so you can post structured data directly when you already have the payload in your request. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-json-to-yaml * * * --- title: AI Image Optical Character Recognition (OCR) API slug: extract-text-from-image url: https://apyhub.com/apyhub/service/extract-text-from-image provider: ApyHub categories: [Artificial Intelligence, Data Extraction, Image Processing] tags: [image, ocr, ai] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-image-ocr --- # AI Image Optical Character Recognition (OCR) API Image OCR API that turns photos, scans and screenshots into text. Send an image file or URL, get JSON from ApyHub OCR or Azure Read. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/extract-text-from-image/file` | What it does Uploads an image file and extracts text from it. The response returns a data object co… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/extract-text-from-image/url` | What it does Extracts text from an image located at a URL and returns the OCR result in a data obje… | 500 | ## Endpoint reference ### Extract text from image (file upload) `POST https://api.eu.apyhub.com/apyhub/extract-text-from-image/file` · 500 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `language` | body | string | no | BCP-47 language code of the text in the image. Example: `en`. | | `azure_key` | body | string | no | Example: `azure-key-val`. | | `azure_region` | body | string | no | Example: `westus`. | | `azure_endpoint` | body | string | no | Example: `https://westus.api.cognitive.microsoft.com/`. | | `azure_account_id` | body | string | no | Example: `azure-account-id`. | | `requested_service` | body | string | no | One of: azure, apyhub. Default: `apyhub`. Example: `apyhub`. | | `azure_access_token` | body | string | no | Example: `token-val`. | #### Quickstart Upload an image file to extract text from it. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-text-from-image/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.png" ``` #### What you'll get back Returns a JSON object with a `data` field. The `data` value is an object that may contain `azure` text elements from Azure Vision Read API and/or `apyhub` text elements from ApyHub OCR. ```json { "data": { "azure": {}, "apyhub": {} } } ``` ### Extract text from image (URL input) `POST https://api.eu.apyhub.com/apyhub/extract-text-from-image/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://example.com/receipt.png`. | | `azure.key` | body | string | no | Azure subscription key. Example: `your_azure_speech_or_vision_key`. | | `azure.region` | body | string | no | Azure service region. Example: `westus2`. | | `azure.endpoint` | body | string | no | Azure endpoint URL. Example: `https://westus2.api.cognitive.microsoft.com/`. | | `azure.account_id` | body | string | no | Azure account ID. Example: `account-id-1234`. | | `azure.access_token` | body | string | no | OAuth access token for Azure service. Example: `access_token_value`. | | `language` | body | string | no | BCP-47 language code of the text in the image. Example: `en`. | | `requested_service` | body | string | no | One of: azure, apyhub. Default: `apyhub`. Example: `apyhub`. | #### Quickstart Send an image URL to extract text from it with the default OCR service. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-text-from-image/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.png"}' ``` #### What you'll get back Returns a JSON object with a `data` object field. The `data` object may contain `azure` and/or `apyhub` objects with the extracted text results. ```json { "data": { "apyhub": {}, "azure": {} } } ``` ## About ## What it does The Image OCR API extracts text from images. Upload a binary `file` or send a public image `url`, add an optional BCP-47 `language` code, and get the recognized text back as JSON under `data.apyhub` or `data.azure`. Choose the engine with `requested_service`: `apyhub` (default) or `azure` for Azure Vision Read. You can pass your own Azure credentials in the request when you want to use an existing Azure account. Use this image to text API for receipt capture, scanned forms, screenshot parsing, ID and label photos, and document indexing. The JSON output goes straight into search, classification or validation steps, so text from a photo becomes searchable data without manual retyping. AI agents can call the OCR API through ApyHub MCP to read images inside a workflow. This API returns the raw text in each image. For structured fields such as totals and dates, send receipts to the [AI Document Receipt Data Extraction API](https://apyhub.com/apyhub/service/extract-receipt-data). Working with PDFs? Use the [Extract Text from PDF API](https://apyhub.com/apyhub/service/extract-text-from-pdf) for digital documents, or split scanned pages with the [Convert PDF to Image API](https://apyhub.com/apyhub/service/convert-pdf-pages-to-images) and run each page through OCR. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | ApyHub | 2000 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/extract-text-from-image * * * --- title: Convert Markdown to PDF API slug: convert-markdown-to-pdf url: https://apyhub.com/apyhub/service/convert-markdown-to-pdf provider: ApyHub categories: [File Conversion, Smart Generation] tags: [markdown, pdf-conversion, document-conversion, file-conversion, s3-url] auth: api_key version: 1.0.0 service_type: sync endpoints: 6 atoms: 50 alias: converter-markdown-pdf --- # Convert Markdown to PDF API Convert Markdown to PDF with one API call. Send raw text, a .md file or a URL and get a PDF file or signed download link back. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-markdown-to-pdf/md-url-pdf-url` | What it does Converts a Markdown file available at a URL into a PDF and returns a signed S3 URL for… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-markdown-to-pdf/md-file-pdf-file` | What it does Uploads a Markdown file and returns a downloadable PDF file rendered from that input.… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-markdown-to-pdf/md-file-pdf-url` | What it does Converts an uploaded Markdown file into a PDF and returns a signed S3 URL to the gener… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-markdown-to-pdf/md-raw-pdf-file` | What it does Converts raw Markdown content into a downloadable PDF file. You send the Markdown in t… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-markdown-to-pdf/md-raw-pdf-url` | What it does Converts raw Markdown content into a PDF and returns a signed S3 URL where the generat… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-markdown-to-pdf/md-url-pdf-file` | What it does Converts a Markdown file available at a URL into a PDF and returns the generated PDF a… | 50 | ## Endpoint reference ### URL → PDF `POST https://api.eu.apyhub.com/apyhub/convert-markdown-to-pdf/md-url-pdf-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | URL pointing to a Markdown file. The remote resource must respond with a Content-Type of text/markdown or text/plain and must not exceed 5 MB. Example: `https://assets.apyhub.com/samples/sample.md`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-document`. | #### Quickstart Convert a Markdown file at a public URL into a PDF and return a signed download link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-markdown-to-pdf/md-url-pdf-url?output=my-document" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.md"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a signed S3 URL for the generated PDF file, valid for 5 minutes. ```json { "data": "https://s3.amazonaws.com/bucket/consumer/converter-markdown-pdf/file.pdf?..." } ``` ### File upload → PDF `POST https://api.eu.apyhub.com/apyhub/convert-markdown-to-pdf/md-file-pdf-file` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Markdown file to convert. Must have MIME type text/markdown or text/plain, or a .md file extension. Maximum size 3 MB. | | `output` | query | string | no | Default: `sample-output`. Example: `my-document`. | #### Quickstart Convert a Markdown file to a PDF by uploading the file and choosing an output name. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-markdown-to-pdf/md-file-pdf-file?output=my-document" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.md" ``` #### What you'll get back Returns a downloadable PDF file as binary data, rendered from the Markdown input. ### File upload → PDF `POST https://api.eu.apyhub.com/apyhub/convert-markdown-to-pdf/md-file-pdf-url` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Markdown file to convert. Must have MIME type text/markdown or text/plain, or a .md file extension. Maximum size 3 MB. | | `output` | query | string | no | Default: `sample-output`. Example: `my-document`. | #### Quickstart Upload a Markdown file to generate a PDF and receive a signed download URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-markdown-to-pdf/md-file-pdf-url?output=my-document" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.md" ``` #### What you'll get back Returns a JSON object with a required `data` string field containing a signed S3 URL for the generated PDF file, valid for 5 minutes. ```json { "data": "https://s3.amazonaws.com/bucket/consumer/converter-markdown-pdf/file.pdf?..." } ``` ### Raw Markdown → PDF `POST https://api.eu.apyhub.com/apyhub/convert-markdown-to-pdf/md-raw-pdf-file` · 50 atoms · accepts `text/plain` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | string | yes | Raw Markdown content. Maximum size 5 MB. Example: `# Title ## Section Paragraph text here.`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-document`. | #### Quickstart Convert raw Markdown into a PDF file by sending the Markdown text as plain text. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-markdown-to-pdf/md-raw-pdf-file?output=my-document" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: text/plain" \ --data-binary $'# Title\n\n## Section\n\nParagraph text here.' ``` #### What you'll get back Returns a binary PDF file (`format: binary`) downloadable as the rendered output of your Markdown input. ### Raw Markdown → PDF `POST https://api.eu.apyhub.com/apyhub/convert-markdown-to-pdf/md-raw-pdf-url` · 50 atoms · accepts `text/plain` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | string | yes | Raw Markdown content. Maximum size 5 MB. Example: `# Title ## Section Paragraph text here.`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-document`. | #### Quickstart Send raw Markdown in the request body to generate a PDF link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-markdown-to-pdf/md-raw-pdf-url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: text/plain" \ --data-binary $'# Title\n\n## Section\n\nParagraph text here.' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a signed URL to the generated PDF file. ```json { "data": "https://s3.amazonaws.com/bucket/consumer/converter-markdown-pdf/file.pdf?..." } ``` ### URL → PDF `POST https://api.eu.apyhub.com/apyhub/convert-markdown-to-pdf/md-url-pdf-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | URL pointing to a Markdown file. The remote resource must respond with a Content-Type of text/markdown or text/plain and must not exceed 5 MB. Example: `https://assets.apyhub.com/samples/sample.md`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-document`. | #### Quickstart Convert a Markdown file at a URL into a downloadable PDF. Replace the sample Markdown URL if you want to render your own file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-markdown-to-pdf/md-url-pdf-file?output=my-document" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.md" }' ``` #### What you'll get back Returns a binary PDF file in the response body, downloaded from the Markdown input. ## About ## What it does The Markdown to PDF API turns Markdown into a clean, shareable PDF with one POST request. Use it as a Markdown to PDF converter for READMEs, docs, release notes and reports, with no Pandoc or headless browser to install. Send your content in whichever form you have: - **Raw Markdown** in the request body (up to 5 MB) - **An uploaded file**, either .md or plain text (up to 3 MB) - **A public URL** that serves Markdown or plain text, such as a raw GitHub README (up to 5 MB) Then choose the response: get the PDF file straight back, or receive a signed URL to hand to a user or storage job. The link expires after 5 minutes, so download it promptly. Set the optional `output` parameter to name the file. It fits any stack. Call it from Python, Node.js or a CI pipeline to turn md to pdf on every build. Need more control over layout? [Convert Markdown to HTML](https://apyhub.com/apyhub/service/convert-markdown-to-html) first, adjust the markup, then render it with the [HTML to PDF API](https://apyhub.com/apyhub/service/convert-html-to-pdf). Embed Mermaid diagrams or LaTeX with the [Diagram, Math & Code Render API](https://apyhub.com/callable-labs/service/diagram-math-code-render-api), protect finished files with the [PDF Watermark API](https://apyhub.com/apyhub/service/apply-watermark-on-pdf), or combine documents with [Merge Files to PDF](https://apyhub.com/apyhub/service/merge-files-to-pdf). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-markdown-to-pdf * * * --- title: Timezones Dictionary API slug: list-timezones url: https://apyhub.com/apyhub/service/list-timezones provider: ApyHub categories: [Geolocation, Standard Data] tags: [data, dictionary, timezones] auth: api_key version: 1.0 service_type: sync endpoints: 1 atoms: 5 alias: data-lists-timezone --- # Timezones Dictionary API Get a live list of time zones with country codes, IANA names, current UTC offsets, and abbreviations for scheduling and locale-aware apps. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/apyhub/list-timezones` | What it does Returns a JSON object containing a data array of timezone records with each record’s c… | 5 | ## Endpoint reference ### List all timezones with current UTC offset `GET https://api.eu.apyhub.com/apyhub/list-timezones` · 5 atoms · accepts `application/json` #### Quickstart Fetch the list of timezones with a simple GET request. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/list-timezones" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` array. Each item in the array is an object with `key` (ISO 3166-1 alpha-2 country code), `value` (IANA timezone name), `utc_time` (current UTC offset), and `abbreviation` (an array of timezone abbreviations). ```json { "data": [ { "key": "US", "value": "America/New_York", "utc_time": "UTC -05:0", "abbreviation": ["EST", "EDT"] } ] } ``` ## About ## What it does Time Zone List returns a live list of time zones with their current UTC offsets. Each item includes a country code, an IANA time zone name, the current offset, and any matching abbreviations. Use it when you need a reference dataset for scheduling, calendar logic, region-aware defaults, or UI pickers that map countries to time zones. The offset is computed live, so it reflects daylight saving time changes without you maintaining your own table. The response is a single `data` array of objects. For each time zone entry, you get `key` for the ISO 3166-1 alpha-2 country code, `value` for the IANA timezone name, `utc_time` for the current UTC offset, and `abbreviation` for one or more common timezone abbreviations. If you are building booking flows, attendance tools, delivery planning, or user profile settings, Time Zone List gives you a straightforward source of reference time zone data in a format that is easy to consume. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/list-timezones * * * --- title: Validate File Type API slug: validate-file-type url: https://apyhub.com/apyhub/service/validate-file-type provider: ApyHub categories: [Data Validation, Developer Tools, File Security] tags: [file-validation, mime-type, upload-security, file-detection, document-validation] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 25 alias: file-validator-upload --- # Validate File Type API Validate uploaded files or file URLs against their extension and MIME type. Returns the detected type, a validity flag, and a mismatch message. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/validate-file-type` | What it does Validates an uploaded file by comparing the detected file type against the file extens… | 25 | | POST | `https://api.eu.apyhub.com/apyhub/validate-file-type/url` | What it does Validates a file accessible from a URL by inspecting the downloaded file and comparing… | 25 | ## Endpoint reference ### Validate an uploaded file `POST https://api.eu.apyhub.com/apyhub/validate-file-type` · 25 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | The file to validate. Maximum 100 MB. | #### Quickstart Upload a file to validate its type against its filename extension and declared MIME type. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/validate-file-type" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/report.pdf" ``` #### What you'll get back Returns a JSON object with these required fields: `file_name` (string), `extension` (string), `mime_type` (string or null), `detected_type` (string or null), `is_valid` (boolean), and `message` (string). ```json { "file_name": "report.pdf", "extension": "pdf", "mime_type": "application/pdf", "detected_type": "application/pdf", "is_valid": true, "message": "File is valid" } ``` ### Validate a file from a URL `POST https://api.eu.apyhub.com/apyhub/validate-file-type/url` · 25 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file_url` | body | string (uri) | yes | Direct URL to the file to validate. Must include a recognisable file extension (e.g. .pdf, .jpg, .docx). Example: `https://assets.apyhub.com/samples/sample.pdf`. | #### Quickstart Validate a file by sending its direct URL in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/validate-file-type/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"file_url":"https://assets.apyhub.com/samples/sample.pdf"}' ``` #### What you'll get back Returns a JSON object with `file_url` string, `detected_type` string or null, `is_valid` boolean, and `message` string. ```json { "file_url": "https://assets.apyhub.com/samples/sample.pdf", "detected_type": "application/pdf", "is_valid": true, "message": "File is valid" } ``` ## About ## What it does File Type Validator checks whether an uploaded file matches its filename extension and declared MIME type. Send a file or a file URL, and get back the original filename or URL, the extracted extension, the declared MIME type when provided, the detected MIME type from the file content, a boolean validity flag, and a human-readable message. Use the direct upload endpoint when you receive multipart files from users or partners. The file input accepts a binary file up to 100 MB. The response tells you the file name, lowercased extension, declared MIME type, detected type, and whether the file is valid according to both checks. When you need to validate remote assets, the URL endpoint accepts a direct file URL with a recognisable extension and returns the validated URL, detected type, validity flag, and message. This is useful for upload filters, document intake, attachment checks, and backend file safety rules. You can reject mismatched uploads, flag suspicious content types, or log validation results before passing files into conversion, storage, or processing workflows. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/validate-file-type * * * --- title: Convert YAML to JSON API slug: convert-yaml-to-json url: https://apyhub.com/apyhub/service/convert-yaml-to-json provider: ApyHub categories: [Developer Tools, File Conversion] tags: [yaml-to-json, yaml, data-conversion, developer-tools] auth: api_key version: 1.0.0 service_type: sync endpoints: 9 atoms: 50 alias: converter-yaml-json --- # Convert YAML to JSON API Convert raw YAML, uploaded files, or YAML at a URL into inline JSON, a downloadable file, or a signed S3 URL for config and CI workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-url-json-url` | What it does Converts a YAML file fetched from a publicly accessible URL into JSON and returns a pr… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-raw-json-file` | What it does Converts a raw YAML string into a downloadable JSON file. The request sends the YAML c… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-raw-json-raw` | What it does Converts a raw YAML string in the request body into JSON. The response is either a JSO… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-raw-json-url` | What it does Converts a raw YAML string in the request body into JSON and returns a pre-signed S3 U… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-file-json-file` | What it does Converts an uploaded YAML file into a downloadable JSON file. The request uploads the… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-file-json-raw` | What it does Converts an uploaded YAML file into JSON and returns the converted content inline in t… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-file-json-url` | What it does Converts an uploaded YAML file into JSON and returns a pre-signed S3 URL for the gener… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-url-json-file` | What it does Converts a YAML file fetched from a public URL into a downloadable JSON file. You send… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-url-json-raw` | What it does Converts a YAML file fetched from a publicly accessible URL into inline JSON. The resp… | 50 | ## Endpoint reference ### Convert YAML at URL → S3 signed URL `POST https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-url-json-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a YAML file. Example: `https://assets.apyhub.com/samples/sample.yaml`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Convert a YAML file from a public URL into JSON and return a pre-signed download link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-url-json-url?output=my-converted-data" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.yaml"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL for the converted JSON file. ```json { "data": "https://s3.amazonaws.com/bucket/uuid_sample-output.json?..." } ``` ### Convert raw YAML body → downloadable JSON file `POST https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-raw-json-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Raw YAML string to convert. Example: `name: Alice age: 30`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Convert raw YAML into a downloadable JSON file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-raw-json-file?output=sample-output" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"name: Alice\nage: 30"}' ``` #### What you'll get back Returns a downloadable JSON file as binary content (`string` with `format: "binary"`), containing the converted data. ```text ``` ### Convert raw YAML body → inline JSON `POST https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-raw-json-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Raw YAML string to convert. Example: `name: Alice age: 30`. | #### Quickstart Send raw YAML in the request body to convert it to JSON. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-raw-json-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"name: Alice\nage: 30"}' ``` #### What you'll get back Returns either a JSON object with arbitrary top-level fields, or a JSON array. The schema does not define any specific response keys. ```json { "any": "value" } ``` ### Convert raw YAML body → S3 signed URL `POST https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-raw-json-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Raw YAML string to convert. Example: `name: Alice age: 30`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Convert raw YAML into a JSON file and get back a pre-signed download URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-raw-json-url?output=my-converted-data" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"name: Alice\nage: 30"}' ``` #### What you'll get back Returns a JSON object with a `data` string field. The `data` value is a pre-signed S3 URL pointing to the converted JSON file, valid for 5 minutes. ```json { "data": "https://s3.amazonaws.com/bucket/uuid_sample-output.json?..." } ``` ### Convert uploaded YAML file → downloadable JSON file `POST https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-file-json-file` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | YAML file to convert. Accepted MIME types: application/x-yaml, text/yaml, text/x-yaml, application/octet-stream, binary/octet-stream, text/plain. Files with .yaml or .yml extension are also accepted. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Convert a YAML file into a downloadable JSON file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-file-json-file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.yaml" ``` #### What you'll get back Returns a downloadable JSON file (`binary`) containing the converted data. ```json ``` ### Convert uploaded YAML file → inline JSON `POST https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-file-json-raw` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | YAML file to convert. Accepted MIME types: application/x-yaml, text/yaml, text/x-yaml, application/octet-stream, binary/octet-stream, text/plain. Files with .yaml or .yml extension are also accepted. | #### Quickstart Upload a YAML file to convert it to JSON. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-file-json-raw" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.yaml" ``` #### What you'll get back Returns a JSON object or a JSON array, depending on the converted YAML content. The object form allows any additional properties; the array form contains items of any shape. ```json { "example": "value" } ``` ### Convert uploaded YAML file → S3 signed URL `POST https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-file-json-url` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | YAML file to convert. Accepted MIME types: application/x-yaml, text/yaml, text/x-yaml, application/octet-stream, binary/octet-stream, text/plain. Files with .yaml or .yml extension are also accepted. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Upload a YAML file to convert it into a JSON file and return a temporary download link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-file-json-url?output=my-converted-data" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.yaml" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL for the converted JSON file, valid for 5 minutes. ```json { "data": "https://s3.amazonaws.com/bucket/uuid_sample-output.json?..." } ``` ### Convert YAML at URL → downloadable JSON file `POST https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-url-json-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a YAML file. Example: `https://assets.apyhub.com/samples/sample.yaml`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Convert a YAML file from a public URL and download the resulting JSON file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-url-json-file?output=my-converted-data" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.yaml"}' ``` #### What you'll get back Returns a downloadable JSON file as binary content containing the converted data. ```json (binary file) ``` ### Convert YAML at URL → inline JSON `POST https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-url-json-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a YAML file. Example: `https://assets.apyhub.com/samples/sample.yaml`. | #### Quickstart Convert a YAML file from a public URL into JSON by sending the file URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-yaml-to-json/yaml-url-json-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.yaml"}' ``` #### What you'll get back Returns a JSON object or a JSON array, depending on the input and conversion result. The response schema does not declare any fixed top-level fields. ```json {} ``` ## About ## What it does YAML to JSON Converter turns YAML into JSON from a raw request body, an uploaded file, or a public URL. You can receive the result inline, as a downloadable JSON file, or as a pre-signed S3 URL. Use it when your app needs to ingest YAML config, migration data, or partner files and hand back JSON to another service. Send raw YAML in `content`, or provide a YAML `file` upload, or pass a public `url` to a YAML document. For URL- and file-based flows, you can also set the optional `output` query parameter to name the generated artifact. The inline endpoints return parsed JSON as an object or array. The file endpoints return a downloadable JSON file. The URL endpoints return a `data` field containing a pre-signed S3 URL that points to the converted JSON file and expires after 5 minutes. YAML to JSON Converter is a fit for build pipelines, content ingestion, and backend tooling where you need a predictable JSON form of YAML without writing your own parser. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-yaml-to-json * * * --- title: Convert PES to ZIP API slug: convert-pes-to-zip url: https://apyhub.com/apyhub/service/convert-pes-to-zip provider: ApyHub categories: [File Conversion, File Manipulation] tags: [pes-conversion, zip-archive, embroidery-files, file-conversion, file-compression] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 50 alias: converter-pes-zip --- # Convert PES to ZIP API Convert a .pes embroidery file into a downloadable ZIP archive. Useful for packaging embroidery assets for transport or downstream file workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-pes-to-zip` | What it does Converts an uploaded PES embroidery file into a ZIP archive and returns the archive as… | 50 | ## Endpoint reference ### Convert a PES file to a ZIP archive `POST https://api.eu.apyhub.com/apyhub/convert-pes-to-zip` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | The .pes embroidery file to convert. Must have a .pes extension. | | `output` | query | string | no | Default: `sample-output`. | #### Quickstart Upload a `.pes` embroidery file to convert it into a ZIP archive. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-pes-to-zip?output=sample-output.zip" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.pes" ``` #### What you'll get back Returns a downloadable ZIP archive as a binary response body. ## About ## What it does PES to ZIP Converter turns a `.pes` embroidery file into a downloadable ZIP archive. Send the PES file in the request body, and you get a binary ZIP file back. Use it when you need to package embroidery artwork for download, transport, or downstream processing in a format that is easier to move through file pipelines. The endpoint is specific about input: the uploaded file must have a `.pes` extension. The response is a ZIP archive containing the PES file, returned as binary output. That makes PES to ZIP Converter useful in automation flows where you want to normalize embroidery assets before storing them, attaching them to jobs, or handing them off to another system that expects compressed archives. It’s a simple file transformation endpoint with a narrow contract, which keeps integration straightforward. If your application handles embroidery design uploads, this service gives you a predictable way to convert a single PES file into a ZIP download without additional parsing or transformation logic on your side. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-pes-to-zip * * * --- title: Convert PDF to PowerPoint API slug: convert-pdf-to-powerpoint url: https://apyhub.com/apyhub/service/convert-pdf-to-powerpoint provider: ApyHub categories: [File Conversion, File Manipulation] tags: [pdf, ppt, pptx, sync] auth: api_key version: 1.0.0 service_type: sync endpoints: 6 atoms: 150 alias: pdf-to-ppt-sync --- # Convert PDF to PowerPoint API Convert PDFs to PPTX from a file upload, public URL, or base64 input. Returns a downloadable presentation file or a download_url. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-pdf-to-powerpoint/base64/url` | What it does Converts a PDF provided as a base64-encoded string into a PowerPoint file and returns… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/convert-pdf-to-powerpoint/file/download` | What it does Uploads a PDF file and returns the converted PowerPoint file as a binary download. Req… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/convert-pdf-to-powerpoint/file/url` | What it does Converts an uploaded PDF file into a PowerPoint presentation and returns a download UR… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/convert-pdf-to-powerpoint/url/download` | What it does Converts a PDF available at a public URL into a PowerPoint file and returns the result… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/convert-pdf-to-powerpoint/url/url` | What it does Converts a PDF available at a URL into a PowerPoint file and returns a JSON object con… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/convert-pdf-to-powerpoint/base64/download` | What it does Converts a PDF provided as base64-encoded content into a downloadable PowerPoint file.… | 150 | ## Endpoint reference ### Convert PDF to PowerPoint (base64 → S3 URL) `POST https://api.eu.apyhub.com/apyhub/convert-pdf-to-powerpoint/base64/url` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `pdf_base64` | body | string | yes | | #### Quickstart Convert a PDF from a Base64 string into a PowerPoint by sending the `pdf_base64` value in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-pdf-to-powerpoint/base64/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"pdf_base64":"JVBERi0xLjQKJ..."}' ``` #### What you'll get back Returns a JSON object with an optional `download_url` string field containing the generated PPTX file URL. ```json { "download_url": "https://s3.amazonaws.com/bucket/presentation.pptx" } ``` ### Convert PDF to PowerPoint (file upload → download) `POST https://api.eu.apyhub.com/apyhub/convert-pdf-to-powerpoint/file/download` · 150 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | PDF file to convert. Max 10 MB. Must be a valid, non-password-protected PDF. | #### Quickstart Upload a PDF to convert it to PowerPoint. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-pdf-to-powerpoint/file/download" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.pdf" ``` #### What you'll get back Returns a binary file containing the converted PowerPoint presentation. ### Convert PDF to PowerPoint (file upload → S3 URL) `POST https://api.eu.apyhub.com/apyhub/convert-pdf-to-powerpoint/file/url` · 150 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | PDF file to convert. Max 10 MB. | #### Quickstart Upload a PDF file to convert it into a PowerPoint presentation. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-pdf-to-powerpoint/file/url" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.pdf" ``` #### What you'll get back Returns a JSON object with a `download_url` string field containing the URI where the converted `.pptx` file can be downloaded. ```json { "download_url": "https://s3.amazonaws.com/bucket/presentation.pptx" } ``` ### Convert PDF to PowerPoint (URL → download) `POST https://api.eu.apyhub.com/apyhub/convert-pdf-to-powerpoint/url/download` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file_url` | body | string (uri) | yes | Publicly accessible PDF URL. Must point to a .pdf file. Example: `https://assets.apyhub.com/samples/sample.pdf`. | #### Quickstart Convert a PDF from a public URL into PowerPoint by sending the PDF link in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-pdf-to-powerpoint/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"file_url":"https://assets.apyhub.com/samples/sample.pdf"}' ``` #### What you'll get back Returns a binary file stream containing the converted PowerPoint file. ### Convert PDF to PowerPoint (URL → S3 URL) `POST https://api.eu.apyhub.com/apyhub/convert-pdf-to-powerpoint/url/url` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file_url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.pdf`. | #### Quickstart Convert a PDF from a public URL to a PowerPoint file by sending the PDF link in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-pdf-to-powerpoint/url/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"file_url":"https://assets.apyhub.com/samples/sample.pdf"}' ``` #### What you'll get back Returns a JSON object with a `download_url` string field containing the URL of the generated `.pptx` file. ```json { "download_url": "https://s3.amazonaws.com/bucket/presentation.pptx" } ``` ### Convert PDF to PowerPoint (base64 → download) `POST https://api.eu.apyhub.com/apyhub/convert-pdf-to-powerpoint/base64/download` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `pdf_base64` | body | string | yes | Base64-encoded PDF content. | #### Quickstart Convert a PDF from base64-encoded input into a PowerPoint file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-pdf-to-powerpoint/base64/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"pdf_base64":"JVBERi0xLjQKJc..."}' ``` #### What you'll get back Returns a binary file response which is the converted PowerPoint download. ## About ## What it does PDF to PowerPoint Converter turns a PDF into a .pptx file. Send a PDF as a base64 string, a public PDF URL, or a binary file upload, and get the converted presentation back as either a downloadable file or a `download_url`. Use PDF to PowerPoint Converter when you need to reuse report pages, slide decks, or other static PDFs in presentation workflows. The service accepts `pdf_base64`, `file`, or `file_url`, depending on the endpoint you choose. For file uploads, the PDF must be valid, and the upload endpoint documents a 10 MB limit; one variant also requires the PDF to be non-password-protected. The responses are simple and predictable. If you choose a download endpoint, you receive the converted PowerPoint as binary output. If you choose a URL endpoint, you receive a `download_url` pointing to the generated `.pptx` file in storage. This is a fit for automating document repackaging, converting customer-facing PDFs into editable slide decks, or piping generated presentations into downstream storage and delivery steps. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-pdf-to-powerpoint * * * --- title: AI Audio Language Detection API slug: ai-detect-audio-language url: https://apyhub.com/apyhub/service/ai-detect-audio-language provider: ApyHub categories: [Artificial Intelligence, Audio Processing] tags: [language-detection, audio-processing, speech, locale-detection] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-audio-detect-language --- # AI Audio Language Detection API Detect the spoken language in an audio file or public URL. Returns a locale code and confidence score for transcription routing and voice apps. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/ai-detect-audio-language/file` | What it does Detects the language of an uploaded audio file. The request sends an audio file binary… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/ai-detect-audio-language/url` | What it does Detects the language of an audio file provided as a publicly accessible URL and return… | 500 | ## Endpoint reference ### Detect audio language (file upload) `POST https://api.eu.apyhub.com/apyhub/ai-detect-audio-language/file` · 500 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Audio file binary (WAV, MP3, etc.). | #### Quickstart Upload an audio file to detect its language. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/ai-detect-audio-language/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/audio.mp3" ``` #### What you'll get back Returns a JSON object with a `data` object. Inside `data`, `azure.language` is the detected language locale code and `azure.confidence` is the detection confidence level from `0.0` to `1.0`. ```json { "data": { "azure": { "language": "en-US", "confidence": 0.98 } } } ``` ### Detect audio language (URL input) `POST https://api.eu.apyhub.com/apyhub/ai-detect-audio-language/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL of the audio file. Example: `https://example.com/audio/sample.mp3`. | #### Quickstart Send the audio file URL to detect its language. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/ai-detect-audio-language/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample-speech.mp3"}' ``` #### What you'll get back Returns a JSON object with a `data` object. Inside `data`, `azure` is an object with the detected `language` locale code and `confidence` score. ```json { "data": { "azure": { "language": "en-US", "confidence": 0.98 } } } ``` ## About ## What it does Audio Language Detector identifies the spoken language in an audio file and returns a locale code with a confidence score. Send a WAV, MP3, or another supported audio file, or point the API at a publicly accessible audio URL. Use it when you need to route recordings to the right transcription pipeline, pre-sort call-center audio by language, or add language-aware logic to voice apps before transcription starts. The API is useful when you only need a fast language check and not a full transcript. The `/file` endpoint accepts a binary `file` upload in the request body. The `/url` endpoint accepts a public `url` to the audio asset. Both endpoints return `data.azure.language` as a locale such as `en-US`, along with `data.azure.confidence` as a score from 0.0 to 1.0. `Audio Language Detector` is a good fit when you want a lightweight classification step for audio ingestion, moderation, or localization workflows without building your own model pipeline. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/ai-detect-audio-language * * * --- title: MP3 to WAV Converter API slug: mp3-to-wav-conversion url: https://apyhub.com/apyhub/service/mp3-to-wav-conversion provider: ApyHub categories: [Audio Processing, File Conversion] tags: [audio-conversion, mp3-to-wav, wav, audio-processing, file-conversion] auth: api_key version: 1.0 service_type: sync endpoints: 4 atoms: 100 alias: audio-converter-mp3-wav --- # MP3 to WAV Converter API MP3 to WAV API: upload an MP3 or send its URL and get an uncompressed WAV file or signed link, ready for editing or speech to text. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/mp3-to-wav-conversion/multi-part/download` | What it does Converts an uploaded MP3 file to WAV format and returns the converted file as a binary… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/mp3-to-wav-conversion/multi-part/link` | What it does Converts an uploaded MP3 audio file to WAV format using a multipart request. The respo… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/mp3-to-wav-conversion/url/download` | What it does Converts an audio file from a publicly accessible URL into WAV format and returns the… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/mp3-to-wav-conversion/url/link` | What it does Converts an audio file available at a URL into a WAV file. You send the source file UR… | 100 | ## Endpoint reference ### MP3 to WAV Conversion `POST https://api.eu.apyhub.com/apyhub/mp3-to-wav-conversion/multi-part/download` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | MP3 audio file (max 100 MB). | | `output` | query | string | no | Example: `output`. | #### Quickstart Upload an MP3 file and get the converted WAV file back. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/mp3-to-wav-conversion/multi-part/download?output=output" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/audio.mp3" ``` #### What you'll get back Returns a binary file response (`string` with `format: binary`), which is the converted WAV audio. ### MP3 to WAV Conversion `POST https://api.eu.apyhub.com/apyhub/mp3-to-wav-conversion/multi-part/link` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | MP3 audio file (max 100 MB). | | `output` | query | string | no | Example: `output`. | #### Quickstart Upload an MP3 file and get back a WAV download URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/mp3-to-wav-conversion/multi-part/link" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/audio.mp3" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI for the converted WAV file. ```json { "data": "https://example.com/output.wav" } ``` ### MP3 to WAV Conversion `POST https://api.eu.apyhub.com/apyhub/mp3-to-wav-conversion/url/download` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL of the source audio file. Example: `https://assets.apyhub.com/samples/sample.wav`. | | `output` | query | string | no | Example: `output`. | #### Quickstart Convert an MP3 from a public URL into WAV and download the resulting file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/mp3-to-wav-conversion/url/download?output=output" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.mp3"}' ``` #### What you'll get back Returns binary file content (`string` with `format: binary`) — the converted WAV audio itself. ### MP3 to WAV Conversion `POST https://api.eu.apyhub.com/apyhub/mp3-to-wav-conversion/url/link` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL of the source audio file. Example: `https://assets.apyhub.com/samples/sample.wav`. | | `output` | query | string | no | Example: `output`. | #### Quickstart Convert an MP3 from a public URL to WAV by sending the source file URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/mp3-to-wav-conversion/url/link?output=output" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.mp3"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the URI of the converted WAV file. ```json { "data": "https://..." } ``` ## About ## What it does The MP3 to WAV API converts MP3 audio into uncompressed WAV, the format most editing tools, speech recognition systems, and audio analysis libraries expect. Send an MP3 as a binary `file` upload (up to 100 MB) or pass a public `url`. You get back the WAV file as a binary response, or a signed link in `data`. Four endpoints cover both inputs and both outputs. Use the upload endpoints for files already in your app and the URL endpoints for audio in cloud storage. The download endpoints return the WAV in the same call, and the link endpoints suit backends that fetch results later. The optional `output` query parameter sets the output name. Developers use this MP3 to WAV converter to prepare audio for transcription, feed voice clips into analysis and machine learning pipelines, and load tracks into editors or older systems that only read WAV. It takes the place of an FFmpeg MP3 to WAV step on your own servers. Plan for larger files: WAV is uncompressed, so the output is several times the size of the MP3. Pairs well with: send the result to the [Convert Speech to Text API](https://apyhub.com/apyhub/service/transcribe-speech-to-text), which takes WAV input, pull audio out of video files with the [Audio Extractor from Video API](https://apyhub.com/apyhub/service/extract-audio-from-video), or compress back to MP3 with the [WAV to MP3 Converter API](https://apyhub.com/apyhub/service/convert-wav-to-mp3). The MP3 to WAV API is also callable by AI agents through ApyHub MCP. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/mp3-to-wav-conversion * * * --- title: Talk to PDF API slug: ask-question-about-pdf url: https://apyhub.com/apyhub/service/ask-question-about-pdf provider: ApyHub categories: [Artificial Intelligence, Data Extraction, Smart Generation] tags: [ai, answer, pdf, qna, question] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 200 alias: talk-to-pdf-api --- # Talk to PDF API Ask natural-language questions about an uploaded PDF or PDF URL and get an answer string back. Built for document search, review, and support. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/ask-question-about-pdf/file` | What it does Uploads a PDF and a natural-language question about that document, then returns the mo… | 200 | | POST | `https://api.eu.apyhub.com/apyhub/ask-question-about-pdf/url` | What it does Submits a public PDF URL and a natural-language question, then returns a text answer b… | 200 | ## Endpoint reference ### Ask a question about an uploaded PDF `POST https://api.eu.apyhub.com/apyhub/ask-question-about-pdf/file` · 200 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | PDF file to query. Maximum 10 MB. Must be a valid, non-password-protected PDF. | | `query` | body | string | yes | Natural-language question about the document content. Example: `What was the total revenue in Q3?`. | #### Quickstart Upload a PDF and ask a question about its contents. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/ask-question-about-pdf/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.pdf" \ -F "query=What was the total revenue in Q3?" ``` #### What you'll get back Returns a JSON object with an `answer` string field containing the model’s response. ```json { "answer": "The total revenue in Q3 was $1.2 million." } ``` ### Ask a question about a PDF at a URL `POST https://api.eu.apyhub.com/apyhub/ask-question-about-pdf/url` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `query` | body | string | yes | Natural-language question about the document content. Example: `What is the minimum contrast ratio required for normal text?`. | | `file_url` | body | string (uri) | yes | Publicly accessible PDF URL. Must end in .pdf. Example: `https://assets.apyhub.com/samples/sample.pdf`. | #### Quickstart Ask a question about a PDF by sending its public URL and your question. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/ask-question-about-pdf/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "file_url": "https://assets.apyhub.com/samples/sample.pdf", "query": "What is the minimum contrast ratio required for normal text?" }' ``` #### What you'll get back Returns a JSON object with an `answer` string field containing the model's response to your question. ```json { "answer": "The minimum contrast ratio required for normal text is 4.5:1." } ``` ## About ## What it does PDF Question Answering lets you send a PDF and ask a natural-language question about its contents. It returns an `answer` string based on the document you provide, so you can extract specific facts without building your own parser or retrieval pipeline. Use `POST /file` when you have the PDF as an uploaded file. Send a binary `file` up to 10 MB and a `query` string up to 2000 characters. Use `POST /url` when the PDF is already hosted online; send a public `.pdf` URL in `file_url` plus the same `query` field. In both cases, the response includes an `answer` field with the model's answer. This is a good fit for document search, internal knowledge assistants, contract review, and support workflows where users need a direct answer from a specific PDF. Ask for totals, dates, requirements, definitions, or other details from reports, manuals, policies, and forms. PDF Question Answering is useful when you want a lightweight AI layer over documents without converting them into another format first. Send the file or URL, ask the question, and use the returned answer in your app or automation. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/ask-question-about-pdf * * * --- title: Merge Files to PDF API slug: merge-files-to-pdf url: https://apyhub.com/apyhub/service/merge-files-to-pdf provider: ApyHub categories: [File Conversion, File Manipulation] tags: [pdf, convert, multiple] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 150 alias: convert-to-pdf --- # Merge Files to PDF API Merge uploaded files or public file URLs into a single PDF. Returns a download or an S3 URL, covering documents, images, spreadsheets, and more. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/merge-files-to-pdf/url/download` | What it does Converts the files referenced by the provided URLs into PDF format and merges them int… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/merge-files-to-pdf/url/url` | What it does Converts the files referenced by the provided URLs into PDF and merges them into a sin… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/merge-files-to-pdf/file/download` | What it does Converts one or more uploaded files to PDF and merges them into a single downloadable… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/merge-files-to-pdf/file/url` | What it does Converts uploaded files into a single PDF and returns a URL to the generated file. The… | 150 | ## Endpoint reference ### Convert and merge files to PDF (URLs → download) `POST https://api.eu.apyhub.com/apyhub/merge-files-to-pdf/url/download` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file_urls` | body | array of string | yes | Publicly accessible file URLs to convert and merge, in order. Max 10, 100 MB each. Supported types: docx, xlsx, pptx, doc, xls, ppt, odt, ods, odp, csv, txt, png, jpg, jpeg, gif, bmp, tiff, html, htm… | | `output` | query | string | no | | #### Quickstart Merge a list of public file URLs into a PDF and download the result. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/merge-files-to-pdf/url/download?output=file" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "file_urls": [ "https://assets.apyhub.com/samples/sample.pdf", "https://assets.apyhub.com/samples/sample.docx" ] }' ``` #### What you'll get back Returns a binary file containing the merged PDF. ### Convert and merge files to PDF (URLs → S3 URL) `POST https://api.eu.apyhub.com/apyhub/merge-files-to-pdf/url/url` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file_urls` | body | array of string | yes | Publicly accessible file URLs to convert and merge, in order. Max 10. Example: `["https://assets.apyhub.com/samples/sample.pdf","https://assets.apyhub.com/samp…`. | | `output` | query | string | no | | #### Quickstart Merge up to 10 public file URLs into a single PDF and get back a download URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/merge-files-to-pdf/url/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "file_urls": [ "https://assets.apyhub.com/samples/sample.pdf", "https://assets.apyhub.com/samples/sample.docx" ] }' ``` #### What you'll get back Returns a JSON object with a `url` string field containing the download URL of the merged PDF. ```json { "url": "https://s3.amazonaws.com/bucket/converted.pdf" } ``` ### Convert and merge files to PDF (file upload → download) `POST https://api.eu.apyhub.com/apyhub/merge-files-to-pdf/file/download` · 150 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `files` | body | array of string | no | One or more files to convert and merge. At least one files entry or file_urls URL is required. Max 10 total across both fields, 100 MB each. Supported types: docx, xlsx, pptx, doc, xls, ppt, odt, ods… | | `output` | query | string | no | Example: `merged-report`. | #### Quickstart Upload one or more files to merge them into a PDF and set the output name with a query parameter. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/merge-files-to-pdf/file/download?output=merged-report" \ -H "apy-token: $APY_TOKEN" \ -F "files=@/path/to/file1.docx" \ -F "files=@/path/to/file2.pdf" ``` #### What you'll get back Returns a binary file containing the merged PDF output. ### Convert and merge files to PDF (file upload → S3 URL) `POST https://api.eu.apyhub.com/apyhub/merge-files-to-pdf/file/url` · 150 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `files` | body | array of string | no | Files to convert. At least one files entry or file_urls URL required. Max 10 total, 100 MB each. | | `output` | query | string | no | | #### Quickstart Upload one or more files to merge them into a PDF. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/merge-files-to-pdf/file/url" \ -H "apy-token: $APY_TOKEN" \ -F "files=@/path/to/file1.pdf" \ -F "files=@/path/to/file2.docx" ``` #### What you'll get back Returns a JSON object with a `url` string field containing the downloadable PDF location. ```json { "url": "https://s3.amazonaws.com/bucket/converted.pdf" } ``` ## About ## What it does File Merge to PDF combines multiple files into a single PDF, whether you send local uploads or publicly accessible file URLs. It accepts documents, spreadsheets, presentations, text files, images, HTML, Markdown, and existing PDFs, then returns the merged result as a PDF download or an S3 URL. Use the `files` input when you want to upload content directly, or `file_urls` when the source files already live on the web. The service preserves the order you send, so you can build a report, packet, or appendix in the exact sequence you need. Each request supports up to 10 total files, with 100 MB per file. `File Merge to PDF` is a good fit for workflows like generating client-facing reports from mixed source files, combining supporting documents into one archive, or turning image-based submissions into a single PDF for review. If you need the output immediately, use the download endpoints; if you want a stored result, use the endpoints that return a URL. The response is either the merged PDF binary or an object containing a `url` field, depending on the endpoint you call. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/merge-files-to-pdf * * * --- title: Convert JSON to Prisma Schema API slug: convert-json-to-prisma-schema url: https://apyhub.com/apyhub/service/convert-json-to-prisma-schema provider: ApyHub categories: [Developer Tools, Smart Generation] tags: [prisma, json-conversion, schema-generation, database-modeling, developer-tools] auth: api_key version: 1.0.0 service_type: sync endpoints: 9 atoms: 50 alias: converter-json-prisma --- # Convert JSON to Prisma Schema API Convert JSON from a body, file, or URL into Prisma schema text or a .prisma file. Supports PostgreSQL, MySQL, SQLite, and MongoDB providers. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-url-prisma-url` | What it does Converts the JSON resource available at the provided URL into a Prisma schema file and… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-file-prisma-raw` | What it does Converts an uploaded JSON file into a Prisma schema and returns the result as a JSON o… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-file-prisma-url` | What it does Converts an uploaded JSON file into a Prisma schema and returns a pre-signed S3 URL fo… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-raw-prisma-file` | What it does Converts the supplied JSON content into a downloadable Prisma schema (.prisma) file. T… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-raw-prisma-raw` | What it does Converts the supplied JSON data into a Prisma schema and returns the generated result… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-raw-prisma-url` | What it does Converts the provided JSON payload into a Prisma schema and returns a pre-signed S3 UR… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-file-prisma-file` | What it does Converts an uploaded JSON file into a downloadable Prisma schema file (.prisma). The r… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-url-prisma-file` | What it does Converts the JSON file available at the provided URL into a downloadable Prisma schema… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-url-prisma-raw` | What it does Converts the JSON document at the provided URL into a Prisma schema and returns the ge… | 50 | ## Endpoint reference ### Convert JSON at URL → pre-signed S3 URL for .prisma file `POST https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-url-prisma-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a JSON resource. Example: `https://assets.apyhub.com/samples/sample.json`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | | `provider` | query | string | no | One of: postgresql, mysql, sqlite, mongodb. Default: `postgresql`. | | `rootModelName` | query | string | no | Example: `User`. | #### Quickstart Convert a JSON file from a public URL into a Prisma schema by sending the source URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-url-prisma-url?output=my-schema&provider=postgresql" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL to the converted `.prisma` file. ```json { "data": "https://s3.amazonaws.com/bucket/uuid_sample-output.prisma?..." } ``` ### Convert uploaded JSON file → Prisma schema `POST https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-file-prisma-raw` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | JSON file to convert (MIME type must be application/json). | | `provider` | query | string | no | One of: postgresql, mysql, sqlite, mongodb. Default: `postgresql`. | | `rootModelName` | query | string | no | Example: `User`. | #### Quickstart Upload a JSON file to generate a Prisma schema. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-file-prisma-raw" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.json" ``` #### What you'll get back Returns a JSON object with `meta`, `enums`, `models`, `schema`, `warnings`, and `confidence` fields. `meta` is an object with `enumCount`, `fieldCount`, and `modelCount`; `schema` is the full Prisma schema text; the other top-level fields contain the generated schema details and any warnings. ```json { "meta": { "enumCount": 0, "fieldCount": 0, "modelCount": 1 }, "enums": [], "models": [], "schema": "model User {\n id Int @id @default(autoincrement())\n}", "warnings": [], "confidence": 0.98 } ``` ### Convert uploaded JSON file → pre-signed S3 URL for .prisma file `POST https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-file-prisma-url` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | JSON file to convert (MIME type must be application/json). | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | | `provider` | query | string | no | One of: postgresql, mysql, sqlite, mongodb. Default: `postgresql`. | | `rootModelName` | query | string | no | Example: `User`. | #### Quickstart Upload a JSON file to convert it into a Prisma schema, using the default PostgreSQL provider and sample output name. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-file-prisma-url?output=my-schema&provider=postgresql&rootModelName=User" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.json" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL to the converted Prisma file. ```json { "data": "https://s3.amazonaws.com/bucket/uuid_sample-output.prisma?..." } ``` ### Convert raw JSON body → downloadable .prisma file `POST https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-raw-prisma-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | any | yes | The request body can be either: Plain object — the entire body is treated as the JSON data to convert: { "id": 1, "name": "Alice" } Wrapped format — use json for data and config for inline generati… | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | | `provider` | query | string | no | One of: postgresql, mysql, sqlite, mongodb. Default: `postgresql`. | | `rootModelName` | query | string | no | Example: `User`. | #### Quickstart Convert a JSON object into a Prisma schema file with the default PostgreSQL provider. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-raw-prisma-file" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"id":1,"name":"Alice"}' ``` #### What you'll get back Returns a downloadable Prisma schema file as a binary response (`string` with `format: binary`). The response body is the generated `.prisma` file content. ### Convert raw JSON body → Prisma schema `POST https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-raw-prisma-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | any | yes | The request body can be either: Plain object — the entire body is treated as the JSON data to convert: { "id": 1, "name": "Alice" } Wrapped format — use json for data and config for inline generati… | | `provider` | query | string | no | One of: postgresql, mysql, sqlite, mongodb. Default: `postgresql`. | | `rootModelName` | query | string | no | Example: `User`. | #### Quickstart Send your JSON data in the request body to generate a Prisma schema. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-raw-prisma-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"id":1,"name":"Alice"}' ``` #### What you'll get back Returns a JSON object with these top-level fields: `meta` (object), `enums` (array), `models` (array), `schema` (string), `warnings` (array), and `confidence` (number). ```json { "meta": { "enumCount": 0, "fieldCount": 2, "modelCount": 1 }, "enums": [], "models": [], "schema": "model User {\n id Int\n name String\n}", "warnings": [], "confidence": 1 } ``` ### Convert raw JSON body → pre-signed S3 URL for .prisma file `POST https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-raw-prisma-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | any | yes | The request body can be either: Plain object — the entire body is treated as the JSON data to convert: { "id": 1, "name": "Alice" } Wrapped format — use json for data and config for inline generati… | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | | `provider` | query | string | no | One of: postgresql, mysql, sqlite, mongodb. Default: `postgresql`. | | `rootModelName` | query | string | no | Example: `User`. | #### Quickstart Convert a small JSON object to a Prisma schema and download the generated file URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-raw-prisma-url?output=my-schema&provider=postgresql&rootModelName=User" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"id":1,"name":"Alice"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL to the converted `.prisma` file. ```json { "data": "https://s3.amazonaws.com/bucket/uuid_sample-output.prisma?..." } ``` ### Convert uploaded JSON file → downloadable .prisma file `POST https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-file-prisma-file` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | JSON file to convert (MIME type must be application/json). | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | | `provider` | query | string | no | One of: postgresql, mysql, sqlite, mongodb. Default: `postgresql`. | | `rootModelName` | query | string | no | Example: `User`. | #### Quickstart Convert a JSON file into a Prisma schema by uploading the file and choosing the output format. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-file-prisma-file?output=my-schema&provider=postgresql&rootModelName=User" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.json" ``` #### What you'll get back Returns a downloadable Prisma schema file as a binary `.prisma` response. ### Convert JSON at URL → downloadable .prisma file `POST https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-url-prisma-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a JSON resource. Example: `https://assets.apyhub.com/samples/sample.json`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-schema`. | | `provider` | query | string | no | One of: postgresql, mysql, sqlite, mongodb. Default: `postgresql`. | | `rootModelName` | query | string | no | Example: `User`. | #### Quickstart Generate a Prisma schema file from a public JSON URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-url-prisma-file?output=my-schema&provider=postgresql&rootModelName=User" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns a downloadable Prisma schema file as binary content (`.prisma`). ### Convert JSON at URL → Prisma schema `POST https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-url-prisma-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a JSON resource. Example: `https://assets.apyhub.com/samples/sample.json`. | | `provider` | query | string | no | One of: postgresql, mysql, sqlite, mongodb. Default: `postgresql`. | | `rootModelName` | query | string | no | Example: `User`. | #### Quickstart Convert a JSON file URL into a Prisma schema by sending the JSON URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-prisma-schema/json-url-prisma-raw?provider=postgresql" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns a JSON object with `meta`, `enums`, `models`, `schema`, `warnings`, and `confidence` fields. `meta` is an object with `enumCount`, `fieldCount`, and `modelCount`; `schema` is a string containing the full Prisma schema text. ```json { "meta": { "enumCount": 0, "fieldCount": 0, "modelCount": 0 }, "enums": [], "models": [], "schema": "string", "warnings": [], "confidence": 0 } ``` ## About ## What it does JSON to Prisma Schema converts JSON into a Prisma schema, either from a raw JSON payload, an uploaded JSON file, or a JSON resource at a public URL. You can get the result back as raw JSON, a downloadable `.prisma` file, or a pre-signed S3 URL to the generated file. Use it when you need to turn example data or an existing JSON payload into a starting Prisma data model. The service accepts JSON as a request body, a binary JSON file, or a `url` pointing to a publicly accessible JSON resource. For generation options, it supports `provider` (`postgresql`, `mysql`, `sqlite`, or `mongodb`) and an optional `rootModelName`. Some endpoints also accept an `output` name for the generated file. The raw response includes the generated `schema` text plus supporting `meta`, `enums`, `models`, `warnings`, and `confidence` fields. That makes it useful when you want to inspect or post-process the generated schema in your own pipeline. If you prefer file delivery, the file endpoints return the `.prisma` content directly, or a `data` URL pointing to the saved file. A typical use case is bootstrapping a Prisma model from API fixtures, import samples, or a JSON export before you wire it into a database migration workflow. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-json-to-prisma-schema * * * --- title: Convert JSON to Markdown API slug: convert-json-to-markdown url: https://apyhub.com/apyhub/service/convert-json-to-markdown provider: ApyHub categories: [Developer Tools, File Conversion, Smart Generation] tags: [json-to-markdown, markdown-conversion, json-formatting, document-generation, file-conversion, developer-tools] auth: api_key version: 1.0.0 service_type: sync endpoints: 9 atoms: 50 alias: converter-json-markdown --- # Convert JSON to Markdown API Convert JSON objects, URLs, or files into formatted Markdown. Returns raw text, a .md download, or a pre-signed file link for docs and reports. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-raw-md-raw` | What it does Converts the raw JSON request body into a Markdown string. The endpoint accepts a non-… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-raw-md-url` | What it does Converts a raw JSON object in the request body into Markdown and returns a pre-signed… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-url-md-raw` | What it does Fetches a JSON resource from a public URL and converts that JSON into raw Markdown tex… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-file-md-url` | What it does Converts an uploaded JSON file into Markdown and returns a pre-signed S3 URL where the… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-url-md-file` | What it does Converts the JSON available at a public URL into a downloadable Markdown file. You sen… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-url-md-url` | What it does Converts the JSON resource at a publicly accessible URL into a Markdown file and retur… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-file-md-file` | What it does Converts an uploaded JSON file into a Markdown file and returns the generated .md cont… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-file-md-raw` | What it does Uploads a JSON file and converts its contents into Markdown, returning the result as r… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-raw-md-file` | What it does Converts the raw JSON request body into a Markdown .md file and returns the file conte… | 50 | ## Endpoint reference ### Convert raw JSON body to Markdown `POST https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-raw-md-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | object | yes | Any non-empty JSON object. The entire request body is used as-is as the conversion input — there are no fixed or required properties. Do not treat any example property names (name, age, etc.) as requ… | #### Quickstart Send any non-empty JSON object to convert it into Markdown. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-raw-md-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"title":"Weekly update","status":"done"}' ``` #### What you'll get back Returns a plain Markdown string, not a JSON object. The response body is the generated Markdown text. ### Convert raw JSON body to Markdown `POST https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-raw-md-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | object | yes | Any non-empty JSON object. The entire request body is used as-is as the conversion input — there are no fixed or required properties. Do not treat any example property names (name, age, etc.) as requ… | | `output` | query | string | no | Default: `sample-output`. Example: `my-document`. | #### Quickstart Send a JSON object to convert it into Markdown and get back a pre-signed download URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-raw-md-url?output=my-document" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"key1":"value1","key2":123}' ``` #### What you'll get back Returns a JSON object with a single `data` string field. That `data` value is a pre-signed S3 URL where you can download the generated Markdown file. ```json { "data": "https://s3.amazonaws.com/bucket/uuid_sample-output.md?X-Amz-Signature=..." } ``` ### Convert JSON from URL to Markdown `POST https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-url-md-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a JSON resource. The response must have a Content-Type of application/json or text/plain. Example: `https://assets.apyhub.com/samples/sample.json`. | #### Quickstart Convert a JSON file from a public URL into Markdown with one POST request. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-url-md-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns a plain Markdown string, not a JSON object. ### Convert uploaded JSON file to Markdown `POST https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-file-md-url` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | A JSON file to upload. The file must have MIME type application/json. | | `output` | query | string | no | Default: `sample-output`. Example: `my-document`. | #### Quickstart Upload a JSON file and get back a pre-signed URL for the generated Markdown file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-file-md-url?output=my-document" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.json" ``` #### What you'll get back Returns a JSON object with a single `data` string field containing a pre-signed S3 URL to download the generated Markdown file. ```json { "data": "https://s3.amazonaws.com/bucket/uuid_sample-output.md?X-Amz-Signature=..." } ``` ### Convert JSON from URL to Markdown `POST https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-url-md-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a JSON resource. The response must have a Content-Type of application/json or text/plain. Example: `https://assets.apyhub.com/samples/sample.json`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-document`. | #### Quickstart Convert a JSON file at a public URL into a Markdown `.md` file. This minimal call sends the source URL and lets the API use the default output name. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-url-md-file?output=my-document" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns a binary `.md` file as the raw response body, not a JSON object. The schema does not define any response fields. ### Convert JSON from URL to Markdown `POST https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-url-md-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a JSON resource. The response must have a Content-Type of application/json or text/plain. Example: `https://assets.apyhub.com/samples/sample.json`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-document`. | #### Quickstart Convert a JSON resource at a public URL into Markdown and return a pre-signed download link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-url-md-url?output=my-document" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns a JSON object with a single `data` string field containing a pre-signed S3 URL for the generated Markdown file. ```json { "data": "https://s3.amazonaws.com/bucket/uuid_sample-output.md?X-Amz-Signature=..." } ``` ### Convert uploaded JSON file to Markdown `POST https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-file-md-file` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | A JSON file to upload. The file must have MIME type application/json. | | `output` | query | string | no | Default: `sample-output`. Example: `my-document`. | #### Quickstart Upload a JSON file and have the API return a Markdown `.md` file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-file-md-file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/input.json;type=application/json" ``` #### What you'll get back Returns a raw binary Markdown file (`.md`) in the response body. The schema does not define a JSON object or any top-level fields. ### Convert uploaded JSON file to Markdown `POST https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-file-md-raw` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | A JSON file to upload. The file must have MIME type application/json. | #### Quickstart Upload a JSON file to convert it into raw Markdown. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-file-md-raw" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.json" ``` #### What you'll get back Returns a plain Markdown string in the response body. The output schema is a raw string, not a JSON object. ### Convert raw JSON body to Markdown `POST https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-raw-md-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | object | yes | Any non-empty JSON object. The entire request body is used as-is as the conversion input — there are no fixed or required properties. Do not treat any example property names (name, age, etc.) as requ… | | `output` | query | string | no | Default: `sample-output`. Example: `my-document`. | #### Quickstart Send any non-empty JSON object and download the converted Markdown file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-markdown/json-raw-md-file?output=my-document" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"key1":"value1","key2":123}' ``` #### What you'll get back Returns a raw binary `.md` file as the response body, containing the generated Markdown content. The schema does not define a JSON wrapper or top-level fields. ## About ## What it does Convert JSON to Markdown with the Convert JSON to Markdown service. Send a JSON object directly, or point the service at a JSON URL or uploaded JSON file, and get Markdown back as raw text, a downloadable .md file, or a pre-signed S3 link. Use it when you need to turn structured data into readable documentation, notes, reports, or content pages. The raw-input endpoints accept any non-empty JSON object in the request body. The URL-based endpoints accept a publicly accessible JSON resource with `application/json` or `text/plain` content. The file-based endpoints accept an uploaded JSON file with `application/json` MIME type. Choose the response format that fits your workflow. The raw endpoints return a plain Markdown string. The file endpoints return the Markdown file content as binary `.md`. The URL endpoints can also return a JSON object with a single `data` field containing a pre-signed S3 download URL. This is a good fit for developer tools that need to render API payloads, convert exported data into docs, or generate human-readable summaries from machine-readable JSON without adding a custom formatter in your app. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-json-to-markdown * * * --- title: AI Video Language Detection API slug: detect-language-video url: https://apyhub.com/apyhub/service/detect-language-video provider: ApyHub categories: [Artificial Intelligence] tags: [language-detection, video-analysis, speech, ai-video] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-video-detect-language --- # AI Video Language Detection API Detect the spoken language in a video file or video URL. Returns an Azure language code and confidence score for transcription routing. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/detect-language-video/file` | What it does Uploads a video file and returns detected language information in the response. The re… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/detect-language-video/url` | What it does Detects the spoken language from a video available at a URL and returns the detected l… | 500 | ## Endpoint reference ### Detect language from uploaded video `POST https://api.eu.apyhub.com/apyhub/detect-language-video/file` · 500 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Video file (max 10 MB). | #### Quickstart Upload a file to detect its language. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-language-video/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/video.mp4" ``` #### What you'll get back Returns a JSON object with a required `data` object. The `data` object can include an `azure` object with `language` and `confidence` fields. ```json { "data": { "azure": { "language": "en-US", "confidence": 0.88 } } } ``` ### Detect language from video URL `POST https://api.eu.apyhub.com/apyhub/detect-language-video/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | #### Quickstart Send a URL for language detection. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-language-video/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample-speech.mp4"}' ``` #### What you'll get back Returns a JSON object with a `data` object. Inside `data`, the `azure` object contains the detected `language` string and `confidence` number. ```json { "data": { "azure": { "language": "en-US", "confidence": 0.88 } } } ``` ## About ## What it does Video Language Detection identifies the spoken language in an uploaded video file or a video URL and returns Azure’s language code with a confidence score. Send Video Language Detection a binary video file to `/file`, or pass a video `url` to `/url`. Both endpoints accept one input only: either `file` or `url`. The response comes back under `data.azure` with `language` and `confidence`, so you can wire it directly into moderation, localization, or media-routing workflows. Use it when you need to route user-generated video to the right transcription pipeline, pick a downstream subtitle template, or flag content for language-specific review. Because the output is a compact language code plus confidence value, it’s easy to store, compare, and threshold in automated systems. The API is a good fit for media platforms, multilingual content tools, and intake pipelines that need a quick language signal before further processing. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/detect-language-video * * * --- title: Generate Thumbnail from Video Job API slug: generate-video-thumbnail-job url: https://apyhub.com/apyhub/service/generate-video-thumbnail-job provider: ApyHub categories: [File Conversion, File Manipulation] tags: [video-thumbnail, video-frame, video-processing, batch-jobs] auth: api_key version: 1.0 service_type: job endpoints: 3 atoms: 5-400 alias: job-thumbnail-from-video --- # Generate Thumbnail from Video Job API Create a thumbnail from a video file or URL, choose the frame time and output size, then poll the job for a finished result URL. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/generate-video-thumbnail-job/file-to-json` | What it does Submits a video file as a multipart upload to start an asynchronous video thumbnail jo… | 400 | | GET | `https://api.eu.apyhub.com/apyhub/generate-video-thumbnail-job/jobs/:job_id` | What it does Checks the status of a video thumbnail generation job identified by jobid and returns… | 5 | | POST | `https://api.eu.apyhub.com/apyhub/generate-video-thumbnail-job/url-to-json` | What it does Submits a video thumbnail generation job using a source video URL and returns a job id… | 400 | ## Endpoint reference ### Submit video thumbnail job (multipart file) `POST https://api.eu.apyhub.com/apyhub/generate-video-thumbnail-job/file-to-json` · 400 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | | | `time` | body | string | no | | | `video` | body | string (binary) | yes | | | `persistent` | query | boolean | no | | #### Quickstart Upload a video file to start an async thumbnail-generation job. `video` is required; `persistent` is an optional query flag and is omitted here. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-video-thumbnail-job/file-to-json" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" ' ``` #### What you'll get back Returns a JSON object with a required `job_id` string field, which is a UUID for polling the job status. ```json { "job_id": "550e8400-e29b-41d4-a716-446655440000" } ``` ### Check video thumbnail job status `GET https://api.eu.apyhub.com/apyhub/generate-video-thumbnail-job/jobs/:job_id` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Fetch the status and output URL for a video thumbnail generation job by its job ID. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/generate-video-thumbnail-job/jobs/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. Inside `data`, `job_id` is the job UUID, `status` is one of `pending`, `successful`, or `failed`, `message` is a human-readable status string, and `url` is present when the job is `successful`. ```json { "data": { "job_id": "550e8400-e29b-41d4-a716-446655440000", "status": "successful", "message": "Thumbnail generated successfully", "url": "https://assets.apyhub.com/samples/sample.mp4" } } ``` ### Submit video thumbnail job (source URL) `POST https://api.eu.apyhub.com/apyhub/generate-video-thumbnail-job/url-to-json` · 400 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | Optional output size WIDTHxHEIGHT (even integers). | | `time` | body | string | no | Frame position in seconds (positive integer). Default 1. | | `video_url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `persistent` | query | boolean | no | | #### Quickstart Submit a video URL to start generating a thumbnail. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-video-thumbnail-job/url-to-json" \ -H "apy-token: $APY_TOKEN" \ -d '{ "video_url": "https://assets.apyhub.com/samples/sample.mp4" }' ``` #### What you'll get back Returns a JSON object with a `job_id` string field — the UUID of the async job you can use for status polling. ```json { "job_id": "550e8400-e29b-41d4-a716-446655440000" } ``` ## About ## What it does Video Thumbnail Generator creates a thumbnail frame from a video you upload or reference by URL. Send a video file or a `video_url`, optionally set `time` to choose the frame position in seconds and `size` to request an output in `WIDTHxHEIGHT` with even integers. Submit the job and get back a `job_id` immediately. Poll `GET /jobs/:job_id` to check whether the job is `pending`, `successful`, or `failed`. When the job finishes successfully, the status response includes a `url` for the generated output. If the job is still running or has failed, the response also includes a human-readable `message`. Use Video Thumbnail Generator when you need a preview image or frame capture for a media library, upload flow, content management system, or video catalog. The API supports asynchronous processing, so you can accept larger files without blocking the request that starts the job. If you need the result to remain available, set `persistent` on submission. Otherwise, use the returned `url` from the job status response to retrieve the generated thumbnail output. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/generate-video-thumbnail-job * * * --- title: "PDF to Word API: Convert PDFs to Editable DOCX" slug: convert-pdf-to-docx url: https://apyhub.com/apyhub/service/convert-pdf-to-docx provider: ApyHub categories: [File Conversion, File Manipulation] tags: [pdf, doc, docx, sync, word] auth: api_key version: 1.0.0 service_type: sync endpoints: 6 atoms: 150 alias: pdf-to-docx-sync --- # PDF to Word API: Convert PDFs to Editable DOCX PDF to Word API: send a PDF file, URL, or base64 string and get back an editable DOCX as a download or an S3 link. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-pdf-to-docx/base64/download` | What it does Converts a PDF provided as base64-encoded content into a downloadable DOCX file. The r… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/convert-pdf-to-docx/base64/url` | What it does Converts a PDF provided as Base64-encoded content into a DOCX file and returns a downl… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/convert-pdf-to-docx/file/download` | What it does Converts an uploaded PDF file into a DOCX file and returns the generated file as a bin… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/convert-pdf-to-docx/file/url` | What it does Converts an uploaded PDF file into a DOCX file and returns a download URL for the gene… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/convert-pdf-to-docx/url/download` | What it does Converts a publicly accessible PDF at the supplied URL into a DOCX file and returns th… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/convert-pdf-to-docx/url/url` | What it does Converts a PDF available at a public URL into a DOCX file. The request sends the PDF U… | 150 | ## Endpoint reference ### Convert PDF to DOCX (base64 → download) `POST https://api.eu.apyhub.com/apyhub/convert-pdf-to-docx/base64/download` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `pdf_base64` | body | string | yes | Base64-encoded PDF content (standard or URL-safe encoding). | #### Quickstart Convert a Base64-encoded PDF into a downloadable DOCX file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-pdf-to-docx/base64/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "pdf_base64": "JVBERi0xLjQK...example-base64-content..." }' \ -o converted.docx ``` Replace the example `pdf_base64` value with the Base64-encoded content of your PDF. #### What you'll get back Returns the converted DOCX document as a binary file response. The example above saves the downloaded file locally as `converted.docx`. ### Convert PDF to DOCX (base64 → S3 URL) `POST https://api.eu.apyhub.com/apyhub/convert-pdf-to-docx/base64/url` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `pdf_base64` | body | string | yes | Base64-encoded PDF content. | #### Quickstart Convert a Base64-encoded PDF into a DOCX download link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-pdf-to-docx/base64/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "pdf_base64": "JVBERi0xLjQK...example-base64-content..." }' ``` Replace the example `pdf_base64` value with the Base64-encoded content of your PDF. #### What you'll get back Returns a JSON object with an optional `download_url` string containing the generated DOCX file URL. ```json { "download_url": "https://s3.amazonaws.com/bucket/document.docx" } ``` ### Convert PDF to DOCX (file upload → download) `POST https://api.eu.apyhub.com/apyhub/convert-pdf-to-docx/file/download` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | PDF file to convert. Must be a valid, non-password-protected PDF. Max 10 MB. | #### Quickstart Upload a PDF to convert it to DOCX. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-pdf-to-docx/file/download" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.pdf" ``` #### What you'll get back Returns a binary file response containing the converted DOCX document. ### Convert PDF to DOCX (file upload → S3 URL) `POST https://api.eu.apyhub.com/apyhub/convert-pdf-to-docx/file/url` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | PDF file to convert. Max 10 MB. | #### Quickstart Upload a PDF file to convert it to DOCX. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-pdf-to-docx/file/url" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.pdf" ``` #### What you'll get back Returns a JSON object with an optional `download_url` string field containing the URL of the converted DOCX file. ```json { "download_url": "https://s3.amazonaws.com/bucket/document.docx" } ``` ### Convert PDF to DOCX (URL → download) `POST https://api.eu.apyhub.com/apyhub/convert-pdf-to-docx/url/download` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file_url` | body | string (uri) | yes | Publicly accessible PDF URL. Must point to a .pdf file. Example: `https://assets.apyhub.com/samples/sample.pdf`. | #### Quickstart Convert a publicly accessible PDF URL into a DOCX file by sending the PDF link in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-pdf-to-docx/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "file_url": "https://assets.apyhub.com/samples/sample.pdf" }' ``` #### What you'll get back Returns a binary file response containing the converted DOCX document. ### Convert PDF to DOCX (URL → S3 URL) `POST https://api.eu.apyhub.com/apyhub/convert-pdf-to-docx/url/url` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file_url` | body | string (uri) | yes | Publicly accessible PDF URL. Example: `https://assets.apyhub.com/samples/sample.pdf`. | #### Quickstart Convert a public PDF URL to a DOCX file by sending the PDF link in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-pdf-to-docx/url/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"file_url":"https://assets.apyhub.com/samples/sample.pdf"}' ``` #### What you'll get back Returns a JSON object with an optional `download_url` string field containing the DOCX file URL. ```json { "download_url": "https://s3.amazonaws.com/bucket/document.docx" } ``` ## About ## What it does The PDF to Word API converts PDFs into editable DOCX documents. Upload a PDF (up to 10 MB), send the URL of one hosted elsewhere, or pass it as a base64 string, and get the Word file back either directly in the response or as a link you can store or share. The PDF must not be password-protected. Use it to let users edit contracts, forms, and reports that only exist as PDFs, reuse content from generated documents, or bring PDFs into review workflows built around Word. For scanned PDFs, run them through an [OCR API](https://apyhub.com/catalog?q=ocr) first so the text becomes editable. To go the other way, use the [Word to PDF API](https://apyhub.com/apyhub/service/convert-word-to-pdf). To create Word files from web content, use the [HTML to Word API](https://apyhub.com/apyhub/service/convert-html-to-docx). Pick the endpoint that fits where your PDF is: upload endpoints when the file is in your app, URL endpoints when it's hosted elsewhere, and base64 endpoints when the PDF is already encoded in your data. You can start on ApyHub's free tier with no card required. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-pdf-to-docx * * * --- title: Convert JSON to XML API slug: convert-json-to-xml url: https://apyhub.com/apyhub/service/convert-json-to-xml provider: ApyHub categories: [Developer Tools, File Conversion] tags: [json-to-xml, xml-conversion, json-conversion, file-conversion, developer-tools] auth: api_key version: 1.0.0 service_type: sync endpoints: 9 atoms: 50 alias: converter-json-xml --- # Convert JSON to XML API Convert raw JSON, uploaded files, or JSON URLs into XML. Returns an XML string, a downloadable .xml file, or a pre-signed S3 link. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-file-xml-raw` | What it does Converts an uploaded JSON file into a raw XML string. The request uploads a JSON file,… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-file-xml-url` | What it does Converts an uploaded JSON file into an XML file and returns a pre-signed S3 URL for th… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-raw-xml-raw` | What it does Converts the raw JSON request body into a raw XML string. The endpoint accepts any non… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-file-xml-file` | What it does Converts an uploaded JSON file into a downloadable XML file. The request uploads the J… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-raw-xml-file` | What it does Converts the raw JSON object sent in the request body into an XML file and returns the… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-raw-xml-url` | What it does Converts the raw JSON request body into an XML file and returns a pre-signed S3 URL wh… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-url-xml-file` | What it does Converts a JSON resource available at a public URL into a downloadable .xml file. The… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-url-xml-raw` | What it does Converts the JSON resource located at the provided URL into a raw XML string. The requ… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-url-xml-url` | What it does Converts the JSON document available at a publicly accessible URL into an XML file and… | 50 | ## Endpoint reference ### Convert uploaded JSON file to raw XML string `POST https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-file-xml-raw` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | JSON file to convert (MIME type must be application/json). | #### Quickstart Upload a JSON file to convert it into XML. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-file-xml-raw" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.json" ``` #### What you'll get back Returns a plain XML string, not a JSON object. The response body is the XML output directly, such as: ```xml 1Alice ``` ### Convert uploaded JSON file to pre-signed S3 URL for .xml file `POST https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-file-xml-url` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | JSON file to convert (MIME type must be application/json). | | `output` | query | string | no | Default: `sample-output`. Example: `my-output`. | #### Quickstart Upload a JSON file and get back a pre-signed URL to the converted XML file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-file-xml-url?output=my-output" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.json" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL for the converted `.xml` file. ```json { "data": "https://s3.amazonaws.com/bucket/uuid_sample-output.xml?..." } ``` ### Convert raw JSON body to raw XML string `POST https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-raw-xml-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | object | yes | Any non-empty JSON object. The entire request body is used as-is as the conversion input — there are no fixed or required properties. Do not treat any example property names as required fields; they… | #### Quickstart Send any non-empty JSON object to convert it into raw XML. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-raw-xml-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"id":1,"name":"Alice"}' ``` #### What you'll get back Returns a plain XML string, not a JSON object. The response body is the XML output directly. ```xml 1Alice ``` ### Convert uploaded JSON file to downloadable .xml file `POST https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-file-xml-file` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | JSON file to convert (MIME type must be application/json). | | `output` | query | string | no | Default: `sample-output`. Example: `my-output`. | #### Quickstart Convert a JSON file to an XML file by uploading the JSON file and naming the output. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-file-xml-file?output=my-output" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.json" ``` #### What you'll get back Returns the raw XML file content as a binary `.xml` response body, not a JSON object. There is no `value` field in the response. ```xml <...XML file content...> ``` ### Convert raw JSON body to downloadable .xml file `POST https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-raw-xml-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | object | yes | Any non-empty JSON object. The entire request body is used as-is as the conversion input — there are no fixed or required properties. Do not treat any example property names as required fields; they… | | `output` | query | string | no | Default: `sample-output`. Example: `my-output`. | #### Quickstart Convert a JSON object to an XML file with one POST request. The `output` query parameter is optional, so this minimal example sends just the JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-raw-xml-file" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"key1":"value1","key2":123}' ``` #### What you'll get back Returns the raw XML file content as a binary `.xml` response body, not a JSON object. The schema does not declare any JSON fields. ### Convert raw JSON body to pre-signed S3 URL for .xml file `POST https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-raw-xml-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | object | yes | Any non-empty JSON object. The entire request body is used as-is as the conversion input — there are no fixed or required properties. Do not treat any example property names as required fields; they… | | `output` | query | string | no | Default: `sample-output`. Example: `my-output`. | #### Quickstart Convert a JSON object to XML and get back a pre-signed download URL for the `.xml` file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-raw-xml-url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"key1":"value1","key2":123}' ``` #### What you'll get back Returns a JSON object with a single `data` string field containing a pre-signed S3 URI for the converted `.xml` file. ```json { "data": "https://s3.amazonaws.com/bucket/uuid_sample-output.xml?..." } ``` ### Convert JSON at URL to downloadable .xml file `POST https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-url-xml-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a JSON resource. Example: `https://assets.apyhub.com/samples/sample.json`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-output`. | #### Quickstart Convert a JSON file from a public URL into an XML file by sending the source URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-url-xml-file" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns the raw XML file content as a binary `.xml` response body, not a JSON object. No `value` field exists. ### Convert JSON at URL to raw XML string `POST https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-url-xml-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a JSON resource. Example: `https://assets.apyhub.com/samples/sample.json`. | #### Quickstart Convert a JSON resource at a public URL into raw XML. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-url-xml-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns a plain XML string, not a JSON object. The response body is the XML output directly, for example: ```xml 1Alice ``` ### Convert JSON at URL to pre-signed S3 URL for .xml file `POST https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-url-xml-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a JSON resource. Example: `https://assets.apyhub.com/samples/sample.json`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-output`. | #### Quickstart Convert a JSON file from a public URL into XML by sending the source URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-json-to-xml/json-url-xml-url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL to the converted `.xml` file. ```json { "data": "https://s3.amazonaws.com/bucket/uuid_sample-output.xml?..." } ``` ## About ## What it does JSON to XML Converter turns JSON into XML from three input styles: raw JSON in the request body, a JSON file upload, or a publicly accessible JSON URL. You can receive the result as a raw XML string, a downloadable .xml file, or a pre-signed S3 URL to the converted file. Use the raw endpoints when you want XML inline in the response. Use the file endpoints when your workflow starts with an uploaded JSON document and you need a binary .xml file back. Use the URL endpoints when the source JSON already lives at a public URL and you want the converter to fetch it for you. For raw JSON requests, send any non-empty JSON object in the body. For URL-based requests, send a `url` pointing to a publicly accessible JSON resource. For file-based requests, upload a `file` with MIME type `application/json`. Some file and URL endpoints also accept an optional `output` query value that is used to name the generated .xml file or S3 object. JSON to XML Converter fits backend jobs, integrations, and document pipelines where a system stores JSON but downstream consumers expect XML. It gives you a simple way to transform data without adding conversion logic to your app. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-json-to-xml * * * --- title: Convert CSV to XML API slug: convert-csv-to-xml url: https://apyhub.com/apyhub/service/convert-csv-to-xml provider: ApyHub categories: [Developer Tools, File Conversion] tags: [csv-to-xml, data-conversion, file-conversion] auth: api_key version: 1.0.0 service_type: sync endpoints: 9 atoms: 50 alias: converter-csv-xml --- # Convert CSV to XML API Convert uploaded CSV files, raw CSV text, or CSV URLs into XML files, inline XML, or signed S3 links. Built for exports and XML integrations. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-file-xml-file` | What it does Converts an uploaded CSV file into an XML file and returns the result as a downloadabl… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-raw-xml-url` | What it does Converts raw CSV content sent in the request body into a file and returns a pre-signed… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-url-xml-file` | What it does Converts a CSV file from a public URL into a downloadable XML file. The request provid… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-url-xml-raw` | What it does Converts a CSV file available at a public URL into an inline XML string. The request s… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-file-xml-raw` | What it does Converts an uploaded CSV file into an inline XML string. The request uploads a single… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-file-xml-url` | What it does Converts an uploaded CSV file into XML and returns a JSON object containing a pre-sign… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-raw-xml-file` | What it does Converts raw CSV content submitted in the request body into a downloadable XML file. T… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-raw-xml-raw` | What it does Converts a raw CSV payload in the request body into an XML string. The response is ret… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-url-xml-url` | What it does Converts a CSV file from a publicly accessible URL into XML and returns a pre-signed S… | 50 | ## Endpoint reference ### Convert uploaded CSV file → downloadable XML file `POST https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-file-xml-file` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | CSV file to convert. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | | `headers_absent` | query | string | no | One of: true, false. Default: `false`. Example: `true`. | #### Quickstart Convert a CSV file to XML by uploading the CSV and downloading the converted XML file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-file-xml-file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.csv" ``` #### What you'll get back Returns a downloadable XML file as a binary response. ```xml ... ``` ### Convert raw CSV body → S3 signed URL `POST https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-raw-xml-url` · 50 atoms · accepts `text/plain` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | string | yes | Raw CSV content. Example: `Name,Age,City Alice,30,New York Bob,25,London Charlie,35,Sydney`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | | `headers_absent` | query | string | no | One of: true, false. Default: `false`. Example: `true`. | #### Quickstart Convert raw CSV text to XML by sending the CSV in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-raw-xml-url?output=my-converted-data&headers_absent=true" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: text/plain" \ --data-binary $'Name,Age,City\nAlice,30,New York\nBob,25,London\nCharlie,35,Sydney' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL to the converted file. ```json { "data": "https://example-bucket.s3.amazonaws.com/converted-file.xml" } ``` ### Convert CSV at URL → downloadable XML file `POST https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-url-xml-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a CSV file. Example: `https://assets.apyhub.com/samples/sample.csv`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | | `headers_absent` | query | string | no | One of: true, false. Default: `false`. Example: `true`. | #### Quickstart Convert a CSV file from a public URL into an XML file by sending the CSV URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-url-xml-file?output=my-converted-data&headers_absent=true" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.csv"}' ``` #### What you'll get back Returns a downloadable XML file as binary content. The response body is a file stream, not a JSON object. ```xml ...binary XML file content... ``` ### Convert CSV at URL → inline XML string `POST https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-url-xml-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a CSV file. The endpoint validates that the response Content-Type is text/csv or text/plain; charset=UTF-8, or that the Content-Disposition header references a .cs… | | `headers_absent` | query | string | no | One of: true, false. Default: `false`. Example: `true`. | #### Quickstart Convert a CSV file from a public URL into XML with a single JSON request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-url-xml-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.csv"}' ``` #### What you'll get back Returns a plain string containing the generated XML. ```text ... ``` ### Convert uploaded CSV file → inline XML string `POST https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-file-xml-raw` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | CSV file to convert. Accepted MIME types: text/csv, text/plain, application/vnd.ms-excel, application/csv, application/octet-stream. | | `headers_absent` | query | string | no | One of: true, false. Default: `false`. Example: `true`. | #### Quickstart Convert one CSV file to XML by uploading the file as multipart form data. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-file-xml-raw" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.csv" ``` #### What you'll get back Returns a plain string containing the XML output. ```text <...xml...> ``` ### Convert uploaded CSV file → S3 signed URL `POST https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-file-xml-url` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | CSV file to convert. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | | `headers_absent` | query | string | no | One of: true, false. Default: `false`. Example: `true`. | #### Quickstart Upload a CSV file to convert it to XML and return a pre-signed download URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-file-xml-url?output=my-converted-data" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.csv" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL to the converted file. ```json { "data": "https://s3.amazonaws.com/..." } ``` ### Convert raw CSV body → downloadable XML file `POST https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-raw-xml-file` · 50 atoms · accepts `text/plain` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | string | yes | Raw CSV content. Example: `Name,Age,City Alice,30,New York Bob,25,London Charlie,35,Sydney`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | | `headers_absent` | query | string | no | One of: true, false. Default: `false`. Example: `true`. | #### Quickstart Convert raw CSV text into XML and download the generated file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-raw-xml-file?output=my-converted-data&headers_absent=true" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: text/plain" \ --data-binary $'Name,Age,City\nAlice,30,New York\nBob,25,London\nCharlie,35,Sydney' ``` #### What you'll get back Returns a binary XML file download containing the converted data. ```xml ...binary XML file... ``` ### Convert raw CSV body → inline XML string `POST https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-raw-xml-raw` · 50 atoms · accepts `text/plain` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | string | yes | Raw CSV content. Example: `Name,Age,City Alice,30,New York Bob,25,London Charlie,35,Sydney`. | | `headers_absent` | query | string | no | One of: true, false. Default: `false`. Example: `true`. | #### Quickstart Send raw CSV text in the request body to convert it to XML. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-raw-xml-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: text/plain" \ --data-binary $'Name,Age,City\nAlice,30,New York\nBob,25,London\nCharlie,35,Sydney' ``` #### What you'll get back Returns a plain string containing the XML output. ```xml <...> ``` ### Convert CSV at URL → S3 signed URL `POST https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-url-xml-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a CSV file. Example: `https://assets.apyhub.com/samples/sample.csv`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | | `headers_absent` | query | string | no | One of: true, false. Default: `false`. Example: `true`. | #### Quickstart Convert a CSV file from a public URL into XML by sending the CSV URL in the JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-csv-to-xml/csv-url-xml-url?output=sample-output&headers_absent=false" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.csv"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL to the converted file. ```json { "data": "https://..." } ``` ## About ## What it does CSV to XML Converter turns CSV data into XML in three input modes: upload a CSV file, send raw CSV text, or point to a publicly accessible CSV URL. You can return the result as a downloadable XML file, an inline XML string, or a pre-signed S3 URL, depending on how you want to consume the output. Use the file-based endpoints when you already have a CSV on disk or in a multipart upload. Use the raw-body endpoints when your CSV is already in request payload form. Use the URL-based endpoints when the source CSV lives elsewhere and you want the service to fetch it for you. For URL inputs, the endpoint validates that the remote resource is actually served as CSV or plain text, or that the response points to a `.csv` file. The XML output is useful when you need to move tabular data into systems that expect hierarchical or document-style payloads, such as downstream integrations, exports, or legacy import pipelines. Some variants also accept the `headers_absent` query flag, which lets you tell the converter whether the CSV includes a header row. If you need the converted data as a file, choose the endpoints that return binary XML. If you need a text response for immediate parsing, choose the raw XML endpoints. If you need a hosted result you can fetch later, choose the S3 URL variants. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-csv-to-xml * * * --- title: Convert Markdown to JSON API slug: convert-markdown-to-json url: https://apyhub.com/apyhub/service/convert-markdown-to-json provider: ApyHub categories: [Data Extraction, Developer Tools, File Conversion] tags: [markdown, json-conversion, document-parsing, content-processing, file-conversion] auth: api_key version: 1.0.0 service_type: sync endpoints: 9 atoms: 50 alias: converter-markdown-json --- # Convert Markdown to JSON API Convert raw Markdown, files, or URLs into structured JSON. Returns inline output, a downloadable JSON file, or a signed S3 URL for pipelines. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-file-json-raw` | What it does Uploads a Markdown file and converts it to JSON, returning the result inline as an arr… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-raw-json-url` | What it does Converts raw Markdown content into JSON and returns a signed S3 URL where the generate… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-url-json-file` | What it does Converts a Markdown document fetched from a URL into a JSON file and returns it as a d… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-url-json-url` | What it does Converts a Markdown file fetched from a remote URL into JSON and returns a signed S3 U… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-file-json-url` | What it does Converts an uploaded Markdown file into JSON and returns a signed S3 URL where the gen… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-raw-json-file` | What it does Converts raw Markdown content into a JSON file download. You send the Markdown text in… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-raw-json-raw` | What it does Converts raw Markdown text into JSON. The request body is a Markdown string, and the r… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-url-json-raw` | What it does Converts a Markdown file accessible at a URL into a JSON response. The request sends t… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-file-json-file` | What it does Converts an uploaded Markdown file into a downloadable JSON file containing the parsed… | 50 | ## Endpoint reference ### File upload → JSON `POST https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-file-json-raw` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Markdown file to convert. Must have MIME type text/markdown. | #### Quickstart Upload a Markdown file to convert it into raw JSON. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-file-json-raw" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.md" ``` #### What you'll get back Returns a JSON array. The array items are not further specified by the schema. ### Raw Markdown → JSON `POST https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-raw-json-url` · 50 atoms · accepts `text/plain` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | string | yes | Raw Markdown content. Example: `# Title - item 1 - item 2`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-document`. | #### Quickstart Send raw Markdown in the request body to generate a JSON file URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-raw-json-url?output=my-document" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: text/plain" \ --data-binary '# Title - item 1 - item 2' ``` #### What you'll get back Returns a JSON object with a required `data` string field containing a signed S3 URL for the generated JSON file. ```json { "data": "https://s3.amazonaws.com/bucket/consumer/converter-markdown-json/file.json?..." } ``` ### URL → JSON `POST https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-url-json-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | URL pointing to a Markdown file. The remote resource must respond with a Content-Type of text/markdown or text/plain. Example: `https://assets.apyhub.com/samples/sample.md`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-document`. | #### Quickstart Convert a Markdown file from a URL into a downloadable JSON file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-url-json-file?output=my-document" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.md"}' ``` #### What you'll get back Returns a binary response: a downloadable JSON file containing the parsed document structure. ### URL → JSON `POST https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-url-json-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | URL pointing to a Markdown file. The remote resource must respond with a Content-Type of text/markdown or text/plain. Example: `https://assets.apyhub.com/samples/sample.md`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-document`. | #### Quickstart Convert a Markdown file from a public URL into JSON and return a signed download link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-url-json-url?output=my-document" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.md"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a signed S3 URL for the generated JSON file, valid for 5 minutes. ```json { "data": "https://s3.amazonaws.com/bucket/consumer/converter-markdown-json/file.json?..." } ``` ### File upload → JSON `POST https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-file-json-url` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Markdown file to convert. Must have MIME type text/markdown. | | `output` | query | string | no | Default: `sample-output`. Example: `my-document`. | #### Quickstart Upload a Markdown file to convert it into a JSON file and return a signed download URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-file-json-url" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.md" ``` #### What you'll get back Returns a JSON object with a `data` string field — a signed S3 URL for the generated JSON file, valid for 5 minutes. ```json { "data": "https://s3.amazonaws.com/bucket/consumer/converter-markdown-json/file.json?..." } ``` ### Raw Markdown → JSON `POST https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-raw-json-file` · 50 atoms · accepts `text/plain` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | string | yes | Raw Markdown content. Example: `# Title - item 1 - item 2`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-document`. | #### Quickstart Send raw Markdown in the request body to get back a downloadable JSON file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-raw-json-file?output=my-document" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: text/plain" \ --data-binary $'# Title\n\n- item 1\n- item 2' ``` #### What you'll get back Returns a binary file response containing the parsed document structure as JSON. The output schema is a downloadable JSON file, so the response body is not a JSON object. ### Raw Markdown → JSON `POST https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-raw-json-raw` · 50 atoms · accepts `text/plain` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | string | yes | Raw Markdown content. Example: `# Title - item 1 - item 2`. | #### Quickstart Send raw Markdown in the request body to convert it into JSON. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-raw-json-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: text/plain" \ --data-binary $'# Title\n\n- item 1\n- item 2' ``` #### What you'll get back Returns a JSON array. The schema does not declare the item shape, so the array items are unspecified. ### URL → JSON `POST https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-url-json-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | URL pointing to a Markdown file. The remote resource must respond with a Content-Type of text/markdown or text/plain. Example: `https://assets.apyhub.com/samples/sample.md`. | #### Quickstart Convert a Markdown file from a URL into raw JSON by sending the file URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-url-json-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.md"}' ``` #### What you'll get back Returns a JSON array. The items are not further specified in the schema, so the array contents depend on the Markdown being converted. ### File upload → JSON `POST https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-file-json-file` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Markdown file to convert. Must have MIME type text/markdown. | | `output` | query | string | no | Default: `sample-output`. Example: `my-document`. | #### Quickstart Upload a Markdown file and get back a downloadable JSON file with the parsed document structure. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-markdown-to-json/md-file-json-file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.md" ``` #### What you'll get back Returns a binary JSON file (`string` with `format: binary`) containing the parsed document structure. ## About ## What it does Markdown to JSON converts Markdown content into JSON output so you can parse documents without building your own renderer or tokenizer. Send either raw Markdown text, a Markdown file upload, or a URL to a Markdown file. The service supports both inline JSON responses and downloadable JSON files, so you can choose the format that fits your workflow. For URL-based requests, the remote resource must respond with `text/markdown` or `text/plain`. For file uploads, the file must be `text/markdown`. Use Markdown to JSON when you need to ingest docs, notes, README files, or content from CMS exports into a structured pipeline. It is a good fit for document processing jobs that store parsed output, sync content into internal tools, or hand off Markdown content to downstream validation and transformation steps. Depending on the endpoint, the response is either a JSON array or an object containing a signed S3 `data` URL, or a downloadable JSON file. That gives you flexibility whether you want the parsed structure immediately in your app or as a file artifact for later processing. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-markdown-to-json * * * --- title: Generate Stacked Graph API slug: generate-stacked-bar-chart url: https://apyhub.com/apyhub/service/generate-stacked-bar-chart provider: ApyHub categories: [Smart Generation] tags: [stacked-bar-chart, data-visualization, chart-generation, reporting, dashboard-graphics] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 60 alias: stacked-graph --- # Generate Stacked Graph API Create stacked bar chart images from titled data arrays with optional colours and layout settings. Returns a pre-signed URL or a binary image. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/generate-stacked-bar-chart/link` | What it does Generates a link for a stacked bar chart from the chart configuration in the request b… | 60 | | POST | `https://api.eu.apyhub.com/apyhub/generate-stacked-bar-chart/download` | What it does Generates a stacked bar chart image from the chart data you provide in the request bod… | 60 | ## Endpoint reference ### Generate stacked bar chart link `POST https://api.eu.apyhub.com/apyhub/generate-stacked-bar-chart/link` · 60 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `bar` | body | array of object | no | Alias for data. Use either data or bar, not both. | | `bar[].name` | body | string | yes | Example: `Q1`. | | `bar[].width` | body | integer | no | Example: `56`. | | `bar[].values` | body | array of object | yes | | | `bar[].values[].color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `bar[].values[].label` | body | string | yes | Example: `Revenue`. | | `bar[].values[].value` | body | number | yes | Example: `100000`. | | `data` | body | array of object | yes | | | `data[].name` | body | string | yes | Example: `Q1`. | | `data[].width` | body | integer | no | Example: `56`. | | `data[].values` | body | array of object | yes | | | `data[].values[].color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `data[].values[].label` | body | string | yes | Example: `Revenue`. | | `data[].values[].value` | body | number | yes | Example: `100000`. | | `theme` | body | string | no | Chart theme. One of: light, dark. Default: `light`. Example: `light`. | | `title` | body | string | yes | Example: `Quarterly Revenue and Cost`. | | `options.width` | body | integer | no | Example: `900`. | | `options.height` | body | integer | no | Example: `600`. | | `options.x_axis.font_size` | body | number | no | Font size in pixels. Example: `12`. | | `options.x_axis.font_color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.y_axis.font_size` | body | number | no | Font size in pixels. Example: `12`. | | `options.y_axis.font_color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.spacing` | body | integer | no | Example: `20`. | | `options.bar_width` | body | integer | no | Example: `56`. | | `options.title_style.padding` | body | integer | no | Padding in pixels. Example: `12`. | | `options.title_style.font_size` | body | number | no | Font size in pixels. Example: `24`. | | `options.title_style.font_color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.canvas_color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.background_padding` | body | integer | no | Example: `20`. | | `output` | query | string | no | Example: `quarterly-revenue-cost-stacked-chart`. | #### Quickstart Generate a stacked bar chart and get back a pre-signed image URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-stacked-bar-chart/link?output=quarterly-revenue-cost-stacked-chart" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "title": "Quarterly Revenue and Cost", "data": [ { "name": "Q1", "width": 56, "values": [ { "color": "3B82F6", "label": "Revenue", "value": 100000 }, { "color": "EF4444", "label": "Cost", "value": 62000 } ] }, { "name": "Q2", "width": 56, "values": [ { "color": "3B82F6", "label": "Revenue", "value": 118000 }, { "color": "EF4444", "label": "Cost", "value": 69000 } ] } ] }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed URI for the generated chart image. ```json { "data": "https://example.com/generated/charts/chart.png" } ``` ### Generate stacked bar chart image `POST https://api.eu.apyhub.com/apyhub/generate-stacked-bar-chart/download` · 60 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `bar` | body | array of object | no | Alias for data. Use either data or bar, not both. | | `bar[].name` | body | string | yes | Example: `Q1`. | | `bar[].width` | body | integer | no | Example: `56`. | | `bar[].values` | body | array of object | yes | | | `bar[].values[].color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `bar[].values[].label` | body | string | yes | Example: `Revenue`. | | `bar[].values[].value` | body | number | yes | Example: `100000`. | | `data` | body | array of object | yes | | | `data[].name` | body | string | yes | Example: `Q1`. | | `data[].width` | body | integer | no | Example: `56`. | | `data[].values` | body | array of object | yes | | | `data[].values[].color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `data[].values[].label` | body | string | yes | Example: `Revenue`. | | `data[].values[].value` | body | number | yes | Example: `100000`. | | `theme` | body | string | no | Chart theme. One of: light, dark. Default: `light`. Example: `light`. | | `title` | body | string | yes | Example: `Quarterly Revenue and Cost`. | | `options.width` | body | integer | no | Example: `900`. | | `options.height` | body | integer | no | Example: `600`. | | `options.x_axis.font_size` | body | number | no | Font size in pixels. Example: `12`. | | `options.x_axis.font_color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.y_axis.font_size` | body | number | no | Font size in pixels. Example: `12`. | | `options.y_axis.font_color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.spacing` | body | integer | no | Example: `20`. | | `options.bar_width` | body | integer | no | Example: `56`. | | `options.title_style.padding` | body | integer | no | Padding in pixels. Example: `12`. | | `options.title_style.font_size` | body | number | no | Font size in pixels. Example: `24`. | | `options.title_style.font_color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.canvas_color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.background_padding` | body | integer | no | Example: `20`. | | `output` | query | string | no | Example: `quarterly-revenue-cost-stacked-chart`. | #### Quickstart Generate a stacked bar chart from a minimal JSON payload with a title and one data series. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-stacked-bar-chart/download?output=quarterly-revenue-cost-stacked-chart" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "title": "Quarterly Revenue and Cost", "data": [ { "name": "Q1", "values": [ { "label": "Revenue", "value": 100000 }, { "label": "Cost", "value": 62000 } ] } ] }' ``` #### What you'll get back Returns a binary file response (`string` with `format: binary`), typically the generated chart image itself. ## About ## What it does Stacked Bar Chart Generator creates stacked bar chart images from structured chart data. Send a title, a data array, and optional styling options, and get back either a pre-signed chart URL or a binary image depending on the endpoint you use. Each data item includes a name and an array of values. Each value can include a label, numeric value, and optional 6-character hex color. You can also set the chart theme to light or dark, and adjust canvas size, axis font settings, spacing, bar width, title styling, canvas color, and background padding through the options object. Use it when you need to render quarterly revenue breakdowns, compare category totals, or generate dashboard graphics from application data. The structure is simple enough to build charts from analytics output, reporting pipelines, or admin tools without assembling the image yourself. Stacked Bar Chart Generator is useful when your app needs consistent chart output with controlled layout and colors. The `/link` endpoint returns a pre-signed URL in `data`, while `/download` returns the image directly as binary. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/generate-stacked-bar-chart * * * --- title: Remove Image Metadata API slug: remove-image-metadata url: https://apyhub.com/apyhub/service/remove-image-metadata provider: ApyHub categories: [File Security, "Security & Privacy"] tags: [image-metadata, metadata-removal, exif, gps-scrubbing, image-sanitisation] auth: api_key version: 1.0 service_type: sync endpoints: 4 atoms: 30 alias: image-processor-remove-metadata --- # Remove Image Metadata API Remove metadata from uploaded images or image URLs. Returns a cleaned binary file or signed URI, with optional EXIF key and GPS cleanup. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/remove-image-metadata/multi-part/download` | What it does Uploads an image as multipart form data, strips the specified metadata keys from it, a… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/remove-image-metadata/multi-part/link` | What it does Strips metadata from an image submitted to this endpoint and returns a URI in the data… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/remove-image-metadata/url/download` | What it does Strips metadata from an image fetched from a URL and returns the processed file as bin… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/remove-image-metadata/url/link` | What it does Removes metadata from an image fetched from a URL and returns the resulting file locat… | 30 | ## Endpoint reference ### Strip metadata `POST https://api.eu.apyhub.com/apyhub/remove-image-metadata/multi-part/download` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `keys` | body | array of string | no | | | `group` | body | string | no | | | `image` | body | string (binary) | yes | | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Upload an image with multipart form data to remove its metadata and download the result. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/remove-image-metadata/multi-part/download" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.jpg" ``` #### What you'll get back Returns the cleaned image as a binary file. ### Strip metadata `POST https://api.eu.apyhub.com/apyhub/remove-image-metadata/multi-part/link` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `keys` | body | array of string | no | | | `group` | body | string | no | | | `image` | body | string (binary) | yes | | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Upload an image file to remove its metadata and return a link to the processed image. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/remove-image-metadata/multi-part/link" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.jpg" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI for the result. ```json { "data": "https://example.com/processed-image.jpg" } ``` ### Strip metadata `POST https://api.eu.apyhub.com/apyhub/remove-image-metadata/url/download` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | no | Example: `https://assets.apyhub.com/samples/sample.jpg`. | | `keys` | body | array of string | no | | | `group` | body | string | no | | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Remove metadata from an image by sending its URL in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/remove-image-metadata/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.jpg"}' ``` #### What you'll get back Returns binary data — the processed file content is returned directly. ### Strip metadata `POST https://api.eu.apyhub.com/apyhub/remove-image-metadata/url/link` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | no | Example: `https://assets.apyhub.com/samples/sample.jpg`. | | `keys` | body | array of string | no | | | `group` | body | string | no | | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Removes metadata from an image URL and returns a new file URL. Replace the sample URL with your own image URL if needed. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/remove-image-metadata/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.jpg" }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI for the processed image. ```json { "data": "https://..." } ``` ## About ## What it does Image Metadata Remover strips metadata from images and returns the cleaned file or a signed download link, depending on the endpoint you use. Send a binary image upload or a public image URL, and choose whether you want the result downloaded directly or returned as a URI. Use the multipart endpoints when you already have the image file, or the URL endpoints when the image is hosted elsewhere. You can pass `keys` to target specific writable tags, or leave `keys` empty to clear all writable tags present. The optional `group` field supports `gps` only, which clears GPS-related metadata. The service is a fit for privacy-focused workflows where you need to remove embedded image data before sharing or storing files. Common uses include sanitising user-uploaded photos, preparing images for public distribution, and removing location data from media assets. The responses stay simple: download mode returns the cleaned image as binary data, while signed URL mode returns a JSON object with a `data` URI. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/remove-image-metadata * * * --- title: Convert JSON to CSV API slug: json-to-csv url: https://apyhub.com/apyhub/service/json-to-csv provider: ApyHub categories: [Developer Tools, File Conversion] tags: [json-conversion, csv-conversion, data-export, file-conversion, data-transformation] auth: api_key version: 1.0.0 service_type: sync endpoints: 9 atoms: 50 alias: converter-json-csv --- # Convert JSON to CSV API Convert JSON objects, arrays, files, or URLs into CSV. Returns inline text, a downloadable file, or a pre-signed S3 URL for exports and reports. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/json-to-csv/json-url-csv-raw` | What it does Converts the JSON document available at the supplied URL into CSV and returns the conv… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/json-to-csv/json-url-csv-file` | What it does Converts JSON fetched from a public URL into a downloadable CSV file. Query Parameter(… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/json-to-csv/json-url-csv-url` | What it does Converts JSON content from a publicly accessible URL into a CSV file and returns a pre… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/json-to-csv/json-file-csv-file` | What it does Converts an uploaded JSON file into a downloadable CSV file. You send the JSON file in… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/json-to-csv/json-raw-csv-raw` | What it does Converts a raw JSON object or a non-empty array of JSON objects in the request body in… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/json-to-csv/json-file-csv-raw` | What it does Converts an uploaded JSON file into CSV and returns the converted content inline in th… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/json-to-csv/json-file-csv-url` | What it does Converts an uploaded JSON file into a CSV file and returns a pre-signed S3 URL for the… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/json-to-csv/json-raw-csv-file` | What it does Converts a raw JSON payload into a downloadable CSV file. The request body must be eit… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/json-to-csv/json-raw-csv-url` | What it does Converts a raw JSON payload into a CSV file and returns a pre-signed S3 URL where the… | 50 | ## Endpoint reference ### Convert JSON from URL to CSV (inline response) `POST https://api.eu.apyhub.com/apyhub/json-to-csv/json-url-csv-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Public URL pointing to a JSON file. The response must have content-type application/json, text/plain; charset=UTF-8, or a content-disposition header referencing a .json file. Example: `https://assets… | #### Quickstart Fetch CSV content from a public JSON file by sending its URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/json-to-csv/json-url-csv-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns a JSON string containing the generated CSV output. ```json "column1,column2\nvalue1,value2" ``` ### Convert JSON from URL to CSV (downloadable file) `POST https://api.eu.apyhub.com/apyhub/json-to-csv/json-url-csv-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Public URL pointing to a JSON file. The response must have content-type application/json, text/plain; charset=UTF-8, or a content-disposition header referencing a .json file. Example: `https://assets… | | `output` | query | string | no | Default: `sample-output`. Example: `my-report`. | #### Quickstart Convert a JSON file from a public URL into a downloadable CSV file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/json-to-csv/json-url-csv-file?output=my-report" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.json"}' ``` #### What you'll get back Returns a binary CSV file containing the converted data. ### Convert JSON from URL to CSV (S3 signed URL) `POST https://api.eu.apyhub.com/apyhub/json-to-csv/json-url-csv-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Public URL pointing to a JSON file. The response must have content-type application/json, text/plain; charset=UTF-8, or a content-disposition header referencing a .json file. Example: `https://assets… | | `output` | query | string | no | Default: `sample-output`. Example: `my-report`. | #### Quickstart Convert a JSON file at a public URL into a CSV export by sending the source URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/json-to-csv/json-url-csv-url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.json" }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL to the converted file. ```json { "data": "https://..." } ``` ### Convert uploaded JSON file to CSV (downloadable file) `POST https://api.eu.apyhub.com/apyhub/json-to-csv/json-file-csv-file` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | JSON file to convert. Must have MIME type application/json. | | `output` | query | string | no | Default: `sample-output`. Example: `my-report`. | #### Quickstart Upload a JSON file to convert it into a CSV download. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/json-to-csv/json-file-csv-file?output=my-report" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/input.json" ``` #### What you'll get back Returns a downloadable CSV file as binary content. The response body is the converted CSV file. ```csv id,name 1,Alice 2,Bob ``` ### Convert raw JSON body to CSV (inline response) `POST https://api.eu.apyhub.com/apyhub/json-to-csv/json-raw-csv-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | any | yes | A JSON object or a non-empty array of JSON objects to convert. | #### Quickstart Convert a JSON object or a non-empty array of JSON objects into raw CSV output. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/json-to-csv/json-raw-csv-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"Alice","age":30}' ``` #### What you'll get back Returns a plain string containing the CSV output. ```text name,age Alice,30 ``` ### Convert uploaded JSON file to CSV (inline response) `POST https://api.eu.apyhub.com/apyhub/json-to-csv/json-file-csv-raw` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | JSON file to convert. Must have MIME type application/json. | #### Quickstart Upload a JSON file to convert it to CSV. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/json-to-csv/json-file-csv-raw" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.json" ``` #### What you'll get back Returns a plain string containing the CSV output. ```text "col1,col2\nvalue1,value2" ``` ### Convert uploaded JSON file to CSV (S3 signed URL) `POST https://api.eu.apyhub.com/apyhub/json-to-csv/json-file-csv-url` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | JSON file to convert. Must have MIME type application/json. | | `output` | query | string | no | Default: `sample-output`. Example: `my-report`. | #### Quickstart Upload a JSON file to convert it to CSV and return a pre-signed download URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/json-to-csv/json-file-csv-url" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.json" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL to the converted file. ```json { "data": "https://s3.amazonaws.com/..." } ``` ### Convert raw JSON body to CSV (downloadable file) `POST https://api.eu.apyhub.com/apyhub/json-to-csv/json-raw-csv-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | any | yes | A JSON object or a non-empty array of JSON objects to convert. | | `output` | query | string | no | Default: `sample-output`. Example: `my-report`. | #### Quickstart Convert a JSON object or array into a downloadable CSV file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/json-to-csv/json-raw-csv-file?output=my-report" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"name":"Alice","age":30}' ``` #### What you'll get back Returns a binary CSV file (`format: "binary"`) containing the converted data. ### Convert raw JSON body to CSV (S3 signed URL) `POST https://api.eu.apyhub.com/apyhub/json-to-csv/json-raw-csv-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | any | yes | A JSON object or a non-empty array of JSON objects to convert. | | `output` | query | string | no | Default: `sample-output`. Example: `my-report`. | #### Quickstart Convert a JSON object or array into a CSV file and return a pre-signed download URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/json-to-csv/json-raw-csv-url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"body":[{"name":"Alice","age":30},{"name":"Bob","age":32}]}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL for the converted file. ```json { "data": "https://s3.amazonaws.com/.../converted.csv" } ``` ## About ## What it does JSON to CSV converts JSON objects, JSON arrays, or JSON files into CSV output. You can send raw JSON in the request body, upload a JSON file, or point the service at a public JSON URL, then choose whether you want the result inline, as a downloadable file, or as a pre-signed S3 URL. Use JSON to CSV when you need to flatten API responses, export records for spreadsheets, or move structured data into tools that expect comma-separated values. The raw-body endpoints accept either a JSON object with at least one property or a non-empty array of JSON objects. The file and URL endpoints accept JSON input from an uploaded file or a public URL, and the file-based responses return a downloadable CSV binary. If you need a URL-based workflow, the signed-URL variants return an object with a `data` field containing a pre-signed S3 URL to the converted file. If you prefer to handle the output directly in your app, use the inline endpoints, which return the CSV as a string. JSON to CSV is a practical fit for reporting pipelines, lightweight ETL jobs, admin exports, and any integration where tabular output is easier to store or review than nested JSON. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/json-to-csv * * * --- title: Convert CSV to JSON API slug: csv-to-json url: https://apyhub.com/apyhub/service/csv-to-json provider: ApyHub categories: [Developer Tools, File Conversion] tags: [csv, json-conversion, file-conversion, data-transformation, etl] auth: api_key version: 1.0.0 service_type: sync endpoints: 9 atoms: 50 alias: converter-csv-json --- # Convert CSV to JSON API Convert raw CSV, uploaded files, or CSV URLs into JSON arrays, downloadable files, or pre-signed S3 links for imports and ETL workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/csv-to-json/csv-url-json-raw` | What it does Converts a CSV file accessible at a public URL into a JSON array. The endpoint fetches… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/csv-to-json/csv-url-json-url` | What it does Converts a CSV file from a public URL into JSON and returns a pre-signed S3 URL where… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/csv-to-json/csv-file-json-file` | What it does Converts an uploaded CSV file into a downloadable JSON file. The request sends a binar… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/csv-to-json/csv-raw-json-url` | What it does Converts raw CSV content in the request body into a JSON file and returns a pre-signed… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/csv-to-json/csv-url-json-file` | What it does Converts the CSV file located at the provided URL into a downloadable JSON file. The r… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/csv-to-json/csv-file-json-raw` | What it does Converts an uploaded CSV file into an inline JSON array. The request sends a binary fi… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/csv-to-json/csv-file-json-url` | What it does Converts an uploaded CSV file into a JSON file and returns a pre-signed S3 URL for the… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/csv-to-json/csv-raw-json-raw` | What it does Converts a raw CSV string in the request body into a JSON array. The response is an ar… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/csv-to-json/csv-raw-json-file` | What it does Converts raw CSV content sent in the request body into a downloadable JSON file. The r… | 50 | ## Endpoint reference ### Convert CSV at URL → inline JSON array `POST https://api.eu.apyhub.com/apyhub/csv-to-json/csv-url-json-raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a CSV file. The endpoint validates that the response Content-Type is text/csv or text/plain; charset=UTF-8, or that the Content-Disposition header references a .cs… | #### Quickstart Convert a CSV file from a public URL into raw JSON by sending the CSV URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/csv-to-json/csv-url-json-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.csv"}' ``` #### What you'll get back Returns a JSON array of objects. Each array item is a JSON object, and the schema does not restrict the fields inside those objects. ```json [ { "name": "Alice", "age": 30 }, { "name": "Bob", "age": 25 } ] ``` ### Convert CSV at URL → S3 signed URL `POST https://api.eu.apyhub.com/apyhub/csv-to-json/csv-url-json-url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a CSV file. Example: `https://assets.apyhub.com/samples/sample.csv`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Convert a CSV file from a public URL into JSON by sending the CSV URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/csv-to-json/csv-url-json-url?output=my-converted-data" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.csv"}' ``` #### What you'll get back Returns a JSON object with a `data` string field. The `data` value is a pre-signed S3 URL to the converted file. ```json { "data": "https://..." } ``` ### Convert uploaded CSV file → downloadable JSON file `POST https://api.eu.apyhub.com/apyhub/csv-to-json/csv-file-json-file` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | CSV file to convert. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Upload a CSV file to convert it into a JSON file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/csv-to-json/csv-file-json-file?output=my-converted-data" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.csv" ``` #### What you'll get back Returns a downloadable JSON file as binary content containing the converted data. ### Convert raw CSV body → S3 signed URL `POST https://api.eu.apyhub.com/apyhub/csv-to-json/csv-raw-json-url` · 50 atoms · accepts `text/plain` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | string | yes | Raw CSV content. Example: `name,age Alice,30 Bob,25`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Convert raw CSV text to a JSON file by sending the CSV content in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/csv-to-json/csv-raw-json-url?output=my-converted-data" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: text/plain" \ --data-binary $'name,age\nAlice,30\nBob,25' ``` #### What you'll get back Returns a JSON object with a `data` string field, which is a pre-signed S3 URL to the converted file. ```json { "data": "https://..." } ``` ### Convert CSV at URL → downloadable JSON file `POST https://api.eu.apyhub.com/apyhub/csv-to-json/csv-url-json-file` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL pointing to a CSV file. Example: `https://assets.apyhub.com/samples/sample.csv`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Convert a CSV file from a public URL into a downloadable JSON file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/csv-to-json/csv-url-json-file" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.csv"}' ``` #### What you'll get back Returns a binary JSON file (`application/json`) containing the converted data. ```json ``` ### Convert uploaded CSV file → inline JSON array `POST https://api.eu.apyhub.com/apyhub/csv-to-json/csv-file-json-raw` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | CSV file to convert. Accepted MIME types: text/csv, text/plain, application/vnd.ms-excel, application/csv, application/octet-stream. | #### Quickstart Convert a CSV file to raw JSON by uploading it as `file`. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/csv-to-json/csv-file-json-raw" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.csv" ``` #### What you'll get back Returns a JSON array of objects. Each item in the array is an object, and the schema allows additional properties on each object. ```json [ { "anyKey": "anyValue" } ] ``` ### Convert uploaded CSV file → S3 signed URL `POST https://api.eu.apyhub.com/apyhub/csv-to-json/csv-file-json-url` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | CSV file to convert. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Upload a CSV file to convert it and return a pre-signed URL for the JSON output. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/csv-to-json/csv-file-json-url" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.csv" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed S3 URL to the converted file. ```json { "data": "https://s3.amazonaws.com/..." } ``` ### Convert raw CSV body → inline JSON array `POST https://api.eu.apyhub.com/apyhub/csv-to-json/csv-raw-json-raw` · 50 atoms · accepts `text/plain` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | string | yes | Raw CSV content. Example: `name,age Alice,30 Bob,25`. | #### Quickstart Send raw CSV text in the request body to convert it into JSON. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/csv-to-json/csv-raw-json-raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: text/plain" \ --data-binary $'name,age\nAlice,30\nBob,25' ``` #### What you'll get back Returns a JSON array of objects. Each array item is a JSON object, and the schema allows additional properties in each object. ```json [ { "name": "Alice", "age": 30 }, { "name": "Bob", "age": 25 } ] ``` ### Convert raw CSV body → downloadable JSON file `POST https://api.eu.apyhub.com/apyhub/csv-to-json/csv-raw-json-file` · 50 atoms · accepts `text/plain` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | string | yes | Raw CSV content. Example: `name,age Alice,30 Bob,25`. | | `output` | query | string | no | Default: `sample-output`. Example: `my-converted-data`. | #### Quickstart Send your raw CSV text in the request body to convert it into a downloadable JSON file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/csv-to-json/csv-raw-json-file?output=my-converted-data" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: text/plain" \ --data-binary $'name,age\nAlice,30\nBob,25' ``` #### What you'll get back Returns a downloadable JSON file (`binary`) containing the converted data. ```json ``` ## About ## What it does CSV to JSON Converter turns CSV data into JSON, whether you send a raw CSV body, upload a CSV file, or point it at a publicly accessible CSV URL. You can receive the converted data inline as a JSON array, as a downloadable JSON file, or as a pre-signed S3 URL. Use the inline JSON array endpoints when you want to parse tabular data directly in your app. Send raw CSV content, a CSV file, or a CSV URL, and get back an array of objects. Use the file and URL output variants when you need a downloadable JSON artifact or a temporary hosted link for downstream processing. The inputs are simple: a `body` containing raw CSV text, a binary `file`, or a `url` to a CSV resource. For URL-based conversion, the source must be publicly accessible. For file uploads, the endpoint accepts CSV files and, in the raw-file variant, common CSV MIME types. CSV to JSON Converter is a good fit for import pipelines, data normalization jobs, ETL steps, and tools that need to ingest spreadsheet exports into JSON-based systems. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/csv-to-json * * * --- title: Generate Archives API slug: create-zip url: https://apyhub.com/apyhub/service/create-zip provider: ApyHub categories: [File Conversion, File Manipulation] tags: [zip, archive, compress-files, file-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 150 alias: generate-file-archive --- # Generate Archives API Bundle uploaded files or remote URLs into a single ZIP. Returns a streamed download or a signed link, with optional output file naming. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/create-zip/file/download` | What it does Creates a ZIP archive from the uploaded files and streams the resulting download back… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/create-zip/file/link` | What it does Creates a ZIP archive from the uploaded files and returns a signed link to the generat… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/create-zip/url/download` | What it does Creates a ZIP archive from one or more remote file URLs and streams the archive back i… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/create-zip/url/link` | What it does Creates a ZIP archive from one or more remote file URLs and returns a signed URL where… | 150 | ## Endpoint reference ### Create ZIP from uploaded files and stream download `POST https://api.eu.apyhub.com/apyhub/create-zip/file/download` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `files` | body | array of string | yes | One or more files to include in the archive. | | `output` | query | string | no | Default: `output.zip`. | #### Quickstart Create a ZIP archive from one or more files and download it as a binary response. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/create-zip/file/download?output=output.zip" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "files": [ "/path/to/file1.txt", "/path/to/file2.png" ] }' ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the ZIP archive. ### Create ZIP from uploaded files and return signed link `POST https://api.eu.apyhub.com/apyhub/create-zip/file/link` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `files` | body | array of string | yes | | | `output` | query | string | no | Default: `output.zip`. | #### Quickstart Create a ZIP from one or more file links, and optionally name the output file with a query parameter. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/create-zip/file/link?output=output.zip" \ -H "apy-token: $APY_TOKEN" \ -F "files=@/path/to/file1.txt" \ -F "files=@/path/to/file2.png" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI to the generated ZIP file. ```json { "data": "https://storage.example.com/zip/output.zip?sig=abc" } ``` ### Create ZIP from remote file URLs and stream download `POST https://api.eu.apyhub.com/apyhub/create-zip/url/download` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `urls` | body | array of string | yes | Example: `["https://assets.apyhub.com/samples/sample.pdf","https://assets.apyhub.com/samp…`. | | `output` | query | string | no | Default: `output.zip`. | #### Quickstart Download files from the URLs you provide and return them as a ZIP archive. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/create-zip/url/download?output=output.zip" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "urls": [ "https://assets.apyhub.com/samples/sample.pdf", "https://assets.apyhub.com/samples/sample.png" ] }' ``` #### What you'll get back Returns a binary file response (`string` with `format: binary`), not a JSON object. ```binary (binary ZIP file) ``` ### Create ZIP from remote file URLs and return signed link `POST https://api.eu.apyhub.com/apyhub/create-zip/url/link` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `urls` | body | array of string | yes | Example: `["https://assets.apyhub.com/samples/sample.pdf","https://assets.apyhub.com/samp…`. | #### Quickstart Create a ZIP from a list of file URLs by sending the URLs in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/create-zip/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"urls":["https://assets.apyhub.com/samples/sample.pdf","https://assets.apyhub.com/samples/sample.png"]}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the URL of the generated ZIP file. ```json { "data": "https://storage.example.com/zip/output.zip?sig=abc" } ``` ## About ## What it does ZIP Archive Builder packages uploaded files or remote file URLs into a ZIP and gives you either a direct download or a signed link. Send one or more binary files to `/file/download` or `/file/link`, and send one or more remote URLs to `/url/download` or `/url/link`. Each request accepts an optional `output` query value to name the archive; if you omit it, the default is `output.zip`. The download endpoints stream the ZIP as binary data, while the link endpoints return a JSON object with a `data` field containing a signed URI. Use ZIP Archive Builder when you need to bundle user uploads into a single attachment, collect assets from different storage locations, or generate an archive for later retrieval without streaming it back immediately. It fits file bundling workflows where you want a predictable archive name and a simple response shape. The service keeps the contract narrow: file-based requests take `files`, URL-based requests take `urls`, and the outputs are either a binary ZIP or a link to the generated file. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/create-zip * * * --- title: Convert PDF to Image API slug: convert-pdf-pages-to-images url: https://apyhub.com/apyhub/service/convert-pdf-pages-to-images provider: ApyHub categories: [File Conversion, File Manipulation] tags: [pdf-to-image, pdf-to-jpg, pdf-to-png, pdf-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 6 atoms: 150 alias: pdf-to-image-sync --- # Convert PDF to Image API Convert PDF pages into JPG or PNG images from a file, URL, or base64 input. Returns a ZIP download or a download_url for the generated images. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-pdf-pages-to-images/file/download` | What it does Converts an uploaded PDF file into page images and returns the result as a downloadabl… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/convert-pdf-pages-to-images/file/url` | What it does Converts the pages of an uploaded PDF file into images and returns a download URL for… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/convert-pdf-pages-to-images/url/download` | What it does Converts the PDF at the given public URL into page images and returns the result as a… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/convert-pdf-pages-to-images/url/url` | What it does Converts a PDF available at a URL into page images and returns a JSON object containin… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/convert-pdf-pages-to-images/base64/download` | What it does Converts a PDF provided as base64-encoded content into image files for its pages, and… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/convert-pdf-pages-to-images/base64/url` | What it does Converts a PDF provided as a base64 string into page images and returns a download URL… | 150 | ## Endpoint reference ### Convert PDF pages to images `POST https://api.eu.apyhub.com/apyhub/convert-pdf-pages-to-images/file/download` · 150 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | PDF file to convert. Max 10 MB. | | `quality` | body | string | no | Image rendering quality. Higher quality increases processing time. One of: low, medium, high, ultra. Default: `medium`. | | `img_format` | body | string | no | Output image format for all pages. One of: jpg, png. Default: `jpg`. | #### Quickstart Upload a PDF to convert its pages into images. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-pdf-pages-to-images/file/download" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.pdf" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the converted image output. ### Convert PDF pages to images `POST https://api.eu.apyhub.com/apyhub/convert-pdf-pages-to-images/file/url` · 150 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `quality` | body | string | no | One of: low, medium, high, ultra. Default: `medium`. | | `img_format` | body | string | no | One of: jpg, png. Default: `jpg`. | #### Quickstart Upload a PDF file to convert its pages into images. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-pdf-pages-to-images/file/url" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.pdf" ``` #### What you'll get back Returns a JSON object with an optional `download_url` string field containing the URI to the generated images archive. ```json { "download_url": "https://s3.amazonaws.com/bucket/images.zip" } ``` ### Convert PDF pages to images `POST https://api.eu.apyhub.com/apyhub/convert-pdf-pages-to-images/url/download` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `quality` | body | string | no | One of: low, medium, high, ultra. Default: `medium`. | | `file_url` | body | string (uri) | yes | Publicly accessible PDF URL. Example: `https://assets.apyhub.com/samples/sample.pdf`. | | `img_format` | body | string | no | One of: jpg, png. Default: `jpg`. | #### Quickstart Download a converted image version of a PDF from a public URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-pdf-pages-to-images/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "file_url": "https://assets.apyhub.com/samples/sample.pdf" }' ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the converted image data. ### Convert PDF pages to images `POST https://api.eu.apyhub.com/apyhub/convert-pdf-pages-to-images/url/url` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `quality` | body | string | no | One of: low, medium, high, ultra. Default: `medium`. | | `file_url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.pdf`. | | `img_format` | body | string | no | One of: jpg, png. Default: `jpg`. | #### Quickstart Convert a PDF from a public URL into a set of page images by sending the PDF URL in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-pdf-pages-to-images/url/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"file_url":"https://assets.apyhub.com/samples/sample.pdf"}' ``` #### What you'll get back Returns a JSON object with a `download_url` string field containing the URL of the generated images archive. ```json { "download_url": "https://s3.amazonaws.com/bucket/images.zip" } ``` ### Convert PDF pages to images `POST https://api.eu.apyhub.com/apyhub/convert-pdf-pages-to-images/base64/download` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `quality` | body | string | no | One of: low, medium, high, ultra. Default: `medium`. | | `img_format` | body | string | no | One of: jpg, png. Default: `jpg`. | | `pdf_base64` | body | string | yes | Base64-encoded PDF content. | #### Quickstart Convert a base64-encoded PDF into image files using the default `medium` quality and `jpg` format. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-pdf-pages-to-images/base64/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "pdf_base64": "JVBERi0xLjQKJcTl8uXrp..." }' ``` #### What you'll get back Returns a binary file response (`string` with `format: binary`) containing the converted image output. ### Convert PDF pages to images `POST https://api.eu.apyhub.com/apyhub/convert-pdf-pages-to-images/base64/url` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `quality` | body | string | no | One of: low, medium, high, ultra. Default: `medium`. | | `img_format` | body | string | no | One of: jpg, png. Default: `jpg`. | | `pdf_base64` | body | string | yes | | #### Quickstart Convert a PDF passed as a base64 string into images in a downloadable archive. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-pdf-pages-to-images/base64/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "pdf_base64": "JVBERi0xLjQKJc..." }' ``` #### What you'll get back Returns a JSON object with an optional `download_url` string field containing the URL to the generated image archive. ```json { "download_url": "https://s3.amazonaws.com/bucket/images.zip" } ``` ## About ## What it does The PDF to image API converts each page of a PDF into a separate image file. Send the PDF as a file upload (up to 10 MB), a public URL in `file_url`, or base64 content in `pdf_base64`. You get the page images back as a ZIP download, or as a `download_url` you can store or pass along. Set `img_format` to `jpg` (the default) or `png`, and choose `quality` from `low`, `medium` (the default), `high` or `ultra`. JPG keeps files small for previews and thumbnails. PNG keeps text and line art sharp for documents that will be read closely or processed further. Higher quality settings take longer to render. Use the PDF to image API to show page previews in a document viewer or file manager, generate thumbnails for invoices and contracts in a dashboard, post report pages as images in chat or email where PDFs don't render inline, and prepare scanned pages for image-based processing such as OCR or vision models. Common next steps: extract the text from each page with the [Image OCR API](https://apyhub.com/apyhub/service/extract-text-from-image), or shrink the output for the web with the [Image Compression API](https://apyhub.com/apyhub/service/compress-images). To go the other way and turn images back into a PDF, use the [Image to PDF API](https://apyhub.com/apyhub/service/convert-image-to-pdf). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-pdf-pages-to-images * * * --- title: Apply Headers and Footers on DOCX API slug: add-header-footer-to-docx url: https://apyhub.com/apyhub/service/add-header-footer-to-docx provider: ApyHub categories: [File Conversion, File Manipulation] tags: [docx, headers, footers, table-of-contents, document-processing, word-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 100 alias: docx-stamp-footers --- # Apply Headers and Footers on DOCX API Add text or PNG headers and footers to DOCX files from an upload or URL. Returns a modified Word document or a downloadable link. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/add-header-footer-to-docx/file/download` | What it does Uploads a DOCX file, adds the requested header/footer content to it, and returns the m… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/add-header-footer-to-docx/file/url` | What it does Uploads a DOCX file, adds header and/or footer content to it, and returns a URL to the… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/add-header-footer-to-docx/url/download` | What it does Adds a header and/or footer to a DOCX file fetched from a public URL, then returns the… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/add-header-footer-to-docx/url/url` | What it does Adds a header and/or footer to a DOCX file provided by URL, then returns a JSON object… | 100 | ## Endpoint reference ### Add header/footer to DOCX `POST https://api.eu.apyhub.com/apyhub/add-header-footer-to-docx/file/download` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | DOCX file to modify. | | `output` | body | string | no | Output filename stem (without extension). Defaults to document. | | `footer_text` | body | string | no | Footer text. Example: `Page {page}`. | | `header_text` | body | string | no | Header text. At least one of header_text, footer_text, header_image, footer_image, or include_table_of_content is required. Example: `CONFIDENTIAL`. | | `footer_image` | body | string (binary) | no | Footer image (PNG). | | `header_image` | body | string (binary) | no | Header image (PNG). | | `footer_alignment` | body | string | no | One of: left, center, right. Default: `center`. | | `header_alignment` | body | string | no | One of: left, center, right. Default: `center`. | | `include_table_of_content` | body | boolean | no | Insert a table of contents at the beginning of the document. Default: `false`. | #### Quickstart Upload a DOCX file and add a header or footer, then download the modified document. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/add-header-footer-to-docx/file/download" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.docx" \ -F "header_text=CONFIDENTIAL" ``` #### What you'll get back Returns a binary file response with the modified DOCX content. ### Add header/footer to DOCX `POST https://api.eu.apyhub.com/apyhub/add-header-footer-to-docx/file/url` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `footer_text` | body | string | no | Example: `Page {page}`. | | `header_text` | body | string | no | Example: `CONFIDENTIAL`. | | `footer_image` | body | string (binary) | no | | | `header_image` | body | string (binary) | no | | | `footer_alignment` | body | string | no | One of: left, center, right. Default: `center`. | | `header_alignment` | body | string | no | One of: left, center, right. Default: `center`. | | `include_table_of_content` | body | boolean | no | Default: `false`. | #### Quickstart Upload a DOCX file and get back a link to the generated file with header and footer added. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/add-header-footer-to-docx/file/url" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.docx" ``` #### What you'll get back Returns a JSON object with a `url` string field containing the output file URL. ```json { "url": "https://s3.amazonaws.com/bucket/output.docx" } ``` ### Add header/footer to DOCX `POST https://api.eu.apyhub.com/apyhub/add-header-footer-to-docx/url/download` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file_url` | body | string (uri) | yes | Publicly accessible DOCX URL. Example: `https://assets.apyhub.com/samples/sample.docx`. | | `footer_text` | body | string | no | Example: `Page {page}`. | | `header_text` | body | string | no | Header text. At least one of header_text, footer_text, header_image_url, footer_image_url, or include_table_of_content required. Example: `CONFIDENTIAL`. | | `footer_alignment` | body | string | no | One of: left, center, right. Default: `center`. | | `footer_image_url` | body | string (uri) | no | Publicly accessible PNG image URL for the footer. | | `header_alignment` | body | string | no | One of: left, center, right. Default: `center`. | | `header_image_url` | body | string (uri) | no | Publicly accessible PNG image URL for the header. | | `include_table_of_content` | body | boolean | no | Default: `false`. | #### Quickstart Send a DOCX file URL with at least one header or footer value to generate the updated document. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/add-header-footer-to-docx/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "file_url": "https://assets.apyhub.com/samples/sample.docx", "header_text": "CONFIDENTIAL" }' ``` #### What you'll get back Returns a binary file download as the response body. ### Add header/footer to DOCX `POST https://api.eu.apyhub.com/apyhub/add-header-footer-to-docx/url/url` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file_url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.docx`. | | `footer_text` | body | string | no | Example: `Page {page}`. | | `header_text` | body | string | no | Example: `CONFIDENTIAL`. | | `footer_alignment` | body | string | no | One of: left, center, right. Default: `center`. | | `footer_image_url` | body | string (uri) | no | | | `header_alignment` | body | string | no | One of: left, center, right. Default: `center`. | | `header_image_url` | body | string (uri) | no | | | `include_table_of_content` | body | boolean | no | Default: `false`. | #### Quickstart Create a DOCX with a header/footer by sending the source file URL and the text to add. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/add-header-footer-to-docx/url/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "file_url": "https://assets.apyhub.com/samples/sample.docx", "footer_text": "Page {page}", "header_text": "CONFIDENTIAL" }' ``` #### What you'll get back Returns a JSON object with a `url` string field — the URL of the generated DOCX file. ```json { "url": "https://s3.amazonaws.com/bucket/output.docx" } ``` ## About ## What it does DOCX Header Footer adds headers, footers, and optional table-of-contents support to a DOCX file. Send a DOCX by upload or by public URL, choose text or PNG images for the header and footer, and get back either a modified file or a downloadable URL. Use `header_text` and `footer_text` when you want running labels such as `CONFIDENTIAL` or `Page {page}`. If you prefer branded documents, provide `header_image` or `footer_image` on upload, or `header_image_url` and `footer_image_url` for URL-based requests. You can also set `header_alignment` and `footer_alignment` to `left`, `center`, or `right` to control placement. The service supports two input modes: file upload or publicly accessible DOCX URL. Depending on the endpoint, the output is either a binary DOCX download or an object containing a `url` to the generated document. That makes it useful for report generation, contract assembly, or internal document workflows where every file needs consistent branding and page labels. If your document needs an index, set `include_table_of_content` to insert a table of contents at the beginning before the file is returned. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/add-header-footer-to-docx * * * --- title: Convert SVG to WebP API slug: convert-svg-to-webp url: https://apyhub.com/apyhub/service/convert-svg-to-webp provider: ApyHub categories: [File Conversion, File Manipulation] tags: [conversion, images, svg, webp] auth: api_key version: 1.1 service_type: sync endpoints: 4 atoms: 30 alias: image-converter-svg-webp --- # Convert SVG to WebP API Convert SVG files or URLs to WebP. Returns binary downloads or signed URLs for image pipelines, CMS imports, and asset standardization. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-svg-to-webp/multi-part/download` | What it does Converts an uploaded SVG image to WebP and returns the generated file as binary downlo… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/convert-svg-to-webp/multi-part/link` | What it does Converts an uploaded SVG image to WebP and returns a JSON object containing a data URI… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/convert-svg-to-webp/url/download` | What it does Converts an SVG image fetched from a publicly accessible URL into WebP and returns the… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/convert-svg-to-webp/url/link` | What it does Converts an SVG image from a publicly accessible URL into a WebP image. The request se… | 30 | ## Endpoint reference ### Convert SVG to WebP (multipart, download) `POST https://api.eu.apyhub.com/apyhub/convert-svg-to-webp/multi-part/download` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | yes | The source image file in SVG format. Mandatory. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Convert an SVG file to WebP and download the result. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-svg-to-webp/multi-part/download?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.svg" ``` #### What you'll get back Returns a binary file containing the converted WebP output. ### Convert SVG to WebP (multipart, signed URL) `POST https://api.eu.apyhub.com/apyhub/convert-svg-to-webp/multi-part/link` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | yes | The source image file in SVG format. Mandatory. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Convert an SVG image from a multipart upload into a WebP link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-svg-to-webp/multi-part/link" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.svg" ``` #### What you'll get back Returns a JSON object with a `data` string field containing the generated WebP URI. ```json { "data": "https://example.com/my-invite.webp" } ``` ### Convert SVG to WebP (URL, download) `POST https://api.eu.apyhub.com/apyhub/convert-svg-to-webp/url/download` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL of the SVG image to convert. Mandatory. Example: `https://assets.apyhub.com/samples/sample.svg`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Convert a public SVG URL to WebP by sending the SVG link in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-svg-to-webp/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.svg"}' ``` #### What you'll get back Returns a binary file response in WebP format. ### Convert SVG to WebP (URL, signed URL) `POST https://api.eu.apyhub.com/apyhub/convert-svg-to-webp/url/link` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL of the SVG image to convert. Mandatory. Example: `https://assets.apyhub.com/samples/sample.svg`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Convert a publicly accessible SVG URL to WebP by sending the source URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-svg-to-webp/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.svg"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the URI of the generated WebP file. ```json { "data": "https://..." } ``` ## About ## What it does Convert SVG images to WebP with the SVG to WebP Converter. Send either a source SVG file as multipart form data or a publicly accessible SVG URL, and get back the converted WebP as a file download or a signed URL. Use the multipart endpoints when you already have the SVG in your application or upload pipeline. The `image` field accepts the source image file in SVG format. If you prefer remote conversion, send a `url` pointing to a publicly accessible SVG image. In both cases, you can pass an optional `output` query parameter to control the output filename. The responses are simple and direct: either binary WebP content for download or a JSON object containing a `data` URI for the signed URL flow. That makes the service a good fit for asset pipelines, CMS imports, product image workflows, and any backend that needs to standardize vector artwork into a browser-friendly raster format. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-svg-to-webp * * * --- title: AI Image Objects Detection API slug: detect-common-visual-objects url: https://apyhub.com/apyhub/service/detect-common-visual-objects provider: ApyHub categories: [Artificial Intelligence] tags: [object-detection, computer-vision, image-recognition, ai-vision] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-image-detect-object --- # AI Image Objects Detection API Detect common objects in an uploaded image or image URL. Returns results from Azure, Google, or ApyHub vision detectors in a single schema. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/detect-common-visual-objects/file` | What it does Uploads an image file and runs common visual object detection against the selected ser… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/detect-common-visual-objects/url` | What it does Detects common visual objects in an image referenced by URL. You provide the image URL… | 500 | ## Endpoint reference ### Detect common visual objects (file upload) `POST https://api.eu.apyhub.com/apyhub/detect-common-visual-objects/file` · 500 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `azure_key` | body | string | no | Example: `azure-key-val`. | | `google_key` | body | string | no | Example: `google-key-val`. | | `azure_region` | body | string | no | Example: `westus`. | | `azure_endpoint` | body | string | no | Example: `https://westus.api.cognitive.microsoft.com/`. | | `azure_account_id` | body | string | no | Example: `azure-account-id`. | | `requested_service` | body | string | no | One of: azure, google, apyhub. Default: `apyhub`. Example: `apyhub`. | | `azure_access_token` | body | string | no | Example: `token-val`. | #### Quickstart Upload one image file to detect common visual objects. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-common-visual-objects/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" ``` #### What you'll get back Returns a JSON object with a `data` object field. That `data` object may contain `azure`, `apyhub`, and/or `google` objects, depending on which detection service responds. ```json { "data": { "apyhub": {} } } ``` ### Detect common visual objects (URL input) `POST https://api.eu.apyhub.com/apyhub/detect-common-visual-objects/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://example.com/objects.jpg`. | | `azure.key` | body | string | no | Azure subscription key. Example: `your_azure_speech_or_vision_key`. | | `azure.region` | body | string | no | Azure service region. Example: `westus2`. | | `azure.endpoint` | body | string | no | Azure endpoint URL. Example: `https://westus2.api.cognitive.microsoft.com/`. | | `azure.account_id` | body | string | no | Azure account ID. Example: `account-id-1234`. | | `azure.access_token` | body | string | no | OAuth access token for Azure service. Example: `access_token_value`. | | `google.google_language` | body | string | no | Target language locale. Example: `en`. | | `google.google_credential_json.type` | body | string | no | Example: `service_account`. | | `google.google_credential_json.auth_uri` | body | string | no | Example: `https://accounts.google.com/o/oauth2/auth`. | | `google.google_credential_json.client_id` | body | string | no | Example: `123456789012345678901`. | | `google.google_credential_json.token_uri` | body | string | no | Example: `https://oauth2.googleapis.com/token`. | | `google.google_credential_json.project_id` | body | string | no | Example: `my-project-id`. | | `google.google_credential_json.private_key` | body | string | no | Example: `-----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQ.…`. | | `google.google_credential_json.client_email` | body | string | no | Example: `service-account@my-project-id.iam.gserviceaccount.com`. | | `google.google_credential_json.private_key_id` | body | string | no | Example: `key-id-12345`. | | `google.google_credential_json.universe_domain` | body | string | no | Example: `googleapis.com`. | | `google.google_credential_json.client_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/robot/v1/metadata/x509/service-account%40my-project-…`. | | `google.google_credential_json.auth_provider_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/oauth2/v1/certs`. | | `requested_service` | body | string | no | One of: azure, google, apyhub. Default: `apyhub`. Example: `apyhub`. | #### Quickstart Send an image URL to detect common visual objects in it. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-common-visual-objects/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.png"}' ``` #### What you'll get back Returns a JSON object with a `data` object. The `data` field may contain `azure`, `apyhub`, and `google` objects, depending on which detector response is returned. ```json { "data": { "apyhub": {} } } ``` ## About ## What it does Visual Object Detection identifies common objects in an image sent as a file upload or by URL. Send a `file` or a `url`, and choose which detector to use with `requested_service` (`azure`, `google`, or `apyhub`). Use this service when you need to label images, filter uploads, or add image understanding to workflows that depend on object recognition. The file-based endpoint also accepts provider credentials where needed: Azure fields such as `azure_key`, `azure_region`, `azure_endpoint`, `azure_account_id`, and `azure_access_token`, plus `google_key`. The URL-based endpoint accepts nested `azure` and `google` credential objects, including Google service-account JSON and an optional `google_language`. The response returns a `data` object with provider-specific results under `azure`, `apyhub`, and `google`. That lets you route results from the detector you selected without guessing at the response shape. Typical uses include moderating user uploads, auto-tagging product photos, and building image search or inventory pipelines where you need basic object labels from a remote image or uploaded file. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | Google | 500 | | ApyHub | 2000 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/detect-common-visual-objects * * * --- title: Unarchive Files API slug: unarchive-files url: https://apyhub.com/apyhub/service/unarchive-files provider: ApyHub categories: [File Conversion, File Manipulation] tags: [archive-extraction, unzip, file-processing, signed-urls, document-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 250 alias: extract-file-unarchive --- # Unarchive Files API Send a ZIP, RAR, or 7Z file or URL and get signed URLs for every extracted file. Built for upload pipelines and document workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/unarchive-files/file/link` | What it does Uploads a local archive file and returns signed URLs for each file extracted from that… | 250 | | POST | `https://api.eu.apyhub.com/apyhub/unarchive-files/url/link` | What it does Extracts a remote archive from a URL and returns signed URLs for each file found insid… | 250 | ## Endpoint reference ### Upload a local archive and return signed URLs for each extracted file `POST https://api.eu.apyhub.com/apyhub/unarchive-files/file/link` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Archive file (.zip, .rar, or .7z). | #### Quickstart Upload a `.zip`, `.rar`, or `.7z` archive to extract its files and get signed download URLs back. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/unarchive-files/file/link" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/archive.zip" ``` #### What you'll get back Returns a JSON object with a `data` array of strings, where each string is a signed URI for one extracted file. ```json { "data": [ "https://storage.example.com/unzip/document.pdf?sig=abc", "https://storage.example.com/unzip/image.png?sig=def" ] } ``` ### Extract remote archive and return signed URLs for each file `POST https://api.eu.apyhub.com/apyhub/unarchive-files/url/link` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.zip`. | #### Quickstart Send the ZIP file URL to extract its contents. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/unarchive-files/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.zip"}' ``` #### What you'll get back Returns a JSON object with a `data` array of strings — each string is a signed cloud storage URL for one extracted file. ```json { "data": [ "https://storage.example.com/unzip/document.pdf?sig=abc", "https://storage.example.com/unzip/image.png?sig=def" ] } ``` ## About ## What it does Archive Extractor lets you send a local archive file or a remote archive URL and get back signed URLs for each extracted file. It supports .zip, .rar, and .7z archives. Use the `POST /file/link` endpoint when you already have the archive in your app and want to upload it as binary `file`. Use `POST /url/link` when the archive is already hosted elsewhere and you want to pass a `url` instead. In both cases, the response contains a `data` array of URI strings, with one signed cloud storage URL per extracted file. This is useful when you need to unpack user uploads, process bundled assets, or hand extracted documents off to another workflow without managing the archive contents yourself. You send the archive, and Archive Extractor returns links you can fetch directly. Because the output is just a list of signed URLs, it fits cleanly into pipelines that archive inbound files, queue document processing, or mirror extracted attachments into storage. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/unarchive-files * * * --- title: AI Text Keyword Extraction API slug: extract-keywords-from-text url: https://apyhub.com/apyhub/service/extract-keywords-from-text provider: ApyHub categories: [Artificial Intelligence, SEO] tags: [keyword-extraction, nlp, text-analysis, seo] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 500 alias: ai-text-extract-keywords --- # AI Text Keyword Extraction API Extract keywords from plain text for tagging, search, and content analysis. Supports ApyHub or Azure results with optional language selection. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/extract-keywords-from-text` | What it does Extracts keywords from the text you send in the request body. You can also provide an… | 500 | ## Endpoint reference ### Extract keywords from text `POST https://api.eu.apyhub.com/apyhub/extract-keywords-from-text` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | yes | Example: `This document describes details on security protocols and cryptography.`. | | `azure.key` | body | string | no | Azure subscription key. Example: `your_azure_speech_or_vision_key`. | | `azure.region` | body | string | no | Azure service region. Example: `westus2`. | | `azure.endpoint` | body | string | no | Azure endpoint URL. Example: `https://westus2.api.cognitive.microsoft.com/`. | | `azure.account_id` | body | string | no | Azure account ID. Example: `account-id-1234`. | | `azure.access_token` | body | string | no | OAuth access token for Azure service. Example: `access_token_value`. | | `language` | body | string | no | Example: `en`. | | `requested_service` | body | string | no | One of: azure, apyhub. Default: `apyhub`. Example: `apyhub`. | #### Quickstart Extract keywords from a short text by sending the text in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-keywords-from-text" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"This document describes details on security protocols and cryptography."}' ``` #### What you'll get back Returns a JSON object with a `data` object field. The `data` object can contain `azure` and/or `apyhub` response objects, depending on which service is used. ```json { "data": { "apyhub": {}, "azure": {} } } ``` ## About ## What it does Keyword Extraction helps you send text and get the most relevant keywords back. Use it when you need a quick way to summarize a document, index content, or power search and tagging workflows. POST a `body` object with `text`, and optionally set `language`. If you want ApyHub to handle the request, leave `requested_service` at its default of `apyhub`; if you need to route through Azure, set it to `azure` and include the `azure` credentials object. The service is designed for plain text input, so it fits articles, support tickets, notes, and other unstructured content. The response returns a `data` object with either an `apyhub` result or an `azure` result, depending on the service you request. That makes it useful for building content pipelines where you need keyword signals for search relevance, topic clustering, or lightweight document classification. If you are normalising incoming text at scale, Keyword Extraction gives you a simple interface for turning raw paragraphs into structured keyword output without adding a separate NLP step to your app. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | ApyHub | 2000 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/extract-keywords-from-text * * * --- title: Generate Bar Graph API slug: generate-bar-graph url: https://apyhub.com/apyhub/service/generate-bar-graph provider: ApyHub categories: [Image Processing, Smart Generation] tags: [bar-chart, chart-generation, data-visualization, image-generation, reporting] auth: api_key version: 1.0 service_type: sync endpoints: 2 atoms: 60 alias: bar-graph --- # Generate Bar Graph API Bar Chart API: send a title and labeled values, get a PNG bar graph as a file or signed URL, with themes, colors and sizing. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/generate-bar-graph/download` | What it does Generates a bar chart image from the chart configuration in the request body and retur… | 60 | | POST | `https://api.eu.apyhub.com/apyhub/generate-bar-graph/link` | What it does Generates a bar chart link from the chart configuration in the request body and return… | 60 | ## Endpoint reference ### Generate bar chart image `POST https://api.eu.apyhub.com/apyhub/generate-bar-graph/download` · 60 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `bars` | body | array of object | no | Alias for data. Use either data or bars, not both. | | `bars[].color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `bars[].label` | body | string | yes | Example: `North America`. | | `bars[].value` | body | number | yes | Example: `42000`. | | `data` | body | array of object | yes | Canonical list of bar values. | | `data[].color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `data[].label` | body | string | yes | Example: `North America`. | | `data[].value` | body | number | yes | Example: `42000`. | | `theme` | body | string | no | Chart theme. One of: light, dark. Default: `light`. Example: `light`. | | `title` | body | string | yes | Example: `Quarterly Sales by Region`. | | `options.width` | body | integer | no | Chart width in pixels. Example: `800`. | | `options.height` | body | integer | no | Chart height in pixels. Example: `600`. | | `options.x_axis.font_size` | body | number | no | Font size in pixels. Example: `12`. | | `options.x_axis.font_color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.y_axis.font_size` | body | number | no | Font size in pixels. Example: `12`. | | `options.y_axis.font_color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.spacing` | body | integer | no | Spacing in pixels. Example: `16`. | | `options.bar_width` | body | integer | no | Bar width in pixels. Example: `48`. | | `options.background.color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.background.padding` | body | integer | no | Padding in pixels. Example: `16`. | | `options.title_style.padding` | body | integer | no | Padding in pixels. Example: `12`. | | `options.title_style.font_size` | body | number | no | Font size in pixels. Example: `24`. | | `options.title_style.font_color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.canvas_color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `output` | query | string | no | Example: `quarterly-sales-bar-chart`. | #### Quickstart Generate a bar chart image from a minimal JSON payload. ```bash id="m4tr8q" curl -X POST "https://api.eu.apyhub.com/apyhub/generate-bar-graph/download?output=file" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "title": "Quarterly Sales by Region", "data": [ { "label": "North America", "value": 42000 } ] }' \ -o bar-chart.png ``` #### What you'll get back Returns the generated bar chart image as a binary file response. The example above saves the downloaded file locally as `bar-chart.png`. ### Generate bar chart link `POST https://api.eu.apyhub.com/apyhub/generate-bar-graph/link` · 60 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `bars` | body | array of object | no | Alias for data. Use either data or bars, not both. | | `bars[].color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `bars[].label` | body | string | yes | Example: `North America`. | | `bars[].value` | body | number | yes | Example: `42000`. | | `data` | body | array of object | yes | Canonical list of bar values. | | `data[].color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `data[].label` | body | string | yes | Example: `North America`. | | `data[].value` | body | number | yes | Example: `42000`. | | `theme` | body | string | no | Chart theme. One of: light, dark. Default: `light`. Example: `light`. | | `title` | body | string | yes | Example: `Quarterly Sales by Region`. | | `options.width` | body | integer | no | Chart width in pixels. Example: `800`. | | `options.height` | body | integer | no | Chart height in pixels. Example: `600`. | | `options.x_axis.font_size` | body | number | no | Font size in pixels. Example: `12`. | | `options.x_axis.font_color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.y_axis.font_size` | body | number | no | Font size in pixels. Example: `12`. | | `options.y_axis.font_color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.spacing` | body | integer | no | Spacing in pixels. Example: `16`. | | `options.bar_width` | body | integer | no | Bar width in pixels. Example: `48`. | | `options.background.color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.background.padding` | body | integer | no | Padding in pixels. Example: `16`. | | `options.title_style.padding` | body | integer | no | Padding in pixels. Example: `12`. | | `options.title_style.font_size` | body | number | no | Font size in pixels. Example: `24`. | | `options.title_style.font_color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.canvas_color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `output` | query | string | no | Example: `quarterly-sales-bar-chart`. | #### Quickstart Generate a bar chart image from a small set of bar values. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-bar-graph/link?output=url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "title": "Quarterly Sales by Region", "data": [ { "label": "North America", "value": 42000, "color": "3B82F6" }, { "label": "Europe", "value": 37500, "color": "10B981" }, { "label": "Asia Pacific", "value": 28900, "color": "F59E0B" } ] }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed URL for the generated chart image. ```json { "data": "https://example.com/generated/charts/chart.png" } ``` ## About ## What it does The Bar Chart API turns a title and a list of labeled values into a PNG bar graph. Send a `title` and a `data` array of `{ label, value }` items, and get back the image as a file from `/download` or as a pre-signed URL in the `data` field from `/link`. Each bar can take its own `color` as a 6-character hex code without the `#`. Set `theme` to `light` or `dark`, and use `options` to control `width`, `height`, `bar_width`, `spacing`, axis font size and color, title styling, background padding, and canvas color. Pre-signed links expire after 15 minutes, so download or store the image if you need it longer. Use the bar chart API to render revenue by region, signups by plan, or usage by feature for weekly reports, email digests, PDF invoices, and admin dashboards. It works as a server-side bar graph generator, so every chart comes out with the same styling and needs no browser or frontend charting library. For values split into segments, use the [Stacked Bar Chart API](https://apyhub.com/apyhub/service/generate-stacked-bar-chart), and for shares of a whole, the [Pie Chart API](https://apyhub.com/apyhub/service/generate-pie-chart). Place the chart in a report with the [HTML to PDF API](https://apyhub.com/apyhub/service/convert-html-to-pdf), or turn it into a PDF page with the [Image to PDF API](https://apyhub.com/apyhub/service/convert-image-to-pdf). AI agents can generate these charts through ApyHub MCP. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/generate-bar-graph * * * --- title: AI Document Receipt Data Extraction API slug: extract-receipt-data url: https://apyhub.com/apyhub/service/extract-receipt-data provider: ApyHub categories: [Data Extraction, Finance, Image Processing] tags: [receipt-parsing, receipt-ocr, expense-management, data-extraction, ocr] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-document-extract-receipt --- # AI Document Receipt Data Extraction API Extract receipt data from uploads or URLs. Returns ApyHub or raw Azure parsing output for expense tracking and automated receipt processing. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/extract-receipt-data/file` | What it does Uploads a receipt file for data extraction and returns parsed receipt data. You can re… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/extract-receipt-data/url` | What it does Extracts receipt data from a document URL and returns a JSON object with parsing resul… | 500 | ## Endpoint reference ### Extract receipt data (file upload) `POST https://api.eu.apyhub.com/apyhub/extract-receipt-data/file` · 500 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `azure_key` | body | string | no | Example: `azure-key-val`. | | `azure_region` | body | string | no | Example: `eastus`. | | `azure_endpoint` | body | string | no | Example: `https://endpoint-val/`. | | `azure_account_id` | body | string | no | Example: `account-id`. | | `requested_service` | body | string | no | One of: azure, apyhub. Default: `apyhub`. Example: `apyhub`. | | `azure_access_token` | body | string | no | Example: `token-val`. | #### Quickstart Upload a receipt image to extract its data with the default ApyHub parser. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-receipt-data/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/receipt.jpg" \ -F 'requested_service="apyhub"' ``` #### What you'll get back Returns a JSON object with a `data` object. The `data` object may contain an `apyhub` object with structured ApyHub receipt extraction output, and/or an `azure` object with raw Azure Document Intelligence parsing output. ```json { "data": { "apyhub": {}, "azure": {} } } ``` ### Extract receipt data (URL input) `POST https://api.eu.apyhub.com/apyhub/extract-receipt-data/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://example.com/receipt.pdf`. | | `azure.key` | body | string | no | Azure subscription key. Example: `your_azure_speech_or_vision_key`. | | `azure.region` | body | string | no | Azure service region. Example: `westus2`. | | `azure.endpoint` | body | string | no | Azure endpoint URL. Example: `https://westus2.api.cognitive.microsoft.com/`. | | `azure.account_id` | body | string | no | Azure account ID. Example: `account-id-1234`. | | `azure.access_token` | body | string | no | OAuth access token for Azure service. Example: `access_token_value`. | | `requested_service` | body | string | no | One of: azure, apyhub. Default: `apyhub`. Example: `apyhub`. | #### Quickstart Extract receipt data from a receipt image or PDF URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-receipt-data/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.pdf"}' ``` #### What you'll get back Returns a JSON object with a `data` object. That `data` object may contain `azure` for raw Azure Document Intelligence output and/or `apyhub` for structured ApyHub receipt extraction output. ```json { "data": { "azure": {}, "apyhub": {} } } ``` ## About ## What it does Receipt Extraction reads a receipt from a file upload or a URL and returns parsed receipt data. Send a receipt image or PDF, and choose whether you want the ApyHub result, the raw Azure Document Intelligence output, or both. Use the `/file` endpoint when you already have the receipt content in hand. It accepts a binary `file` plus optional Azure settings such as `azure_key`, `azure_region`, `azure_endpoint`, `azure_account_id`, `azure_access_token`, and `requested_service`. Use the `/url` endpoint when the receipt is hosted remotely; it takes a `url`, optional `azure` credentials object, and `requested_service`. The response is wrapped under `data` and includes `azure` and `apyhub` objects, matching the service you requested. That makes it useful when you need receipt parsing in expense apps, accounting workflows, or backend systems that ingest vendor receipts and store extracted data for review or downstream processing. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | ApyHub | 2000 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/extract-receipt-data * * * --- title: AI Text Anonymization API slug: anonymize-text url: https://apyhub.com/apyhub/service/anonymize-text provider: ApyHub categories: ["Security & Privacy", Smart Generation] tags: [anonymize, text, pii-redaction, data-masking, privacy, gdpr] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 500 alias: ai-text-anonymize --- # AI Text Anonymization API Anonymize free-form text before storage or sharing. Redacts names, phone numbers, and other identifiers and returns an ApyHub or Azure response. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/anonymize-text` | What it does Anonymizes text content by sending a text string in the request body and returning a J… | 500 | ## Endpoint reference ### Anonymize text content `POST https://api.eu.apyhub.com/apyhub/anonymize-text` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | yes | Example: `My name is John Doe and my phone number is 555-0199.`. | | `azure.key` | body | string | no | Azure subscription key. Example: `your_azure_speech_or_vision_key`. | | `azure.region` | body | string | no | Azure service region. Example: `westus2`. | | `azure.endpoint` | body | string | no | Azure endpoint URL. Example: `https://westus2.api.cognitive.microsoft.com/`. | | `azure.account_id` | body | string | no | Azure account ID. Example: `account-id-1234`. | | `azure.access_token` | body | string | no | OAuth access token for Azure service. Example: `access_token_value`. | | `language` | body | string | no | Example: `en`. | | `requested_service` | body | string | no | One of: azure, apyhub. Default: `apyhub`. Example: `apyhub`. | #### Quickstart Send the text you want anonymized in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/anonymize-text" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "text": "My name is John Doe and my phone number is 555-0199.", "language":"en", "requested_service":"apyhub" }' ``` #### What you'll get back Returns a JSON object with a `data` object field. That `data` object may include `azure` and/or `apyhub` response objects, depending on which service handled the request. ```json { "data": { "apyhub": {} } } ``` ## About ## What it does Text Anonymizer removes personal or sensitive details from plain text and returns an anonymized response object. Send a `text` string in the request body, optionally set `language`, and choose `requested_service` to use either `apyhub` or `azure`. If you use Azure directly, you can also pass custom `azure` credentials such as `key`, `region`, `endpoint`, `account_id`, or `access_token`. Use it when you need to process support tickets, chat logs, notes, or other free-form text before storing or sharing them. It fits privacy workflows where names, phone numbers, and similar identifiers should be hidden before data leaves a trusted boundary. The response returns a `data` object with either an `azure` payload or an `apyhub` payload, depending on the service you request. That makes it suitable for pipelines that need a privacy-preserving text step without changing the rest of the document flow. Text Anonymizer is a good fit for compliance, redaction, and internal analytics where you want the content to remain useful while reducing exposure of sensitive information. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | ApyHub | 2000 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/anonymize-text * * * --- title: AI Text Entity Recognition API slug: recognize-entities-in-text url: https://apyhub.com/apyhub/service/recognize-entities-in-text provider: ApyHub categories: [Artificial Intelligence] tags: [named-entity-recognition, ner, nlp, text-analysis] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 500 alias: ai-text-entity-recognition --- # AI Text Entity Recognition API Extract names, organizations, and places from text using Azure, Google, or ApyHub. Built for enrichment, indexing, and document analysis. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/recognize-entities-in-text` | What it does Recognizes entities in a text string and returns a JSON object containing provider-spe… | 500 | ## Endpoint reference ### Recognize entities in text `POST https://api.eu.apyhub.com/apyhub/recognize-entities-in-text` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | yes | Example: `Google was founded in 1998 by Larry Page and Sergey Brin.`. | | `azure.key` | body | string | no | Azure subscription key. Example: `your_azure_speech_or_vision_key`. | | `azure.region` | body | string | no | Azure service region. Example: `westus2`. | | `azure.endpoint` | body | string | no | Azure endpoint URL. Example: `https://westus2.api.cognitive.microsoft.com/`. | | `azure.account_id` | body | string | no | Azure account ID. Example: `account-id-1234`. | | `azure.access_token` | body | string | no | OAuth access token for Azure service. Example: `access_token_value`. | | `google.google_language` | body | string | no | Target language locale. Example: `en`. | | `google.google_credential_json.type` | body | string | no | Example: `service_account`. | | `google.google_credential_json.auth_uri` | body | string | no | Example: `https://accounts.google.com/o/oauth2/auth`. | | `google.google_credential_json.client_id` | body | string | no | Example: `123456789012345678901`. | | `google.google_credential_json.token_uri` | body | string | no | Example: `https://oauth2.googleapis.com/token`. | | `google.google_credential_json.project_id` | body | string | no | Example: `my-project-id`. | | `google.google_credential_json.private_key` | body | string | no | Example: `-----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQ.…`. | | `google.google_credential_json.client_email` | body | string | no | Example: `service-account@my-project-id.iam.gserviceaccount.com`. | | `google.google_credential_json.private_key_id` | body | string | no | Example: `key-id-12345`. | | `google.google_credential_json.universe_domain` | body | string | no | Example: `googleapis.com`. | | `google.google_credential_json.client_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/robot/v1/metadata/x509/service-account%40my-project-…`. | | `google.google_credential_json.auth_provider_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/oauth2/v1/certs`. | | `encoding` | body | string | no | Example: `UTF8`. | | `language` | body | string | no | Example: `en`. | | `requested_service` | body | string | no | One of: azure, google, apyhub. Default: `apyhub`. Example: `apyhub`. | #### Quickstart Recognize entities in a short text snippet with the default ApyHub service. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/recognize-entities-in-text" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "text": "Google was founded in 1998 by Larry Page and Sergey Brin.", "requested_service": "apyhub" }' ``` #### What you'll get back Returns a JSON object with a `data` object. That object may include `azure`, `apyhub`, and/or `google` fields, each holding the corresponding service response object. ```json { "data": { "apyhub": {} } } ``` ## About ## What it does Entity Recognition identifies names, organizations, places, and other entities in plain text. Send a `text` string in the request body, and choose whether to run it through `requested_service` set to `azure`, `google`, or `apyhub`. Use it when you need to extract structured meaning from unstructured text. For example, you can process support tickets, news articles, CRM notes, or internal documents to find people, companies, and locations without writing your own NLP pipeline. The response wraps provider-specific results under `data.azure`, `data.google`, or `data.apyhub`, depending on the service you request. That makes it useful when you want a single endpoint for entity detection while keeping the downstream response aligned with the NLP provider you choose. If you already have language or encoding details, you can include `language`, `encoding`, or provider credentials in `azure` or `google` as needed. Entity Recognition is a fit for enrichment workflows, document processing, search indexing, and any automation that starts with free-form text. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | Google | 500 | | ApyHub | 2000 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/recognize-entities-in-text * * * --- title: Generate Secure Archives API slug: create-password-protected-zip url: https://apyhub.com/apyhub/service/create-password-protected-zip provider: ApyHub categories: [File Manipulation, File Security, "Security & Privacy"] tags: [archive, secure, zip] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 200 alias: generate-secure-file-archive --- # Generate Secure Archives API Create encrypted ZIP archives from uploaded files or remote URLs. Stream the archive or return a signed download link for controlled sharing. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/create-password-protected-zip/url/download` | What it does Creates a password-protected ZIP archive from one or more remote file URLs and streams… | 200 | | POST | `https://api.eu.apyhub.com/apyhub/create-password-protected-zip/url/link` | What it does Creates a password-protected ZIP archive from one or more remote file URLs and returns… | 200 | | POST | `https://api.eu.apyhub.com/apyhub/create-password-protected-zip/file/download` | What it does Creates a password-protected ZIP archive from the uploaded files and streams the resul… | 200 | | POST | `https://api.eu.apyhub.com/apyhub/create-password-protected-zip/file/link` | What it does Creates a password-protected ZIP archive from uploaded files and returns a signed URI… | 200 | ## Endpoint reference ### Create password-protected ZIP from remote URLs and stream download `POST https://api.eu.apyhub.com/apyhub/create-password-protected-zip/url/download` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `urls` | body | array of string | yes | Example: `["https://assets.apyhub.com/samples/sample.pdf","https://assets.apyhub.com/samp…`. | | `password` | body | string (password) | yes | Example: `secret123`. | | `output` | query | string | no | Filename for the generated archive. A .zip, .rar or .7z extension is kept as given; anything else gets .zip appended. Default: `output.zip`. | #### Quickstart Create a password-protected ZIP from a list of file URLs. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/create-password-protected-zip/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "urls": [ "https://assets.apyhub.com/samples/sample.pdf", "https://assets.apyhub.com/samples/sample.png" ], "password": "secret123" }' ``` #### What you'll get back Returns a binary file containing the generated ZIP archive. ### Create password-protected ZIP from remote URLs and return signed link `POST https://api.eu.apyhub.com/apyhub/create-password-protected-zip/url/link` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `urls` | body | array of string | yes | Example: `["https://assets.apyhub.com/samples/sample.pdf","https://assets.apyhub.com/samp…`. | | `password` | body | string (password) | yes | Example: `secret123`. | #### Quickstart Create a password-protected ZIP from the URLs you send in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/create-password-protected-zip/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "urls": [ "https://assets.apyhub.com/samples/sample.pdf", "https://assets.apyhub.com/samples/sample.png" ], "password": "secret123" }' ``` #### What you'll get back Returns a JSON object with a `data` string containing the download URL for the generated ZIP archive. ```json { "data": "https://storage.example.com/zip/output.zip?sig=abc" } ``` ### Create password-protected ZIP from uploaded files and stream download `POST https://api.eu.apyhub.com/apyhub/create-password-protected-zip/file/download` · 200 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `files` | body | array of string | yes | One or more files to include in the archive. | | `password` | body | string (password) | yes | Password used to encrypt the archive. Required. Example: `secret123`. | | `output` | query | string | no | Default: `output.zip`. | #### Quickstart Upload one or more files and set a password to generate a password-protected ZIP archive. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/create-password-protected-zip/file/download" \ -H "apy-token: $APY_TOKEN" \ -F "files=@/path/to/file1.txt" \ -F "files=@/path/to/file2.pdf" \ -F "password=secret123" ``` #### What you'll get back Returns a binary file which is the generated ZIP archive. ### Create password-protected ZIP from uploaded files and return signed link `POST https://api.eu.apyhub.com/apyhub/create-password-protected-zip/file/link` · 200 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `files` | body | array of string | yes | | | `password` | body | string (password) | yes | Password used to encrypt the archive. Required. Example: `secret123`. | #### Quickstart Upload one or more files and a password to generate a password-protected ZIP from file links. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/create-password-protected-zip/file/link" \ -H "apy-token: $APY_TOKEN" \ -F "files=@/path/to/file1.pdf" \ -F "password=secret123" ``` #### What you'll get back Returns a JSON object with a `data` string field containing the URI of the generated ZIP file. ```json { "data": "https://storage.example.com/zip/output.zip?sig=abc" } ``` ## About ## What it does Password Protected ZIP lets you bundle files into an encrypted ZIP archive from either uploaded files or remote URLs. Send one or more `files` or `urls` plus a `password`, and get back either a binary ZIP download or a signed `data` link to the finished archive. Use the `/file/download` and `/url/download` endpoints when you want the archive streamed directly to the client. Use `/file/link` or `/url/link` when your workflow prefers a signed download URL instead of a binary response. The URL-based endpoints accept an array of remote file URLs and a password; the file-based endpoints accept an array of binary file uploads and a password. This is useful when you need to package invoices, reports, exports, or attachments with access control before sharing them with customers or internal teams. You can generate the archive on demand without storing a plain, unprotected ZIP in your own application. Password Protected ZIP keeps the response simple: either a streamed ZIP file or a single download URL. That makes it easy to drop into file delivery flows, admin tools, or automated export jobs. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/create-password-protected-zip * * * --- title: AI Text Language Detection API slug: ai-detect-language url: https://apyhub.com/apyhub/service/ai-detect-language provider: ApyHub categories: [Artificial Intelligence] tags: [detection, language, text] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 500 alias: ai-text-detect-language --- # AI Text Language Detection API Detect the language of any text string using ApyHub, Azure, or Google. Route multilingual content into translation, classification, or indexing. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/ai-detect-language` | What it does Detects the language of the provided text and returns a JSON object containing a data… | 500 | ## Endpoint reference ### Detect language of text `POST https://api.eu.apyhub.com/apyhub/ai-detect-language` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | yes | Example: `Bonjour tout le monde!`. | | `azure.key` | body | string | no | Azure subscription key. Example: `your_azure_speech_or_vision_key`. | | `azure.region` | body | string | no | Azure service region. Example: `westus2`. | | `azure.endpoint` | body | string | no | Azure endpoint URL. Example: `https://westus2.api.cognitive.microsoft.com/`. | | `azure.account_id` | body | string | no | Azure account ID. Example: `account-id-1234`. | | `azure.access_token` | body | string | no | OAuth access token for Azure service. Example: `access_token_value`. | | `google.google_language` | body | string | no | Target language locale. Example: `en`. | | `google.google_credential_json.type` | body | string | no | Example: `service_account`. | | `google.google_credential_json.auth_uri` | body | string | no | Example: `https://accounts.google.com/o/oauth2/auth`. | | `google.google_credential_json.client_id` | body | string | no | Example: `123456789012345678901`. | | `google.google_credential_json.token_uri` | body | string | no | Example: `https://oauth2.googleapis.com/token`. | | `google.google_credential_json.project_id` | body | string | no | Example: `my-project-id`. | | `google.google_credential_json.private_key` | body | string | no | Example: `-----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQ.…`. | | `google.google_credential_json.client_email` | body | string | no | Example: `service-account@my-project-id.iam.gserviceaccount.com`. | | `google.google_credential_json.private_key_id` | body | string | no | Example: `key-id-12345`. | | `google.google_credential_json.universe_domain` | body | string | no | Example: `googleapis.com`. | | `google.google_credential_json.client_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/robot/v1/metadata/x509/service-account%40my-project-…`. | | `google.google_credential_json.auth_provider_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/oauth2/v1/certs`. | | `requested_service` | body | string | no | One of: azure, google, apyhub. Default: `apyhub`. Example: `apyhub`. | #### Quickstart Send a text sample to detect its language. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/ai-detect-language" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"Bonjour tout le monde!","requested_service":"apyhub"}' ``` #### What you'll get back Returns a JSON object with a `data` object. The `data` object can contain `azure`, `apyhub`, and `google` fields, each holding that provider’s language-detection response object. ```json { "data": { "apyhub": {}, "azure": {}, "google": {} } } ``` ## About ## What it does Language Detector identifies the language of a text string and returns the result through the selected provider: ApyHub, Azure, or Google. Send a piece of text in `body.text`, and choose `requested_service` to route the request to the language engine you want to use. Use it when you need to classify user-generated content, route support tickets, segment multilingual documents, or decide which downstream translation or NLP pipeline to run. The request schema also supports optional `azure` and `google` credential objects when you want to use those providers directly. The response wraps provider-specific output under `data.azure`, `data.apyhub`, or `data.google`, so you can read the detection result from the service you selected without guessing at extra fields. If you already have a text-processing workflow, this endpoint fits as a lightweight language identification step before indexing, moderation, translation, or analytics. Because the input is just text plus an optional provider selection, it is easy to slot into forms, ingestion jobs, and batch processing flows where language needs to be detected before the next step runs. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | Google | 500 | | ApyHub | 2000 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/ai-detect-language * * * --- title: AI Document ID Extraction API slug: extract-id-data url: https://apyhub.com/apyhub/service/extract-id-data provider: ApyHub categories: [Artificial Intelligence, Data Extraction] tags: [id-extraction, document-intelligence, identity-verification, ocr, document-parsing] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-document-extract-id --- # AI Document ID Extraction API Extract data from ID documents supplied as uploads or URLs. Returns Azure parsing output and structured ApyHub results for verification and intake. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/extract-id-data/file` | What it does Uploads an ID document file and returns parsed extraction results. The response is a J… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/extract-id-data/url` | What it does Uploads an ID document URL and returns parsed extraction results. The response is a JS… | 500 | ## Endpoint reference ### Extract id data (file upload) `POST https://api.eu.apyhub.com/apyhub/extract-id-data/file` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `azure_key` | body | string | no | Example: `azure-key-val`. | | `azure_region` | body | string | no | Example: `eastus`. | | `azure_endpoint` | body | string | no | Example: `https://endpoint-val/`. | | `azure_account_id` | body | string | no | Example: `account-id`. | | `requested_service` | body | string | no | One of: azure, apyhub. Default: `apyhub`. Example: `apyhub`. | | `azure_access_token` | body | string | no | Example: `token-val`. | #### Quickstart Upload an ID file to extract data from it using ApyHub. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-id-data/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/id-document.jpg" \ -F 'requested_service=apyhub' ``` #### What you'll get back Returns a JSON object with a `data` object. That `data` object may include `azure` for raw Azure Document Intelligence output and/or `apyhub` for structured ApyHub ID extraction output. ```json { "data": { "azure": {}, "apyhub": {} } } ``` ### Extract id data (URL input) `POST https://api.eu.apyhub.com/apyhub/extract-id-data/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://example.com/id.pdf`. | | `azure.key` | body | string | no | Azure subscription key. Example: `your_azure_speech_or_vision_key`. | | `azure.region` | body | string | no | Azure service region. Example: `westus2`. | | `azure.endpoint` | body | string | no | Azure endpoint URL. Example: `https://westus2.api.cognitive.microsoft.com/`. | | `azure.account_id` | body | string | no | Azure account ID. Example: `account-id-1234`. | | `azure.access_token` | body | string | no | OAuth access token for Azure service. Example: `access_token_value`. | | `requested_service` | body | string | no | One of: azure, apyhub. Default: `apyhub`. Example: `apyhub`. | #### Quickstart Provide an ID document URL to extract data from it using ApyHub. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-id-data/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://example.com/id-document.jpg", "requested_service": "apyhub" }' ``` #### What you'll get back Returns a JSON object with a `data` object. That `data` object may include `azure` for raw Azure Document Intelligence output and/or `apyhub` for structured ApyHub ID extraction output. ```json { "data": { "azure": {}, "apyhub": {} } } ``` ## About ## What it does ID Data Extraction lets you send an ID document as a file or by URL and get extracted identity data back. Choose the `requested_service` value to route the request to `apyhub` or `azure`, and, for Azure-backed requests, provide the Azure credential fields supported by the endpoint. Use `POST /file` to upload a binary `file`, or `POST /url` to point the service at a `url`. Both endpoints accept the same service selection pattern, and the URL flow also supports an `azure` object with `key`, `region`, `endpoint`, `account_id`, and `access_token` for custom Azure configuration. The response returns a `data` object with `azure` and `apyhub` objects. `azure` contains the raw Azure Document Intelligence parsing output, while `apyhub` contains the structured ApyHub ID extraction output. That makes the service useful when you need to read identity documents from uploads or hosted files and compare the structured result with the underlying Azure parse. Typical uses include onboarding flows, account verification, and document intake pipelines where you need extracted ID details from PDFs or other supported file inputs. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | ApyHub | 2000 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/extract-id-data * * * --- title: Extract User Agent API slug: parse-user-agent-string url: https://apyhub.com/apyhub/service/parse-user-agent-string provider: ApyHub categories: [Developer Tools, "Security & Privacy"] tags: [user-agent-parser, user-agent, device-detection, browser-detection] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 20 alias: extract-user-agent --- # Extract User Agent API Parse a raw User-Agent string into browser, platform, device, and engine data. Built for analytics, request logging, and bot detection. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/parse-user-agent-string` | What it does Parses a raw HTTP User-Agent string from the request body and returns a structured bre… | 20 | ## Endpoint reference ### Parse User-Agent string `POST https://api.eu.apyhub.com/apyhub/parse-user-agent-string` · 20 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `user_agent` | body | string | yes | Raw HTTP User-Agent header value to parse. Example: `Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like…`. | #### Quickstart Parse a raw User-Agent string to identify the browser, platform, device, and engine. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/parse-user-agent-string" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "user_agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36" }' ``` #### What you'll get back Returns a JSON object with a `data` object containing `browser`, `platform`, `device`, and `engine` objects. ```json { "data": { "browser": {}, "platform": {}, "device": {}, "engine": {} } } ``` ## About ## What it does User Agent Parser turns a raw HTTP `user_agent` string into structured browser, platform, device, and engine data. Send the header value you receive from a request, and get back the parsed client details you can use in analytics, support, or bot filtering. The request body accepts one field: `user_agent`. The response wraps everything under `data`, with required `browser`, `platform`, `device`, and `engine` objects. Browser data includes the browser name, type, version, major and minor version, and an `is_bot` flag. Platform data includes the OS name, short code, version, and icon. Device data includes the device name, type, brand, code name, and icon. Engine data includes the rendering engine name and version. Use User Agent Parser when you need to segment traffic by browser or operating system, detect desktop versus mobile clients, or flag automated requests. It is a direct fit for request logging pipelines, fraud checks, and product analytics that need a normalized view of the client behind each HTTP request. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/parse-user-agent-string * * * --- title: Trim Video Clip Job API slug: trim-video-job url: https://apyhub.com/apyhub/service/trim-video-job provider: ApyHub categories: [File Conversion, File Manipulation] tags: [video-trim, video-cut, video-clip, video-editing, batch-jobs] auth: api_key version: 1.0 service_type: job endpoints: 3 atoms: 5-400 alias: job-video-thumbnail --- # Trim Video Clip Job API Clip a video file or URL into a shorter output. Set start time, duration, and optional size, then poll the job_id for the finished output URL. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/trim-video-job/file-to-json` | What it does Submits a video file to start an asynchronous video clip job. The endpoint accepts a m… | 400 | | GET | `https://api.eu.apyhub.com/apyhub/trim-video-job/jobs/:job_id` | What it does Checks the status of a submitted video clip job by job ID. It returns a JSON object co… | 5 | | POST | `https://api.eu.apyhub.com/apyhub/trim-video-job/url-to-json` | What it does Submits an async job to trim a clip from a source video URL. The request body supplies… | 400 | ## Endpoint reference ### Submit video clip job (multipart file) `POST https://api.eu.apyhub.com/apyhub/trim-video-job/file-to-json` · 400 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | Optional output scale WIDTHxHEIGHT (even integers, e.g. 640x360). Example: `640x360`. | | `video` | body | string (binary) | yes | Source video file. | | `duration` | body | string | no | Clip length in seconds; capped at 20. Default 2. Example: `8`. | | `start_time` | body | string | no | Seek offset in seconds (non-negative integer). Default 0. Example: `2`. | | `persistent` | query | boolean | no | | #### Quickstart Upload a video file to start an async video clip job. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/trim-video-job/file-to-json" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" ``` #### What you'll get back Returns a JSON object with a `job_id` string field — a UUID you can use to poll for the job status. ```json { "job_id": "550e8400-e29b-41d4-a716-446655440000" } ``` ### Check video clip job status `GET https://api.eu.apyhub.com/apyhub/trim-video-job/jobs/:job_id` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Check the status of a video clip job by its job ID. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/trim-video-job/jobs/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a top-level `data` object. The `data` object can include `url` when the job is successful, plus `job_id`, `status`, and `message` depending on the job state. ```json { "data": { "job_id": "123e4567-e89b-12d3-a456-426614174000", "status": "successful", "url": "https://assets.apyhub.com/samples/sample.mp4" } } ``` ### Submit video clip job (source URL) `POST https://api.eu.apyhub.com/apyhub/trim-video-job/url-to-json` · 400 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | Optional output scale WIDTHxHEIGHT (even integers). Example: `640x360`. | | `duration` | body | string | no | Clip length in seconds; capped at 20. Default 2. Example: `8`. | | `video_url` | body | string (uri) | yes | HTTP(S) URL of the source video to download and clip. Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `start_time` | body | string | no | Seek offset in seconds (non-negative integer). Default 0. Example: `2`. | | `persistent` | query | boolean | no | | #### Quickstart Start a video clip job by sending the source video URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/trim-video-job/url-to-json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "video_url": "https://assets.apyhub.com/samples/sample.mp4" }' ``` #### What you'll get back Returns a JSON object with a `job_id` string field — the job identifier you can use to poll for status later. ```json { "job_id": "550e8400-e29b-41d4-a716-446655440000" } ``` ## About ## What it does Video Clip Job cuts a source video into a short output video and lets you set the starting point, clip length, and optional output size. Send either a video file or a `video_url`, then choose `start_time` in seconds, `duration` in seconds, and an optional `size` in `WIDTHxHEIGHT` format. `duration` is capped at 20 seconds, and `start_time` defaults to 0. The file upload endpoint accepts a multipart `video` field; the URL endpoint downloads the video from an HTTP(S) source and processes it asynchronously. When the job is accepted, you get back a `job_id` for polling. Use `GET /jobs/:job_id` to check status: `pending`, `successful`, or `failed`. On success, the job response includes a `url` to the clipped video output. If the job is still running or fails, the response includes the job status and a human-readable `message`. The output is a video clip, not a still image. If you need a single frame, use the Generate Thumbnail from Video Job API instead. Use Video Clip Job when you need short preview clips for media libraries, upload workflows, content moderation queues, or sharing a specific segment of a longer video. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/trim-video-job * * * --- title: "PDF Watermark API: Add Text or Image Watermarks" slug: apply-watermark-on-pdf url: https://apyhub.com/apyhub/service/apply-watermark-on-pdf provider: ApyHub categories: [File Manipulation] tags: [watermark, pdf-watermark, pdf-processing, document-stamping] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 100 alias: pdf-stamp-watermark --- # PDF Watermark API: Add Text or Image Watermarks Watermark PDF files with one API call. Add text like DRAFT or a PNG logo to every page from an upload or URL, and get the PDF back. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/apply-watermark-on-pdf/file/download` | What it does Uploads a PDF file, applies a watermark to it, and returns the watermarked PDF as a do… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/apply-watermark-on-pdf/file/url` | What it does Uploads a PDF file and returns a URL for the watermarked PDF output. The request can i… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/apply-watermark-on-pdf/url/download` | What it does Takes a publicly accessible PDF URL and applies a watermark to it, then returns the ge… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/apply-watermark-on-pdf/url/url` | What it does Adds a watermark to a PDF fetched from a URL and returns the URL of the generated wate… | 100 | ## Endpoint reference ### Add watermark to PDF (file upload → download) `POST https://api.eu.apyhub.com/apyhub/apply-watermark-on-pdf/file/download` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | PDF file to watermark. | | `output` | body | string | no | Output filename stem (without extension). Defaults to output. | | `watermark_text` | body | string | no | Watermark text rendered on every page. At least one of watermark_text or watermark_image is required. Example: `DRAFT`. | | `watermark_image` | body | string (binary) | no | PNG image scaled to fit each page as a watermark. | #### Quickstart Upload a PDF and a watermark file to generate a watermarked PDF download. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/apply-watermark-on-pdf/file/download" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.pdf" \ -F "watermark_image=@/path/to/watermark.png" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the generated PDF. ### Add watermark to PDF (file upload → S3 URL) `POST https://api.eu.apyhub.com/apyhub/apply-watermark-on-pdf/file/url` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `watermark_text` | body | string | no | Example: `DRAFT`. | | `watermark_image` | body | string (binary) | no | | #### Quickstart Upload a PDF file to generate a watermarked PDF link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/apply-watermark-on-pdf/file/url" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.pdf" ``` #### What you'll get back Returns a JSON object with a `url` string field containing the watermarked PDF file URL. ```json { "url": "https://s3.amazonaws.com/bucket/watermarked.pdf" } ``` ### Add watermark to PDF (URL → download) `POST https://api.eu.apyhub.com/apyhub/apply-watermark-on-pdf/url/download` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file_url` | body | string (uri) | yes | Publicly accessible PDF URL. Example: `https://assets.apyhub.com/samples/sample.pdf`. | | `watermark_text` | body | string | no | At least one of watermark_text or watermark_image_url is required. Example: `DRAFT`. | | `watermark_image_url` | body | string (uri) | no | Publicly accessible PNG image URL to use as the watermark. | #### Quickstart Download a PDF from a public URL and apply a text watermark in one call. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/apply-watermark-on-pdf/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "file_url": "https://assets.apyhub.com/samples/sample.pdf", "watermark_text": "DRAFT" }' ``` #### What you'll get back Returns the generated PDF as a binary file. ```binary ``` ### Add watermark to PDF (URL → S3 URL) `POST https://api.eu.apyhub.com/apyhub/apply-watermark-on-pdf/url/url` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file_url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.pdf`. | | `watermark_text` | body | string | no | Example: `DRAFT`. | | `watermark_image_url` | body | string (uri) | no | | #### Quickstart Create a watermarked PDF from a public file URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/apply-watermark-on-pdf/url/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "file_url": "https://assets.apyhub.com/samples/sample.pdf", "watermark_text": "DRAFT" }' ``` #### What you'll get back Returns a JSON object with a `url` string field — the location of the generated watermarked PDF. ```json { "url": "https://s3.amazonaws.com/bucket/watermarked.pdf" } ``` ## About ## What it does The PDF Watermark API adds a text or image watermark to every page of a PDF. Send the PDF as an upload (up to 100 MB) or as a URL, set `watermark_text` for words like "DRAFT" or "CONFIDENTIAL", or add a PNG logo as the watermark image, and get the watermarked PDF back as the file itself or as a link you can store or share. Use it to mark drafts and internal documents, brand reports and invoices before sending them to customers, or label files with a client or company name so their origin is clear when shared. For page headers, footers, and stamps, use the [Watermark and Footers on PDF API](https://apyhub.com/apyhub/service/stamp-header-footer-on-pdf). To watermark other media, use the [Image Watermark API](https://apyhub.com/apyhub/service/apply-watermark) or the [Video Watermark API](https://apyhub.com/apyhub/service/generate-watermark-for-videos). Pick the endpoint that fits your setup: upload endpoints when the PDF is in your app, URL endpoints when it's hosted elsewhere. You can start on ApyHub's free tier with no card required. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/apply-watermark-on-pdf * * * --- title: AI Image Landmark Detection API slug: detect-landmarks url: https://apyhub.com/apyhub/service/detect-landmarks provider: ApyHub categories: [Artificial Intelligence, Geolocation, Image Processing] tags: [landmark-detection, computer-vision, image-recognition, ai-vision] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-image-detect-landmark --- # AI Image Landmark Detection API Identify landmarks from image uploads or image URLs. Returns detector responses from ApyHub, Azure, or Google for vision and travel workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/detect-landmarks/file` | What it does Uploads a file and runs landmark detection against the selected service. The response… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/detect-landmarks/url` | What it does Detects landmarks from an image URL. The request body must include a url, and you can… | 500 | ## Endpoint reference ### Detect landmarks (file upload) `POST https://api.eu.apyhub.com/apyhub/detect-landmarks/file` · 500 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `azure_key` | body | string | no | Example: `azure-key-val`. | | `google_key` | body | string | no | Example: `google-key-val`. | | `azure_region` | body | string | no | Example: `westus`. | | `azure_endpoint` | body | string | no | Example: `https://westus.api.cognitive.microsoft.com/`. | | `azure_account_id` | body | string | no | Example: `azure-account-id`. | | `requested_service` | body | string | no | One of: azure, google, apyhub. Default: `apyhub`. Example: `apyhub`. | | `azure_access_token` | body | string | no | Example: `token-val`. | #### Quickstart Upload an image file to detect landmarks. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-landmarks/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" \ -F "requested_service=apyhub" ``` #### What you'll get back Returns a JSON object with a `data` object field. That `data` object may include `azure`, `apyhub`, and `google` objects, depending on the detector response. ```json { "data": { "azure": {}, "apyhub": {}, "google": {} } } ``` ### Detect landmarks (URL input) `POST https://api.eu.apyhub.com/apyhub/detect-landmarks/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://example.com/landmark.jpg`. | | `azure.key` | body | string | no | Azure subscription key. Example: `your_azure_speech_or_vision_key`. | | `azure.region` | body | string | no | Azure service region. Example: `westus2`. | | `azure.endpoint` | body | string | no | Azure endpoint URL. Example: `https://westus2.api.cognitive.microsoft.com/`. | | `azure.account_id` | body | string | no | Azure account ID. Example: `account-id-1234`. | | `azure.access_token` | body | string | no | OAuth access token for Azure service. Example: `access_token_value`. | | `google.google_language` | body | string | no | Target language locale. Example: `en`. | | `google.google_credential_json.type` | body | string | no | Example: `service_account`. | | `google.google_credential_json.auth_uri` | body | string | no | Example: `https://accounts.google.com/o/oauth2/auth`. | | `google.google_credential_json.client_id` | body | string | no | Example: `123456789012345678901`. | | `google.google_credential_json.token_uri` | body | string | no | Example: `https://oauth2.googleapis.com/token`. | | `google.google_credential_json.project_id` | body | string | no | Example: `my-project-id`. | | `google.google_credential_json.private_key` | body | string | no | Example: `-----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQ.…`. | | `google.google_credential_json.client_email` | body | string | no | Example: `service-account@my-project-id.iam.gserviceaccount.com`. | | `google.google_credential_json.private_key_id` | body | string | no | Example: `key-id-12345`. | | `google.google_credential_json.universe_domain` | body | string | no | Example: `googleapis.com`. | | `google.google_credential_json.client_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/robot/v1/metadata/x509/service-account%40my-project-…`. | | `google.google_credential_json.auth_provider_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/oauth2/v1/certs`. | | `requested_service` | body | string | no | One of: azure, google, apyhub. Default: `apyhub`. Example: `apyhub`. | #### Quickstart Detect landmarks from an image URL with the default ApyHub vision service. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-landmarks/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"requested_service":"apyhub","url":"https://assets.apyhub.com/samples/sample.png"}' ``` #### What you'll get back Returns a JSON object with a `data` object field. The `data` object may contain `azure`, `apyhub`, and `google` objects, depending on which vision backend responds. ```json { "data": { "apyhub": {} } } ``` ## About ## What it does Landmark Detection identifies landmarks in an image and returns the detector response from the service you choose. Send either a file upload or a public image URL, and include optional credentials when you want to route the request through Azure or Google instead of the default ApyHub detector. Use `/file` when you already have the image bytes, or `/url` when the image is hosted elsewhere. Both endpoints accept `requested_service` with `azure`, `google`, or `apyhub`. The file endpoint also accepts `azure_key`, `google_key`, `azure_region`, `azure_endpoint`, `azure_account_id`, and `azure_access_token`. The URL endpoint accepts nested `azure` and `google` credential objects, including Google credential JSON and Azure service details. The response is grouped under `data` and may include `azure`, `apyhub`, and `google` objects, depending on the service path you request. That makes Landmark Detection useful when you need to compare providers, keep a fallback vision pipeline, or standardize landmark recognition across different cloud accounts. Integrate it into travel apps, media moderation workflows, or image indexing systems where you need to recognise places from user-uploaded photos without building your own vision model. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | Google | 500 | | ApyHub | 2000 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/detect-landmarks * * * --- title: Audio Extractor from Video Job API slug: audio-extract-from-video url: https://apyhub.com/apyhub/service/audio-extract-from-video provider: ApyHub categories: [Audio Processing, File Conversion, File Manipulation] tags: [video-to-audio, mp4-to-mp3, audio-extraction, batch-jobs] auth: api_key version: 1.0 service_type: job endpoints: 3 atoms: 5-400 alias: job-extract-video-audio --- # Audio Extractor from Video Job API Extract audio from large videos without waiting. Submit a video file or URL, check the job status & download the audio as MP3, WAV, AAC, or FLAC. Free tier. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/audio-extract-from-video/url-to-json` | What it does Submits an async job to extract audio from a video at a source URL. It returns a job i… | 400 | | POST | `https://api.eu.apyhub.com/apyhub/audio-extract-from-video/file-to-json` | What it does Submits a multipart video file for audio extraction and starts an asynchronous job. Th… | 400 | | GET | `https://api.eu.apyhub.com/apyhub/audio-extract-from-video/jobs/:job_id` | What it does Checks the status of an audio extraction job submitted earlier and returns the current… | 5 | ## Endpoint reference ### Submit audio extraction job (source URL) `POST https://api.eu.apyhub.com/apyhub/audio-extract-from-video/url-to-json` · 400 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `duration` | body | string | no | Clip length in seconds. Default 2 unless full_audio is true. | | `video_url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `full_audio` | body | boolean | no | When true, extract from start_time to end of file. Default: `false`. | | `start_time` | body | string | no | Seek offset in seconds (non-negative integer as string). Default 0. | | `output_format` | body | string | no | One of: mp3, wav, aac, ogg, flac, wma, ac3. Default: `mp3`. | | `persistent` | query | boolean | no | | #### Quickstart Submit a video URL to start extracting audio and get back a job ID you can poll later. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/audio-extract-from-video/url-to-json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "video_url": "https://assets.apyhub.com/samples/sample.mp4" }' ``` #### What you'll get back Returns a JSON object with a `job_id` string field — the UUID of the submitted async job. ```json { "job_id": "550e8400-e29b-41d4-a716-446655440000" } ``` ### Submit audio extraction job (multipart file) `POST https://api.eu.apyhub.com/apyhub/audio-extract-from-video/file-to-json` · 400 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `video` | body | string (binary) | yes | | | `duration` | body | integer | no | Number of seconds to extract. Ignored when full_audio is true. Default: `2`. | | `full_audio` | body | string | no | When true, extract the complete audio track. One of: true, false, 1, 0. Default: `false`. | | `start_time` | body | integer | no | Seek offset in seconds. Default: `0`. | | `output_format` | body | string | no | One of: mp3, wav, aac, ogg, flac, wma, ac3. Default: `mp3`. | | `persistent` | query | boolean | no | | #### Quickstart Upload a video file to start an async audio-extraction job and get back a job ID. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/audio-extract-from-video/file-to-json" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" ``` #### What you'll get back Returns a JSON object with a required `job_id` string field, which is the UUID you can use to poll job status later. ```json { "job_id": "550e8400-e29b-41d4-a716-446655440000" } ``` ### Check audio extraction job status `GET https://api.eu.apyhub.com/apyhub/audio-extract-from-video/jobs/:job_id` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Check the status of an audio-extraction job by its job ID. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/audio-extract-from-video/jobs/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. The `data` object may include `job_id` (string), `status` (`pending`, `successful`, or `failed`), `message` (string), and `url` (string) when the job is successful. ```json { "data": { "job_id": "550e8400-e29b-41d4-a716-446655440000", "status": "successful", "url": "https://assets.apyhub.com/samples/sample.mp4" } } ``` ## About ## What it does The Extract Audio from Video Job API pulls the audio track out of long or large videos as a background job. Submit a video file or URL, get a job ID right away, and check the job status until your audio is ready to download in MP3, WAV, AAC, OGG, FLAC, WMA, or AC3. Use it when videos are too long to process within a single request, such as full recordings, webinars, and lectures, or when you're processing many videos in a queue and don't want your app to wait for each one. For short videos you want to convert immediately, use the [Extract Audio from Video API](https://apyhub.com/apyhub/service/extract-audio-from-video), which returns the audio in the same request. You can start on ApyHub's free tier with no card required. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/audio-extract-from-video * * * --- title: AI Image Brand/Logo Detection API slug: detect-logos-and-brands url: https://apyhub.com/apyhub/service/detect-logos-and-brands provider: ApyHub categories: [Artificial Intelligence, Image Processing] tags: [logo-detection, brand-recognition, image-classification, computer-vision, vision-api] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-image-detect-brand --- # AI Image Brand/Logo Detection API Detect logos and brand marks in an image file or URL. Returns results from Azure, Google, or ApyHub vision models for media monitoring. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/detect-logos-and-brands/file` | What it does Uploads a file and runs logo/brand detection against the selected service. The respons… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/detect-logos-and-brands/url` | What it does Detects logos and brands from an image URL. The request sends the image url and, if ne… | 500 | ## Endpoint reference ### Detect logos and brands (file upload) `POST https://api.eu.apyhub.com/apyhub/detect-logos-and-brands/file` · 500 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `azure_key` | body | string | no | Example: `azure-key-val`. | | `google_key` | body | string | no | Example: `google-key-val`. | | `azure_region` | body | string | no | Example: `westus`. | | `azure_endpoint` | body | string | no | Example: `https://westus.api.cognitive.microsoft.com/`. | | `azure_account_id` | body | string | no | Example: `azure-account-id`. | | `requested_service` | body | string | no | One of: azure, google, apyhub. Default: `apyhub`. Example: `apyhub`. | | `azure_access_token` | body | string | no | Example: `token-val`. | #### Quickstart Upload an image file to detect logos and brands. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-logos-and-brands/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" ``` #### What you'll get back Returns a JSON object with a `data` object field. Inside `data`, the response may include `azure`, `apyhub`, and `google` objects, depending on the detector used. ```json { "data": { "azure": {}, "apyhub": {}, "google": {} } } ``` ### Detect logos and brands (URL input) `POST https://api.eu.apyhub.com/apyhub/detect-logos-and-brands/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://example.com/brands.jpg`. | | `azure.key` | body | string | no | Azure subscription key. Example: `your_azure_speech_or_vision_key`. | | `azure.region` | body | string | no | Azure service region. Example: `westus2`. | | `azure.endpoint` | body | string | no | Azure endpoint URL. Example: `https://westus2.api.cognitive.microsoft.com/`. | | `azure.account_id` | body | string | no | Azure account ID. Example: `account-id-1234`. | | `azure.access_token` | body | string | no | OAuth access token for Azure service. Example: `access_token_value`. | | `google.google_language` | body | string | no | Target language locale. Example: `en`. | | `google.google_credential_json.type` | body | string | no | Example: `service_account`. | | `google.google_credential_json.auth_uri` | body | string | no | Example: `https://accounts.google.com/o/oauth2/auth`. | | `google.google_credential_json.client_id` | body | string | no | Example: `123456789012345678901`. | | `google.google_credential_json.token_uri` | body | string | no | Example: `https://oauth2.googleapis.com/token`. | | `google.google_credential_json.project_id` | body | string | no | Example: `my-project-id`. | | `google.google_credential_json.private_key` | body | string | no | Example: `-----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQ.…`. | | `google.google_credential_json.client_email` | body | string | no | Example: `service-account@my-project-id.iam.gserviceaccount.com`. | | `google.google_credential_json.private_key_id` | body | string | no | Example: `key-id-12345`. | | `google.google_credential_json.universe_domain` | body | string | no | Example: `googleapis.com`. | | `google.google_credential_json.client_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/robot/v1/metadata/x509/service-account%40my-project-…`. | | `google.google_credential_json.auth_provider_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/oauth2/v1/certs`. | | `requested_service` | body | string | no | One of: azure, google, apyhub. Default: `apyhub`. Example: `apyhub`. | #### Quickstart Send an image URL to detect brands and logos in it. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-logos-and-brands/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.png","requested_service":"apyhub"}' ``` #### What you'll get back Returns a JSON object with a top-level `data` object. That `data` object may contain `azure`, `apyhub`, and `google` response objects, depending on the service used. ```json { "data": { "azure": {}, "apyhub": {}, "google": {} } } ``` ## About ## What it does Logo Brand Detector identifies logos and brand marks from an uploaded image or an image URL. Send a file to `/file` or provide a URL to `/url`, and the response includes detection results from the requested vision service: `azure`, `google`, or `apyhub`. Use it when you need to recognise brand assets in product photos, screenshots, ads, or user-generated content. The file endpoint accepts a binary `file` and optional provider credentials such as `azure_key`, `google_key`, `azure_region`, `azure_endpoint`, `azure_account_id`, `azure_access_token`, and `requested_service`. The URL endpoint accepts a `url`, optional `azure` and `google` credential objects, and `requested_service`. The response is a `data` object with provider-specific results under `azure`, `apyhub`, and `google`. That makes it straightforward to compare outputs across providers or standardise a single detection workflow in your app. If you are building moderation, asset tagging, competitor monitoring, or e-commerce catalogue tooling, this endpoint gives you a direct way to detect brand presence from images without adding your own computer vision pipeline. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | Google | 500 | | ApyHub | 2000 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/detect-logos-and-brands * * * --- title: AI Document Table Data Extraction API slug: extract-table-data url: https://apyhub.com/apyhub/service/extract-table-data provider: ApyHub categories: [Artificial Intelligence, Data Extraction, Image Processing] tags: [table-extraction, pdf-tables, data-extraction, ocr] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-document-extract-table --- # AI Document Table Data Extraction API Extract table data from a file or URL. Returns Azure or ApyHub parsing output for invoice, report, and general document table capture. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/extract-table-data/file` | What it does Extracts table data from an uploaded document and returns the parsed results in a JSON… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/extract-table-data/url` | What it does Extracts table data from a document or webpage referenced by a URL and returns parsed… | 500 | ## Endpoint reference ### Extract table data (file upload) `POST https://api.eu.apyhub.com/apyhub/extract-table-data/file` · 500 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `azure_key` | body | string | no | Example: `azure-key-val`. | | `azure_region` | body | string | no | Example: `eastus`. | | `azure_endpoint` | body | string | no | Example: `https://endpoint-val/`. | | `azure_account_id` | body | string | no | Example: `account-id`. | | `requested_service` | body | string | no | One of: azure, apyhub. Default: `apyhub`. Example: `apyhub`. | | `azure_access_token` | body | string | no | Example: `token-val`. | #### Quickstart Upload a table image or document for extraction with the required file field. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-table-data/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file" \ -F "requested_service=apyhub" ``` #### What you'll get back Returns a JSON object with a `data` object field. Inside `data`, the response may include `azure` for raw Azure Document Intelligence parsing output and/or `apyhub` for structured ApyHub table extraction output. ```json { "data": { "azure": {}, "apyhub": {} } } ``` ### Extract table data (URL input) `POST https://api.eu.apyhub.com/apyhub/extract-table-data/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://example.com/table.pdf`. | | `azure.key` | body | string | no | Azure subscription key. Example: `your_azure_speech_or_vision_key`. | | `azure.region` | body | string | no | Azure service region. Example: `westus2`. | | `azure.endpoint` | body | string | no | Azure endpoint URL. Example: `https://westus2.api.cognitive.microsoft.com/`. | | `azure.account_id` | body | string | no | Azure account ID. Example: `account-id-1234`. | | `azure.access_token` | body | string | no | OAuth access token for Azure service. Example: `access_token_value`. | | `requested_service` | body | string | no | One of: azure, apyhub. Default: `apyhub`. Example: `apyhub`. | #### Quickstart Extract table data from a PDF or web page by sending its URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-table-data/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.pdf", "requested_service":"apyhub"}' ``` #### What you'll get back Returns a JSON object with a `data` object. Inside `data`, the response may include an `apyhub` object for structured table extraction output and/or an `azure` object for raw Azure Document Intelligence parsing output. ```json { "data": { "apyhub": {}, "azure": {} } } ``` ## About ## What it does Table Extraction helps you pull tabular data out of a file or a URL. Send a binary file to `POST /file` or a document URL to `POST /url`, and choose whether you want ApyHub's structured table extraction output or Azure Document Intelligence output by setting `requested_service`. Use it when you need to turn PDFs or other table-bearing documents into machine-readable data for downstream processing. The file-based endpoint accepts `file` uploads and optional Azure credentials such as `azure_key`, `azure_region`, `azure_endpoint`, `azure_account_id`, and `azure_access_token`. The URL-based endpoint accepts `url` plus optional Azure credentials in an `azure` object. Both endpoints return a `data` object with `azure` and `apyhub` results, so you can compare the raw Azure parsing output with the structured ApyHub extraction output. That makes Table Extraction useful for invoice capture, report ingestion, and spreadsheet-like data collection from documents that are not already structured. Build workflows that move table rows into your database, validate extracted line items, or feed document data into analytics pipelines. If you already have documents stored remotely, use the URL endpoint. If you're processing uploads directly in your app, use the file endpoint. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | ApyHub | 2000 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/extract-table-data * * * --- title: Convert Video Formats Job API slug: convert-video-formats-job url: https://apyhub.com/apyhub/service/convert-video-formats-job provider: ApyHub categories: [File Conversion, File Manipulation] tags: [video-converter, video-format-conversion, mp4, video-processing, batch-jobs] auth: api_key version: 1.0.0 service_type: job endpoints: 3 atoms: 5-400 alias: job-convert-video --- # Convert Video Formats Job API Convert uploaded videos or video URLs into mp4, mkv, avi, mov, flv, 3gp, or webm as a background job. Track progress with a job ID and status. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-video-formats-job/file-to-json` | What it does Submits a video file for format conversion and starts an asynchronous job. The request… | 400 | | POST | `https://api.eu.apyhub.com/apyhub/convert-video-formats-job/url-to-json` | What it does Submits a video format conversion job using a source video URL and a target output for… | 400 | | GET | `https://api.eu.apyhub.com/apyhub/convert-video-formats-job/jobs/:job_id` | What it does Checks the status of a video format conversion job using its jobid. The response retur… | 5 | ## Endpoint reference ### Submit format conversion job (file upload) `POST https://api.eu.apyhub.com/apyhub/convert-video-formats-job/file-to-json` · 400 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `video` | body | string (binary) | yes | Video file to convert. | | `persistent` | body | boolean | no | Whether the generated file should be persisted after processing. Default: `false`. | | `output_format` | body | string | yes | Target output format. One of: mp4, mkv, avi, mov, flv, 3gp, webm. | #### Quickstart Upload a video and choose the output format to start a conversion job. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-video-formats-job/file-to-json" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" \ -F "output_format=mp4" ``` #### What you'll get back Returns a JSON object with a `job_id` string field in UUID format. ```json { "job_id": "550e8400-e29b-41d4-a716-446655440000" } ``` ### Submit format conversion job (source URL) `POST https://api.eu.apyhub.com/apyhub/convert-video-formats-job/url-to-json` · 400 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `video_url` | body | string (uri) | yes | HTTP(S) URL of the source video to download and convert. Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `persistent` | body | boolean | no | Whether the generated file should be persisted after processing. Default: `false`. | | `output_format` | body | string | yes | Target output format. One of: mp4, mkv, avi, mov, flv, 3gp, webm. | #### Quickstart Convert a video from a public URL by sending the source link and your desired output format. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-video-formats-job/url-to-json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "video_url": "https://assets.apyhub.com/samples/sample.mp4", "output_format": "mp4" }' ``` #### What you'll get back Returns a JSON object with a `job_id` string field containing the UUID of the conversion job. ```json { "job_id": "550e8400-e29b-41d4-a716-446655440000" } ``` ### Check format conversion job status `GET https://api.eu.apyhub.com/apyhub/convert-video-formats-job/jobs/:job_id` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Check the status of a video conversion job by its UUID. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/convert-video-formats-job/jobs/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. The `data` object can include `job_id` (`string` UUID), `status` (`pending`, `successful`, or `failed`), `url` (`string` URI for the processed file when successful), and `message` (`string` with status details or an error description). ```json { "data": { "job_id": "550e8400-e29b-41d4-a716-446655440000", "status": "successful", "url": "https://example.com/converted-video.mp4", "message": "Job completed successfully." } } ``` ## About ## What it does Video Format Converter lets you submit a video file or a video URL, choose a target format, and get a conversion job back. It supports mp4, mkv, avi, mov, flv, 3gp, and webm output. Use the file upload endpoint when the source video is already in your request body, or the URL endpoint when you want the service to download the video from an HTTP(S) address first. In both cases, you can set `persistent` to control whether the generated file is kept after processing. Each conversion request returns a `job_id` so you can track processing asynchronously. When you check job status with that ID, the response includes the same `job_id`, a `status` value of `pending`, `successful`, or `failed`, and a `message` with status details or an error description. This is a good fit when you need to normalize user-uploaded videos, convert assets for a specific player or pipeline, or prepare media files in a format that downstream systems expect. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-video-formats-job * * * --- title: Image Filters API slug: apply-filter url: https://apyhub.com/apyhub/service/apply-filter provider: ApyHub categories: [File Manipulation, Image Processing] tags: [image-processing, image-filtering, image-transform, brightness-adjustment, image-rotation, image-blur] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 30 alias: image-processor-filters --- # Image Filters API Apply rotations, blur, flips, and brightness changes to uploaded images or image URLs. Returns binary output or a signed URI for asset pipelines. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/apply-filter/multi-part/link` | What it does Applies a filter to an uploaded image and returns a JSON object containing a URI in da… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/apply-filter/url/download` | What it does Fetches an image from a URL and applies the selected filter, then returns the processe… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/apply-filter/url/link` | What it does Applies an image filter to the file at the provided URL and returns a JSON object cont… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/apply-filter/multi-part/download` | What it does Applies a filter to an uploaded image and returns the transformed file as a binary dow… | 30 | ## Endpoint reference ### Apply filter (multipart, signed URL) `POST https://api.eu.apyhub.com/apyhub/apply-filter/multi-part/link` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | yes | | | `filter` | query | string | yes | One of: rotate_45, rotate_90, rotate_135, rotate_180, rotate_225, rotate_270, rotate_315, maximum, minimum, brightness_decrease, brightness_increase, gaussian_blur, flip_vertical, flip_horizontal, ga… | | `output` | query | string | no | Example: `my-invite`. | | `preserve_format` | query | boolean | no | | #### Quickstart Upload an image and apply the selected filter to get back a generated file URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/apply-filter/multi-part/link?filter=gaussian_blur" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.jpg" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI to the processed file. ```json { "data": "https://example.com/processed-image.jpg" } ``` ### Apply filter (fetch URL, download) `POST https://api.eu.apyhub.com/apyhub/apply-filter/url/download` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | no | Example: `https://assets.apyhub.com/samples/sample.jpg`. | | `filter` | query | string | yes | One of: rotate_45, rotate_90, rotate_135, rotate_180, rotate_225, rotate_270, rotate_315, maximum, minimum, brightness_decrease, brightness_increase, gaussian_blur, flip_vertical, flip_horizontal, ga… | | `output` | query | string | no | Example: `my-invite`. | | `preserve_format` | query | boolean | no | | #### Quickstart Download an image from a URL and apply the selected filter. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/apply-filter/url/download?filter=gaussian_blur" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.jpg"}' ``` #### What you'll get back Returns the filtered file as binary data (`string` with `format: binary`). ```text binary file data ``` ### Apply filter (fetch URL, signed URL) `POST https://api.eu.apyhub.com/apyhub/apply-filter/url/link` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | no | Example: `https://assets.apyhub.com/samples/sample.jpg`. | | `filter` | query | string | yes | One of: rotate_45, rotate_90, rotate_135, rotate_180, rotate_225, rotate_270, rotate_315, maximum, minimum, brightness_decrease, brightness_increase, gaussian_blur, flip_vertical, flip_horizontal, ga… | | `output` | query | string | no | Example: `my-invite`. | | `preserve_format` | query | boolean | no | | #### Quickstart Convert an image at a URL using the selected filter. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/apply-filter/url/link?filter=gaussian_blur" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.jpg"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI to the processed output. ```json { "data": "https://..." } ``` ### Apply filter (multipart, download) `POST https://api.eu.apyhub.com/apyhub/apply-filter/multi-part/download` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | yes | | | `filter` | query | string | yes | One of: rotate_45, rotate_90, rotate_135, rotate_180, rotate_225, rotate_270, rotate_315, maximum, minimum, brightness_decrease, brightness_increase, gaussian_blur, flip_vertical, flip_horizontal, ga… | | `output` | query | string | no | Example: `my-invite`. | | `preserve_format` | query | boolean | no | | #### Quickstart Upload an image and choose a filter to download the processed file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/apply-filter/multi-part/download?filter=gaussian_blur" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.jpg" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) as the response body. ## About ## What it does Image Filter lets you apply a fixed set of transformations to an image and return the result as a file or a signed URL. Send either a binary `image` upload or an image `url`, choose a `filter`, and optionally set `output` and `preserve_format`. Use it for common image adjustments like `rotate_45`, `rotate_90`, `rotate_135`, `rotate_180`, `rotate_225`, `rotate_270`, `rotate_315`, `maximum`, `minimum`, `brightness_decrease`, `brightness_increase`, `gaussian_blur`, `flip_vertical`, `flip_horizontal`, or `gamma_0.5`. The service supports PNG, JPEG, JPG, BMP, TIFF, GIF, and WEBP when you fetch from a URL. Choose the multipart endpoints when you already have the image file in hand. Use the URL-based endpoints when the image is hosted elsewhere and accessible to ApyHub services. Depending on the endpoint you call, the response is either binary image data or a `data` field containing a URI. Image Filter is a good fit for product photo cleanup, simple creative effects, thumbnail preparation, and automated image pipelines where you need deterministic transforms without building them yourself. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/apply-filter * * * --- title: AI Image Face Detection API slug: detect-human-faces url: https://apyhub.com/apyhub/service/detect-human-faces provider: ApyHub categories: [Artificial Intelligence, Image Processing] tags: [face-detection, computer-vision, image-analysis, portrait-detection, image-classification] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-image-detect-face --- # AI Image Face Detection API Detect human faces from an uploaded file or image URL. Returns results from Azure, Google, or ApyHub under a single data object. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/detect-human-faces/file` | What it does Uploads an image file and runs human face detection against the selected provider. The… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/detect-human-faces/url` | What it does Detects human faces from an image URL. You send the image url and optionally choose wh… | 500 | ## Endpoint reference ### Detect human faces (file upload) `POST https://api.eu.apyhub.com/apyhub/detect-human-faces/file` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `azure_key` | body | string | no | Example: `azure-key-val`. | | `google_key` | body | string | no | Example: `google-key-val`. | | `azure_region` | body | string | no | Example: `westus`. | | `azure_endpoint` | body | string | no | Example: `https://westus.api.cognitive.microsoft.com/`. | | `azure_account_id` | body | string | no | Example: `azure-account-id`. | | `requested_service` | body | string | no | One of: azure, google, apyhub. Default: `apyhub`. Example: `apyhub`. | | `azure_access_token` | body | string | no | Example: `token-val`. | #### Quickstart Upload an image file to detect faces. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-human-faces/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.jpg" \ -F "requested_service=apyhub" ``` #### What you'll get back Returns a JSON object with a `data` object. The `data` object may include `azure`, `apyhub`, and `google` objects, depending on the face detection service used. ```json { "data": { "azure": {}, "apyhub": {}, "google": {} } } ``` ### Detect human faces (URL input) `POST https://api.eu.apyhub.com/apyhub/detect-human-faces/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://example.com/faces.jpg`. | | `azure.key` | body | string | no | Azure subscription key. Example: `your_azure_speech_or_vision_key`. | | `azure.region` | body | string | no | Azure service region. Example: `westus2`. | | `azure.endpoint` | body | string | no | Azure endpoint URL. Example: `https://westus2.api.cognitive.microsoft.com/`. | | `azure.account_id` | body | string | no | Azure account ID. Example: `account-id-1234`. | | `azure.access_token` | body | string | no | OAuth access token for Azure service. Example: `access_token_value`. | | `google.google_language` | body | string | no | Target language locale. Example: `en`. | | `google.google_credential_json.type` | body | string | no | Example: `service_account`. | | `google.google_credential_json.auth_uri` | body | string | no | Example: `https://accounts.google.com/o/oauth2/auth`. | | `google.google_credential_json.client_id` | body | string | no | Example: `123456789012345678901`. | | `google.google_credential_json.token_uri` | body | string | no | Example: `https://oauth2.googleapis.com/token`. | | `google.google_credential_json.project_id` | body | string | no | Example: `my-project-id`. | | `google.google_credential_json.private_key` | body | string | no | Example: `-----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQ.…`. | | `google.google_credential_json.client_email` | body | string | no | Example: `service-account@my-project-id.iam.gserviceaccount.com`. | | `google.google_credential_json.private_key_id` | body | string | no | Example: `key-id-12345`. | | `google.google_credential_json.universe_domain` | body | string | no | Example: `googleapis.com`. | | `google.google_credential_json.client_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/robot/v1/metadata/x509/service-account%40my-project-…`. | | `google.google_credential_json.auth_provider_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/oauth2/v1/certs`. | | `requested_service` | body | string | no | One of: azure, google, apyhub. Default: `apyhub`. Example: `apyhub`. | #### Quickstart Send an image URL to detect human faces in it. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-human-faces/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://example.com/faces.jpg"}' ``` #### What you'll get back Returns a JSON object with a `data` object field. The `data` object contains the face-detection result from one of the supported providers (`azure`, `apyhub`, or `google`), depending on the service used. ```json { "data": { "apyhub": {} } } ``` ## About ## What it does Face Detection identifies human faces in an image you send as a file or by URL. Use it when you need to flag portrait photos, pre-check user uploads, or build image workflows that depend on knowing whether a face is present. Send a binary file to `/file`, or pass an image URL to `/url`. Both endpoints accept a `requested_service` value of `azure`, `google`, or `apyhub`, so you can route the request to the vision provider you want. The file endpoint also supports provider-specific credentials such as `azure_key`, `azure_region`, `azure_endpoint`, `azure_account_id`, `azure_access_token`, and `google_key`. The URL endpoint accepts nested `azure` and `google` credential objects for the same kind of provider configuration. The response is returned under a `data` object with separate provider results for `azure`, `apyhub`, and `google`. That makes it easy to compare outputs or standardise your own downstream handling without changing the input format. Use Face Detection for moderation checks, profile-photo validation, photo indexing, or any feature where your app needs a face-aware image signal before moving to the next step. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | Google | 500 | | ApyHub | 2000 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/detect-human-faces * * * --- title: Generate Pie Chart API slug: generate-pie-chart url: https://apyhub.com/apyhub/service/generate-pie-chart provider: ApyHub categories: [Smart Generation] tags: [pie-chart, chart-generation, data-visualization] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 60 alias: pie-chart --- # Generate Pie Chart API Generate pie chart images from labeled values, optional colours, and styling controls. Returns a pre-signed URL or binary image for dashboards. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/generate-pie-chart/link` | What it does Generates a pie chart and returns a pre-signed URL for the rendered chart image. The r… | 60 | | POST | `https://api.eu.apyhub.com/apyhub/generate-pie-chart/download` | What it does Generates a pie chart image from the chart configuration in the request body and retur… | 60 | ## Endpoint reference ### Generate pie chart link `POST https://api.eu.apyhub.com/apyhub/generate-pie-chart/link` · 60 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `data` | body | array of object | yes | | | `data[].color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `data[].label` | body | string | yes | Example: `Product A`. | | `data[].value` | body | number | yes | Example: `45`. | | `pies` | body | array of object | no | Alias for data. Use either data or pies, not both. | | `pies[].color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `pies[].label` | body | string | yes | Example: `Product A`. | | `pies[].value` | body | number | yes | Example: `45`. | | `theme` | body | string | no | Chart theme. One of: light, dark. Default: `light`. Example: `light`. | | `title` | body | string | yes | Example: `Product Market Share`. | | `options.width` | body | integer | no | Example: `600`. | | `options.height` | body | integer | no | Example: `600`. | | `options.title_style.padding` | body | integer | no | Padding in pixels. Example: `12`. | | `options.title_style.font_size` | body | number | no | Font size in pixels. Example: `24`. | | `options.title_style.font_color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.canvas_color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `output` | query | string | no | Example: `product-market-share-pie-chart`. | #### Quickstart Create a pie chart from a title and slice data, and get back a URL to the generated image. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-pie-chart/link?output=product-market-share-pie-chart" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "title": "Product Market Share", "data": [ { "label": "Product A", "value": 45, "color": "3B82F6" }, { "label": "Product B", "value": 30, "color": "10B981" }, { "label": "Product C", "value": 25, "color": "F59E0B" } ] }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed URI for the generated chart image. ```json { "data": "https://example.com/generated/charts/chart.png" } ``` ### Generate pie chart image `POST https://api.eu.apyhub.com/apyhub/generate-pie-chart/download` · 60 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `data` | body | array of object | yes | | | `data[].color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `data[].label` | body | string | yes | Example: `Product A`. | | `data[].value` | body | number | yes | Example: `45`. | | `pies` | body | array of object | no | Alias for data. Use either data or pies, not both. | | `pies[].color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `pies[].label` | body | string | yes | Example: `Product A`. | | `pies[].value` | body | number | yes | Example: `45`. | | `theme` | body | string | no | Chart theme. One of: light, dark. Default: `light`. Example: `light`. | | `title` | body | string | yes | Example: `Product Market Share`. | | `options.width` | body | integer | no | Example: `600`. | | `options.height` | body | integer | no | Example: `600`. | | `options.title_style.padding` | body | integer | no | Padding in pixels. Example: `12`. | | `options.title_style.font_size` | body | number | no | Font size in pixels. Example: `24`. | | `options.title_style.font_color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `options.canvas_color` | body | string | no | 6-character hex color without the leading # symbol. Example: `3B82F6`. | | `output` | query | string | no | Example: `product-market-share-pie-chart`. | #### Quickstart Generate a pie chart file from a simple title and slice data, and name the output with the `output` query parameter. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-pie-chart/download?output=product-market-share-pie-chart" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"title":"Product Market Share","data":[{"color":"3B82F6","label":"Product A","value":45},{"color":"10B981","label":"Product B","value":30},{"color":"F59E0B","label":"Product C","value":25}]}' ``` #### What you'll get back Returns the raw PNG bytes (`image/png`), which you can save directly to disk — add `-o chart.png` to the curl command above. ## About ## What it does Pie Chart Generator turns your labeled values into a pie chart image. Send a title, a data array, and optional styling options, and get back a pre-signed URL for the rendered chart or a binary image download. Each data item can include a label, value, and optional hex color. The request also supports a light or dark theme, plus chart options for width, height, title styling, and canvas color. Use the deprecated pies alias only if you need to match an older integration; data is the primary field. Use Pie Chart Generator when you need a shareable visual for product mix, budget allocation, survey results, or any other part-to-whole breakdown. It is a good fit for dashboards, reports, admin panels, and automated content pipelines where the chart needs to be generated from API data instead of drawn in the browser. The response is simple to work with: one endpoint returns a URL in data, and the other returns the image as binary output. That keeps the integration lightweight whether you want to store the image, embed it, or hand it off to another service. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/generate-pie-chart * * * --- title: Convert HEIC to JPEG/PNG API slug: convert-heic-heif-to-jpeg-or-png url: https://apyhub.com/apyhub/service/convert-heic-heif-to-jpeg-or-png provider: ApyHub categories: [File Conversion, File Manipulation] tags: [heic, png, jpeg, images] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 300 alias: image-converter-heic-jpeg-png --- # Convert HEIC to JPEG/PNG API HEIC to JPG API: convert iPhone HEIC and HEIF photos to JPG or PNG from an upload or URL, returned as a file or signed link. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-heic-heif-to-jpeg-or-png/multi-part/download` | What it does Converts an uploaded HEIC/HEIF image to a downloadable JPEG or PNG file. The converted… | 300 | | POST | `https://api.eu.apyhub.com/apyhub/convert-heic-heif-to-jpeg-or-png/multi-part/link` | What it does Uploads a HEIC/HEIF image as multipart form data and returns a signed URL pointing to… | 300 | | POST | `https://api.eu.apyhub.com/apyhub/convert-heic-heif-to-jpeg-or-png/url/download` | What it does Converts a HEIC/HEIF image fetched from a public URL into a downloadable JPEG or PNG f… | 300 | | POST | `https://api.eu.apyhub.com/apyhub/convert-heic-heif-to-jpeg-or-png/url/link` | What it does Converts a HEIC/HEIF image fetched from a public URL into a JPEG or PNG and returns a… | 300 | ## Endpoint reference ### Convert HEIC/HEIF to JPEG or PNG (multipart upload, download file) `POST https://api.eu.apyhub.com/apyhub/convert-heic-heif-to-jpeg-or-png/multi-part/download` · 300 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | yes | HEIC/HEIF file to convert. | | `output` | query | string | no | Example: `my-image.png`. | #### Quickstart Upload a HEIC/HEIF image to convert it and receive the converted file in response. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-heic-heif-to-jpeg-or-png/multi-part/download" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.heic" ``` #### What you'll get back Returns a binary file not a JSON object. ### Convert HEIC/HEIF to JPEG or PNG (multipart upload, return signed URL) `POST https://api.eu.apyhub.com/apyhub/convert-heic-heif-to-jpeg-or-png/multi-part/link` · 300 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | yes | HEIC/HEIF file to convert. | | `output` | query | string | no | Example: `my-image.png`. | #### Quickstart Upload a single HEIC/HEIF image and get back a signed URL for the converted file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-heic-heif-to-jpeg-or-png/multi-part/link" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.heic" ``` #### What you'll get back Returns a JSON object with a `data` string field — a signed URL for the converted image. ```json { "data": "https://..." } ``` ### Convert HEIC/HEIF to JPEG or PNG (fetch by URL, download file) `POST https://api.eu.apyhub.com/apyhub/convert-heic-heif-to-jpeg-or-png/url/download` · 300 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | URL of the HEIC/HEIF image to convert. Example: `https://assets.apyhub.com/samples/sample.heic`. | | `output` | query | string | no | Example: `my-image.png`. | #### Quickstart Convert a public HEIC/HEIF image by sending its URL in the JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-heic-heif-to-jpeg-or-png/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.heic"}' ``` #### What you'll get back Returns a binary file response which is the converted image content. ### Convert HEIC/HEIF to JPEG or PNG (fetch by URL, return signed URL) `POST https://api.eu.apyhub.com/apyhub/convert-heic-heif-to-jpeg-or-png/url/link` · 300 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | URL of the HEIC/HEIF image to convert. Example: `https://assets.apyhub.com/samples/sample.heic`. | | `output` | query | string | no | Example: `my-image.png`. | #### Quickstart Convert a HEIC/HEIF image from a public URL and get back a signed URL for the converted file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-heic-heif-to-jpeg-or-png/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.heic"}' ``` #### What you'll get back Returns a JSON object with a `data` string field — a signed URL of the converted image. ```json { "data": "https://..." } ``` ## About ## What it does The HEIC to JPG API converts HEIC and HEIF images, the default photo format on iPhones, into JPG or PNG. Upload the file as `image` with the multipart endpoints (up to 100 MB), or send a public `url` and let the API fetch it. Get the result back as a binary download from `/download`, or as a signed URL in the `data` field from `/link`. Output is JPG by default. To get a PNG, set the `output` query parameter to a filename ending in `.png`, such as `photo.png`. The same parameter sets the name of the returned file. Signed links expire after 15 minutes, so download or store the image if you need it longer. Use the HEIC to JPG API to accept iPhone photos in upload forms, normalize images in a CMS or asset pipeline, show HEIC uploads in browsers that can't display them, or convert HEIF files to PNG for design tools. It handles HEIC to JPG and HEIC to PNG conversion on the server, so you can skip native image libraries in your stack. Shrink the converted photos with the [Image Compression API](https://apyhub.com/apyhub/service/compress-images), turn them into web-ready files with the [JPEG to WebP API](https://apyhub.com/apyhub/service/convert-jpeg-to-webp), or combine them into a document with the [Image to PDF API](https://apyhub.com/apyhub/service/convert-image-to-pdf). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-heic-heif-to-jpeg-or-png * * * --- title: Fuzzy Text Search API slug: fuzzy-search url: https://apyhub.com/apyhub/service/fuzzy-search provider: ApyHub categories: [Developer Tools, SEO] tags: [fuzzy-search, string-matching, text-normalization, developer-tools, search] auth: api_key version: 1.0 service_type: sync endpoints: 1 atoms: 25 alias: search-fuzzy-text --- # Fuzzy Text Search API Compare a source string against a space-separated target and get the matching words back. Built for autocomplete, filtering, and normalization. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/fuzzy-search` | What it does Performs a fuzzy search by comparing a source term against a space-separated target st… | 25 | ## Endpoint reference ### Fuzzy search `POST https://api.eu.apyhub.com/apyhub/fuzzy-search` · 25 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `source` | body | string | yes | The search term. Example: `ing`. | | `target` | body | string | yes | Space-separated words to search within. Example: `finding things bring`. | | `accent-insensitive` | query | boolean | no | Default: `false`. | | `unicode-normalized` | query | boolean | no | Default: `false`. | #### Quickstart Find the closest matching words from a source string by sending the search term and target text. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/fuzzy-search?accent-insensitive=false&unicode-normalized=false" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"source":"ing","target":"finding things bring"}' ``` #### What you'll get back Returns a JSON object with a `data` array of strings. ```json { "data": ["finding", "things", "bring"] } ``` ## About ## What it does Fuzzy Search compares a search term against a space-separated target string and returns the matching words as an array of strings. Send `source` and `target` in the request body, and you can also set `accent-insensitive` or `unicode-normalized` in the query string to adjust how comparisons are handled. Use it when you need tolerant matching instead of exact string comparison. For example, you can check whether a user-entered fragment matches words in a title, product name, or free-text field without forcing the input to be identical. The response is a simple `data` array, so it fits cleanly into autocomplete, filtering, and lightweight text-processing workflows. Because the API works on plain strings, it is easy to place in front of search UIs, suggestion systems, and content review pipelines. If you are normalizing user input or comparing text across different encodings or accents, the optional flags help you control matching behavior without adding extra logic in your app. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/fuzzy-search * * * --- title: Validate UK Postcodes API slug: validate-uk-postcode url: https://apyhub.com/apyhub/service/validate-uk-postcode provider: ApyHub categories: [Data Validation, Standard Data] tags: [postcode-validation, uk-postcode, address-validation, uk] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 alias: data-postcodes-uk --- # Validate UK Postcodes API Validate a UK postcode from your code and get a true or false back in one request. Built for checkout, signup and address cleanup. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/validate-uk-postcode` | What it does Validates a UK postcode by accepting a postcode string in the request body and returni… | 10 | ## Endpoint reference ### Validate UK postcode `POST https://api.eu.apyhub.com/apyhub/validate-uk-postcode` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `postcode` | body | string | yes | Postcode or PIN code (spaces ignored for matching). Example: `YO17 6DU`. | #### Quickstart Check whether a UK postcode exists by sending the postcode in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/validate-uk-postcode" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"postcode":"YO17 6DU"}' ``` #### What you'll get back Returns a JSON object with a `data` boolean field — `true` when the postcode exists in the lookup table, `false` otherwise. ```json { "data": true } ``` ## About ## What it does The UK Postcode Validation API checks whether a UK postcode is real. Send a postcode and get back `true` or `false`. Spaces are ignored, so `YO17 6DU` and `YO176DU` both work. Use it to stop bad addresses at the point of entry. Checkout forms. Signup flows. CRM imports. Cleaning up an address list you inherited. Catching a typo before a parcel ships saves a failed delivery and a support ticket. The response is deliberately small. One boolean, nothing to parse. That makes it cheap to call on form submit, and easy to drop into a validation chain next to your email and phone checks. It tells you the postcode exists. It does not return the street, town or county, or confirm that the rest of the address matches. If you need the full address verified, use the [Address Validation API](https://apyhub.com/quadlem/service/address-validation). Shipping to India as well? The [Indian Pincode API](https://apyhub.com/apyhub/service/validate-indian-postcode) works the same way. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/validate-uk-postcode * * * --- title: Validate EU VAT API slug: validate-vat-number url: https://apyhub.com/apyhub/service/validate-vat-number provider: ApyHub categories: [Data Validation, Finance] tags: [vat-validation, vies, eu-vat, tax-validation, business-verification] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 50 alias: vat-number-validator --- # Validate EU VAT API Validate an EU VAT number from your code and get a clear true or false back. Checks all 27 member states before you invoice. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/validate-vat-number` | What it does Validates a VAT number submitted in the request body and returns a boolean result indi… | 50 | ## Endpoint reference ### Validate a VAT number `POST https://api.eu.apyhub.com/apyhub/validate-vat-number` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `vat` | body | string | yes | VAT number including 2-letter country code prefix. Example: `NL862735944B01`. | #### Quickstart Validate a VAT number by sending it in a simple JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/validate-vat-number" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"vat":"NL862735944B01"}' ``` #### What you'll get back Returns a JSON object with a `data` boolean field — `true` when the VAT number is valid, `false` otherwise. ```json { "data": true } ``` ## About ## What it does The VAT Validation API checks whether an EU VAT number is valid. Send the number with its two-letter country prefix, get back `true` or `false`. Use it before you invoice. A wrong VAT number on a B2B invoice means the reverse charge does not apply, and the tax becomes your problem rather than your customer's. Checking at signup costs one call. Finding out at audit costs considerably more. It fits three places in most products. On the signup or checkout form, when a business customer enters their VAT number. On supplier onboarding, before the first payment goes out. And as a periodic job over stored records, because VAT registrations get cancelled and nobody tells you. Need more than a yes or no? The [VAT Company Lookup API](https://apyhub.com/apyhub/service/lookup-vat-company) returns the registered company name and address behind the number, which is what you need when the invoice has to carry the legal entity. Checking a list rather than one number? The [Validate EU VAT Batch API](https://apyhub.com/apyhub/service/validate-vat-batch) takes up to 10 per request. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/validate-vat-number * * * --- title: Readability Scores Documents API slug: score-readability url: https://apyhub.com/apyhub/service/score-readability provider: ApyHub categories: [Artificial Intelligence, SEO] tags: [documents, score, readability] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 250 alias: readability-scores-documents --- # Readability Scores Documents API Get readability scores for PDF, DOC and DOCX files or any web page URL, with Flesch Reading Ease or German Wiener Sachtextformel. Try it free. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/score-readability/file` | What it does Uploads a document file and returns readability metrics for the extracted text. The re… | 250 | | POST | `https://api.eu.apyhub.com/apyhub/score-readability/file_url` | What it does Scores the readability of a publicly accessible web page fetched from the provided fil… | 250 | ## Endpoint reference ### Score readability of an uploaded document `POST https://api.eu.apyhub.com/apyhub/score-readability/file` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Document file to analyse (PDF, DOC, or DOCX). | | `language` | body | string | no | One of: english, german. Default: `english`. | #### Quickstart Upload a document file to check its readability score. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/score-readability/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.pdf" \ -F "language=english" ``` #### What you'll get back Returns a JSON object with a `data` object. `data.stats` contains document metrics like word and sentence counts, and `data.flesh_kincaid_reading_ease` contains the readability results. ```json { "data": { "stats": { "words": 95, "sentences": 8, "characters": 512, "paragraphs": 2, "reading_time": 6.49, "speaking_time": 38, "avg_word_length": 5.39, "avg_sentence_length": 11.88, "avg_paragraph_length": 4 }, "flesh_kincaid_reading_ease": { "class": "8th & 9th grade", "label": false, "level": 6.49, "score": 65.74, "class_label": "Plain English. Easily understood by 13- to 15-year-old students." } } } ``` ### Score readability of a web page `POST https://api.eu.apyhub.com/apyhub/score-readability/file_url` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file_url` | body | string (uri) | yes | Publicly accessible web page URL. Example: `https://assets.apyhub.com/samples/sample.html`. | | `language` | body | string | no | One of: english, german. Default: `english`. | #### Quickstart Check the readability of a public webpage by sending its URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/score-readability/file_url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "file_url": "https://assets.apyhub.com/samples/sample.html" }' ``` #### What you'll get back Returns a JSON object with a `data` object. Inside `data`, the response includes `stats` with text counts and timing metrics, and either `flesh_kincaid_reading_ease` or `wiener_sachtextformel` depending on the response variant. ```json { "data": { "stats": { "words": 95, "sentences": 8, "characters": 512, "paragraphs": 2, "reading_time": 6.49, "speaking_time": 38, "avg_word_length": 5.39, "avg_sentence_length": 11.88, "avg_paragraph_length": 4 }, "flesh_kincaid_reading_ease": { "class": "8th & 9th grade", "label": false, "level": 6.49, "score": 65.74, "class_label": "Plain English. Easily understood by 13- to 15-year-old students." } } } ``` ## About ## What it does The Readability Scores Documents API measures how easy a document or web page is to read. Upload a PDF or Word file, or send the URL of a web page, and get back a standard readability score and reading level together with statistics like word count, sentence length and reading time. There are two endpoints. `POST /file` takes a PDF, DOC or DOCX upload of up to 100 MB, and `POST /file_url` takes the address of a public web page. Both accept an optional `language`: `english`, the default, scores the text with the Flesch Reading Ease formula, and `german` uses the Wiener Sachtextformel, the standard readability formula for German. The API extracts the text for you, so there is no need to convert the file or strip the HTML first. The result includes the `score`, the grade `class` it falls into, such as "8th & 9th grade", a plain-language `class_label` like "Plain English. Easily understood by 13- to 15-year-old students", and a `label` showing whether the text meets a standard readability threshold. The `stats` object adds `words`, `sentences`, `characters` and `paragraphs`, the average length of words, sentences and paragraphs, and estimated `reading_time` and `speaking_time` in seconds. It gives you readability statistics similar to the ones Microsoft Word shows, without anyone having to open the file. Common uses include checking contracts, policies and terms against plain-language requirements, reviewing manuals and help center pages before they are published, auditing the readability of every page on a website, scoring reports and proposals against a house style, and comparing a competitor's page with your own. If you already have the text as a string, use the [Readability Score API](https://apyhub.com/apyhub/service/score-readability-of-plain-text), which scores plain text directly. To pull the main article out of a web page before scoring it, use [Extract Readable Content from HTML](https://apyhub.com/dosvak/service/extract-html-readable-content), and for simpler word and sentence counts, try the [Basic Text Analysis API](https://apyhub.com/creightonnick0/service/analyze-text). You can try it right here in the playground. Start for free with 5 API calls a day, no card required, and score your own document before you commit. The API is also available through [ApyHub MCP](https://apyhub.com/mcp), so AI agents can check the readability of a document or page directly as part of a content review. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/score-readability * * * --- title: Generate Watermark For Videos Job API slug: generate-video-watermark url: https://apyhub.com/apyhub/service/generate-video-watermark provider: ApyHub categories: [File Conversion, File Manipulation] tags: [video-watermark, video-processing, watermarking, file-manipulation, media-processing] auth: api_key version: 1.0 service_type: job endpoints: 3 atoms: 400 alias: job-watermark-video --- # Generate Watermark For Videos Job API Add text or image watermarks to videos from a URL or file. Poll the job ID for the finished video URL when processing completes. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/generate-video-watermark/url-to-json` | What it does Submits an async video watermarking job using a source video URL and watermark setting… | 400 | | POST | `https://api.eu.apyhub.com/apyhub/generate-video-watermark/file-to-json` | What it does Submits a multipart video file job to generate a video watermark. The request sends th… | 400 | | GET | `https://api.eu.apyhub.com/apyhub/generate-video-watermark/jobs/:job_id` | What it does Checks the status of a generate video watermark job by job ID. When the job is success… | 400 | ## Endpoint reference ### Submit generate video watermark job (source URL) `POST https://api.eu.apyhub.com/apyhub/generate-video-watermark/url-to-json` · 400 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | Optional output video scale WIDTHxHEIGHT (even integers). Example: `1280x720`. | | `gif_loop` | body | boolean | no | Loop GIF watermark for full video duration. Default: `false`. | | `video_url` | body | string (uri) | yes | HTTP(S) URL of the source video. Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `watermark_text` | body | string | no | Text overlay (alternative to image watermark). Example: `Sample watermark`. | | `watermark_image` | body | string (uri) | no | Image overlay URL (.jpg, .jpeg, .png, .gif). Example: `https://assets.apyhub.com/samples/sample.png`. | | `watermark_opacity` | body | string | no | Opacity 0.0–1.0. Default 0.5. Example: `0.5`. | | `watermark_position` | body | string | no | One of: top_right, top_left, bottom_right, bottom_left, center, bottom_center, top_center, center_left, center_right. Default: `bottom_right`. Example: `bottom_right`. | | `watermark_font_size` | body | string | no | Text watermark font size in pixels. Default 24. Example: `24`. | | `watermark_image_url` | body | string (uri) | no | Legacy video-clips alias for watermark_image. Example: `https://assets.apyhub.com/samples/sample.png`. | | `watermark_font_color` | body | string | no | Hex color for text. Default #ffffff. Example: `#ffffff`. | | `watermark_image_size` | body | string | no | Image scale (-1:N or WIDTHxHEIGHT). Default -1:50. Example: `-1:50`. | | `watermark_text_padding` | body | string | no | Text padding in pixels. Default 10. Example: `10`. | | `watermark_text_background_color` | body | string | no | Hex background box color; omit for no box. Example: `#000000`. | | `persistent` | query | boolean | no | | #### Quickstart Submit a video URL and a watermark to start an async video watermark job. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-video-watermark/url-to-json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "video_url": "https://assets.apyhub.com/samples/sample.mp4", "watermark_text": "Sample watermark" }' ``` #### What you'll get back Returns a JSON object with a `job_id` string field — the UUID of the submitted job for later status polling. ```json { "job_id": "550e8400-e29b-41d4-a716-446655440000" } ``` ### Submit generate video watermark job (multipart file) `POST https://api.eu.apyhub.com/apyhub/generate-video-watermark/file-to-json` · 400 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | Optional output video scale WIDTHxHEIGHT (even integers). Example: `1280x720`. | | `video` | body | string (binary) | yes | Source video file. | | `gif_loop` | body | string | no | Set to true or 1 to loop GIF watermark for full video duration. Example: `false`. | | `watermark_text` | body | string | no | Text overlay (alternative to watermark_image). Example: `Sample watermark`. | | `watermark_image` | body | string (binary) | no | Image overlay file (.jpg, .jpeg, .png, .gif). | | `watermark_opacity` | body | string | no | Opacity 0.0–1.0. Default 0.5. Example: `0.5`. | | `watermark_position` | body | string | no | One of: top_right, top_left, bottom_right, bottom_left, center, bottom_center, top_center, center_left, center_right. Default: `bottom_right`. Example: `bottom_right`. | | `watermark_font_size` | body | string | no | Text watermark font size in pixels. Default 24. Example: `24`. | | `watermark_font_color` | body | string | no | Hex color for text. Default #ffffff. Example: `#ffffff`. | | `watermark_image_size` | body | string | no | Image scale (-1:N or WIDTHxHEIGHT). Default -1:50. Example: `-1:50`. | | `watermark_text_padding` | body | string | no | Text padding in pixels. Default 10. Example: `10`. | | `watermark_text_background_color` | body | string | no | Hex background box color; omit for no box. Example: `#000000`. | | `persistent` | query | boolean | no | | #### Quickstart Upload a video and a watermark to start an async watermarking job. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-video-watermark/file-to-json" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" \ -F "watermark_image=@/path/to/watermark.png" ``` #### What you'll get back Returns a JSON object with a required `job_id` string field — the UUID of the submitted job for later status polling. ```json { "job_id": "550e8400-e29b-41d4-a716-446655440000" } ``` ### Check generate video watermark job status `GET https://api.eu.apyhub.com/apyhub/generate-video-watermark/jobs/:job_id` · 400 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Fetch the status of a watermarking job by its `job_id`. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/generate-video-watermark/jobs/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. The `data` object can include `job_id` (string UUID), `status` (`pending`, `successful`, or `failed`), `message` (string), and `url` (string URI, present when the job is `successful`). ```json { "data": { "job_id": "550e8400-e29b-41d4-a716-446655440000", "status": "successful", "url": "https://assets.apyhub.com/samples/sample.mp4" } } ``` ## About ## What it does Video Watermark Generator adds a text or image watermark to a video and returns an asynchronous job you can poll for the finished file. Submit either a video URL or a multipart video file, choose the watermark type, and retrieve a presigned or CDN URL when processing completes. Use `watermark_text` for a text overlay, or `watermark_image` for an image overlay. You can control placement with `watermark_position`, adjust transparency with `watermark_opacity`, and tune the look with `watermark_font_size`, `watermark_font_color`, `watermark_text_padding`, and `watermark_text_background_color`. For image watermarks, you can also set `watermark_image_size`; `gif_loop` is available when the watermark is a GIF. The URL-based endpoint also accepts `size` for output scaling and a `persistent` query flag. The job response returns a `job_id` right away. Poll `GET /jobs/:job_id` to check whether the job is `pending`, `successful`, or `failed`. When it succeeds, the response includes the output `url` for the watermarked video. That makes it a fit for batch processing, content protection, branding, or adding review marks to generated clips without handling video encoding in your own service. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/generate-video-watermark * * * --- title: Generate Barcode API slug: generate-barcode url: https://apyhub.com/apyhub/service/generate-barcode provider: ApyHub categories: [E-commerce Quick Tools, Smart Generation] tags: [barcode, barcode-generator, code128, image-generation] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 30 alias: generate-bar-code --- # Generate Barcode API Generate Code128 barcodes from a text string and download them or get a pre-signed cloud URL. Built for labels, inventory, and ticketing. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/generate-barcode/download` | What it does Generates a Code128 barcode from the provided text content and returns the result as a… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/generate-barcode/link` | What it does Generates a Code128 barcode from the provided content and returns a pre-signed cloud s… | 30 | ## Endpoint reference ### Generate barcode — download file `POST https://api.eu.apyhub.com/apyhub/generate-barcode/download` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Text to encode as a Code128 barcode. Example: `1234567890`. | | `output` | query | string | no | Example: `my-barcode`. | #### Quickstart Generate a Code128 barcode from a text string and download the result. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-barcode/download?output=my-barcode" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"1234567890"}' ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the generated barcode image. ### Generate barcode — return cloud link `POST https://api.eu.apyhub.com/apyhub/generate-barcode/link` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Text to encode as a Code128 barcode. Example: `1234567890`. | | `output` | query | string | no | Example: `my-barcode`. | #### Quickstart Generate a Code128 barcode link from a piece of text. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-barcode/link?output=my-barcode" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"1234567890"}' ``` #### What you'll get back Returns a JSON object with a `data` string field — a pre-signed URL to the generated JPEG barcode. ```json { "data": "https://storage.example.com/barcodes/my-barcode.jpg?signature=abc123" } ``` ## About ## What it does Barcode Generator turns a text value into a Code128 barcode and gives you the result as either a downloadable file or a cloud link. Send the `content` string in the request body, and choose whether you want a binary download or a pre-signed JPEG URL. Use `POST /download` when you want the barcode file returned directly. Use `POST /link` when your workflow needs a hosted asset instead of a file response. Both endpoints accept the same input: the text to encode as `content`, plus an optional `output` query string for the file name or asset name. The download endpoint returns binary data, which fits well for printing labels, generating packing slips, or embedding barcodes into documents on your own infrastructure. The link endpoint returns a JSON object with a `data` field containing a URI, which is useful when you want to store or share the generated barcode without handling file transfer yourself. Barcode Generator is a straightforward fit for inventory systems, order fulfillment flows, ticketing, and any app that needs to turn an identifier into a scannable Code128 barcode. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/generate-barcode * * * --- title: AI Document Invoice Data Extraction API slug: extract-invoice-data url: https://apyhub.com/apyhub/service/extract-invoice-data provider: ApyHub categories: [Artificial Intelligence, Data Extraction, Finance] tags: [invoice-parsing, invoice-ocr, data-extraction, accounts-payable, ocr] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-document-extract-invoice --- # AI Document Invoice Data Extraction API Extract structured invoice data from a file or URL. Returns ApyHub or Azure invoice parsing output for accounts payable and ingestion workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/extract-invoice-data/file` | What it does Uploads an invoice file and returns parsed invoice data in a JSON object. The response… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/extract-invoice-data/url` | What it does Extracts invoice data from a document available at a URL and returns parsed results in… | 500 | ## Endpoint reference ### Extract invoice data (file upload) `POST https://api.eu.apyhub.com/apyhub/extract-invoice-data/file` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `azure_key` | body | string | no | Example: `azure-key-val`. | | `azure_region` | body | string | no | Example: `eastus`. | | `azure_endpoint` | body | string | no | Example: `https://endpoint-val/`. | | `azure_account_id` | body | string | no | Example: `account-id`. | | `requested_service` | body | string | no | One of: azure, apyhub. Default: `apyhub`. Example: `apyhub`. | | `azure_access_token` | body | string | no | Example: `token-val`. | #### Quickstart Upload an invoice file to extract its data with the default ApyHub parser. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-invoice-data/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.pdf" \ -F "requested_service=apyhub" ``` #### What you'll get back Returns a JSON object with a `data` object field. Inside `data`, the response may include `azure` for raw Azure Document Intelligence parsing output and/or `apyhub` for structured ApyHub Invoice Extraction parsing output. ```json { "data": { "azure": {}, "apyhub": {} } } ``` ### Extract invoice data (URL input) `POST https://api.eu.apyhub.com/apyhub/extract-invoice-data/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://example.com/invoice.pdf`. | | `azure.key` | body | string | no | Azure subscription key. Example: `your_azure_speech_or_vision_key`. | | `azure.region` | body | string | no | Azure service region. Example: `westus2`. | | `azure.endpoint` | body | string | no | Azure endpoint URL. Example: `https://westus2.api.cognitive.microsoft.com/`. | | `azure.account_id` | body | string | no | Azure account ID. Example: `account-id-1234`. | | `azure.access_token` | body | string | no | OAuth access token for Azure service. Example: `access_token_value`. | | `requested_service` | body | string | no | One of: azure, apyhub. Default: `apyhub`. Example: `apyhub`. | #### Quickstart Send an invoice PDF URL to extract its data. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-invoice-data/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://example.com/invoice.pdf"}' ``` #### What you'll get back Returns a JSON object with a `data` object field. `data.azure` contains the raw Azure Document Intelligence parsing output, and `data.apyhub` contains the structured ApyHub invoice extraction output. ```json { "data": { "azure": {}, "apyhub": {} } } ``` ## About ## What it does Invoice Extraction pulls structured invoice data from a PDF or document URL and returns either ApyHub's parsed invoice output or raw Azure Document Intelligence output, depending on the service you request. Send a file to `POST /file` or pass a document URL to `POST /url`. Both endpoints accept a `requested_service` value of `azure` or `apyhub`. The file endpoint also supports Azure credentials in the request body: `azure_key`, `azure_region`, `azure_endpoint`, `azure_account_id`, and `azure_access_token`. The URL endpoint accepts an `azure` object with `key`, `region`, `endpoint`, `account_id`, and `access_token`. The response wraps the extraction result in `data.azure` or `data.apyhub`. Use the Azure branch when you need the raw parsing output from Document Intelligence. Use the ApyHub branch when you want the structured invoice extraction response for downstream automation, such as accounts payable workflows, expense ingestion, or invoice indexing. Invoice Extraction fits into systems that need to turn invoices into machine-readable data without building your own document parser. It gives you a single interface for file uploads and remote documents, with output shaped for programmatic processing. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | ApyHub | 2000 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/extract-invoice-data * * * --- title: Validate Indian Postcodes API slug: validate-indian-postcode url: https://apyhub.com/apyhub/service/validate-indian-postcode provider: ApyHub categories: [Data Validation, Geolocation] tags: [postcode-validation, india, pin-code, address-validation, data-validation] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 alias: data-postcodes-india --- # Validate Indian Postcodes API Check any Indian pincode from your code and get a true or false back in one request. Built for checkout, signup and address cleanup. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/validate-indian-postcode` | What it does Validates an Indian PIN code by sending a postcode string in the request body and retu… | 10 | ## Endpoint reference ### Validate India pin code `POST https://api.eu.apyhub.com/apyhub/validate-indian-postcode` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `postcode` | body | string | yes | Postcode or PIN code (spaces ignored for matching). Example: `YO17 6DU`. | #### Quickstart Check whether a postcode or PIN code exists in the lookup table. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/validate-indian-postcode" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"postcode":"YO17 6DU"}' ``` #### What you'll get back Returns a JSON object with a `data` boolean field — `true` when the postcode exists in the lookup table, `false` otherwise. ```json { "data": true } ``` ## About ## What it does The Pincode API checks whether an Indian PIN code is real. Send a six-digit pincode and get back `true` or `false`. Spaces are ignored, so `110 001` and `110001` both work. Use it to stop bad addresses at the point of entry. Checkout forms. Signup flows. CRM imports. Bulk address cleanup on data you inherited. Catching a wrong pincode before an order ships saves a failed delivery and a support ticket. The response is deliberately small. One boolean, nothing to parse. That makes it cheap to call on every keystroke or on form submit, and easy to drop into a validation chain next to your email and phone checks. It tells you the pincode exists. It does not tell you which city or state it belongs to, or whether the rest of the address matches it. If you need the full address verified, use the [Address Validation API](https://apyhub.com/quadlem/service/address-validation). Shipping outside India too? The [UK Postcode API](https://apyhub.com/apyhub/service/validate-uk-postcode) works the same way. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/validate-indian-postcode * * * --- title: AI Text Sentiment Analysis API slug: analyze-text-sentiment url: https://apyhub.com/apyhub/service/analyze-text-sentiment provider: ApyHub categories: [Artificial Intelligence, Data Extraction] tags: [sentiment-analysis, text-classification, nlp, customer-feedback, opinion-mining] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 500 alias: ai-text-sentiment-analysis --- # AI Text Sentiment Analysis API Run sentiment analysis on text through ApyHub, Azure, or Google. Send text plus optional language settings and get provider-specific scoring back. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/analyze-text-sentiment` | What it does Analyzes the sentiment of the submitted text. The request body must include text, and… | 500 | ## Endpoint reference ### Analyze text sentiment `POST https://api.eu.apyhub.com/apyhub/analyze-text-sentiment` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | yes | Example: `I absolutely love this new feature!`. | | `azure.key` | body | string | no | Azure subscription key. Example: `your_azure_speech_or_vision_key`. | | `azure.region` | body | string | no | Azure service region. Example: `westus2`. | | `azure.endpoint` | body | string | no | Azure endpoint URL. Example: `https://westus2.api.cognitive.microsoft.com/`. | | `azure.account_id` | body | string | no | Azure account ID. Example: `account-id-1234`. | | `azure.access_token` | body | string | no | OAuth access token for Azure service. Example: `access_token_value`. | | `google.google_language` | body | string | no | Target language locale. Example: `en`. | | `google.google_credential_json.type` | body | string | no | Example: `service_account`. | | `google.google_credential_json.auth_uri` | body | string | no | Example: `https://accounts.google.com/o/oauth2/auth`. | | `google.google_credential_json.client_id` | body | string | no | Example: `123456789012345678901`. | | `google.google_credential_json.token_uri` | body | string | no | Example: `https://oauth2.googleapis.com/token`. | | `google.google_credential_json.project_id` | body | string | no | Example: `my-project-id`. | | `google.google_credential_json.private_key` | body | string | no | Example: `-----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQ.…`. | | `google.google_credential_json.client_email` | body | string | no | Example: `service-account@my-project-id.iam.gserviceaccount.com`. | | `google.google_credential_json.private_key_id` | body | string | no | Example: `key-id-12345`. | | `google.google_credential_json.universe_domain` | body | string | no | Example: `googleapis.com`. | | `google.google_credential_json.client_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/robot/v1/metadata/x509/service-account%40my-project-…`. | | `google.google_credential_json.auth_provider_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/oauth2/v1/certs`. | | `encoding` | body | string | no | Example: `UTF8`. | | `language` | body | string | no | Example: `en`. | | `requested_service` | body | string | no | One of: azure, google, apyhub. Default: `apyhub`. Example: `apyhub`. | #### Quickstart Send the text you want analyzed in a JSON request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/analyze-text-sentiment" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"I absolutely love this new feature!", "language":"en", "requested_service":"apyhub"}' ``` #### What you'll get back Returns a JSON object with a `data` object field. The `data` object may include `azure`, `apyhub`, and `google` response objects, depending on the service used. ```json { "data": { "azure": {}, "apyhub": {}, "google": {} } } ``` ## About ## What it does Text Sentiment Analyzer lets you send a text string and get sentiment analysis back from one of three providers: ApyHub, Azure, or Google. Use it when you need to classify customer feedback, scan reviews, or triage support messages by tone. The request body requires `body.text`. You can also include `body.encoding`, `body.language`, and `body.requested_service` to choose the provider and describe the text. If you want to run it against your own cloud account, the schema also supports provider-specific credentials under `body.azure` or `body.google`. The response returns a `data` object with a provider-specific result under `azure`, `apyhub`, or `google`, depending on which service you requested. The schema does not expose a fixed sentiment label or score here, so plan to handle the provider response structure directly. Use Text Sentiment Analyzer for moderation workflows, survey analysis, or any pipeline where you need a machine-readable pass on opinionated text without building your own NLP layer. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | Google | 500 | | ApyHub | 2000 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/analyze-text-sentiment * * * --- title: AI Document Data Extraction API slug: document-extraction url: https://apyhub.com/apyhub/service/document-extraction provider: ApyHub categories: [Artificial Intelligence, Data Extraction, Image Processing] tags: [document-parsing, data-extraction, ocr, idp] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 550 alias: ai-document-extract-document --- # AI Document Data Extraction API Send a file or document URL and get extracted content in a structured response. Route through Azure or ApyHub for document parsing workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/document-extraction/file` | What it does Uploads a document file and runs document extraction using the requested service. The… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/document-extraction/url` | What it does Submits a document URL for extraction and routes the request to the selected service.… | 550 | ## Endpoint reference ### Document Extraction via file upload `POST https://api.eu.apyhub.com/apyhub/document-extraction/file` · 550 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `azure_key` | body | string | no | | | `azure_endpoint` | body | string | no | | | `requested_service` | body | string | yes | One of: azure, apyhub. Example: `azure`. | #### Quickstart Upload a document file and choose which extraction service to use. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/document-extraction/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.pdf" \ -F "requested_service=azure" ``` #### What you'll get back Returns a JSON object with a `data` object field. The `data` object may include an `azure` object when `requested_service` is `azure`, or an `apyhub` object when `requested_service` is `apyhub`. ```json { "data": { "azure": {} } } ``` ### Document Extraction via URL `POST https://api.eu.apyhub.com/apyhub/document-extraction/url` · 550 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.pdf`. | | `azure.key` | body | string | no | Example: `your-azure-key`. | | `azure.region` | body | string | no | Example: `eastus`. | | `azure.endpoint` | body | string (uri) | no | Example: `https://your-resource.cognitiveservices.azure.com/`. | | `azure.account_id` | body | string | no | Example: `00000000-0000-0000-0000-000000000000`. | | `azure.access_token` | body | string | no | Example: `eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example`. | | `requested_service` | body | string | yes | One of: azure, apyhub. Example: `azure`. | #### Quickstart Send a document URL and choose which extraction backend to use. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/document-extraction/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.pdf", "requested_service": "azure" }' ``` #### What you'll get back Returns a JSON object with a `data` object. The `data` object contains the extraction result from the selected service, under either `azure` or `apyhub` depending on `requested_service`. ```json { "data": { "azure": {} } } ``` ## About ## What it does Document Extraction lets you send a file or a document URL and receive extracted document data back in a structured response. Choose whether to route the request to `azure` or `apyhub` with `requested_service`, and the API returns a `data` object containing the corresponding result under `azure` or `apyhub`. Use the `/file` endpoint when you already have the document bytes ready to upload. The request accepts `file`, `requested_service`, and optional Azure settings such as `azure_key` and `azure_endpoint`. Use `/url` when the document is already hosted remotely; send the `url`, `requested_service`, and optional Azure configuration inside the `azure` object, including `key`, `region`, `endpoint`, `account_id`, and `access_token`. Document Extraction is useful when you need to pull text or document content into downstream systems without building your own ingestion layer. For example, you can ingest PDFs from a storage bucket, process invoices or forms from a download link, and hand the returned document payload to search, review, or workflow steps. The response is intentionally flexible: it returns a top-level `data` object with either an `azure` payload or an `apyhub` payload depending on the service you request. That makes it suitable for integrating document parsing into systems that need a consistent interface while keeping the provider-specific output available. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | ApyHub | 2000 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/document-extraction * * * --- title: Convert Video Formats API slug: convert-video-formats url: https://apyhub.com/apyhub/service/convert-video-formats provider: ApyHub categories: [File Conversion, File Manipulation] tags: [video-converter, video-format-conversion, mp4, video-processing] auth: api_key version: 1.0 service_type: sync endpoints: 4 atoms: 550 alias: convert-video --- # Convert Video Formats API Video converter API: send a file or URL, pick mp4, webm, mov, mkv, avi, flv or 3gp, and get the video back or a signed link. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-video-formats/url/link` | What it does Converts a video from the source URL you provide into the requested output format and… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/convert-video-formats/multi-part/download` | What it does Converts an uploaded video file to a different container format and returns the conver… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/convert-video-formats/multi-part/link` | What it does Uploads a video file and returns a time-limited signed download URL for the converted… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/convert-video-formats/url/download` | What it does Converts a video from a source URL into the requested output format and returns the re… | 550 | ## Endpoint reference ### Convert video format (URL → cloud link) `POST https://api.eu.apyhub.com/apyhub/convert-video-formats/url/link` · 550 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `video_url` | body | string (uri) | yes | | | `output_format` | body | string | yes | One of: mp4, mkv, avi, mov, flv, 3gp, webm. | #### Quickstart Convert a video from a direct URL to MP4 by sending the source URL and desired output format. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-video-formats/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "video_url": "https://example.com/video.mp4", "output_format": "mp4" }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a time-limited signed URL for download. ```json { "data": "https://example.com/signed-download-url" } ``` ### Convert video format (upload → download) `POST https://api.eu.apyhub.com/apyhub/convert-video-formats/multi-part/download` · 550 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `video` | body | string (binary) | yes | Video file (.mp4 .mkv .avi .mov .flv .3gp .webm) | | `output_format` | body | string | yes | Desired output container format. One of: mp4, mkv, avi, mov, flv, 3gp, webm. | #### Quickstart Download a converted video file by uploading your source video and choosing an output format. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-video-formats/multi-part/download" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" \ -F "output_format=mp4" ``` #### What you'll get back Returns a binary file stream, not a JSON object. The response body is the converted video file in the requested format. ### Convert video format (upload → cloud link) `POST https://api.eu.apyhub.com/apyhub/convert-video-formats/multi-part/link` · 550 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `video` | body | string (binary) | yes | | | `output_format` | body | string | yes | One of: mp4, mkv, avi, mov, flv, 3gp, webm. | #### Quickstart Upload a video file and choose the target format to get a signed download link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-video-formats/multi-part/link" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" \ -F "output_format=mp4" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a time-limited signed URL for download. ```json { "data": "https://example.com/signed-download-url" } ``` ### Convert video format (URL → download) `POST https://api.eu.apyhub.com/apyhub/convert-video-formats/url/download` · 550 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `video_url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `output_format` | body | string | yes | One of: mp4, mkv, avi, mov, flv, 3gp, webm. | #### Quickstart Convert a video from a URL into the format you choose. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-video-formats/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "video_url": "https://assets.apyhub.com/samples/sample.mp4", "output_format": "mp4" }' ``` #### What you'll get back Returns the converted file as binary data (`string` with `format: "binary"`), so the response is the video content itself rather than JSON. ## About ## What it does The video converter API changes a video from one container format to another. Send a `video_url` or upload the file as `video`, set `output_format`, and get the result back as a direct download or as a signed link. `output_format` takes `mp4`, `mkv`, `avi`, `mov`, `flv`, `3gp` or `webm`. Four endpoints cover the input and output combinations: URL or upload in, binary download or signed `data` URI out. Download routes suit a request someone is waiting on, and link routes suit background jobs and anything that stores the file for later. Uploads go up to 100 MB per request, so use the URL routes for anything larger. Media pipelines use the video converter API to normalize mixed uploads into one format before storage. CMS ingest converts whatever contributors send into the format the player expects. Backend jobs re-wrap archive footage into something a browser can play. The conversion is controlled by `output_format`. To change file size, the [Video Compression API](https://apyhub.com/apyhub/service/compress-video) takes a `compression_percentage` from 0 to 100. For long videos and batch work, the [Async Video Converter API](https://apyhub.com/apyhub/service/convert-video-formats-job) does the same conversion as a job: submit, get a `job_id`, poll until it finishes. It also pairs with the [Video Watermark API](https://apyhub.com/apyhub/service/generate-watermark-for-videos) when the output carries a logo. All of them are callable by AI agents through ApyHub MCP. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-video-formats * * * --- title: Apply Footers on PDF API slug: add-header-footer-to-pdf url: https://apyhub.com/apyhub/service/add-header-footer-to-pdf provider: ApyHub categories: [File Manipulation] tags: [pdf-editing, document-processing, header-footer, page-numbering, pdf-branding] auth: api_key version: 1.0 service_type: sync endpoints: 4 atoms: 100 alias: pdf-stamp-footers --- # Apply Footers on PDF API Add text or PNG headers and footers to any PDF from a file or URL. Returns the modified PDF or a signed link for invoices and reports. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/add-header-footer-to-pdf/file/download` | What it does Uploads a PDF file and returns a modified PDF with a header and/or footer added. You c… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/add-header-footer-to-pdf/file/url` | What it does Uploads a PDF file and returns a URL to the processed PDF with a header and/or footer… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/add-header-footer-to-pdf/url/download` | What it does Adds a header and/or footer to a PDF fetched from a public URL, then returns the modif… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/add-header-footer-to-pdf/url/url` | What it does Adds a header and/or footer to a PDF referenced by URL, then returns a JSON object con… | 100 | ## Endpoint reference ### Add header/footer to PDF `POST https://api.eu.apyhub.com/apyhub/add-header-footer-to-pdf/file/download` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | PDF file to modify. | | `output` | body | string | no | Output filename stem (without extension). Defaults to output. | | `footer_text` | body | string | no | Footer text. Use {page} as a placeholder for the page number. Example: `Page {page}`. | | `header_text` | body | string | no | Header text. At least one of header_text, footer_text, header_image, or footer_image is required. Example: `CONFIDENTIAL`. | | `footer_image` | body | string (binary) | no | Footer image (PNG). | | `header_image` | body | string (binary) | no | Header image (PNG). | | `footer_alignment` | body | string | no | One of: left, center, right. Default: `center`. | | `header_alignment` | body | string | no | One of: left, center, right. Default: `center`. | #### Quickstart Upload a PDF and add a simple header or footer, then download the modified file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/add-header-footer-to-pdf/file/download" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/input.pdf" \ -F "footer_text=Page" ``` #### What you'll get back Returns a binary file containing the modified PDF. ### Add header/footer to PDF (file upload → S3 URL) `POST https://api.eu.apyhub.com/apyhub/add-header-footer-to-pdf/file/url` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `footer_text` | body | string | no | Example: `Page {page}`. | | `header_text` | body | string | no | Example: `CONFIDENTIAL`. | | `footer_image` | body | string (binary) | no | | | `header_image` | body | string (binary) | no | | | `footer_alignment` | body | string | no | One of: left, center, right. Default: `center`. | | `header_alignment` | body | string | no | One of: left, center, right. Default: `center`. | #### Quickstart Upload a PDF and add simple header/footer text, then get back a link to the processed file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/add-header-footer-to-pdf/file/url" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.pdf" \ -F "footer_text=Page" ``` #### What you'll get back Returns a JSON object with a `url` string field containing the downloadable URL of the generated PDF. ```json { "url": "https://s3.amazonaws.com/bucket/output.pdf" } ``` ### Add header/footer to PDF (URL → download) `POST https://api.eu.apyhub.com/apyhub/add-header-footer-to-pdf/url/download` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file_url` | body | string (uri) | yes | Publicly accessible PDF URL. Example: `https://assets.apyhub.com/samples/sample.pdf`. | | `footer_text` | body | string | no | Footer text. Use {page} for the page number. Example: `Page {page}`. | | `header_text` | body | string | no | Header text. At least one of header_text, footer_text, header_image_url, or footer_image_url is required. Example: `CONFIDENTIAL`. | | `footer_alignment` | body | string | no | One of: left, center, right. Default: `center`. | | `footer_image_url` | body | string (uri) | no | Publicly accessible PNG image URL for the footer. | | `header_alignment` | body | string | no | One of: left, center, right. Default: `center`. | | `header_image_url` | body | string (uri) | no | Publicly accessible PNG image URL for the header. | #### Quickstart Add text or images to a PDF from a public file URL, and download the modified PDF. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/add-header-footer-to-pdf/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "file_url": "https://assets.apyhub.com/samples/sample.pdf", "header_text": "CONFIDENTIAL" }' ``` #### What you'll get back Returns the generated PDF as a binary file. ### Add header/footer to PDF (URL → S3 URL) `POST https://api.eu.apyhub.com/apyhub/add-header-footer-to-pdf/url/url` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file_url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.pdf`. | | `footer_text` | body | string | no | Example: `Page {page}`. | | `header_text` | body | string | no | Example: `CONFIDENTIAL`. | | `footer_alignment` | body | string | no | One of: left, center, right. Default: `center`. | | `footer_image_url` | body | string (uri) | no | | | `header_alignment` | body | string | no | One of: left, center, right. Default: `center`. | | `header_image_url` | body | string (uri) | no | | #### Quickstart Generate a PDF with header/footer text from a PDF URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/add-header-footer-to-pdf/url/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"file_url":"https://assets.apyhub.com/samples/sample.pdf","footer_text":"Page {page}","header_text":"CONFIDENTIAL"}' ``` #### What you'll get back Returns a JSON object with a `url` string field containing the output PDF URL. ```json { "url": "https://s3.amazonaws.com/bucket/output.pdf" } ``` ## About ## What it does PDF Header Footer adds text or PNG images to the top and bottom of a PDF, then returns the updated file or a downloadable URL. Send a PDF and choose one of four input styles: upload a file or pass a public PDF URL, then receive either a binary download or a JSON response with a `url`. You can set `header_text` or `footer_text`, use `{page}` in footer text to print the page number, or provide `header_image` and `footer_image` / `header_image_url` and `footer_image_url` for image-based branding. Alignment is configurable for both header and footer with `left`, `center`, or `right`. Use PDF Header Footer when you need to stamp invoices, add page numbers, mark internal documents with labels like `CONFIDENTIAL`, or place a logo on exported reports. The service is built for simple document post-processing: you provide the source PDF and the header/footer content, and it returns a modified PDF ready to store, send, or download. The `/file/download` and `/url/download` endpoints return the modified PDF directly. The `/file/url` and `/url/url` endpoints return an S3 URL in a `url` field, which is useful when your workflow needs a persisted output location instead of a file stream. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/add-header-footer-to-pdf * * * --- title: "Image to PDF API: Convert JPG, PNG, and More" slug: convert-image-to-pdf url: https://apyhub.com/apyhub/service/convert-image-to-pdf provider: ApyHub categories: [File Conversion] tags: [image-to-pdf, jpg-to-pdf, png-to-pdf, pdf-generation, document-conversion] auth: api_key version: 1.0.0 service_type: sync endpoints: 6 atoms: 100 alias: converter-image-pdf --- # Image to PDF API: Convert JPG, PNG, and More Convert JPG, PNG, GIF, TIFF, BMP and SVG images to PDF with one API call. Send a file, URL or base64, choose landscape if needed. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-image-to-pdf/base64/link` | What it does Converts a base64-encoded image into a PDF and returns a signed link to the generated… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-image-to-pdf/file/download` | What it does Converts an uploaded image file into a PDF and returns the resulting PDF as a binary d… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-image-to-pdf/file/link` | What it does Converts an uploaded image file into a PDF and returns a signed PDF link in the respon… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-image-to-pdf/url/download` | What it does Converts a remote image referenced by a URL into a PDF and returns the PDF as a binary… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-image-to-pdf/url/link` | What it does Converts a remote image accessible by URL into a PDF and returns a signed PDF link. Yo… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-image-to-pdf/base64/download` | What it does Converts a base64-encoded image into a PDF and returns the PDF as a binary download. T… | 100 | ## Endpoint reference ### Convert base64-encoded image to PDF signed link `POST https://api.eu.apyhub.com/apyhub/convert-image-to-pdf/base64/link` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `base64` | body | string | yes | Base64-encoded file bytes. | #### Quickstart Convert a base64-encoded image into a PDF link with one JSON request. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-image-to-pdf/base64/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"base64":"iVBORw0KGgoAAAANSUhEUgAA..."}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI to the generated PDF. ```json { "data": "https://example.com/output.pdf" } ``` ### Convert image upload to PDF download `POST https://api.eu.apyhub.com/apyhub/convert-image-to-pdf/file/download` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | .png, .jpeg, .jpg, .gif, .svg, .tif, or .bmp | | `output` | query | string | no | Example: `output.pdf`. | | `landscape` | query | boolean | no | Default: `false`. | #### Quickstart Upload an image and download the generated PDF. The `output` and `landscape` options are sent as query parameters. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-image-to-pdf/file/download?output=output.pdf" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.png" ``` #### What you'll get back Returns the PDF file itself as a binary response. ```bash ``` ### Convert image upload to PDF signed link `POST https://api.eu.apyhub.com/apyhub/convert-image-to-pdf/file/link` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `landscape` | query | boolean | no | Default: `false`. | #### Quickstart Upload an image file to convert it to a PDF; this example also sets the optional `landscape` query parameter to `false` by omitting it. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-image-to-pdf/file/link" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/image.png" ``` #### What you'll get back Returns a JSON object with a `data` string field containing the generated PDF URI. ```json { "data": "https://example.com/output.pdf" } ``` ### Convert remote image URL to PDF download `POST https://api.eu.apyhub.com/apyhub/convert-image-to-pdf/url/download` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.png`. | | `landscape` | query | boolean | no | Default: `false`. | #### Quickstart Convert an image from a public URL into a PDF. The `url` goes in the JSON body, and `landscape` is an optional query parameter. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-image-to-pdf/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.png"}' ``` #### What you'll get back Returns a binary file stream containing the generated PDF. There is no JSON wrapper in the response. ### Convert remote image URL to PDF signed link `POST https://api.eu.apyhub.com/apyhub/convert-image-to-pdf/url/link` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.png`. | #### Quickstart Convert an image from a URL into a PDF by sending the image link in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-image-to-pdf/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.png"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the generated PDF URI. ```json { "data": "https://..." } ``` ### Convert base64-encoded image to PDF download `POST https://api.eu.apyhub.com/apyhub/convert-image-to-pdf/base64/download` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `base64` | body | string | yes | Base64-encoded file bytes. | | `landscape` | query | boolean | no | Default: `false`. | #### Quickstart Convert a Base64-encoded file into a PDF. This example sends the required `base64` value and uses the default download flow. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-image-to-pdf/base64/download?landscape=false" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"base64":"JVBERi0xLjQKJ..." }' ``` #### What you'll get back Returns a binary file response (`string` with `format: binary`), so the successful response is the generated PDF file itself. ```binary %PDF-... ``` ## About ## What it does The Image to PDF API turns images into PDF documents. Send a JPG, PNG, GIF, SVG, TIFF, or BMP file as an upload (up to 100 MB), as a URL, or as a base64 string, and get the PDF back either as the file itself or as a signed link you can store or share. Set `landscape` to `true` for wide images such as screenshots or charts. Use it to save receipts and scanned pages as PDFs, turn screenshots and product photos into shareable documents, or add image-based pages to reports without building your own rendering setup. Need the opposite? The [PDF to Image API](https://apyhub.com/apyhub/service/convert-pdf-pages-to-images) turns PDF pages back into images. For web pages and documents, use the [HTML to PDF](https://apyhub.com/apyhub/service/convert-html-to-pdf) or [Word to PDF](https://apyhub.com/apyhub/service/convert-word-to-pdf) APIs. Pick the endpoint that fits where your image is: upload endpoints when the file is in your app, URL endpoints when it's hosted elsewhere, and base64 endpoints when the image is already encoded in your data. You can start on ApyHub's free tier with no card required. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-image-to-pdf * * * --- title: Crop Images API slug: crop-image url: https://apyhub.com/apyhub/service/crop-image provider: ApyHub categories: [File Manipulation, Image Processing] tags: [image-crop, crop, image-editing, image-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 30 alias: image-processor-crop --- # Crop Images API Image crop API that trims JPEG, PNG, WebP, GIF, TIFF and BMP files by exact size or by edge insets in pixels or percent, from a URL or upload. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/crop-image/url/link` | What it does Crops an image fetched from a URL and returns a signed URL for the cropped result. Use… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/crop-image/multi-part/download` | What it does Crops an uploaded image and returns the resulting file as binary data. You can crop by… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/crop-image/multi-part/link` | What it does Crops an uploaded raster image and returns a time-limited pre-signed URL to the stored… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/crop-image/url/download` | What it does Crops an image fetched from a URL and returns the resulting file as binary data. The r… | 30 | ## Endpoint reference ### Crop image (fetch by URL, return signed URL) `POST https://api.eu.apyhub.com/apyhub/crop-image/url/link` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `top` | body | string | no | Top edge inset — e.g. 10px or 10%. Required with the other three margin fields in margin mode. Example: `10px`. | | `url` | body | string (uri) | no | Image URL for dimension mode. Set this field to use width×height box crop from the top-left origin. Do not combine with image_url. Example: `https://assets.apyhub.com/samples/sample.png`. | | `left` | body | string | no | Left edge inset — e.g. 5px or 5%. Required with the other three margin fields in margin mode. Example: `5%`. | | `right` | body | string | no | Right edge inset — e.g. 5px or 5%. Required with the other three margin fields in margin mode. Example: `5%`. | | `bottom` | body | string | no | Bottom edge inset — e.g. 10px or 10%. Required with the other three margin fields in margin mode. Example: `10px`. | | `image_url` | body | string (uri) | no | Image URL for margin mode. Set this field to use edge-inset cropping with top, bottom, left, and right. Do not combine with url. Example: `https://assets.apyhub.com/samples/sample.png`. | | `width` | query | integer | no | Example: `400`. | | `height` | query | integer | no | Example: `300`. | | `output` | query | string | no | Example: `cropped-result`. | | `preserve_format` | query | boolean | no | Default: `false`. Example: `true`. | #### Quickstart Crop an image from a URL using the dimension mode, with the image URL in the JSON body and the crop size in query parameters. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/crop-image/url/link?width=400&height=300&output=cropped-result" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.png"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a time-limited pre-signed URL to the cropped image. ```json { "data": "https://storage.example.com/crop/cropped-result.png?X-Amz-Signature=def456&X-Amz-Expires=3600" } ``` ### Crop image (multipart upload, download file) `POST https://api.eu.apyhub.com/apyhub/crop-image/multi-part/download` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `top` | body | string | no | Top edge inset (e.g. 20px or 10%). Required together with bottom, left, and right for margin mode. Omit all four to use dimension mode instead. Example: `20px`. | | `left` | body | string | no | Left edge inset (e.g. 15px or 5%). See top. Example: `15px`. | | `image` | body | string (binary) | yes | Raster image file to crop. Supported formats — JPEG, PNG, WebP, GIF, TIFF, BMP. Example: `sample.png`. | | `right` | body | string | no | Right edge inset (e.g. 15px or 5%). See top. Example: `15px`. | | `bottom` | body | string | no | Bottom edge inset (e.g. 20px or 10%). See top. Example: `20px`. | | `width` | query | integer | no | Example: `400`. | | `height` | query | integer | no | Example: `300`. | | `output` | query | string | no | Example: `cropped-result`. | | `preserve_format` | query | boolean | no | Default: `false`. Example: `true`. | #### Quickstart Crop an uploaded image and return the cropped file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/crop-image/multi-part/download" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/sample.png" ``` #### What you'll get back Returns a binary file response (`string` with `format: binary`), not a JSON object. ```binary ``` ### Crop image (multipart upload, return signed URL) `POST https://api.eu.apyhub.com/apyhub/crop-image/multi-part/link` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `top` | body | string | no | Top edge inset (e.g. 20px or 10%). See margin mode in endpoint description. Example: `20px`. | | `left` | body | string | no | Left edge inset (e.g. 15px or 5%). Example: `15px`. | | `image` | body | string (binary) | yes | Raster image file to crop. Supported formats — JPEG, PNG, WebP, GIF, TIFF, BMP. Example: `sample.png`. | | `right` | body | string | no | Right edge inset (e.g. 15px or 5%). Example: `15px`. | | `bottom` | body | string | no | Bottom edge inset (e.g. 20px or 10%). Example: `20px`. | | `width` | query | integer | no | Example: `400`. | | `height` | query | integer | no | Example: `300`. | | `output` | query | string | no | Example: `cropped-result`. | | `preserve_format` | query | boolean | no | Default: `false`. Example: `true`. | #### Quickstart Crop an image from a public link by sending the image URL along with the required crop file field. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/crop-image/multi-part/link?width=400&height=300&output=cropped-result&preserve_format=true" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/sample.png" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a time-limited pre-signed URL to the cropped image. ```json { "data": "https://storage.example.com/crop/cropped-result.png?X-Amz-Signature=abc123&X-Amz-Expires=3600" } ``` ### Crop image (fetch by URL, download file) `POST https://api.eu.apyhub.com/apyhub/crop-image/url/download` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `top` | body | string | no | Top edge inset — e.g. 10px or 10%. Required with the other three margin fields in margin mode. Example: `10px`. | | `url` | body | string (uri) | no | Image URL for dimension mode. Set this field to use width×height box crop from the top-left origin. Do not combine with image_url. Example: `https://assets.apyhub.com/samples/sample.png`. | | `left` | body | string | no | Left edge inset — e.g. 5px or 5%. Required with the other three margin fields in margin mode. Example: `5%`. | | `right` | body | string | no | Right edge inset — e.g. 5px or 5%. Required with the other three margin fields in margin mode. Example: `5%`. | | `bottom` | body | string | no | Bottom edge inset — e.g. 10px or 10%. Required with the other three margin fields in margin mode. Example: `10px`. | | `image_url` | body | string (uri) | no | Image URL for margin mode. Set this field to use edge-inset cropping with top, bottom, left, and right. Do not combine with url. Example: `https://assets.apyhub.com/samples/sample.png`. | | `width` | query | integer | no | Example: `400`. | | `height` | query | integer | no | Example: `300`. | | `output` | query | string | no | Example: `cropped-result`. | | `preserve_format` | query | boolean | no | Default: `false`. Example: `true`. | #### Quickstart Crop an image from a URL by sending the source image plus the required width and height query parameters. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/crop-image/url/download?width=400&height=300" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.png"}' ``` #### What you'll get back Returns the cropped image as binary data. ## About ## What it does The image crop API trims raster images to the frame you need. Send a public image URL or upload the file (up to 100 MB per request), and get the cropped image back as a file download or as a time-limited signed URL. It supports JPEG, PNG, WebP, GIF, TIFF and BMP. There are two ways to define the crop. In dimension mode, set `width` and `height` to cut a box of that size from the top-left corner. In margin mode, set `top`, `bottom`, `left` and `right` insets in pixels (`10px`) or percent (`5%`) to trim each edge. Percent insets work well when a batch holds images of different sizes. Set `preserve_format` to `true` to keep the original format. Use the image crop API to cut product shots to a consistent frame, trim toolbars and borders from screenshots, remove letterboxing from video stills, and prepare banner and social assets at fixed sizes. Profile photo uploads can be cropped server-side so every avatar matches your layout. When the subject isn't in a predictable place, the [Smart Crop API](https://apyhub.com/dosvak/service/smart-crop) crops around detected faces instead. To fit a crop into exact display dimensions, follow it with the [Image Resize API](https://apyhub.com/apyhub/service/resize-image), then reduce file size with the [Image Compression API](https://apyhub.com/apyhub/service/compress-images). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/crop-image * * * --- title: AI Image Explicit Content Detection API slug: detect-explicit-or-sensitive-content url: https://apyhub.com/apyhub/service/detect-explicit-or-sensitive-content provider: ApyHub categories: [Artificial Intelligence, File Security, Image Processing] tags: [content-moderation, explicit-content, image-safety, nsfw-detection, vision-classification] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-image-detect-explicit-content --- # AI Image Explicit Content Detection API Image moderation API that flags NSFW and explicit content. Send an image file or URL, get JSON results from ApyHub, Azure or Google. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/detect-explicit-or-sensitive-content/file` | What it does Uploads a file to detect explicit or sensitive content and returns provider-specific r… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/detect-explicit-or-sensitive-content/url` | What it does Detects explicit or sensitive content from a URL. You send a url in the request body a… | 500 | ## Endpoint reference ### Detect explicit or sensitive content `POST https://api.eu.apyhub.com/apyhub/detect-explicit-or-sensitive-content/file` · 500 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `azure_key` | body | string | no | Example: `azure-key-val`. | | `google_key` | body | string | no | Example: `google-key-val`. | | `azure_region` | body | string | no | Example: `westus`. | | `azure_endpoint` | body | string | no | Example: `https://westus.api.cognitive.microsoft.com/`. | | `azure_account_id` | body | string | no | Example: `azure-account-id`. | | `requested_service` | body | string | no | One of: azure, google, apyhub. Default: `apyhub`. Example: `apyhub`. | | `azure_access_token` | body | string | no | Example: `token-val`. | #### Quickstart Upload a file to scan it for explicit or sensitive content. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-explicit-or-sensitive-content/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file" ``` #### What you'll get back Returns a JSON object with a `data` object field. That `data` object may include `azure`, `apyhub`, and `google` objects, depending on the requested service and response content. ```json { "data": { "azure": {}, "apyhub": {}, "google": {} } } ``` ### Detect explicit or sensitive content `POST https://api.eu.apyhub.com/apyhub/detect-explicit-or-sensitive-content/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://example.com/explicit.jpg`. | | `azure.key` | body | string | no | Azure subscription key. Example: `your_azure_speech_or_vision_key`. | | `azure.region` | body | string | no | Azure service region. Example: `westus2`. | | `azure.endpoint` | body | string | no | Azure endpoint URL. Example: `https://westus2.api.cognitive.microsoft.com/`. | | `azure.account_id` | body | string | no | Azure account ID. Example: `account-id-1234`. | | `azure.access_token` | body | string | no | OAuth access token for Azure service. Example: `access_token_value`. | | `google.google_language` | body | string | no | Target language locale. Example: `en`. | | `google.google_credential_json.type` | body | string | no | Example: `service_account`. | | `google.google_credential_json.auth_uri` | body | string | no | Example: `https://accounts.google.com/o/oauth2/auth`. | | `google.google_credential_json.client_id` | body | string | no | Example: `123456789012345678901`. | | `google.google_credential_json.token_uri` | body | string | no | Example: `https://oauth2.googleapis.com/token`. | | `google.google_credential_json.project_id` | body | string | no | Example: `my-project-id`. | | `google.google_credential_json.private_key` | body | string | no | Example: `-----BEGIN PRIVATE KEY----- MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQ.…`. | | `google.google_credential_json.client_email` | body | string | no | Example: `service-account@my-project-id.iam.gserviceaccount.com`. | | `google.google_credential_json.private_key_id` | body | string | no | Example: `key-id-12345`. | | `google.google_credential_json.universe_domain` | body | string | no | Example: `googleapis.com`. | | `google.google_credential_json.client_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/robot/v1/metadata/x509/service-account%40my-project-…`. | | `google.google_credential_json.auth_provider_x509_cert_url` | body | string | no | Example: `https://www.googleapis.com/oauth2/v1/certs`. | | `requested_service` | body | string | no | One of: azure, google, apyhub. Default: `apyhub`. Example: `apyhub`. | #### Quickstart Send an image URL to check whether it contains explicit or sensitive content. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-explicit-or-sensitive-content/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample-explicit.jpg"}' ``` #### What you'll get back Returns a JSON object with a `data` object. The `data` object may include `azure`, `apyhub`, and `google` response objects, depending on which detector/service is used. ```json { "data": { "azure": {}, "apyhub": {}, "google": {} } } ``` ## About ## What it does The Image Moderation API checks an image for explicit or sensitive content. Upload a binary `file` (up to 100MB per request) or send a public image `url`, and get back a JSON `data` object with the detection results. Pick the detector with `requested_service`: `apyhub` (default), `azure` or `google`. Results come back under the provider's own key, and you can pass your own Azure or Google credentials in the request when you want to use your existing accounts. Use it as the NSFW detection step for user uploads: profile photos, product listings, community posts and chat attachments. Flag explicit images before they go live, send borderline cases to human review, and keep your feed safe for work. AI agents can call it through ApyHub MCP as part of a moderation workflow. This image moderation API handles still images. For video files, use the [AI Video Explicit Content Detection API](https://apyhub.com/apyhub/service/explicit-content-detection). For a complete content moderation API setup, pair it with the [AI Text Moderation API](https://apyhub.com/apyhub/service/text-moderation) or the [Detect Text Toxicity API](https://apyhub.com/dosvak/service/detect-toxicity) for captions and comments, and the [AI Image Face Detection API](https://apyhub.com/apyhub/service/detect-human-faces) when you need to know whether a person appears in the image. | Provider (requested_service) | Atoms | |------------------------------|------:| | Azure | 500 | | Google | 500 | | ApyHub | 2000 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/detect-explicit-or-sensitive-content * * * --- title: Trim Video Clip API slug: trim-video url: https://apyhub.com/apyhub/service/trim-video provider: ApyHub categories: [File Conversion, File Manipulation] tags: [video-trim, video-cut, video-clip, video-editing] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 550 alias: video-thumbnail --- # Trim Video Clip API Trim a short clip from an uploaded video or a remote video URL. Returns binary output or a signed link for previews, samples, and social cuts. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/trim-video/file/download` | What it does Trims a segment from an uploaded video file and streams the resulting download back as… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/trim-video/file/link` | What it does Trims a short clip from an uploaded video and returns a signed URL to the generated fi… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/trim-video/url/download` | What it does Trims a video clip from a remote URL and streams the resulting file as a binary downlo… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/trim-video/url/link` | What it does Creates a trimmed video clip from a remote video URL and returns a signed URI for the… | 550 | ## Endpoint reference ### Trim video clip from upload and stream download `POST https://api.eu.apyhub.com/apyhub/trim-video/file/download` · 550 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | Output scale WxH with even width and height. Omit to keep source dimensions. Example: `640x360`. | | `video` | body | string (binary) | yes | Video file (.mp4 .mkv .avi .mov .flv .3gp .webm). Max 500 MiB. | | `duration` | body | integer | no | Default: `2`. Example: `4`. | | `start_time` | body | integer | no | Default: `0`. Example: `5`. | #### Quickstart Upload a video and get back the trimmed clip as a binary file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/trim-video/file/download" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" ``` #### What you'll get back Returns a binary file response (`string` with `format: binary`), not JSON. ```text (binary video clip) ``` ### Trim video clip from upload and return signed link `POST https://api.eu.apyhub.com/apyhub/trim-video/file/link` · 550 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | Example: `480x270`. | | `video` | body | string (binary) | yes | | | `duration` | body | integer | no | Default: `2`. | | `start_time` | body | integer | no | Default: `0`. | #### Quickstart Upload a video file to trim a clip and get back a signed link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/trim-video/file/link" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI to the generated video clip. ```json { "data": "https://storage.example.com/video-clips/clip.mp4?sig=abc" } ``` ### Trim video clip from remote URL and stream download `POST https://api.eu.apyhub.com/apyhub/trim-video/url/download` · 550 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | Example: `640x360`. | | `duration` | body | string | no | Default: `2`. Example: `4`. | | `video_url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `start_time` | body | string | no | Default: `0`. Example: `5`. | #### Quickstart Send a video URL to trim a clip from the video. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/trim-video/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"video_url":"https://assets.apyhub.com/samples/sample.mp4"}' ``` #### What you'll get back Returns the trimmed video clip as a binary file response. ```bash (binary file) ``` ### Trim video clip from remote URL and return signed link `POST https://api.eu.apyhub.com/apyhub/trim-video/url/link` · 550 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | Example: `640x360`. | | `duration` | body | string | no | Default: `2`. Example: `4`. | | `video_url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `start_time` | body | string | no | Default: `0`. Example: `5`. | #### Quickstart Trim a clip from a video URL by sending the video link in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/trim-video/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"video_url":"https://assets.apyhub.com/samples/sample.mp4"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI for the trimmed video clip. ```json { "data": "https://storage.example.com/video-clips/clip.mp4?sig=abc" } ``` ## About ## What it does Video Clip Trimmer cuts a short clip from a video file or a remote video URL and returns the clip as either a streamed download or a signed link. Send a source video, choose a start time and duration, and optionally set the output size to control the clip dimensions. Use the file-based endpoints when you already have the video in hand, or the URL-based endpoints when the source lives elsewhere. For uploaded videos, the service accepts a binary video file in .mp4, .mkv, .avi, .mov, .flv, .3gp, or .webm format up to 500 MiB. For remote sources, provide a video_url. In both cases, you can set start_time, duration, and size. The response depends on the endpoint you choose: stream the clip back as binary data, or receive a JSON object with a data field containing a signed URI. That makes it useful for generating previews in content workflows, embedding short samples in product pages, or extracting a specific segment from longer footage without handling video processing yourself. The output is a video clip, not a still image. If you need a single frame, use the Generate Thumbnail from Video Job API instead. If you need a compact video snippet from an upload or a hosted asset, Video Clip Trimmer keeps the interface simple and the output predictable. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/trim-video * * * --- title: Translate Documents API slug: translate-documents url: https://apyhub.com/apyhub/service/translate-documents provider: ApyHub categories: [File Conversion, Smart Generation] tags: [document-translation, language-detection, transliteration, file-translation, url-translation] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 150 alias: text-translator --- # Translate Documents API Translate uploaded documents or document URLs into a target language. Returns translated text, the target language, and optional detected language. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/translate-documents/file` | What it does Uploads a document file and translates its text into the requested target language. Yo… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/translate-documents/url` | What it does Translates a document fetched from a URL into the target language you provide, and ret… | 150 | ## Endpoint reference ### Translate uploaded document `POST https://api.eu.apyhub.com/apyhub/translate-documents/file` · 150 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Document file to translate. | | `language` | body | string | yes | Azure target language code (e.g. fr, de). Example: `fr`. | | `file_type` | query | string | no | Example: `pdf`. | | `transliteration` | query | string | no | Example: `true`. | #### Quickstart Translate a document file to a target language by uploading the file and its language code. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/translate-documents/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.pdf" \ -F "language=fr" ``` #### What you'll get back Returns a JSON object with required `translation` and `translated_language` string fields. It may also include `transliteration` as a string, and `detected_language` as an object with `score` and `language`. ```json { "translation": "Translated document text.", "translated_language": "de", "detected_language": { "score": 1, "language": "en" } } ``` ### Translate document from URL `POST https://api.eu.apyhub.com/apyhub/translate-documents/url` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.pdf`. | | `language` | body | string | yes | Example: `de`. | | `perform_transliteration` | body | boolean | no | Example: `false`. | | `file_type` | query | string | no | Example: `pdf`. | | `transliteration` | query | string | no | Example: `true`. | #### Quickstart Translate a document from a file URL into the target language. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/translate-documents/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.pdf", "language": "de" }' ``` #### What you'll get back Returns a JSON object with required `translation` and `translated_language` string fields. The response may also include `transliteration` and `detected_language`. ```json { "translation": "Translated document text.", "translated_language": "de" } ``` ## About ## What it does Document Translation translates uploaded documents or documents fetched from a URL into a target language. Send a file or a document URL, choose an Azure language code, and get translated text back with the translated language in the response. Use the `/file` endpoint when you already have the document bytes, or `/url` when the source document is hosted elsewhere. Both endpoints accept a `file_type` query parameter, and the file-based endpoint also accepts `transliteration` in the query string. The URL-based endpoint lets you request transliteration with `perform_transliteration` in the body. The response includes `translation` and `translated_language`, which are required. When available, it can also return `detected_language` with a score and language code, plus `transliteration` when transliteration is requested and supported. That makes it useful for workflows where you need the translated document text for review, indexing, or downstream language-specific processing. Use Document Translation when you need to localize uploaded PDFs and other document files, extract translated content from a hosted document, or route content based on detected language without building your own translation pipeline. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/translate-documents * * * --- title: Apply Watermark and Footers on PDF API slug: stamp-header-footer-on-pdf url: https://apyhub.com/apyhub/service/stamp-header-footer-on-pdf provider: ApyHub categories: [File Manipulation] tags: [pdf-header-footer, pdf-stamping, watermark, pdf-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 200 alias: pdf-stamp-watermark-footers --- # Apply Watermark and Footers on PDF API Add headers and footers to PDFs from a URL or file upload. Returns a stamped PDF as a binary file or signed URL, with text or PNG support. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/stamp-header-footer-on-pdf/url/url` | What it does Fetches a PDF from a URL, stamps a header and/or footer onto it, and returns a signed… | 200 | | POST | `https://api.eu.apyhub.com/apyhub/stamp-header-footer-on-pdf/file/download` | What it does Uploads a PDF file and returns the stamped PDF as a binary file download. You provide… | 200 | | POST | `https://api.eu.apyhub.com/apyhub/stamp-header-footer-on-pdf/file/url` | What it does Stamps a header and/or footer onto an uploaded PDF file and returns a JSON object cont… | 200 | | POST | `https://api.eu.apyhub.com/apyhub/stamp-header-footer-on-pdf/url/download` | What it does Stamps a PDF fetched from a URL with header and/or footer content, then streams the pr… | 200 | ## Endpoint reference ### Stamp header/footer onto a PDF fetched from a URL, get a signed URL back `POST https://api.eu.apyhub.com/apyhub/stamp-header-footer-on-pdf/url/url` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `footer` | body | string | no | | | `header` | body | string | no | | | `file_url` | body | string (uri) | yes | URL of the source PDF. Required. | | `font_size` | body | number | no | | | `footer_text` | body | string | no | | | `header_text` | body | string | no | | | `font_opacity` | body | number | no | | | `footer_opacity` | body | number | no | Default: `1`. | | `header_opacity` | body | number | no | Default: `1`. | | `footer_alignment` | body | string | no | One of: left, right, center. Default: `center`. | | `footer_font_size` | body | number | no | Default: `12`. | | `footer_image_url` | body | string (uri) | no | URL of a PNG image. Required if footer_text not given. | | `header_alignment` | body | string | no | One of: left, right, center. Default: `center`. | | `header_font_size` | body | number | no | Default: `12`. | | `header_image_url` | body | string (uri) | no | URL of a PNG image. Required if header_text not given. | | `footer_image_size` | body | number | no | Default: `0.1`. | | `header_image_size` | body | number | no | Default: `0.1`. | | `output` | query | string | no | Default: `test-sample`. | #### Quickstart Generate a stamped PDF link from a source PDF URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/stamp-header-footer-on-pdf/url/url?output=url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "file_url": "https://assets.apyhub.com/samples/sample.pdf", "header_text": "Confidential", "footer_text": "Page footer" }' ``` #### What you'll get back Returns a JSON object with a `url` string field containing the generated PDF URL. ```json { "url": "https://example.com/output.pdf" } ``` ### Stamp header/footer onto an uploaded PDF, stream result back `POST https://api.eu.apyhub.com/apyhub/stamp-header-footer-on-pdf/file/download` · 200 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Source PDF file to stamp. Required. | | `footer` | body | string | no | | | `header` | body | string | no | | | `font_size` | body | number | no | Shared fallback for header_font_size/footer_font_size. | | `footer_text` | body | string | no | Alias: footer. Required if footer_image not given. Wins over footer_image if both present. | | `header_text` | body | string | no | Alias: header. Required if header_image not given. Wins over header_image if both present. | | `font_opacity` | body | number | no | | | `footer_image` | body | string (binary) | no | PNG image. Required if footer_text not given. | | `header_image` | body | string (binary) | no | PNG image. Required if header_text not given. | | `footer_opacity` | body | number | no | Default: `1`. | | `header_opacity` | body | number | no | Falls back to font_opacity when header_text set, else 1. Default: `1`. | | `footer_alignment` | body | string | no | One of: left, right, center. Default: `center`. | | `footer_font_size` | body | number | no | Default: `12`. | | `header_alignment` | body | string | no | One of: left, right, center. Default: `center`. | | `header_font_size` | body | number | no | Falls back to font_size if unset. Default: `12`. | | `footer_image_size` | body | number | no | Default: `0.1`. | | `header_image_size` | body | number | no | Default: `0.1`. | #### Quickstart Upload a PDF plus header and footer text to generate the stamped file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/stamp-header-footer-on-pdf/file/download" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/input.pdf" \ -F "header_text=Confidential" \ -F "footer_text=Approved" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the stamped PDF. ```binary %PDF-1.7 ... ``` ### Stamp header/footer onto an uploaded PDF, get a signed URL back `POST https://api.eu.apyhub.com/apyhub/stamp-header-footer-on-pdf/file/url` · 200 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Source PDF file to stamp. Required. | | `footer` | body | string | no | | | `header` | body | string | no | | | `font_size` | body | number | no | Shared fallback for header_font_size/footer_font_size. | | `footer_text` | body | string | no | Alias: footer. Required if footer_image not given. Wins over footer_image if both present. | | `header_text` | body | string | no | Alias: header. Required if header_image not given. Wins over header_image if both present. | | `font_opacity` | body | number | no | | | `footer_image` | body | string (binary) | no | PNG image. Required if footer_text not given. | | `header_image` | body | string (binary) | no | PNG image. Required if header_text not given. | | `footer_opacity` | body | number | no | Default: `1`. | | `header_opacity` | body | number | no | Falls back to font_opacity when header_text set, else 1. Default: `1`. | | `footer_alignment` | body | string | no | One of: left, right, center. Default: `center`. | | `footer_font_size` | body | number | no | Default: `12`. | | `header_alignment` | body | string | no | One of: left, right, center. Default: `center`. | | `header_font_size` | body | number | no | Falls back to font_size if unset. Default: `12`. | | `footer_image_size` | body | number | no | Default: `0.1`. | | `header_image_size` | body | number | no | Default: `0.1`. | | `output` | query | string | no | Default: `test-sample`. | #### Quickstart Stamp a PDF from a file upload and return the generated file URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/stamp-header-footer-on-pdf/file/url?output=url" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/input.pdf" \ -F "header_text=Confidential" \ -F "footer_text=Page 1" ``` #### What you'll get back Returns a JSON object with a `url` string field containing the generated file URL. ```json { "url": "https://example.com/stamped.pdf" } ``` ### Stamp header/footer onto a PDF fetched from a URL, stream result back `POST https://api.eu.apyhub.com/apyhub/stamp-header-footer-on-pdf/url/download` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `footer` | body | string | no | | | `header` | body | string | no | | | `file_url` | body | string (uri) | yes | URL of the source PDF. Required. | | `font_size` | body | number | no | | | `footer_text` | body | string | no | | | `header_text` | body | string | no | | | `font_opacity` | body | number | no | | | `footer_opacity` | body | number | no | Default: `1`. | | `header_opacity` | body | number | no | Default: `1`. | | `footer_alignment` | body | string | no | One of: left, right, center. Default: `center`. | | `footer_font_size` | body | number | no | Default: `12`. | | `footer_image_url` | body | string (uri) | no | URL of a PNG image. Required if footer_text not given. | | `header_alignment` | body | string | no | One of: left, right, center. Default: `center`. | | `header_font_size` | body | number | no | Default: `12`. | | `header_image_url` | body | string (uri) | no | URL of a PNG image. Required if header_text not given. | | `footer_image_size` | body | number | no | Default: `0.1`. | | `header_image_size` | body | number | no | Default: `0.1`. | #### Quickstart Generate a PDF from a source file URL with a header and footer in one request. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/stamp-header-footer-on-pdf/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "file_url": "https://example.com/sample.pdf", "header_text": "Confidential", "footer_text": "Page footer" }' ``` #### What you'll get back Returns the generated PDF as a binary file response. ## About ## What it does PDF Header Footer Stamping adds a header and footer to a PDF, either from a file URL or an uploaded PDF, and returns the stamped document as a binary file or a signed URL. Send a source PDF as a URL or a binary upload, then provide header and footer content as text or PNG images. For text, you can set shared font size and opacity, or control header and footer settings separately with alignment, font size, and opacity. For image-based stamping, you can set image size for each slot. The API also supports alias fields like `header_text` and `footer_text`, and when both text and image are provided for the same slot, text takes priority. Use this when you need to add document labels, page context, or branded marks to reports, statements, generated PDFs, or archived files before sharing them internally or with customers. Choose the URL-based endpoints when your workflow stores files remotely, or the download endpoints when you want the stamped PDF streamed back immediately. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/stamp-header-footer-on-pdf * * * --- title: Country Information API slug: detailed-info-for-a-single-country url: https://apyhub.com/apyhub/service/detailed-info-for-a-single-country provider: ApyHub categories: [Standard Data] tags: [country-data, country-info, iso-country-codes, geography, reference-data] auth: api_key version: 1.0 service_type: sync endpoints: 1 atoms: 5 alias: data-info-country --- # Country Information API Look up any country by its two-letter code and get its name, currency, calling codes, and full list of states or regions with ISO 3166-2 codes. Free tier. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/apyhub/detailed-info-for-a-single-country` | What it does Returns detailed information for a single country identified by its country code passe… | 5 | ## Endpoint reference ### Detailed info for a single country `GET https://api.eu.apyhub.com/apyhub/detailed-info-for-a-single-country` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `country` | query | string | yes | Example: `DE`. | #### Quickstart Fetch detailed information for a single country by passing its ISO 3166-1 alpha-2 code as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/detailed-info-for-a-single-country?country=DE" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object field containing country details. The `data` object may include fields like `key`, `cca3`, `emoji`, `value`, `currency`, `subdivision`, and `calling_code`. ```json { "data": { "key": "DE", "cca3": "DEU", "emoji": "🇩🇪", "value": "Germany" } } ``` ## About ## What it does The Country Information API returns everything about one country in a single request. Send its two-letter ISO code, such as `DE` or `IN`, and get back the country name, three-letter code, flag emoji, currency (code, name, and symbol), international calling codes, and a list of its states, provinces, or regions with their ISO 3166-2 codes. Use it to show a state or region dropdown once a user picks their country, fill in currency and dialing prefix automatically in checkout and sign-up forms, or turn a stored country code into a readable name and details. To get all countries at once, use the [Country List API](https://apyhub.com/apyhub/service/list-all-countries). To validate and format phone numbers with the calling code, use the [Phone Number Formatter API](https://apyhub.com/dosvak/service/phone-number-format). You can start on ApyHub's free tier with no card required. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/detailed-info-for-a-single-country * * * --- title: Convert Presentations to PDF API slug: convert-presentation-to-pdf url: https://apyhub.com/apyhub/service/convert-presentation-to-pdf provider: ApyHub categories: [File Conversion] tags: [presentation-conversion, pdf-conversion, document-conversion, pptx, odp, file-conversion] auth: api_key version: 1.1.0 service_type: sync endpoints: 6 atoms: 100 alias: converter-presentation-pdf --- # Convert Presentations to PDF API Convert .ppt, .pptx, or .odp files to PDF from uploads, base64, or URLs. Returns a binary PDF or a signed link for review and sharing. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-presentation-to-pdf/base64/download` | What it does Converts a base64-encoded presentation file into a PDF for download. You send the pres… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-presentation-to-pdf/base64/link` | What it does Converts a base64-encoded presentation file into a PDF and returns a signed link to th… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-presentation-to-pdf/file/download` | What it does Converts an uploaded presentation file into a PDF and returns the resulting PDF as a b… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-presentation-to-pdf/file/link` | What it does Converts an uploaded presentation file into a PDF and returns a signed link to the gen… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-presentation-to-pdf/url/download` | What it does Converts a remote presentation file from the URL you provide into a PDF and returns th… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-presentation-to-pdf/url/link` | What it does Converts a remote presentation file at a URL into a PDF and returns a signed link to t… | 100 | ## Endpoint reference ### Convert base64-encoded presentation to PDF download `POST https://api.eu.apyhub.com/apyhub/convert-presentation-to-pdf/base64/download` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `base64` | body | string | yes | Base64-encoded presentation file bytes (.ppt, .pptx, or .odp). Mandatory. | | `landscape` | query | boolean | no | Default: `true`. | #### Quickstart Convert a Base64-encoded presentation into a PDF download. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-presentation-to-pdf/base64/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"base64":"UEsDBAoAAAAAA..."}' ``` #### What you'll get back Returns a binary file response containing the generated PDF. ### Convert base64-encoded presentation to PDF signed link `POST https://api.eu.apyhub.com/apyhub/convert-presentation-to-pdf/base64/link` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `base64` | body | string | yes | Base64-encoded presentation file bytes (.ppt, .pptx, or .odp). Mandatory. | | `landscape` | query | boolean | no | Default: `true`. | #### Quickstart Send a base64-encoded presentation file and get back a PDF URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-presentation-to-pdf/base64/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"base64":"UEsDBBQAAAAIA..."}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the PDF URI. ```json { "data": "https://example.com/output.pdf" } ``` ### Convert presentation upload to PDF download `POST https://api.eu.apyhub.com/apyhub/convert-presentation-to-pdf/file/download` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Presentation file (.ppt, .pptx, or .odp). Mandatory. | | `output` | query | string | no | Example: `output.pdf`. | | `landscape` | query | boolean | no | Default: `true`. | #### Quickstart Upload a presentation file to convert it to PDF. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-presentation-to-pdf/file/download" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/presentation.pptx" ``` #### What you'll get back Returns a binary file response containing the generated PDF. ```binary ``` ### Convert presentation upload to PDF signed link `POST https://api.eu.apyhub.com/apyhub/convert-presentation-to-pdf/file/link` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Presentation file (.ppt, .pptx, or .odp). Mandatory. | | `landscape` | query | boolean | no | Default: `true`. | #### Quickstart Upload a presentation file to convert it to PDF. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-presentation-to-pdf/file/link" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/presentation.pptx" ``` #### What you'll get back Returns a JSON object with a `data` string field containing the PDF file URI. ```json { "data": "https://example.com/converted-file.pdf" } ``` ### Convert remote presentation URL to PDF download `POST https://api.eu.apyhub.com/apyhub/convert-presentation-to-pdf/url/download` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.pptx`. | | `landscape` | query | boolean | no | Default: `true`. | #### Quickstart Convert a presentation from a URL to PDF by sending the source file URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-presentation-to-pdf/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.pptx"}' ``` #### What you'll get back Returns a binary file response containing the converted PDF. ### Convert remote presentation URL to PDF signed link `POST https://api.eu.apyhub.com/apyhub/convert-presentation-to-pdf/url/link` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.pptx`. | | `landscape` | query | boolean | no | Default: `true`. | #### Quickstart Convert a presentation from a public URL to a PDF. Replace the sample URL with your own presentation link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-presentation-to-pdf/url/link?landscape=true" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.pptx" }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the PDF file URL. ```json { "data": "https://..." } ``` ## About ## What it does Presentation to PDF converts PowerPoint and OpenDocument presentation files into PDF output. Send a `.ppt`, `.pptx`, or `.odp` file, or pass a base64-encoded presentation or remote presentation URL, and get back either a PDF download or a signed PDF link. Use Presentation to PDF when you need a presentation rendered for sharing, archiving, review, or downstream document workflows. The service supports both file uploads and URL/base64 inputs, so you can convert content from a browser form, a storage bucket, or an upstream API without changing your pipeline. Each conversion accepts an optional `landscape` boolean, which defaults to `true`, to control the output orientation. For file uploads, you can also set an `output` query value when requesting a download. The response is either binary PDF data or an object containing a `data` URI, depending on the endpoint you call. If you need to standardize slide decks before sending them to customers, storing them in a document system, or feeding them into a review process, Presentation to PDF gives you a simple way to turn presentation formats into PDFs. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-presentation-to-pdf * * * --- title: Language Detection API slug: detect-language url: https://apyhub.com/apyhub/service/detect-language provider: ApyHub categories: [Artificial Intelligence, Standard Data] tags: [language-detection, text-analysis, localization, nlp, classification] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 50 alias: language-detector --- # Language Detection API Automatically detect the language of any text. Get the language name, ISO 639-1 and 639-3 codes, script and a confidence score as JSON. Try it free. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/detect-language` | What it does Detects the language of the text you send in the request body. It returns a JSON objec… | 50 | ## Endpoint reference ### Detect language from text `POST https://api.eu.apyhub.com/apyhub/detect-language` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | yes | Text sample for language detection (minimum 50 characters). Example: `This word checker is free and easy to use, and you can choose which language to…`. | #### Quickstart Detect the language of a text sample by sending the text in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/detect-language" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"This word checker is free and easy to use, and you can choose which language to base this word checker on for better results in your application."}' ``` #### What you'll get back Returns a JSON object with a `data` object containing `language`, `code`, `iso_code`, `script`, and `confidence`. ```json { "data": { "language": "English", "code": "eng", "iso_code": "en", "script": "Latin", "confidence": 0.9821 } } ``` ## About ## What it does The Language Detection API automatically identifies the language of a piece of text. Send any text of at least 50 characters and get back the language name, its ISO codes, its writing script and how confident the detection is, so you know what language you are dealing with before you translate, route or moderate it. It is one POST endpoint with a single `text` field. The response comes back in a `data` object with five fields: `language` with the name, such as `English`, `iso_code` with the two-letter ISO 639-1 code, such as `en`, `code` with the three-letter ISO 639-3 code, such as `eng`, `script` with the writing system, such as `Latin`, and `confidence` as a score between 0 and 1. Use the ISO codes to pass the result straight into translation, search or localization tools, and use the confidence score to send uncertain results for review instead of acting on them. The 50-character minimum is there for accuracy: a single word like "gift" means different things in English and German, while a full sentence gives the detector enough context to be sure. Common uses include routing support tickets to the right team, choosing the translation pipeline for incoming text, tagging user reviews and posts by language, applying language-specific search and moderation rules, and checking that content is in the language it claims to be. To see every possible language with its probability instead of one answer, use the [Detect Text Language Probabilities API](https://apyhub.com/dosvak/service/detect-text-language). To detect the language spoken in a video, use the [AI Video Language Detection API](https://apyhub.com/apyhub/service/detect-language-video). Once you know the language, translate the text with the [Translate Text API](https://apyhub.com/sharpapi/service/translate-text) or screen it for offensive words with the [CheckText Profanity API](https://apyhub.com/dosvak/service/profanity-check). You can try it right here in the playground. Start for free with 5 API calls a day, no card required, and find out what language your own text is in before you commit. The API is also available through [ApyHub MCP](https://apyhub.com/mcp), so AI agents can check the language of incoming text directly before deciding how to handle it. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/detect-language * * * --- title: Validate Aadhaar API slug: validate-aadhaar-number url: https://apyhub.com/apyhub/service/validate-aadhaar-number provider: ApyHub categories: [Data Validation, HR] tags: [aadhaar, identity-validation, india, kyc, data-validation] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 5 alias: aadhar-validator --- # Validate Aadhaar API Aadhaar validation API that checks a 12-digit Aadhaar number and returns true or false. Filter bad input in KYC forms before a paid verification call. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/validate-aadhaar-number` | What it does Validates an Aadhaar number sent in the request body. The response returns a JSON obje… | 5 | ## Endpoint reference ### Validate an Aadhaar number `POST https://api.eu.apyhub.com/apyhub/validate-aadhaar-number` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `aadhaar` | body | string | yes | 12-digit Aadhaar number (numeric digits only). Example: `568095088801`. | #### Quickstart Validate a 12-digit Aadhaar number by sending it in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/validate-aadhaar-number" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"aadhaar":"568095088801"}' ``` #### What you'll get back Returns a JSON object with a `data` boolean field — `true` when the Aadhaar number is valid, `false` otherwise. ```json { "data": true } ``` ## About ## What it does The Aadhaar validation API checks whether a 12-digit Aadhaar number is valid. Send the number as an `aadhaar` string in the request body, digits only with no spaces or dashes, and get back a boolean `data` field: `true` for a valid number, `false` otherwise. Use it as the first check in an Indian KYC or onboarding flow. It catches typos and malformed input at the form, so the number that reaches your Aadhaar verification provider is one worth sending. That matters when each OTP or eKYC verification call is billed, and when failed attempts add friction for the user. Typical uses for the Aadhaar validation API include customer onboarding for fintech and lending apps, employee records in HR and payroll systems, seller and partner registration on commerce platforms, and bulk cleanup of Aadhaar numbers already stored in a database. Support teams and admin dashboards can use the same call to check a number before editing a record. This API validates the number itself. It does not connect to UIDAI or confirm that the number belongs to the person submitting it, so pair it with an authentication provider when you need identity proof. Indian onboarding forms usually collect more than one identifier. Validate the address with the [Indian Pincode Validation API](https://apyhub.com/apyhub/service/validate-indian-postcode), bank details with the [IFSC Code Validation API](https://apyhub.com/apyhub/service/validate-ifsc-bank-code), and the mobile number with the [Phone Number Validation API](https://apyhub.com/creightonnick0/service/validate-phone-number). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/validate-aadhaar-number * * * --- title: Convert HTML Content to PDF API slug: convert-html-content-to-pdf url: https://apyhub.com/apyhub/service/convert-html-content-to-pdf provider: ApyHub categories: [File Conversion, Smart Generation] tags: [html-to-pdf, pdf-generation, document-conversion, pdf-rendering, html-rendering] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 50 alias: generate-html-pdf --- # Convert HTML Content to PDF API Convert an HTML content string into a PDF download or signed link. Built for invoices, receipts, reports, and other HTML-based documents. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-html-content-to-pdf/download` | What it does Converts the provided HTML content string into a PDF and returns the generated file as… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-html-content-to-pdf/link` | What it does Renders the provided HTML content string into a PDF and returns a signed link to the g… | 50 | ## Endpoint reference ### Render HTML content string to PDF download `POST https://api.eu.apyhub.com/apyhub/convert-html-content-to-pdf/download` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Example: `

Hello

`. | | `output` | query | string | no | Example: `output.pdf`. | | `landscape` | query | boolean | no | Default: `false`. | #### Quickstart Convert simple HTML into a PDF by sending the HTML content and downloading the generated file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-html-content-to-pdf/download?output=output.pdf" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"

Sample Report

This is a test PDF generated from HTML content.

"}' ``` #### What you'll get back Returns a binary file response (`string` with `format: binary`) containing the generated PDF. ### Render HTML content string to PDF signed link `POST https://api.eu.apyhub.com/apyhub/convert-html-content-to-pdf/link` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Example: `

Hello

`. | | `landscape` | query | boolean | no | Default: `false`. | #### Quickstart Send the HTML content you want converted to PDF in the JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-html-content-to-pdf/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"

Sample Report

This is a test PDF generated from HTML content.

"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI to the generated PDF. ```json { "data": "https://example.com/generated.pdf" } ``` ## About ## What it does HTML to PDF turns an HTML content string into a PDF, either as a direct download or as a signed link. Send the HTML in `content`, and choose whether you want the result returned as a binary file from `/download` or as a URI from `/link`. Use `landscape` when the page should render horizontally. The download endpoint also accepts an `output` query parameter so you can name the file returned by the service. The link endpoint is useful when you want to hand off the generated PDF through a temporary URL instead of streaming the file immediately. This is a good fit for generating invoices, reports, tickets, receipts, or any other document you already build in HTML. If your system already renders templates in the browser or server-side, you can reuse that markup and convert it into a PDF without changing your document layout. HTML to PDF keeps the interface simple: one required body field and a small set of rendering options. That makes it easy to add PDF export to an existing workflow, batch job, or customer-facing download flow. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-html-content-to-pdf * * * --- title: "Video to GIF API: Convert Video Clips to Animated GIFs" slug: generate-gif url: https://apyhub.com/apyhub/service/generate-gif provider: ApyHub categories: [File Conversion, File Manipulation] tags: [gif-conversion, video-to-gif, video-processing, file-conversion, file-manipulation] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 550 alias: gif-from-video --- # Video to GIF API: Convert Video Clips to Animated GIFs Turn MP4, MOV, WebM and other videos into animated GIFs from a file or URL. Pick the clip, size and speed, and get the GIF back in the same request. Try it free. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/generate-gif/multi-part/download` | What it does Generates a GIF from an uploaded video file and returns the result as a streamed binar… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/generate-gif/multi-part/link` | What it does Creates a GIF from an uploaded video file and returns a time-limited signed URL to dow… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/generate-gif/url/download` | What it does Generates a GIF from a remotely hosted video file and returns it as a streamed binary… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/generate-gif/url/link` | What it does Generates a GIF from a publicly accessible remote video URL and returns a signed downl… | 550 | ## Endpoint reference ### Generate GIF from uploaded video and stream download `POST https://api.eu.apyhub.com/apyhub/generate-gif/multi-part/download` · 550 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | Output dimensions WxH. Omit to keep original size. Example: `320x240`. | | `speed` | body | integer | no | Playback speed. 0 = normal; positive = faster (1/n PTS); negative = slower (abs(n) PTS). Default: `0`. | | `video` | body | string (binary) | yes | Video file (.mp4 .mkv .avi .mov .flv .3gp .webm). | | `duration` | body | integer | no | Clip length in seconds (capped at 20). Default: `2`. | | `start_time` | body | integer | no | Seek offset in seconds. Default: `0`. | #### Quickstart Upload a video to generate a GIF from it. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-gif/multi-part/download" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) — the generated GIF content. ### Generate GIF from uploaded video and return signed link `POST https://api.eu.apyhub.com/apyhub/generate-gif/multi-part/link` · 550 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | Output dimensions WxH. Omit to keep original size. Example: `320x240`. | | `speed` | body | integer | no | Playback speed. 0 = normal; positive = faster (1/n PTS); negative = slower (abs(n) PTS). Default: `0`. | | `video` | body | string (binary) | yes | Video file (.mp4 .mkv .avi .mov .flv .3gp .webm). | | `duration` | body | integer | no | Clip length in seconds (capped at 20). Default: `2`. | | `start_time` | body | integer | no | Seek offset in seconds. Default: `0`. | #### Quickstart Convert a video file into a GIF by uploading the video and providing the minimum required multipart fields. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-gif/multi-part/link" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a time-limited signed download URL. ```json { "data": "https://storage.example.com/gif/output.gif?sig=abc" } ``` ### Generate GIF from remote video URL and stream download `POST https://api.eu.apyhub.com/apyhub/generate-gif/url/download` · 550 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | Output dimensions WxH. Omit to keep original size. Example: `320x240`. | | `speed` | body | string | no | Playback speed. 0 = normal; positive = faster; negative = slower. Default: `0`. | | `duration` | body | string | no | Clip length in seconds (capped at 20). Default: `2`. | | `video_url` | body | string (uri) | yes | Publicly accessible URL of the source video. Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `start_time` | body | string | no | Seek offset in seconds. Default: `0`. | #### Quickstart Convert a public MP4 URL into a GIF using the source video URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-gif/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "video_url": "https://assets.apyhub.com/samples/sample.mp4" }' ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the generated GIF. ### Generate GIF from remote video URL and return signed link `POST https://api.eu.apyhub.com/apyhub/generate-gif/url/link` · 550 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | Output dimensions WxH. Omit to keep original size. Example: `320x240`. | | `speed` | body | string | no | Playback speed. 0 = normal; positive = faster; negative = slower. Default: `0`. | | `duration` | body | string | no | Clip length in seconds (capped at 20). Default: `2`. | | `video_url` | body | string (uri) | yes | Publicly accessible URL of the source video. Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `start_time` | body | string | no | Seek offset in seconds. Default: `0`. | #### Quickstart Convert a public video URL into a GIF with the minimum required input. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-gif/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"video_url":"https://assets.apyhub.com/samples/sample.mp4"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a time-limited signed URL for the generated GIF. ```json { "data": "https://storage.example.com/gif/output.gif?sig=abc" } ``` ## About ## What it does The Video to GIF API converts MP4, MOV, WebM and other video files into animated GIFs in a single request. Upload a video or send the URL of one hosted elsewhere, and get the GIF back straight away, either as a file download or as a signed link. It accepts `.mp4`, `.mov`, `.webm`, `.mkv`, `.avi`, `.flv` and `.3gp` files up to 100 MB. There are four endpoints, so you can pick the input and output that fit your code: upload a file or send a `video_url`, and choose `/download` to get the GIF file in the response or `/link` to get a time-limited signed URL to it. You control which part of the video becomes the GIF. Set `start_time` to the second where the clip should begin and `duration` to its length, from the default of 2 seconds up to 20. Use `size` to resize the output, for example `480x270`, or leave it out to keep the original size. Use `speed` to slow the clip down with values down to `-10` or speed it up with values up to `10`. Common uses include product demo loops for landing pages, social media previews, animated snippets for documentation and emails, and short reactions cut from longer videos. If you are converting many videos or running inside a background worker, use the [Generate GIF from Video Job API](https://apyhub.com/apyhub/service/generate-gif-from-video), which returns a job ID straight away and lets you fetch the GIF when it is ready. For a still image from a video instead of an animation, use the [Video Thumbnail API](https://apyhub.com/apyhub/service/generate-video-thumbnail). You can try it right here in the playground. Start for free with 5 API calls a day, no card required, and convert your own video before you commit. The API is also available through [ApyHub MCP](https://apyhub.com/mcp), so AI agents can turn a video into a GIF directly as part of a larger workflow. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/generate-gif * * * --- title: Remove Background from Images API slug: remove-background-from-images url: https://apyhub.com/apyhub/service/remove-background-from-images provider: ApyHub categories: [File Manipulation, Image Processing] tags: [background-removal, image-cutout, image-processing, transparent-png, image-url] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 1000 alias: image-processor-remove-background --- # Remove Background from Images API Remove image backgrounds from uploaded files or image URLs. Returns a PNG download or a signed URI for clean, transparent cutouts. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/remove-background-from-images/multi-part/download` | What it does Removes the background from the uploaded raster image and returns the processed result… | 1000 | | POST | `https://api.eu.apyhub.com/apyhub/remove-background-from-images/multi-part/link` | What it does Removes the background from an uploaded image sent as multipart form data and returns… | 1000 | | POST | `https://api.eu.apyhub.com/apyhub/remove-background-from-images/url/download` | What it does Fetches an image from the URL you provide, removes its background, and returns the res… | 1000 | | POST | `https://api.eu.apyhub.com/apyhub/remove-background-from-images/url/link` | What it does Fetches an image from the imageurl provided in the request body, removes its backgroun… | 1000 | ## Endpoint reference ### Remove image background `POST https://api.eu.apyhub.com/apyhub/remove-background-from-images/multi-part/download` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | yes | Input raster image. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Upload an image to remove its background and download the result. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/remove-background-from-images/multi-part/download" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.jpg" ``` #### What you'll get back Returns a binary file response containing the processed image in PNG format. ### Remove image background `POST https://api.eu.apyhub.com/apyhub/remove-background-from-images/multi-part/link` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | yes | | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Upload an image URL to remove its background and return the result link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/remove-background-from-images/multi-part/link" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.jpg" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI to the processed image. ```json { "data": "https://example.com/processed-image.png" } ``` ### Remove image background `POST https://api.eu.apyhub.com/apyhub/remove-background-from-images/url/download` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image_url` | body | string (uri) | yes | Source image URL. Example: `https://assets.apyhub.com/samples/background-sample.jpeg`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Send the source image URL to remove its background and download the result. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/remove-background-from-images/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"image_url":"https://assets.apyhub.com/samples/background-sample.jpeg"}' ``` #### What you'll get back Returns a binary file response (`string` with `format: binary`) containing the processed image. ### Remove image background `POST https://api.eu.apyhub.com/apyhub/remove-background-from-images/url/link` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image_url` | body | string (uri) | yes | Source image URL. Example: `https://assets.apyhub.com/samples/background-sample.jpeg`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Remove the background from an image by sending its source URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/remove-background-from-images/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"image_url":"https://assets.apyhub.com/samples/background-sample.jpeg"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the output image URI. ```json { "data": "https://..." } ``` ## About ## What it does Background Remover removes the background from an image and returns either a PNG download or a signed file URL. Send a raster image directly as multipart form data, or provide an `image_url` to fetch the source image first. Use the multipart endpoints when you already have the file in hand, and the URL endpoints when the image lives elsewhere. In both cases, you can choose the output mode with the `output` query parameter. The download variants return binary PNG data, while the link variants return a response object containing `data` as a URI. This is a good fit for product photos, profile pictures, catalog imagery, and any workflow that needs a clean cutout without building background-removal logic yourself. You can place the result on a transparent canvas, layer it into a design, or pass the signed URL to downstream storage and delivery steps. Background Remover keeps the API surface small: one required input image, one optional output selector, and a predictable response shape. That makes it straightforward to wire into upload flows, batch image pipelines, and internal tools that need consistent background-free assets. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/remove-background-from-images * * * --- title: "Document Summarizer API: Summarize PDF and Word Files" slug: summarize-documents url: https://apyhub.com/apyhub/service/summarize-documents provider: ApyHub categories: [Artificial Intelligence, Smart Generation] tags: [summarization, document-summary, pdf-summary, tldr] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 2600 alias: ai-summarize-documents --- # Document Summarizer API: Summarize PDF and Word Files Document summarizer API: send a PDF, DOCX, DOC, or ODT file or URL and get a plain-text summary in short, medium, or long length. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/summarize-documents/file` | What it does Uploads a document and returns a generated text summary for that file. The request bod… | 2600 | | POST | `https://api.eu.apyhub.com/apyhub/summarize-documents/url` | What it does Summarizes a document fetched from a direct URL and returns the generated summary in t… | 2600 | ## Endpoint reference ### Summarize an uploaded document `POST https://api.eu.apyhub.com/apyhub/summarize-documents/file` · 2600 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | The document to summarize (.pdf, .docx, .doc, or .odt). | | `summary_length` | body | string | no | Target length — short (~20 words), medium (~60 words), long (~100 words). One of: short, medium, long. Default: `short`. | | `output_language` | body | string | no | BCP-47 language code for the output. Defaults to English. Example: `en`. | #### Quickstart Upload a document to generate a summary. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/summarize-documents/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.pdf" \ -F "summary_length=short" ``` #### What you'll get back Returns a JSON object with a `data` object. The `data` object includes a `summary` string containing the generated document summary. ```json { "data": { "summary": "..." } } ``` ### Summarize a document from a URL `POST https://api.eu.apyhub.com/apyhub/summarize-documents/url` · 2600 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string | yes | Direct URL to a PDF, DOCX, DOC, or ODT file. Example: `https://example.com/report.pdf`. | | `summary_length` | body | string | no | Target length — short (~20 words), medium (~60 words), long (~100 words). One of: short, medium, long. Default: `short`. | | `output_language` | body | string | no | BCP-47 language code for the output. Defaults to English. Example: `en`. | #### Quickstart Summarize a document from a direct file URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/summarize-documents/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://example.com/report.pdf", "summary_length": "short" }' ``` #### What you'll get back Returns a JSON object with a `data` object. The `data` object contains a `summary` string with the generated document summary. ```json { "data": { "summary": "..." } } ``` ## About ## What it does The **Document Summarizer API** turns a PDF, DOCX, DOC, or ODT file into a concise plain-text summary. Upload the document as `file` or send a direct `url`, and get the summary back as JSON in `data.summary`. Set `summary_length` to `short` (about 20 words, the default), `medium` (about 60 words), or `long` (about 100 words). Add an `output_language` BCP-47 code such as `de` or `es` to get the summary in another language; English is the default. Uploads are capped at 100 MB per request. Use the document summarizer API to summarize PDF reports, contracts, and research papers for triage queues, to generate preview text for document cards in a file library or search results, or to give reviewers the gist before they open a long file. As a PDF summarizer inside an ingestion pipeline, it gives each incoming document a short description that helps route it to the right team. AI agents can call it through ApyHub MCP to summarize files they receive. For plain text and web pages, use the [AI Summarizer API](https://apyhub.com/apyhub/service/ai-summarize-api). When you need the full document text instead of a summary, the [Extract Text from PDF API](https://apyhub.com/apyhub/service/extract-text-from-pdf) and the [Extract Text from Word API](https://apyhub.com/apyhub/service/extract-text-from-word) return it as JSON. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/summarize-documents * * * --- title: OCR Document Data Extraction API slug: extract-read-data url: https://apyhub.com/apyhub/service/extract-read-data provider: ApyHub categories: [Artificial Intelligence, Data Extraction] tags: [document-extraction, ocr, pdf-extraction, layout-analysis, azure-document-intelligence] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 500 alias: ai-document-extract-read --- # OCR Document Data Extraction API Extract reading data from a file upload or URL. Returns ApyHub or Azure parsing output for document workflows, search, and indexing. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/extract-read-data/file` | What it does Uploads a file and returns extracted read-data parsing output. You can choose whether… | 500 | | POST | `https://api.eu.apyhub.com/apyhub/extract-read-data/url` | What it does Extracts read data from a document at the provided URL and returns parsing output in a… | 500 | ## Endpoint reference ### Extract read data `POST https://api.eu.apyhub.com/apyhub/extract-read-data/file` · 500 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `azure_key` | body | string | no | Example: `azure-key-val`. | | `azure_region` | body | string | no | Example: `eastus`. | | `azure_endpoint` | body | string | no | Example: `https://endpoint-val/`. | | `azure_account_id` | body | string | no | Example: `account-id`. | | `requested_service` | body | string | no | One of: azure, apyhub. Default: `apyhub`. Example: `apyhub`. | | `azure_access_token` | body | string | no | Example: `token-val`. | #### Quickstart Upload a file to extract read data. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-read-data/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file" \ -F "requested_service=apyhub" ``` #### What you'll get back Returns a JSON object with a `data` object. The `data` object may contain either an `azure` object with the raw Azure Document Intelligence parsing output, or an `apyhub` object with the structured ApyHub Read Layout Transcription parsing output. ```json { "data": { "azure": {}, "apyhub": {} } } ``` ### Extract read data (URL input) `POST https://api.eu.apyhub.com/apyhub/extract-read-data/url` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://example.com/read.pdf`. | | `azure.key` | body | string | no | Azure subscription key. Example: `your_azure_speech_or_vision_key`. | | `azure.region` | body | string | no | Azure service region. Example: `westus2`. | | `azure.endpoint` | body | string | no | Azure endpoint URL. Example: `https://westus2.api.cognitive.microsoft.com/`. | | `azure.account_id` | body | string | no | Azure account ID. Example: `account-id-1234`. | | `azure.access_token` | body | string | no | OAuth access token for Azure service. Example: `access_token_value`. | | `requested_service` | body | string | no | One of: azure, apyhub. Default: `apyhub`. Example: `apyhub`. | #### Quickstart Send a PDF URL for parsing and let ApyHub return extracted read data. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-read-data/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.docx","requested_service":"apyhub"}' ``` #### What you'll get back Returns a JSON object with a `data` object field. The `data` object may contain an `apyhub` object with structured ApyHub Read Layout Transcription parsing output, and/or an `azure` object with raw Azure Document Intelligence parsing output. ```json { "data": { "apyhub": {}, "azure": {} } } ``` ## About ## What it does Read Data Extractor pulls text-layout parsing results from a PDF or other readable file, or from a file URL. Send a binary file to `POST /file` or a `url` to `POST /url`, and choose whether you want the `apyhub` result or the `azure` result with `requested_service`. The service accepts optional Azure credentials when you want to run against Azure Document Intelligence. For file uploads, you can pass `azure_key`, `azure_region`, `azure_endpoint`, `azure_account_id`, and `azure_access_token`. For URL-based extraction, the `azure` object can include `key`, `region`, `endpoint`, `account_id`, and `access_token`. The response is returned under `data`, with separate `azure` and `apyhub` objects. `azure` contains the raw Azure Document Intelligence parsing output, while `apyhub` contains the structured ApyHub Read Layout Transcription parsing output. That makes it useful when you need to compare provider output, route documents through an internal extraction pipeline, or feed parsed document content into downstream review and indexing workflows. Use Read Data Extractor when you need programmatic access to extracted document reading data without building your own ingestion and parsing layer. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/extract-read-data * * * --- title: Currencies Dictionary API slug: list-all-currencies url: https://apyhub.com/apyhub/service/list-all-currencies provider: ApyHub categories: [Finance, Standard Data] tags: [currencies, currency-codes, iso-4217, reference-data, finance] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 5 alias: data-lists-currency --- # Currencies Dictionary API Get every world currency as JSON with its ISO 4217 code, English name and symbol. Ready for currency pickers, checkout and validation. Try it free. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/apyhub/list-all-currencies` | What it does Returns a JSON object containing a data array of currency objects. Each item in the ar… | 5 | ## Endpoint reference ### List all currencies `GET https://api.eu.apyhub.com/apyhub/list-all-currencies` · 5 atoms · accepts `application/json` #### Quickstart Fetch the list of currencies. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/list-all-currencies" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` array. Each item in the array is an object with currency details such as `key`, `emoji`, `value`, and `symbol`. ```json { "data": [ { "key": "EUR", "emoji": "💶", "value": "Euro", "symbol": "€" } ] } ``` ## About ## What it does The Currencies Dictionary API gives you a complete list of world currencies as JSON. One request returns every currency with its ISO 4217 code, English name, symbol and emoji, so you can build currency pickers and validate currency codes without maintaining your own list. It is a single GET request with no parameters. The response is a `data` array with one object per currency: `key` holds the three-letter ISO 4217 code, `value` the English name, `symbol` the currency sign and `emoji` a matching emoji. For the euro that is `EUR`, `Euro`, `€` and `💶`. Common uses include filling a currency dropdown in checkout, pricing and invoicing forms, validating that a currency code sent to your API is real before you store it, showing `€ 49` or `Euro` instead of a bare `EUR` in dashboards and exported reports, and keeping currency labels consistent across web, mobile and back-office tools. Because it is a small reference list, you can fetch it once and cache it in your app. To convert amounts between currencies, use the [Currency Converter API](https://apyhub.com/apyhub/service/convert-currency-pair-for-date), which supports live and historical exchange rates. To show which countries use a currency, pair it with the [Countries Dictionary API](https://apyhub.com/apyhub/service/list-all-countries) or the [Country Information API](https://apyhub.com/apyhub/service/detailed-info-for-a-single-country), and for language names and codes, use the [Language Dictionary API](https://apyhub.com/apyhub/service/language-list). You can try it right here in the playground. Start for free with 5 API calls a day, no card required, and see the full list before you commit. The API is also available through [ApyHub MCP](https://apyhub.com/mcp), so AI agents can look up currency codes and symbols directly instead of relying on memory. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/list-all-currencies * * * --- title: Generate QR Code API slug: generate-qr-code url: https://apyhub.com/apyhub/service/generate-qr-code provider: ApyHub categories: [Marketing, Smart Generation] tags: [qr-code, barcode-generation, vcard, wifi-sharing, branding, image-generation] auth: api_key version: 1.0 service_type: sync endpoints: 2 atoms: 30 --- # Generate QR Code API Create QR codes from text, vCards, or Wi-Fi details. Download the image or get a pre-signed URL, with logo, colour, and error-correction options. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/generate-qr-code/download` | What it does Generates a QR code and returns it as a downloadable binary file. The request body can… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/generate-qr-code/link` | What it does Generates a QR code and returns a JSON object containing a pre-signed cloud storage UR… | 30 | ## Endpoint reference ### Generate QR code — download file `POST https://api.eu.apyhub.com/apyhub/generate-qr-code/download` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `logo` | body | string (uri) | no | URL of an image to overlay in the centre of the QR code. | | `v_card.name` | body | string | no | Example: `Jane Doe`. | | `v_card.email` | body | string (email) | no | | | `v_card.notes` | body | string | no | | | `v_card.address` | body | string | no | | | `v_card.website` | body | string (uri) | no | | | `v_card.birthday` | body | string | no | Example: `1990-01-15`. | | `v_card.job_title` | body | string | no | | | `v_card.photo_url` | body | string (uri) | no | | | `v_card.organization` | body | string | no | | | `v_card.phone_numbers` | body | array of string | no | Example: `["+441234567890"]`. | | `v_card.social_profiles.twitter` | body | string | no | | | `v_card.social_profiles.linkedIn` | body | string | no | | | `content` | body | string | no | Raw text or URL to encode. Max 2953 characters. Example: `https://apyhub.com`. | | `wifi_info.ssid` | body | string | no | Example: `MyNetwork`. | | `wifi_info.password` | body | string | no | Example: `s3cr3t`. | | `wifi_info.auth_type` | body | string | no | One of: WEP, WPA, WPA2, WPA3, WPA-EAP, WPA2-EAP, WPA3-EAP. Example: `WPA2`. | | `wifi_info.is_hidden` | body | boolean | no | Default: `false`. | | `is_gradient` | body | boolean | no | Must be true when foreground_color is an array. Returns 400 if true but foreground_color is not an array. Default: `false`. | | `recovery_level` | body | string | no | Error correction level. Lower = more content capacity, less damage tolerance. One of: low, medium, high, highest. Default: `highest`. | | `background_color` | body | string | no | Hex background color. Required when foreground_color is set. Example: `ffffff`. | | `foreground_color` | body | any | no | Solid mode: hex string (e.g. "000000"). Gradient mode: array of two hex strings ["startColor", "endColor"]. Must be omitted together with background_color, or both provided. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Create a QR code download from raw text or a URL, and name the output via the required query parameter. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-qr-code/download?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"https://apyhub.com" }' ``` #### What you'll get back Returns binary data (`string` with `format: binary`) — the downloaded QR code file itself. ### Generate QR code — return cloud link `POST https://api.eu.apyhub.com/apyhub/generate-qr-code/link` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `logo` | body | string (uri) | no | URL of an image to overlay in the centre of the QR code. | | `v_card.name` | body | string | no | Example: `Jane Doe`. | | `v_card.email` | body | string (email) | no | | | `v_card.notes` | body | string | no | | | `v_card.address` | body | string | no | | | `v_card.website` | body | string (uri) | no | | | `v_card.birthday` | body | string | no | Example: `1990-01-15`. | | `v_card.job_title` | body | string | no | | | `v_card.photo_url` | body | string (uri) | no | | | `v_card.organization` | body | string | no | | | `v_card.phone_numbers` | body | array of string | no | Example: `["+441234567890"]`. | | `v_card.social_profiles.twitter` | body | string | no | | | `v_card.social_profiles.linkedIn` | body | string | no | | | `content` | body | string | no | Raw text or URL to encode. Max 2953 characters. Example: `https://apyhub.com`. | | `wifi_info.ssid` | body | string | no | Example: `MyNetwork`. | | `wifi_info.password` | body | string | no | Example: `s3cr3t`. | | `wifi_info.auth_type` | body | string | no | One of: WEP, WPA, WPA2, WPA3, WPA-EAP, WPA2-EAP, WPA3-EAP. Example: `WPA2`. | | `wifi_info.is_hidden` | body | boolean | no | Default: `false`. | | `is_gradient` | body | boolean | no | Must be true when foreground_color is an array. Returns 400 if true but foreground_color is not an array. Default: `false`. | | `recovery_level` | body | string | no | Error correction level. Lower = more content capacity, less damage tolerance. One of: low, medium, high, highest. Default: `highest`. | | `background_color` | body | string | no | Hex background color. Required when foreground_color is set. Example: `ffffff`. | | `foreground_color` | body | any | no | Solid mode: hex string (e.g. "000000"). Gradient mode: array of two hex strings ["startColor", "endColor"]. Must be omitted together with background_color, or both provided. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Generate a QR code from plain text by sending the content to encode. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-qr-code/link?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "content": "https://apyhub.com" }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed URL for the generated QR code image. ```json { "data": "https://storage.example.com/output_2025-06-15_abc123.png?sig=..." } ``` ## About ## What it does QR Code Generator creates downloadable QR codes or a cloud-hosted QR image from plain text, a vCard, or Wi‑Fi details. Send one input type per request, and you get back a QR code asset you can place on tickets, packaging, business cards, menus, or onboarding materials. Use `content` for raw text or a URL, `v_card` for contact-sharing QR codes, or `wifi_info` to encode network access details. The vCard payload supports `name` and `phone_numbers` as required fields, plus optional `email`, `notes`, `address`, `website`, `birthday`, `job_title`, `photo_url`, `organization`, and `social_profiles`. Wi‑Fi QR codes accept `ssid` and optional `password`, `auth_type`, and `is_hidden`. You can also brand the QR code with a `logo`, choose `foreground_color` and `background_color`, enable `is_gradient` for two-color foregrounds, and set `recovery_level` to control error correction. The service enforces the payload rules in the schema, including the one-input requirement and the color combinations, so you can validate QR generation before you ship it into a workflow. Choose `/download` when you need the generated file directly, or `/link` when you want a pre-signed cloud URL in the response. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/generate-qr-code * * * --- title: Convert CSV to Excel API slug: convert-csv-to-xlsx url: https://apyhub.com/apyhub/service/convert-csv-to-xlsx provider: ApyHub categories: [File Conversion] tags: [csv-to-excel, csv-to-xlsx, spreadsheet, file-conversion] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 50 alias: converter-csv-excel --- # Convert CSV to Excel API CSV to Excel API: send a CSV file or URL and get back an XLSX workbook as a direct download or a signed link. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-csv-to-xlsx/file/download` | What it does Converts an uploaded CSV file into an XLSX file and streams the resulting spreadsheet… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-csv-to-xlsx/file/link` | What it does Converts an uploaded CSV file into an XLSX file and returns a signed link to the conve… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-csv-to-xlsx/url/download` | What it does Converts a remote CSV file referenced by a URL into an XLSX file and returns the resul… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-csv-to-xlsx/url/link` | What it does Converts a CSV file available at a remote URL into an XLSX file, then returns a signed… | 50 | ## Endpoint reference ### Convert uploaded CSV to XLSX and stream download `POST https://api.eu.apyhub.com/apyhub/convert-csv-to-xlsx/file/download` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | CSV file to convert. | | `output` | query | string | no | Example: `output.xlsx`. | #### Quickstart Upload a CSV file to convert it into an XLSX download. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-csv-to-xlsx/file/download?output=output.xlsx" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.csv" ``` #### What you'll get back Returns a binary file download as the response body. ### Convert uploaded CSV to XLSX and return signed link `POST https://api.eu.apyhub.com/apyhub/convert-csv-to-xlsx/file/link` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | CSV file to convert. | #### Quickstart Upload a CSV file to convert it into an XLSX download link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-csv-to-xlsx/file/link" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.csv" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI for the generated XLSX file. ```json { "data": "https://storage.example.com/convert/output.xlsx?sig=abc" } ``` ### Convert remote CSV URL to XLSX and stream download `POST https://api.eu.apyhub.com/apyhub/convert-csv-to-xlsx/url/download` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.csv`. | #### Quickstart Download an XLSX file from a CSV URL by sending the source file link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-csv-to-xlsx/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.csv"}' ``` #### What you'll get back Returns a binary file response (`string` with `format: binary`) containing the generated XLSX content. ### Convert remote CSV URL to XLSX and return signed link `POST https://api.eu.apyhub.com/apyhub/convert-csv-to-xlsx/url/link` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.csv`. | #### Quickstart Convert a CSV file from a public URL into an XLSX file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-csv-to-xlsx/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.csv"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the generated XLSX file URL. ```json { "data": "https://storage.example.com/convert/output.xlsx?sig=abc" } ``` ## About ## What it does The CSV to Excel API turns a CSV file into an XLSX workbook. Send the file as an upload or point it at a remote `url`, and get the workbook back either as a direct download or as a signed link. Four endpoints cover the combinations. `POST /file/download` and `POST /url/download` stream the `.xlsx` back as binary, which suits a request a user is waiting on. `POST /file/link` and `POST /url/link` return JSON with a signed `data` URI, which suits background jobs and anything that stores the result for later. The file download route also accepts an optional `output` query parameter to set the filename. Teams reach for the CSV to Excel API when tabular data has to leave a system in a form people can open. Common jobs include handing database exports to finance teams, generating reports from CSV logs, and turning a download endpoint's output into a workbook for an internal tool. The conversion writes the CSV rows into the workbook as values, which is what a CSV holds. Excel formatting, formulas and charts are applied downstream by whoever opens the file. It pairs with the [Convert CSV to JSON API](https://apyhub.com/apyhub/service/csv-to-json) when the destination is code rather than a spreadsheet, and with the [Convert Spreadsheets to PDF API](https://apyhub.com/apyhub/service/convert-spreadsheet-to-pdf) when the workbook goes out as a read-only document. To build the CSV from a report in the first place, start with the [Table Extraction API](https://apyhub.com/apyhub/service/extract-table-data). All of them are callable by AI agents through ApyHub MCP. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-csv-to-xlsx * * * --- title: Validate IBAN API slug: validate-iban url: https://apyhub.com/apyhub/service/validate-iban provider: ApyHub categories: [Data Validation, Finance] tags: [bank-account, iban, bank-account-validation, account-number, payment-validation] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 5 alias: finance-validator-iban --- # Validate IBAN API Validate an IBAN and get back the country, BBAN and printable format in one call. Covers every SEPA country. Free tier, no credit card needed. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/validate-iban` | What it does Validates an IBAN submitted in the request body and returns a JSON object under data.… | 5 | ## Endpoint reference ### Validate an IBAN `POST https://api.eu.apyhub.com/apyhub/validate-iban` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `iban` | body | string | yes | The IBAN to validate. Example: `FR7630006000011234567890189`. | #### Quickstart Validate an IBAN by sending it in a simple JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/validate-iban" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"iban":"FR7630006000011234567890189"}' ``` #### What you'll get back Returns a JSON object with a `data` field. `data` can be either an object with IBAN details and a `valid` flag, or a boolean `false` when the IBAN is invalid. ```json { "data": { "bban": "30006000011234567890189", "iban": "FR7630006000011234567890189", "valid": true, "country_code": "FR", "sepa_country": true, "printable_format": "FR76 3000 6000 0112 3456 7890 189" } } ``` ## About ## What it does The IBAN Validation API checks whether an IBAN is real and gives you back its parts. Send the IBAN, get back the country code, the BBAN, whether it belongs to a SEPA country, and a printable format for showing back to the user. Validation runs two checks. The structure has to match the format that country uses, and the check digits have to pass the mod-97 calculation. Together they catch typos, transposed characters and made-up numbers before a payment leaves your system. Use it on payment forms, supplier onboarding, payout setup and back-office cleanup of stored bank details. A failed transfer costs a fee and a support ticket. A rejected form field costs nothing. The `sepa_country` flag tells you which payment rules apply, so you can branch between SEPA and international transfer logic in the same code path. One limitation worth stating plainly: a valid IBAN is a well-formed IBAN. It does not confirm the account is open, or that it belongs to the person who typed it. For that, use the [Advanced IBAN Validation API](https://apyhub.com/quadlem/service/iban-validation) from Quadlem. For SWIFT and BIC codes, use the [Validate SWIFT/BIC API](https://apyhub.com/apyhub/service/validate-swift-bic-code). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/validate-iban * * * --- title: Audio Extractor from Video API slug: extract-audio-from-video url: https://apyhub.com/apyhub/service/extract-audio-from-video provider: ApyHub categories: [Audio Processing, File Conversion, File Manipulation] tags: [video-to-audio, mp4-to-mp3, audio-extraction, audio-conversion] auth: api_key version: 1.0 service_type: sync endpoints: 4 atoms: 550 alias: extract-video-audio --- # Audio Extractor from Video API Extract the audio track from any video in your app. Upload an MP4 or send a URL, and get the full audio or a clip as MP3, WAV, AAC, or FLAC. Free tier. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/extract-audio-from-video/multi-part/download` | What it does Uploads a video file and returns the extracted audio as a binary file download. You ca… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/extract-audio-from-video/multi-part/link` | What it does Extracts audio from an uploaded video and returns a JSON object containing a time-limi… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/extract-audio-from-video/url/download` | What it does Extracts audio from a video provided by URL and returns the resulting audio as a binar… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/extract-audio-from-video/url/link` | What it does Extracts the audio track from a video provided by URL and returns a time-limited signe… | 550 | ## Endpoint reference ### Extract audio from video (upload → download) `POST https://api.eu.apyhub.com/apyhub/extract-audio-from-video/multi-part/download` · 550 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `video` | body | string (binary) | yes | Video file (.mp4 .mkv .avi .mov .flv .3gp .webm) | | `duration` | body | integer | no | Number of seconds to extract. Ignored when full_audio is true. Default: `2`. | | `full_audio` | body | string | no | When true, extract the complete audio track. One of: true, false, 1, 0. Default: `false`. | | `start_time` | body | integer | no | Seek offset in seconds. Default: `0`. | | `output_format` | body | string | no | One of: mp3, wav, aac, ogg, flac, wma, ac3. Default: `mp3`. | #### Quickstart Upload a video file to extract audio from it. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-audio-from-video/multi-part/download" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the extracted audio. ```binary ...audio bytes... ``` ### Extract audio from video (upload → cloud link) `POST https://api.eu.apyhub.com/apyhub/extract-audio-from-video/multi-part/link` · 550 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `video` | body | string (binary) | yes | | | `duration` | body | integer | no | Default: `2`. | | `full_audio` | body | string | no | One of: true, false, 1, 0. Default: `false`. | | `start_time` | body | integer | no | Default: `0`. | | `output_format` | body | string | no | One of: mp3, wav, aac, ogg, flac, wma, ac3. Default: `mp3`. | #### Quickstart Upload a video file to extract audio and return a signed download URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-audio-from-video/multi-part/link" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a time-limited signed URL for download. ```json { "data": "https://..." } ``` ### Extract audio from video (URL → download) `POST https://api.eu.apyhub.com/apyhub/extract-audio-from-video/url/download` · 550 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `duration` | body | string | no | Number of seconds to extract. Ignored when full_audio is true. Default: `2`. | | `video_url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `full_audio` | body | boolean | no | Default: `false`. | | `start_time` | body | string | no | Seek offset in seconds (string). Default: `0`. | | `output_format` | body | string | no | One of: mp3, wav, aac, ogg, flac, wma, ac3. Default: `mp3`. | #### Quickstart Download audio from a video URL using the required `video_url` field. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-audio-from-video/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "video_url": "https://assets.apyhub.com/samples/sample.mp4" }' ``` #### What you'll get back Returns the extracted audio as a binary file response. ### Extract audio from video (URL → cloud link) `POST https://api.eu.apyhub.com/apyhub/extract-audio-from-video/url/link` · 550 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `duration` | body | string | no | Default: `2`. | | `video_url` | body | string (uri) | yes | | | `full_audio` | body | boolean | no | Default: `false`. | | `start_time` | body | string | no | Default: `0`. | | `output_format` | body | string | no | One of: mp3, wav, aac, ogg, flac, wma, ac3. Default: `mp3`. | #### Quickstart Send the video URL you want to extract audio from. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-audio-from-video/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"video_url":"https://example.com/video.mp4"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a time-limited signed download URL. ```json { "data": "https://example.com/download/audio.mp3?signature=..." } ``` ## About ## What it does The Extract Audio from Video API pulls the audio track out of a video. Upload a video (MP4, MKV, AVI, MOV, FLV, 3GP, or WebM, up to 100 MB) or send the URL of a video file, and get the audio back as a file or as a signed download link, in MP3, WAV, AAC, OGG, FLAC, WMA, or AC3. Set `full_audio` to `true` to extract the whole soundtrack. Without it, the API returns a 2-second clip, which you can move and resize with `start_time` and `duration`. Use it to prepare recordings for transcription with the [Speech to Text API](https://apyhub.com/apyhub/service/transcribe-speech-to-text), turn video content into podcasts or audio clips, or process the audio from uploaded videos separately. The URL must point to a video file you have the right to use; links to pages on sites like YouTube aren't supported. For long videos, use the [Extract Audio from Video Job API](https://apyhub.com/apyhub/service/audio-extract-from-video), which processes them in the background. You can start on ApyHub's free tier with no card required. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/extract-audio-from-video * * * --- title: "Image Resize API: Resize Images to Exact Dimensions" slug: resize-image url: https://apyhub.com/apyhub/service/resize-image provider: ApyHub categories: [File Manipulation, Image Processing] tags: [image-resize, resize, image-processing, image-optimization] auth: api_key version: 1.0 service_type: sync endpoints: 4 atoms: 30 alias: image-processor-resize --- # Image Resize API: Resize Images to Exact Dimensions Image resize API: upload an image or send its URL, set width and height in pixels, and get the resized file or a signed link. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/resize-image/multi-part/download` | What it does Resizes an uploaded image using multipart form data and returns the resized file as bi… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/resize-image/multi-part/link` | What it does Resizes an uploaded image and returns a signed URL for the generated result. The reque… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/resize-image/url/download` | What it does Resizes an image fetched from a source URL and returns the resized file as binary data… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/resize-image/url/link` | What it does Resizes an image fetched from a URL or signed URL and returns the resized image as a U… | 30 | ## Endpoint reference ### Resize image (multipart upload, download file) `POST https://api.eu.apyhub.com/apyhub/resize-image/multi-part/download` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | yes | | | `width` | query | integer | yes | | | `height` | query | integer | yes | | | `output` | query | string | no | Example: `my-invite`. | | `preserve_format` | query | boolean | no | | | `auto_orientation` | query | boolean | no | | #### Quickstart Download a resized version of an image by sending the source file and required dimensions as multipart form data. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/resize-image/multi-part/download?width=800&height=600" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.jpg" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the downloaded resized image. ```binary ...binary image data... ``` ### Resize image (multipart upload, signed URL) `POST https://api.eu.apyhub.com/apyhub/resize-image/multi-part/link` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | yes | | | `width` | query | integer | yes | | | `height` | query | integer | yes | | | `output` | query | string | no | Example: `my-invite`. | | `preserve_format` | query | boolean | no | | | `auto_orientation` | query | boolean | no | | #### Quickstart Resize an image from a linked file by sending the image file plus the required width and height as multipart form fields. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/resize-image/multi-part/link?width=800&height=600" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.jpg" ``` #### What you'll get back Returns a JSON object with a `data` string field containing the resulting file URL. ```json { "data": "https://example.com/resized-image.jpg" } ``` ### Resize image (fetch by URL, download file) `POST https://api.eu.apyhub.com/apyhub/resize-image/url/download` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | no | Example: `https://assets.apyhub.com/samples/sample.jpg`. | | `width` | query | integer | yes | | | `height` | query | integer | yes | | | `output` | query | string | no | Example: `my-invite`. | | `preserve_format` | query | boolean | no | | | `auto_orientation` | query | boolean | no | | #### Quickstart Resize an image from a URL using the required width and height query parameters, and send the source URL in the JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/resize-image/url/download?width=800&height=600" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.jpg"}' ``` #### What you'll get back Returns the resized image as binary. ### Resize image (fetch by URL, signed URL) `POST https://api.eu.apyhub.com/apyhub/resize-image/url/link` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | no | Example: `https://assets.apyhub.com/samples/sample.jpg`. | | `width` | query | integer | yes | | | `height` | query | integer | yes | | | `output` | query | string | no | Example: `my-invite`. | | `preserve_format` | query | boolean | no | | | `auto_orientation` | query | boolean | no | | #### Quickstart Resize an image from a URL by sending the source URL in the JSON body and the target dimensions as query parameters. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/resize-image/url/link?width=800&height=600" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.jpg"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI for the resized image. ```json { "data": "https://..." } ``` ## About ## What it does The Image Resize API resizes images to the exact width and height you need. Upload an image or send its URL, set the dimensions in pixels, and get the resized image back as the file itself or as a signed link you can store or share. Use it to create thumbnails, product image variants, social media and email images, or to make user uploads a consistent size before storing them. Set `preserve_format` to keep the original file format, and `auto_orientation` to rotate photos correctly using the orientation saved by the camera, so phone photos don't come out sideways. Need a specific area of the image instead of the whole picture? Use the [Crop Images API](https://apyhub.com/apyhub/service/crop-image). You can start on ApyHub's free tier with no card required. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/resize-image * * * --- title: Change Background of Images API slug: change-image-background url: https://apyhub.com/apyhub/service/change-image-background provider: ApyHub categories: [File Manipulation] tags: [background-replacement, image-background, image-editing, image-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 2000 alias: image-processor-change-background --- # Change Background of Images API Compose a subject image onto a new background using files or URLs. Returns PNG downloads or signed links for product shots and social assets. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/change-image-background/multi-part/download` | What it does Uploads a subject image and a background image, then returns the generated result as a… | 2000 | | POST | `https://api.eu.apyhub.com/apyhub/change-image-background/multi-part/link` | What it does Uploads a subject image and optional background settings as multipart form data, then… | 2000 | | POST | `https://api.eu.apyhub.com/apyhub/change-image-background/url/download` | What it does Fetches a foreground image from a URL, removes its background, and composites it onto… | 2000 | | POST | `https://api.eu.apyhub.com/apyhub/change-image-background/url/link` | What it does Fetches a foreground image from imageurl, removes its background, and composites it on… | 2000 | ## Endpoint reference ### Change image background `POST https://api.eu.apyhub.com/apyhub/change-image-background/multi-part/download` · 2000 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | yes | Subject image (background removed server-side). Example: `sample.webp`. | | `image_size` | body | string | no | Optional WidthxHeight for resized subject after background removal. Example: `140x140`. | | `image_angle` | body | string | no | Rotation degrees 0–360 (string decimal). Example: `12`. | | `image_opacity` | body | string | no | Subject opacity 0–1 (string decimal). Example: `0.9`. | | `image_position` | body | string | no | One of: top_right, top_left, bottom_right, bottom_left, center. Example: `top_right`. | | `background_size` | body | string | no | Optional WidthxHeight for background canvas or resize target. Example: `800x600`. | | `background_color` | body | string | no | Hex color #000000 (use instead of background_image). Example: `#1E1E1E`. | | `background_image` | body | string (binary) | yes | Background image file (use instead of background_color). Example: `background.jpg`. | | `background_opacity` | body | string | no | Background layer opacity 0–1 (string decimal). Example: `0.35`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Upload a subject image and a background image to generate a composited image download. ```bash id="k9p1we" curl -X POST "https://api.eu.apyhub.com/apyhub/change-image-background/multi-part/download?output=file" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/sample.webp" \ -F "background_image=@/path/to/background.jpg" \ -o composited-image.png ``` #### What you'll get back Returns the generated image as a binary file response. The example above saves the downloaded file locally as `composited-image.png`. ### Change image background `POST https://api.eu.apyhub.com/apyhub/change-image-background/multi-part/link` · 2000 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | yes | Subject image (background removed server-side). Example: `sample.webp`. | | `image_size` | body | string | no | Optional WidthxHeight for resized subject after background removal. Example: `140x140`. | | `image_angle` | body | string | no | Rotation degrees 0–360 (string decimal). Example: `12`. | | `image_opacity` | body | string | no | Subject opacity 0–1 (string decimal). Example: `0.9`. | | `image_position` | body | string | no | One of: top_right, top_left, bottom_right, bottom_left, center. Example: `top_right`. | | `background_size` | body | string | no | Optional WidthxHeight for background canvas or resize target. Example: `800x600`. | | `background_color` | body | string | no | Hex color #000000 (use instead of background_image). Example: `#1E1E1E`. | | `background_image` | body | string (binary) | no | Background image file (use instead of background_color). Example: `background.jpg`. | | `background_opacity` | body | string | no | Background layer opacity 0–1 (string decimal). Example: `0.35`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Upload a subject image and an optional background image to generate a new composite, returning a signed URL for the result. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/change-image-background/multi-part/link?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/sample.webp" \ -F "background_image=@/path/to/background.jpg" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed URI to the generated PNG file. ```json { "data": "https://storage.example.com/change-background/my-invite.png?X-Amz-Signature=abc123&X-Amz-Expires=3600" } ``` ### Change image background `POST https://api.eu.apyhub.com/apyhub/change-image-background/url/download` · 2000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image_url` | body | string (uri) | yes | Foreground image URL (subject — background removed via rembg). Example: `https://assets.apyhub.com/samples/sample.webp`. | | `image_size` | body | string | no | Optional WidthxHeight for resized subject after background removal. Example: `140x140`. | | `image_angle` | body | string | no | Rotation degrees 0–360 (string decimal). Example: `12`. | | `image_opacity` | body | string | no | Subject opacity 0–1 (string decimal). Example: `0.9`. | | `image_position` | body | string | no | Placement of the subject on the background canvas. Defaults to center when omitted. One of: top_right, top_left, bottom_right, bottom_left, center. Example: `top_right`. | | `background_size` | body | string | no | Optional WidthxHeight for background canvas or resize target. Example: `800x600`. | | `background_color` | body | string | no | Hex color #000000 (six hex digits with leading #). Use instead of background_image_url — only one background field may be present per request. Example: `#1E1E1E`. | | `background_opacity` | body | string | no | Background layer opacity 0–1 (string decimal). Example: `0.35`. | | `background_image_url` | body | string (uri) | yes | Background image URL. Use instead of background_color — only one background field may be present per request. Example: `https://assets.apyhub.com/samples/sample.jpg`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Generate a composed image from a foreground image URL and a background image URL, then optionally name the output with a query parameter. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/change-image-background/url/download?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "image_url": "https://assets.apyhub.com/samples/background-sample.jpeg", "background_image_url": "https://assets.apyhub.com/samples/background-image.jpg" }' ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the generated image. There is no JSON wrapper in the response. ### Change image background `POST https://api.eu.apyhub.com/apyhub/change-image-background/url/link` · 2000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image_url` | body | string (uri) | yes | Foreground image URL (subject — background removed via rembg). Example: `https://assets.apyhub.com/samples/sample.webp`. | | `image_size` | body | string | no | Optional WidthxHeight for resized subject after background removal. Example: `140x140`. | | `image_angle` | body | string | no | Rotation degrees 0–360 (string decimal). Example: `12`. | | `image_opacity` | body | string | no | Subject opacity 0–1 (string decimal). Example: `0.9`. | | `image_position` | body | string | no | Placement of the subject on the background canvas. Defaults to center when omitted. One of: top_right, top_left, bottom_right, bottom_left, center. Example: `top_right`. | | `background_size` | body | string | no | Optional WidthxHeight for background canvas or resize target. Example: `800x600`. | | `background_color` | body | string | no | Hex color #RRGGBB (six hex digits with leading #). Use instead of background_image_url — only one background field may be present per request. Example: `#1E1E1E`. | | `background_opacity` | body | string | no | Background layer opacity 0–1 (string decimal). Example: `0.35`. | | `background_image_url` | body | string (uri) | yes | Background image URL. Use instead of background_color — only one background field may be present per request. Example: `https://assets.apyhub.com/samples/sample.jpg`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Generate a PNG from an image URL and place it on a background image. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/change-image-background/url/link?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "image_url": "https://assets.apyhub.com/samples/background-sample.jpeg", "background_image_url": "https://assets.apyhub.com/samples/background-image.jpg" }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a time-limited pre-signed URL to the generated PNG file. ```json { "data": "https://storage.example.com/change-background/my-invite.png?X-Amz-Signature=abc123&X-Amz-Expires=3600" } ``` ## About ## What it does Change Image Background lets you place a subject image onto a new background and get back a PNG. Send either a multipart upload or image URLs, then choose a solid background color or a background image, along with optional sizing, rotation, opacity, and placement settings. Use the multipart endpoints when you already have the files in hand, or the URL endpoints when your images live elsewhere. The request schemas support a foreground image plus either `background_color` or a background image input. You can also adjust `image_size`, `image_angle`, `image_opacity`, `image_position`, `background_size`, and `background_opacity` to control the final composition. The service removes the subject background server-side before compositing, which makes it useful for product shots, profile images, marketplace listings, and social assets. If you want a direct file response, use the download endpoints, which return the generated PNG as binary data. If you prefer a hosted result, use the signed-link endpoints. Those return a `data` field containing a time-limited pre-signed URL to the generated PNG, suitable for storage or immediate download. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/change-image-background * * * --- title: Countries Dictionary API slug: list-all-countries url: https://apyhub.com/apyhub/service/list-all-countries provider: ApyHub categories: [Geolocation, Standard Data] tags: [countries, iso-3166, country-codes, dialing-codes, currency-reference, reference-data] auth: api_key version: 1.0 service_type: sync endpoints: 1 atoms: 5 alias: data-lists-country --- # Countries Dictionary API Get every country as JSON: two- and three-letter ISO codes, flag emoji, currency, & calling codes. Build country dropdowns & phone inputs in minutes. Free tier. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/apyhub/list-all-countries` | What it does Returns a JSON object containing a data array of country records. Response Returns a J… | 5 | ## Endpoint reference ### List all countries `GET https://api.eu.apyhub.com/apyhub/list-all-countries` · 5 atoms · accepts `application/json` #### Quickstart Fetch the full list of countries with a simple GET request. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/list-all-countries" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` array. Each item in `data` is an object describing a country, including fields like `key`, `cca3`, `emoji`, `value`, `currency`, and `calling_codes`. ```json { "data": [ { "key": "DE", "cca3": "DEU", "emoji": "🇩🇪", "value": "Germany", "currency": { "key": "EUR", "emoji": "💶", "value": "Euro", "symbol": "€" }, "calling_codes": ["+49"] } ] } ``` ## About ## What it does The Country List API returns every country in one request, ready to use in your app. Each country comes with its name, two-letter and three-letter ISO codes, flag emoji, currency (code, name, and symbol), and international calling codes. Use it to build country dropdowns in sign-up and checkout forms, add country codes to phone number inputs, set the right currency by country, or map user input to standard ISO codes. The list changes rarely, so you can fetch it once and cache it in your app. Need more detail about a single country? Use the [Country Information API](https://apyhub.com/apyhub/service/detailed-info-for-a-single-country). For a full list of currencies, use the [Currencies Dictionary API](https://apyhub.com/apyhub/service/list-all-currencies). You can start on ApyHub's free tier with no card required. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/list-all-countries * * * --- title: Unarchive Secured Files API slug: extract-password-protected-archive url: https://apyhub.com/apyhub/service/extract-password-protected-archive provider: ApyHub categories: [File Manipulation, File Security, "Security & Privacy"] tags: [archive-extraction, password-protected, zip, rar, 7z, file-security] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 300 alias: extract-file-secure-unarchive --- # Unarchive Secured Files API Decrypt uploaded or remote .zip, .rar, or .7z archives with a password. Returns signed URLs for each extracted file inside the archive. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/extract-password-protected-archive/file/link` | What it does Extracts a password-protected uploaded archive and returns signed URLs for the files i… | 300 | | POST | `https://api.eu.apyhub.com/apyhub/extract-password-protected-archive/url/link` | What it does Extracts a password-protected remote archive from a URL using the provided password an… | 300 | ## Endpoint reference ### Extract password-protected uploaded archive and return signed URLs `POST https://api.eu.apyhub.com/apyhub/extract-password-protected-archive/file/link` · 300 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Password-protected archive (.zip, .rar, or .7z). | | `password` | body | string | yes | Password required to decrypt the archive. Example: `secret123`. | #### Quickstart Upload a password-protected archive by file link and its password to get signed URLs for the extracted files. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-password-protected-archive/file/link" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/textfile.zip" \ -F "password=1234" ``` #### What you'll get back Returns a JSON object with a `data` array of URI strings, one signed cloud storage URL for each extracted file. ```json { "data": [ "https://storage.example.com/unzip/document.pdf?sig=abc", "https://storage.example.com/unzip/image.png?sig=def" ] } ``` ### Extract password-protected remote archive and return signed URLs `POST https://api.eu.apyhub.com/apyhub/extract-password-protected-archive/url/link` · 300 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.zip`. | | `password` | body | string | yes | Password required to decrypt the archive. Example: `secret123`. | #### Quickstart Extract a password-protected archive from a public URL by sending the archive link and its password. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-password-protected-archive/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.zip", "password": "secret123" }' ``` #### What you'll get back Returns a JSON object with a `data` array of strings, where each string is a signed cloud storage URL for one extracted file. ```json { "data": [ "https://storage.example.com/unzip/document.pdf?sig=abc", "https://storage.example.com/unzip/image.png?sig=def" ] } ``` ## About ## What it does Archive Extractor decrypts a password-protected .zip, .rar, or .7z archive and returns signed URLs for the files inside. Send either an uploaded archive file or a remote archive URL, plus the password required to open it. Use the `/file/link` endpoint when you already have the archive in your request body, or `/url/link` when the archive lives at a downloadable URL. In both cases, the response is a `data` array of URI strings, one signed cloud storage link per extracted file. That makes it easy to hand extracted documents, images, or other assets to downstream steps without re-hosting the archive yourself. Archive Extractor fits workflows where protected files need to be unpacked automatically: customer-uploaded document bundles, vendor-delivered asset archives, or internal automation that processes encrypted backups. You handle the password check once, then work with the extracted file links directly. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/extract-password-protected-archive * * * --- title: Extract Video Metadata API slug: extract-video-metadata url: https://apyhub.com/apyhub/service/extract-video-metadata provider: ApyHub categories: [Data Extraction, File Conversion, File Manipulation] tags: [video-metadata, ffprobe, video-processing] auth: api_key version: 1.0 service_type: sync endpoints: 2 atoms: 250 --- # Extract Video Metadata API Read metadata from a video file or URL and get nested audio, video, and file details in JSON for validation, indexing, or transcoding. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/extract-video-metadata/multi-part/download` | What it does Uploads a video file and returns a JSON response containing extracted metadata in a au… | 250 | | POST | `https://api.eu.apyhub.com/apyhub/extract-video-metadata/url/download` | What it does Extracts metadata from a video available at a URL and returns it in a JSON response. T… | 250 | ## Endpoint reference ### Extract video metadata (upload → JSON) `POST https://api.eu.apyhub.com/apyhub/extract-video-metadata/multi-part/download` · 250 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `video` | body | string (binary) | yes | Video file (.mp4 .mkv .avi .mov .flv .3gp .webm) | #### Quickstart Upload a video file to extract its metadata. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-video-metadata/multi-part/download" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" ``` #### What you'll get back Returns a JSON object containing the extracted metadata, grouped into audio, video, and file sections. ```json { "audio": {}, "video": {}, "file": {} } ``` ### Extract video metadata (URL → JSON) `POST https://api.eu.apyhub.com/apyhub/extract-video-metadata/url/download` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `video_url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | #### Quickstart Download video metadata from a video URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-video-metadata/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"video_url":"https://assets.apyhub.com/samples/sample.mp4"}' ``` #### What you'll get back Returns a JSON object containing the extracted metadata, grouped into audio, video, and file sections. ```json { "audio": {}, "video": {}, "file": {} } ``` ## About ## What it does Video Metadata Extractor reads a video file or video URL and returns its metadata as JSON. Send a binary video upload to `/multi-part/download`, or pass a `video_url` to `/url/download`. The response contains structured metadata sections for audio, video, and file details. That makes it useful when you need to inspect media properties before processing, storing, or transcoding a video. For example, you can validate an incoming upload, build a media library index, or branch workflows based on codec, duration, or container information. Use it when your application needs metadata without decoding the video itself. If you already have a file in your system, upload it directly. If the asset is hosted elsewhere, provide the URL and get the same JSON structure back. Video Metadata Extractor is designed for straightforward media inspection: one input, one structured response containing audio, video, and file metadata sections. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/extract-video-metadata * * * --- title: AI Text Moderation API slug: text-moderation url: https://apyhub.com/apyhub/service/text-moderation provider: ApyHub categories: [Artificial Intelligence] tags: [text-moderation, content-moderation, moderation, google-moderation, content-safety] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 500 alias: ai-text-moderation --- # AI Text Moderation API Check text with Google moderation using a text string and requested_service. Returns a google result inside data for content screening flows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/text-moderation` | What it does Submits a text string for moderation and returns a JSON object containing a data objec… | 500 | ## Endpoint reference ### Text Moderation `POST https://api.eu.apyhub.com/apyhub/text-moderation` · 500 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | yes | Example: `ApyHub provides powerful APIs for developers worldwide.`. | | `google.key` | body | string | no | Example: `AIzaSyExampleKey123456789`. | | `google.google_language` | body | string | no | Example: `en`. | | `requested_service` | body | string | yes | One of: google. Example: `google`. | #### Quickstart Send your text and the Google service settings in one JSON request to check moderation. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/text-moderation" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "text": "ApyHub provides powerful APIs for developers worldwide.", "requested_service": "google", "google": { "key": "AIzaSyExampleKey123456789", "google_language": "en" } }' ``` #### What you'll get back Returns a JSON object with a `data` object field. When `requested_service` is `google`, `data.google` is present and contains the moderation result returned by Google. ```json { "data": { "google": {} } } ``` ## About ## What it does Text Moderation checks a text string and routes it to Google moderation for analysis. Send the `text` you want reviewed, set `requested_service` to `google`, and include the optional `google` object when you need to pass a Google API key or language hint. The request schema is simple: the body must include `text` and `requested_service`. Inside `google`, you can provide `key` and `google_language`. The response returns a `data` object with a `google` field when Google is the requested service, so you can work with the moderation result in the format returned by that provider. Use Text Moderation when you need to screen user-generated content before publishing, queueing, or storing it. It fits comment systems, chat inputs, marketplace listings, and other workflows where you need a moderation check in the request path or as part of a background review step. Because the output mirrors the selected provider, it is straightforward to plug into existing moderation pipelines without reshaping the response around extra fields that are not part of the schema. | Provider (requested_service) | Atoms | |------------------------------|------:| | Google | 500 | ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/text-moderation * * * --- title: Convert Markdown to HTML files API slug: convert-markdown-to-html-files url: https://apyhub.com/apyhub/service/convert-markdown-to-html-files provider: ApyHub categories: [Developer Tools, File Conversion] tags: [markdown-to-html, markdown, html, file-conversion] auth: api_key version: 1.1.0 service_type: sync endpoints: 4 atoms: 50 alias: converter-md-html --- # Convert Markdown to HTML files API Convert Markdown files or Markdown URLs into HTML downloads or signed links. Built for docs, changelogs, and static publishing workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-markdown-to-html-files/file/download` | What it does Converts an uploaded Markdown file to HTML and returns the generated file as a binary… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-markdown-to-html-files/file/link` | What it does Converts an uploaded Markdown file into an HTML file and returns a signed URL to the g… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-markdown-to-html-files/url/download` | What it does Converts a remote Markdown file fetched from a URL into an HTML file for download. You… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-markdown-to-html-files/url/link` | What it does Converts a remote Markdown file, identified by its URL, into a signed HTML file URL. T… | 50 | ## Endpoint reference ### Convert uploaded Markdown file to HTML download `POST https://api.eu.apyhub.com/apyhub/convert-markdown-to-html-files/file/download` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Markdown file (.md) to convert. Mandatory. | | `output` | query | string | no | Example: `index.html`. | #### Quickstart Upload a Markdown file to convert it and optionally name the output HTML file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-markdown-to-html-files/file/download?output=index.html" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.md" ``` #### What you'll get back Returns a binary file download (`string` with `format: binary`), not a JSON object. ### Convert uploaded Markdown file to signed HTML URL `POST https://api.eu.apyhub.com/apyhub/convert-markdown-to-html-files/file/link` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Markdown file (.md) to convert. Mandatory. | #### Quickstart Convert a local Markdown file to HTML by uploading it as multipart form data. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-markdown-to-html-files/file/link" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.md" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI. ```json { "data": "https://example.com/output.html" } ``` ### Convert remote Markdown URL to HTML download `POST https://api.eu.apyhub.com/apyhub/convert-markdown-to-html-files/url/download` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.md`. | #### Quickstart Download the HTML generated from a Markdown file URL by sending the source `url`. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-markdown-to-html-files/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.md"}' ``` #### What you'll get back Returns a binary file response (`string` with `format: binary`), which is the downloaded HTML content. ```text (binary file) ``` ### Convert remote Markdown URL to signed HTML URL `POST https://api.eu.apyhub.com/apyhub/convert-markdown-to-html-files/url/link` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.md`. | #### Quickstart Convert a Markdown file from a public URL into HTML by sending its link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-markdown-to-html-files/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.md"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the URI of the generated HTML file. ```json { "data": "https://..." } ``` ## About ## What it does Markdown to HTML converts a Markdown file or a remote Markdown URL into HTML output. Send a `.md` file in the request body, or pass a `url` to a hosted Markdown document, and get HTML back as either a downloadable file or a signed link. Use the file endpoints when you want to upload Markdown directly, or the URL endpoints when the source already lives somewhere else. The download variants return HTML as binary output, while the link variants return a JSON object with a `data` field containing a URI. This is useful when you generate documentation, changelogs, README pages, or knowledge-base articles in Markdown and need to publish them as HTML for a web app, CMS, or static site pipeline. You control the output filename on the download endpoint with the `output` query parameter. Markdown to HTML is a straightforward conversion layer for teams that want to move between authoring-friendly Markdown and browser-ready HTML without building their own parser or file handling logic. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-markdown-to-html-files * * * --- title: Extract Links from Webpage API slug: extract-links-from-webpage url: https://apyhub.com/apyhub/service/extract-links-from-webpage provider: ApyHub categories: [Data Extraction, SEO] tags: [web-scraping, link-extraction, html-parsing, crawl, seo] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 50 alias: extract-links --- # Extract Links from Webpage API Extract absolute URLs from any webpage, with optional headers and URL safety checks. Built for crawling, link audits, and sitemap collection. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/extract-links-from-webpage` | What it does Extracts all hyperlinks from the web page at the given URL and returns them as absolut… | 50 | ## Endpoint reference ### Extract all links from a web page `POST https://api.eu.apyhub.com/apyhub/extract-links-from-webpage` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string | yes | The URL of the page to extract links from. Protocol is optional — http:// is prepended if absent. Example: `https://apyhub.com`. | | `user_agent` | body | string | no | Custom User-Agent header sent when fetching the URL. Example: `Mozilla/5.0 (compatible; MyBot/1.0)`. | | `secure_mode` | body | boolean | no | When true, the URL is checked against the malicious-URL database before fetching. Default: `true`. | | `accept_language` | body | string | no | Custom Accept-Language header sent when fetching the URL. Example: `en-US,en;q=0.9`. | #### Quickstart Send a webpage URL to extract the links found on that page. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-links-from-webpage" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://apyhub.com" }' ``` #### What you'll get back Returns a JSON object with a `data` field. On a normal response, `data` is an object containing a `links` array of absolute URLs found on the page; if the URL is flagged as malicious, `data` is an object with `url`, `threat`, and `reported_malicious` fields. ```json { "data": { "links": [ "https://apyhub.com/docs", "https://apyhub.com/pricing" ] } } ``` ## About ## What it does Link Extractor pulls every hyperlink from a web page and returns the absolute URLs it finds. Send a page URL, and you get a list of links back in a structured response. Use it when you need to crawl a site, audit outbound references, build a sitemap, or collect page targets for downstream processing. The request accepts a URL in the body, with optional `user_agent`, `accept_language`, and `secure_mode` settings for controlling how the page is fetched. Protocol is optional; if you omit it, `http://` is prepended. The normal response contains `data.links`, an array of strings with the absolute URLs found on the page. If `secure_mode` detects a malicious URL before fetching, the response instead returns threat details in `data.url`, `data.threat`, and `data.reported_malicious`. Use Link Extractor when you need a simple way to turn a webpage into a clean set of link targets without building your own parser or crawler. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/extract-links-from-webpage * * * --- title: Generate GIF from Video Job API slug: generate-gif-from-video url: https://apyhub.com/apyhub/service/generate-gif-from-video provider: ApyHub categories: [File Conversion, File Manipulation] tags: [video-conversion, gif-generation, media-processing, async-jobs, video-to-gif] auth: api_key version: 1.1 service_type: job endpoints: 3 atoms: 5-400 alias: job-gif-from-video --- # Generate GIF from Video Job API Turn MP4, MOV, WebM and other videos into animated GIFs from a file or URL. Pick the clip, size and speed, and get the GIF back in the same request. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/generate-gif-from-video/url-to-json` | What it does Submits a video-to-GIF conversion job using a source video URL and returns a job ident… | 400 | | POST | `https://api.eu.apyhub.com/apyhub/generate-gif-from-video/file-to-json` | What it does Submits a video file to start an async job that generates a GIF from the uploaded vide… | 400 | | GET | `https://api.eu.apyhub.com/apyhub/generate-gif-from-video/jobs/:job_id` | What it does Checks the status of a GIF conversion job by job ID and returns the job’s current stat… | 5 | ## Endpoint reference ### Submit video-to-GIF job `POST https://api.eu.apyhub.com/apyhub/generate-gif-from-video/url-to-json` · 400 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | Output dimensions WIDTHxHEIGHT (even integers, e.g. 320x240). | | `speed` | body | string | no | Integer -10…10; negative = slow motion, positive = fast forward, 0 = normal. | | `duration` | body | string | no | Clip length in seconds; capped at 20. Default 2. | | `video_url` | body | string (uri) | yes | Publicly accessible URL of the video to convert. Mandatory. Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `start_time` | body | string | no | Seek offset in seconds. Default 0. | | `persistent` | query | boolean | no | | #### Quickstart Submit a video URL to start an async GIF generation job. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-gif-from-video/url-to-json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"video_url":"https://assets.apyhub.com/samples/sample.mp4"}' ``` #### What you'll get back Returns a JSON object with a top-level `job_id` string — a UUID you can use for status polling. ```json { "job_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6" } ``` ### Submit video-to-GIF job `POST https://api.eu.apyhub.com/apyhub/generate-gif-from-video/file-to-json` · 400 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | Output dimensions WIDTHxHEIGHT (even integers, e.g. 320x240). | | `speed` | body | string | no | Integer -10…10; negative = slow motion, positive = fast forward, 0 = normal. | | `video` | body | string (binary) | yes | The video file to convert. Mandatory. | | `duration` | body | string | no | Clip length in seconds; capped at 20. Default 2. | | `start_time` | body | string | no | Seek offset in seconds. Default 0. | | `persistent` | query | boolean | no | | #### Quickstart Upload a video to start a GIF-generation job and get back a job ID for polling. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-gif-from-video/file-to-json?persistent=false" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" ``` #### What you'll get back Returns a JSON object with a required `job_id` string field. The `job_id` is the async job identifier you can use for status polling. ```json { "job_id": "550e8400-e29b-41d4-a716-446655440000" } ``` ### Check GIF conversion job status `GET https://api.eu.apyhub.com/apyhub/generate-gif-from-video/jobs/:job_id` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Check the status of a GIF generation job by its `job_id`. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/generate-gif-from-video/jobs/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. `data` may include `job_id` (string), `status` (`pending`, `successful`, or `failed`), `message` (string status detail), and `url` (string URL to the output GIF when the job is `successful`). ```json { "data": { "job_id": "550e8400-e29b-41d4-a716-446655440000", "status": "successful", "url": "https://assets.apyhub.com/samples/output.gif" } } ``` ## About ## What it does The Generate GIF from Video Job API converts a video, such as an MP4, into an animated GIF as a background job. Submit the video, get a `job_id` back straight away, and fetch the finished GIF when it is ready. Your application never has to hold a request open while the video is processed. It works in three steps: 1. **Submit the video.** Send a public `video_url` to `/url-to-json`, or upload the file to `/file-to-json` (up to 100 MB). Both return a `job_id`. 2. **Poll the job.** Call `GET /jobs/:job_id` no more than once per second. The `status` is `pending` while the GIF is being made, then `successful` or `failed`, with a `message` explaining any failure. 3. **Download the GIF.** When the status is `successful`, the response includes a `url` to the finished GIF. You control which part of the video becomes the GIF. Set `start_time` to the second where the clip should begin and `duration` to its length, from the default of 2 seconds up to 20. Use `size` to resize the output, for example `480x270` (both numbers must be even), and `speed` to slow the clip down with values down to `-10` or speed it up with values up to `10`. The job pattern suits work that runs outside a user request: converting uploads in a background worker, processing a batch of videos from a queue, or generating GIFs from serverless functions with short time limits. Common results include product demo loops, social media previews, animated snippets for docs and emails, and short reactions cut from longer videos. If you would rather get the GIF back in the same request, use the [Video to GIF API](https://apyhub.com/apyhub/service/generate-gif). For a still image from a video instead of an animation, use the [Generate Video Thumbnail Job API](https://apyhub.com/apyhub/service/generate-video-thumbnail-job), and to brand your videos, see the [Generate Watermark for Videos Job API](https://apyhub.com/apyhub/service/generate-video-watermark). You can try it right here in the playground. Start for free with 5 API calls a day, no card required, and convert your own video before you commit. The API is also available through [ApyHub MCP](https://apyhub.com/mcp), so AI agents can turn a video into a GIF directly as part of a larger workflow. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/generate-gif-from-video * * * --- title: Convert JPEG to WebP API slug: convert-jpeg-to-webp url: https://apyhub.com/apyhub/service/convert-jpeg-to-webp provider: ApyHub categories: [File Conversion, Image Processing] tags: [jpeg-to-webp, image-conversion, webp, jpeg, jpg, file-conversion] auth: api_key version: 1.1 service_type: sync endpoints: 4 atoms: 30 alias: image-converter-jpeg-webp --- # Convert JPEG to WebP API Convert JPEG or JPG images to WebP from a URL or file upload. Returns a binary download or a signed URL for storage and faster delivery. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-jpeg-to-webp/url/link` | What it does Converts a publicly accessible JPEG image URL into a WebP image and returns the result… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/convert-jpeg-to-webp/multi-part/download` | What it does Converts an uploaded JPEG/JPG image to WebP and returns the resulting file as a binary… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/convert-jpeg-to-webp/multi-part/link` | What it does Converts a JPEG/JPG image provided in the request body into WebP format using a multip… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/convert-jpeg-to-webp/url/download` | What it does Converts a JPEG image available at a publicly accessible URL into WebP and returns the… | 30 | ## Endpoint reference ### Convert JPEG to WebP `POST https://api.eu.apyhub.com/apyhub/convert-jpeg-to-webp/url/link` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL of the JPEG image to convert. Mandatory. Example: `https://assets.apyhub.com/samples/sample.jpg`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Convert a JPEG from a public URL into WebP by sending the image URL in the JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-jpeg-to-webp/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.jpg"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the generated WebP file URL. ```json { "data": "https://..." } ``` ### Convert JPEG to WebP `POST https://api.eu.apyhub.com/apyhub/convert-jpeg-to-webp/multi-part/download` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | yes | The source image file in JPEG/JPG format. Mandatory. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Upload a JPEG image and optionally set the output name to download the converted WebP file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-jpeg-to-webp/multi-part/download?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.jpg" ' ``` #### What you'll get back Returns a binary file response containing the converted WebP image. ### Convert JPEG to WebP `POST https://api.eu.apyhub.com/apyhub/convert-jpeg-to-webp/multi-part/link` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | yes | The source image file in JPEG/JPG format. Mandatory. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Convert a JPEG/JPG image file to WebP by sending the required image upload and a destination name in the query string. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-jpeg-to-webp/multi-part/link?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.jpg" ``` #### What you'll get back Returns a JSON object with a `data` string field containing the resulting WebP file URI. ```json { "data": "https://example.com/my-invite.webp" } ``` ### Convert JPEG to WebP `POST https://api.eu.apyhub.com/apyhub/convert-jpeg-to-webp/url/download` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL of the JPEG image to convert. Mandatory. Example: `https://assets.apyhub.com/samples/sample.jpg`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Convert a JPEG image from a public URL to WebP by sending the source image URL in JSON. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-jpeg-to-webp/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.jpg"}' ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the converted WebP image. ## About ## What it does JPEG to WebP Converter turns a JPEG or JPG image into a WebP file. Send either a public image URL or a binary image upload, and choose whether you want the result returned as a downloadable file or as a signed URL in the response. Use the URL-based endpoints when the source image already lives online, or the multipart endpoints when you're uploading a local file. The request body only needs `url` for URL conversions or `image` for multipart conversions. If you need a named output, pass `output` as a query parameter. The response matches the delivery mode you choose: the download endpoints return binary WebP content, while the signed-URL endpoints return a JSON object with a `data` field containing a URI. That makes this service a good fit for image pipelines, CMS uploads, storage optimisation, and client-side delivery where smaller WebP assets reduce transfer size. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-jpeg-to-webp * * * --- title: Convert Speech to Text API slug: transcribe-speech-to-text url: https://apyhub.com/apyhub/service/transcribe-speech-to-text provider: ApyHub categories: [Audio Processing] tags: [speech-to-text, transcription, audio-processing, wav, voice-to-text] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 750 alias: speech-to-text --- # Convert Speech to Text API Transcribe WAV files or WAV URLs with an Azure locale. Returns plain text in the data field for indexing, search, and voice-note workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/transcribe-speech-to-text/file` | What it does Uploads a WAV audio file and a language locale, then returns the transcription as a st… | 750 | | POST | `https://api.eu.apyhub.com/apyhub/transcribe-speech-to-text/url` | What it does Transcribes a WAV audio file from a URL into text. Send the source file URL and langua… | 750 | ## Endpoint reference ### Transcribe WAV file to text `POST https://api.eu.apyhub.com/apyhub/transcribe-speech-to-text/file` · 750 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | WAV audio file. | | `language` | body | string | yes | Azure locale (e.g. en-US). Example: `en-US`. | #### Quickstart Upload a WAV file and the locale to transcribe speech to text. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/transcribe-speech-to-text/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/audio.wav" \ -F "language=en-US" ``` #### What you'll get back Returns a JSON object with a `data` string field containing the transcription result. ```json { "data": "Hello, welcome to the meeting." } ``` ### Transcribe WAV from URL to text `POST https://api.eu.apyhub.com/apyhub/transcribe-speech-to-text/url` · 750 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.wav`. | | `language` | body | string | yes | Example: `en-US`. | #### Quickstart Send the audio file URL and its language code to transcribe speech to text. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/transcribe-speech-to-text/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample-speech.mp3", "language": "en-US" }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the transcribed text. ```json { "data": "Hello, this is a sample transcription." } ``` ## About ## What it does Speech to Text turns WAV audio into plain text. Send either a WAV file or a public WAV URL, along with an Azure locale such as `en-US`, and get the transcription back in the `data` field. Use `/file` when you already have the audio in your app, or `/url` when the WAV is hosted elsewhere. The request bodies are small and explicit: `file` or `url`, plus `language`. The response is equally simple, which makes it easy to drop into ingestion pipelines, call-center tooling, note-taking apps, or any workflow that needs audio converted to text. This service is focused on transcription only. It does not return speaker labels, timestamps, or confidence scores in the schemas provided, so plan around a single text output. If you need to index meetings, archive voice messages, or make spoken content searchable, Speech to Text gives you a direct path from WAV audio to text without extra parsing steps. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/transcribe-speech-to-text * * * --- title: Convert Webpage to PDF API slug: capture-public-url-as-pdf url: https://apyhub.com/apyhub/service/capture-public-url-as-pdf provider: ApyHub categories: [File Conversion] tags: [webpage-to-pdf, url-to-pdf, html-to-pdf, pdf-generation] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 50 alias: generate-url-pdf --- # Convert Webpage to PDF API Capture a public URL as a PDF download or signed link. Built for archiving pages, sharing snapshots, and automating document workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/capture-public-url-as-pdf/download` | What it does Captures the public web page at the given URL and returns the result as a PDF download… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/capture-public-url-as-pdf/link` | What it does Captures the content from a public URL and returns a signed PDF link. The request body… | 50 | ## Endpoint reference ### Capture public URL as PDF download `POST https://api.eu.apyhub.com/apyhub/capture-public-url-as-pdf/download` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.html`. | | `margin` | query | number | no | Default: `0.1`. | | `output` | query | string | no | Example: `output.pdf`. | | `landscape` | query | boolean | no | Default: `false`. | #### Quickstart Convert a public web page to PDF by sending its URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/capture-public-url-as-pdf/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.html"}' ``` #### What you'll get back Returns a PDF file as binary data. ### Capture public URL as PDF signed link `POST https://api.eu.apyhub.com/apyhub/capture-public-url-as-pdf/link` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.html`. | | `margin` | query | number | no | Default: `0.1`. | | `landscape` | query | boolean | no | Default: `false`. | #### Quickstart Convert a public page URL into a PDF link with the required `url` body field. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/capture-public-url-as-pdf/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.html"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the generated PDF URI. ```json { "data": "https://example.com/output.pdf" } ``` ## About ## What it does Web Page to PDF turns a public URL into a PDF file you can download or store as a signed link. Send the page URL in the request body, and choose whether you want a direct binary download or a link response. Use the `/download` endpoint when you want the PDF returned as a file. It accepts `url` in the body, plus optional `margin` and `landscape` query parameters, and a file name through `output`. Use the `/link` endpoint when you prefer a JSON response containing `data` with a URI to the generated PDF, with optional `margin` and `landscape` query parameters. This is useful when you need to archive public webpages, generate snapshots of landing pages, or create shareable document copies of web content for review and approval workflows. Because the input is a public URL, it fits capture jobs for published pages, docs, and static marketing content. Web Page to PDF keeps the interface simple: one URL in, a PDF out. Choose the response format that matches your workflow, whether you're streaming the file to a user or persisting a signed link for later access. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/capture-public-url-as-pdf * * * --- title: Generate Webpage Screenshot API slug: capture-webpage-screenshot url: https://apyhub.com/apyhub/service/capture-webpage-screenshot provider: ApyHub categories: [Data Extraction, File Manipulation, Image Processing] tags: [website-screenshot, url-to-image, screenshot, webpage-capture] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 75 alias: generate-webpage-screenshot --- # Generate Webpage Screenshot API Capture any webpage from its URL and get a PNG download or signed link back. Useful for QA, visual regression testing, and archiving page states. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/apyhub/capture-webpage-screenshot/download` | What it does Captures a screenshot of the webpage at the provided URL and returns it as a streamed… | 75 | | GET | `https://api.eu.apyhub.com/apyhub/capture-webpage-screenshot/link` | What it does Generates a screenshot of the webpage at the given URL and returns a signed upload lin… | 75 | ## Endpoint reference ### Capture webpage screenshot and stream PNG download `GET https://api.eu.apyhub.com/apyhub/capture-webpage-screenshot/download` · 75 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string (uri) | yes | | | `delay` | query | integer | no | Default: `3`. | | `output` | query | string | no | Default: `output.png`. | | `quality` | query | integer | no | Default: `5`. | #### Quickstart Download a screenshot of a webpage by passing the page URL as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/capture-webpage-screenshot/download?url=https://apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a binary file containing the screenshot image. ### Capture webpage screenshot and return signed upload link `GET https://api.eu.apyhub.com/apyhub/capture-webpage-screenshot/link` · 75 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string (uri) | yes | | | `delay` | query | integer | no | Default: `3`. | | `quality` | query | integer | no | Default: `5`. | #### Quickstart Capture a screenshot of a webpage by passing its URL as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/capture-webpage-screenshot/link?url=https://apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a signed cloud storage URL for the PNG screenshot. ```json { "data": "https://storage.example.com/web-screenshot/output.png?sig=abc" } ``` ## About ## What it does Capture Webpage Screenshot turns a URL into a PNG screenshot. Send a page URL, optionally add a delay, and get back either a binary PNG download or a signed storage link for the captured image. Use the `/download` endpoint when you want the screenshot streamed directly as a file. It accepts `url`, `delay`, `output`, and `quality`, with `delay` capped at 10 and `quality` ranging from 1 to 5. Use `/link` when your workflow prefers a shareable upload URL; it accepts `url`, `delay`, and `quality`, and returns a `data` field containing the signed PNG URL. Capture Webpage Screenshot is a fit for QA checks, visual regression pipelines, archiving page states, or grabbing screenshots for reports and support tickets. It works from a single page URL, so you can automate browser captures without building your own screenshot service. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/capture-webpage-screenshot * * * --- title: Validate SWIFT/BIC API slug: validate-swift-bic-code url: https://apyhub.com/apyhub/service/validate-swift-bic-code provider: ApyHub categories: [Data Validation, Finance] tags: [swift-code, bic-validation, bank-validation, finance, payment-validation] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 5 alias: finance-validator-bic --- # Validate SWIFT/BIC API SWIFT code validation API that checks an 8 or 11 character BIC and splits it into bank, country, location and branch codes for payment forms. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/validate-swift-bic-code` | What it does Validates a BIC/SWIFT code submitted in the request body. The response returns a data… | 5 | ## Endpoint reference ### Validate a BIC / SWIFT code `POST https://api.eu.apyhub.com/apyhub/validate-swift-bic-code` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `bic` | body | string | yes | BIC/SWIFT code to validate (8 or 11 characters). Example: `ABNANL2A`. | #### Quickstart Validate a BIC/SWIFT code by sending it in a JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/validate-swift-bic-code" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"bic":"ABNANL2A"}' ``` #### What you'll get back Returns a JSON object with a `data` field. `data` can be either a boolean `false` when the BIC is invalid, or an object with validation details: `valid`, `bank_code`, `branch_code`, `country_code`, and `location_code`. ```json { "data": { "valid": true, "bank_code": "ABNA", "branch_code": "XXX", "country_code": "NL", "location_code": "2A" } } ``` ## About ## What it does The SWIFT code validation API checks whether a BIC/SWIFT code is structurally valid and splits it into its parts. Send an 8 or 11 character code as `bic` in the request body. A valid code returns an object with `valid`, `bank_code`, `country_code`, `location_code` and `branch_code`. An invalid code returns `data: false`. Use the SWIFT code validation API as a BIC validator in payment and payout forms, supplier onboarding, and payroll setup for international employees. Catching a mistyped SWIFT code at input is cheaper than a returned wire transfer, and the parsed `country_code` lets you confirm the bank country matches the rest of the record. The parsed fields are useful beyond a yes or no check. Store `bank_code` and `country_code` as separate columns, normalize 8 character codes against their 11 character branch form, or flag records where the BIC country differs from the IBAN country in bulk cleanup of existing bank data. This SWIFT code validator checks format and structure. It does not look up the bank name or address in the SWIFT directory. A valid result confirms a well-formed code, and your payment provider confirms that the account exists. International payment details rarely arrive alone. Validate the account number with the [IBAN Validation API](https://apyhub.com/apyhub/service/validate-iban), US bank codes with the [Routing Number Validation API](https://apyhub.com/dosvak/service/validate-routing-number), and the business itself with the [VAT Lookup API](https://apyhub.com/apyhub/service/lookup-vat-company). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/validate-swift-bic-code * * * --- title: Generate File Preview API slug: generate-png-preview url: https://apyhub.com/apyhub/service/generate-png-preview provider: ApyHub categories: [File Conversion, File Manipulation, Image Processing] tags: [png-preview, file-preview, thumbnail-generation, document-preview, url-to-image] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 300 alias: generate-file-preview --- # Generate File Preview API Generate PNG previews from uploaded files or remote URLs. Stream the image or return a signed link, with optional width control for thumbnails. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/generate-png-preview/file/download` | What it does Generates a PNG preview from an uploaded file and returns the resulting image as a bin… | 300 | | POST | `https://api.eu.apyhub.com/apyhub/generate-png-preview/file/link` | What it does Generates a PNG preview from an uploaded file and returns a signed link to the generat… | 300 | | POST | `https://api.eu.apyhub.com/apyhub/generate-png-preview/url/download` | What it does Generates a PNG preview from a remote file URL and returns the result as a streamed bi… | 300 | | POST | `https://api.eu.apyhub.com/apyhub/generate-png-preview/url/link` | What it does Generates a PNG preview from a remote file URL and returns a signed link to the result… | 300 | ## Endpoint reference ### Generate PNG preview from uploaded file and stream download `POST https://api.eu.apyhub.com/apyhub/generate-png-preview/file/download` · 300 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Supported document, image, video, or archive file. | | `width` | query | integer | no | | #### Quickstart Upload a file to generate a PNG preview, optionally setting the preview width with a query parameter. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-png-preview/file/download" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.pdf" ``` #### What you'll get back Returns a binary file, which is the generated PNG preview. ### Generate PNG preview from uploaded file and return signed link `POST https://api.eu.apyhub.com/apyhub/generate-png-preview/file/link` · 300 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `width` | query | integer | no | | #### Quickstart Upload a file link to generate a PNG preview, optionally setting the preview width with a query parameter. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-png-preview/file/link?width=800" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file" ``` #### What you'll get back Returns a JSON object with a `data` string field containing the generated preview URI. ```json { "data": "https://example.com/preview.png" } ``` ### Generate PNG preview from remote file URL and stream download `POST https://api.eu.apyhub.com/apyhub/generate-png-preview/url/download` · 300 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.pdf`. | | `width` | query | integer | no | | #### Quickstart Download a PNG preview from a public URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-png-preview/url/download?width=800" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.pdf"}' ``` #### What you'll get back Returns a binary file response (`string` with `format: binary`), which is the generated PNG preview. ### Generate PNG preview from remote file URL and return signed link `POST https://api.eu.apyhub.com/apyhub/generate-png-preview/url/link` · 300 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.pdf`. | | `width` | query | integer | no | | #### Quickstart Generate a PNG preview from a URL by sending the source link in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-png-preview/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.pdf"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the generated PNG preview URL. ```json { "data": "https://..." } ``` ## About ## What it does PNG Preview Generator turns an uploaded file or a remote file URL into a PNG preview. Send a `file` in the request body, or send a `url`, and you can get the result either as a streamed PNG download or as a signed `data` link. You can also pass an optional `width` query parameter to control the preview size. Use PNG Preview Generator when you need a consistent image representation of files before a user opens them. It supports document, image, video, and archive files on the upload path, which makes it useful for file managers, content dashboards, review queues, and share flows where you want a quick visual preview instead of the original file. The service exposes two request patterns: `/file/*` for uploaded binaries and `/url/*` for remote assets. For download responses, the API returns binary PNG data. For link responses, it returns an object with a `data` field containing a URI. That gives you flexibility to either stream the preview directly or store and fetch it later. If your application needs thumbnails or previews for mixed file types, PNG Preview Generator gives you a single output format that is easy to display, cache, and pass between services. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/generate-png-preview * * * --- title: Analyse Keywords API slug: extract-and-group-keywords-from-article url: https://apyhub.com/apyhub/service/extract-and-group-keywords-from-article provider: ApyHub categories: [Artificial Intelligence, Data Extraction, SEO] tags: [keyword-extraction, keyword-grouping, article-analysis, content-clustering, seo] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 200 alias: analyse-keywords --- # Analyse Keywords API Analyze a public article URL and get ranked keyword groups with scores. Built for content clustering, topic analysis, and SEO strategy workflows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/extract-and-group-keywords-from-article` | What it does Extracts and groups keywords from one or more publicly accessible article URLs. The re… | 200 | ## Endpoint reference ### Extract and group keywords from article URLs `POST https://api.eu.apyhub.com/apyhub/extract-and-group-keywords-from-article` · 200 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `urls` | body | array of string | yes | Publicly accessible article URLs to analyse. Maximum 10; extras are ignored. Example: `["https://assets.apyhub.com/samples/sample.html","https://assets.apyhub.com/sam…`. | | `article_length` | body | integer | no | Expected article character length hint (optional; helps the parser tune extraction). | | `return_results_top` | body | integer | no | Maximum number of keyword groups to return (5–50). Omit to return all groups. Example: `20`. | #### Quickstart Send a list of article URLs to extract and group their keywords. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-and-group-keywords-from-article" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "urls": [ "https://assets.apyhub.com/samples/sample.html" ] }' ``` #### What you'll get back Returns a JSON object with a `data` object. Inside `data`, `keyword_groups` is an array of ranked keyword groups, and each group contains a numeric `score` and a `keywords` array of strings. ```json { "data": { "individual_results": [ { "url": "https://assets.apyhub.com/samples/sample.html", "latent_semantic_keywords": [ "eligendi", "expedita", "eos", "alias", "aliquid", "dignissimos", "ea", "eaque", "aliquam", "dicta" ], "high_frequency_keywords": [ { "keyword": "et", "frequency": 56 }, { "keyword": "ut", "frequency": 35 } ], "high_frequency_keyphrases": [ { "keyphrase": "consequatur et", "frequency": 3 }, { "keyphrase": "mollitia et", "frequency": 3 } ], "preview": "Lorem ipsum dolor sit amet...." } ], "aggregated_results": null } } ``` ## About ## What it does Keyword Grouping analyzes one to ten publicly accessible article URLs and returns ranked keyword groups for the content it finds. Send article URLs, optionally include an `article_length` hint, and set `return_results_top` if you want to limit how many groups come back. Use Keyword Grouping when you need to compare articles by topic, cluster related terms across a content library, or pull out the main themes from a batch of pages. The service is built for article analysis, so it works well for editorial workflows, content research, and SEO tooling where you want grouped terms instead of a flat keyword list. The response contains `data.keyword_groups`, an array of objects with a numeric `score` and a `keywords` array. Each group represents a ranked set of related keywords extracted from the provided articles, which makes it easy to sort by relevance or feed the results into downstream classification, search, or reporting jobs. Because the input is limited to public article URLs, this is a good fit for pipelines that analyze published pages without uploading files or raw HTML. Send the URLs, get structured keyword groups back, and use them to identify repeated topics, build content clusters, or surface the terms that matter most across a set of articles. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/extract-and-group-keywords-from-article * * * --- title: Convert Text to Speech API slug: convert-text-to-speech url: https://apyhub.com/apyhub/service/convert-text-to-speech provider: ApyHub categories: [Audio Processing, File Conversion, Smart Generation] tags: [tts, text-to-audio, text-to-speech, text-to-voice] auth: api_key version: 1.0.0 service_type: sync endpoints: 6 atoms: 750 alias: text-to-speech --- # Convert Text to Speech API Convert text, file uploads, or document URLs into MP3 audio with male or female voice selection. Returns a download or a signed link. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-text-to-speech/file/file` | What it does Uploads a document file and a selected voice gender, then returns the generated MP3 au… | 750 | | POST | `https://api.eu.apyhub.com/apyhub/convert-text-to-speech/file/link` | What it does Converts the text content from an uploaded document into speech and returns a signed M… | 750 | | POST | `https://api.eu.apyhub.com/apyhub/convert-text-to-speech/text/file` | What it does Converts the provided text into an MP3 file download. You send the text and a voice ge… | 750 | | POST | `https://api.eu.apyhub.com/apyhub/convert-text-to-speech/text/link` | What it does Converts the submitted JSON text into a speech audio file and returns a signed MP3 lin… | 750 | | POST | `https://api.eu.apyhub.com/apyhub/convert-text-to-speech/url/file` | What it does Converts the text content of a document available at a URL into an MP3 audio file. The… | 750 | | POST | `https://api.eu.apyhub.com/apyhub/convert-text-to-speech/url/link` | What it does Extracts text from a document URL and returns a signed MP3 link. You send a document u… | 750 | ## Endpoint reference ### Convert uploaded document to MP3 `POST https://api.eu.apyhub.com/apyhub/convert-text-to-speech/file/file` · 750 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `gender` | body | string | yes | One of: male, female. Example: `male`. | #### Quickstart Upload a text file and choose a voice gender to generate speech. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-text-to-speech/file/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/input.txt" \ -F "gender=male" ``` #### What you'll get back Returns a binary file response containing the generated audio. ### Convert uploaded document to signed MP3 link `POST https://api.eu.apyhub.com/apyhub/convert-text-to-speech/file/link` · 750 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `gender` | body | string | yes | One of: male, female. | #### Quickstart Convert a file to speech by uploading the file and choosing a voice gender. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-text-to-speech/file/link" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/audio-or-text-file" \ -F "gender=male" ``` #### What you'll get back Returns a JSON object with a `data` string field. ```json { "data": "https://example.com/generated-audio.mp3" } ``` ### Convert JSON text to MP3 download `POST https://api.eu.apyhub.com/apyhub/convert-text-to-speech/text/file` · 750 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | yes | Example: `Hello world, this is a sample speech synthesis request.`. | | `gender` | body | string | yes | One of: male, female. Example: `female`. | #### Quickstart Send text and a gender to generate speech audio from the supplied text. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-text-to-speech/text/file" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"Hello world, this is a sample speech synthesis request.","gender":"female"}' ``` #### What you'll get back Returns binary audio data (`string` with `binary` format), not a JSON object. ```text (binary audio file) ``` ### Convert JSON text to signed MP3 link `POST https://api.eu.apyhub.com/apyhub/convert-text-to-speech/text/link` · 750 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | yes | Example: `Hello world, this is a sample speech synthesis request.`. | | `gender` | body | string | yes | One of: male, female. Example: `female`. | #### Quickstart Send the text and voice gender to generate a speech synthesis link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-text-to-speech/text/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "text": "Hello world, this is a sample speech synthesis request.", "gender": "female" }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the generated audio link. ```json { "data": "https://..." } ``` ### Convert document URL to MP3 `POST https://api.eu.apyhub.com/apyhub/convert-text-to-speech/url/file` · 750 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.pdf`. | | `gender` | body | string | yes | One of: male, female. Example: `female`. | #### Quickstart Convert a file from a URL into speech by sending the file URL and voice gender. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-text-to-speech/url/file" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.pdf", "gender": "female" }' ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the generated audio. ```text (binary audio file) ``` ### Convert document URL to signed MP3 link `POST https://api.eu.apyhub.com/apyhub/convert-text-to-speech/url/link` · 750 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.pdf`. | | `gender` | body | string | yes | One of: male, female. Example: `female`. | #### Quickstart Convert a file URL to speech by sending the source URL and voice gender. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-text-to-speech/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.pdf", "gender": "female" }' ``` #### What you'll get back Returns a JSON object with a `data` string field. ```json { "data": "https://..." } ``` ## About ## What it does Text to Speech converts plain text or document content into MP3 audio. Send a text string, a document file, or a document URL, and choose a voice gender of `male` or `female`. Depending on the endpoint, you either get the MP3 file directly or a JSON response with a signed download link. Use Text to Speech when you need to turn reports, articles, training material, or support content into audio for listening on the go. If your content already lives in a document, send the uploaded file or its URL. If you already have the content in your app, send `text` directly. The service handles up to 75,000 characters for text input. The response format is straightforward: binary MP3 for direct download endpoints, or `{ "data": "..." }` for link-based endpoints. That makes it easy to plug into workflows that need immediate file delivery or asynchronous download handling. Text to Speech fits product features like read-aloud mode, content playback for accessibility, internal training libraries, and document narration without building speech synthesis logic yourself. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-text-to-speech * * * --- title: Convert Spreadsheets to PDF API slug: convert-spreadsheet-to-pdf url: https://apyhub.com/apyhub/service/convert-spreadsheet-to-pdf provider: ApyHub categories: [File Conversion] tags: [spreadsheet-to-pdf, excel-conversion, pdf-generation, document-conversion, ods, xlsx] auth: api_key version: 1.0.0 service_type: sync endpoints: 6 atoms: 100 alias: converter-spreadsheet-pdf --- # Convert Spreadsheets to PDF API Excel to PDF API: send an XLS, XLSX, or ODS file, a URL, or base64 bytes and get a PDF back as a download or signed link. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-spreadsheet-to-pdf/file/link` | What it does Converts an uploaded spreadsheet file to PDF and returns a signed URL to the generated… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-spreadsheet-to-pdf/url/download` | What it does Converts a spreadsheet available at a remote URL into a PDF and returns the generated… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-spreadsheet-to-pdf/url/link` | What it does Converts a remotely hosted spreadsheet file, provided as a URL, into a PDF and returns… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-spreadsheet-to-pdf/base64/download` | What it does Converts a base64-encoded spreadsheet into a PDF file and returns the result as a bina… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-spreadsheet-to-pdf/base64/link` | What it does Converts a base64-encoded spreadsheet file into a PDF and returns a signed link to the… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-spreadsheet-to-pdf/file/download` | What it does Uploads a spreadsheet file and returns a PDF download generated from that file. The re… | 100 | ## Endpoint reference ### Convert spreadsheet upload to PDF signed link `POST https://api.eu.apyhub.com/apyhub/convert-spreadsheet-to-pdf/file/link` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `landscape` | query | boolean | no | Default: `false`. | #### Quickstart Upload a spreadsheet file to convert it to PDF. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-spreadsheet-to-pdf/file/link" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/spreadsheet.xlsx" ``` #### What you'll get back Returns a JSON object with a `data` string field containing the PDF file URI. ```json { "data": "https://example.com/output.pdf" } ``` ### Convert remote spreadsheet URL to PDF download `POST https://api.eu.apyhub.com/apyhub/convert-spreadsheet-to-pdf/url/download` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.xlsx`. | | `landscape` | query | boolean | no | Default: `false`. | #### Quickstart Convert a spreadsheet from a URL into a PDF file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-spreadsheet-to-pdf/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.xlsx"}' ``` #### What you'll get back Returns a binary file response containing the generated PDF. The output schema is a raw `string` with `binary` format, so there is no JSON wrapper or fields to describe. ### Convert remote spreadsheet URL to PDF signed link `POST https://api.eu.apyhub.com/apyhub/convert-spreadsheet-to-pdf/url/link` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.xlsx`. | #### Quickstart Convert a spreadsheet from a public URL into a PDF by sending the file link in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-spreadsheet-to-pdf/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.xlsx"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the URI of the generated PDF. ```json { "data": "https://..." } ``` ### Convert base64-encoded spreadsheet to PDF download `POST https://api.eu.apyhub.com/apyhub/convert-spreadsheet-to-pdf/base64/download` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `base64` | body | string | yes | Base64-encoded file bytes. | | `landscape` | query | boolean | no | Default: `false`. | #### Quickstart Convert a Base64-encoded spreadsheet to PDF and download the result. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-spreadsheet-to-pdf/base64/download?landscape=false" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"base64":"UEsDBBQAAAAIAAeLbV..."}' ``` #### What you'll get back Returns a binary file response containing the generated PDF. ### Convert base64-encoded spreadsheet to PDF signed link `POST https://api.eu.apyhub.com/apyhub/convert-spreadsheet-to-pdf/base64/link` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `base64` | body | string | yes | Base64-encoded file bytes. | #### Quickstart Convert a spreadsheet from a Base64 string into a PDF by sending the encoded file bytes. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-spreadsheet-to-pdf/base64/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"base64":"UEsDBBQAAAAIAAeLbV..."}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI to the generated PDF. ```json { "data": "https://example.com/output.pdf" } ``` ### Convert spreadsheet upload to PDF download `POST https://api.eu.apyhub.com/apyhub/convert-spreadsheet-to-pdf/file/download` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | .xls, .xlsx, or .ods | | `output` | query | string | no | Example: `output.pdf`. | | `landscape` | query | boolean | no | Default: `false`. | #### Quickstart Upload a spreadsheet file to convert it into a PDF download. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-spreadsheet-to-pdf/file/download?output=output.pdf" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.xlsx" ``` #### What you'll get back Returns a binary file stream (`string` with `format: binary`) containing the generated PDF. ```binary ``` ## About ## What it does The Excel to PDF API renders a spreadsheet as a PDF. Send an `.xls`, `.xlsx` or `.ods` file as an upload, point it at a remote `url`, or pass the bytes as a `base64` string, and get the PDF back as a direct download or as a signed link. Six endpoints cover those combinations. Download routes return binary PDF content, which suits a request someone is waiting on. Link routes return JSON with a `data` field holding a signed URI, which suits background jobs and anything that stores the file for later. All three download routes and the file upload link route accept `landscape` to rotate the page, and the file download route takes an `output` query value to name the generated file. File uploads go up to 100 MB per request. Finance and operations teams use the Excel to PDF API to turn working spreadsheets into documents that circulate: invoices, month-end reports, price lists, and statements that should stay fixed once they leave the system. Internal tools reach for it when a user clicks export and expects a file colleagues can open without Excel installed. It pairs with the [CSV to Excel API](https://apyhub.com/apyhub/service/convert-csv-to-xlsx) when the data arrives as CSV and becomes a workbook first, and with the [PDF Watermark API](https://apyhub.com/apyhub/service/apply-watermark-on-pdf) when the output ships marked as a draft or branded for a client. For slide decks in the same workflow, use the [Presentation to PDF API](https://apyhub.com/apyhub/service/convert-presentation-to-pdf). All of them are callable by AI agents through ApyHub MCP. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-spreadsheet-to-pdf * * * --- title: Compress Video File API slug: compress-video url: https://apyhub.com/apyhub/service/compress-video provider: ApyHub categories: [File Conversion, File Manipulation] tags: [video-compression, reduce-video-size, video-processing] auth: api_key version: 1.0 service_type: sync endpoints: 4 atoms: 550 --- # Compress Video File API Compress video online for free. Drop in an MP4, MOV, AVI or WebM, choose how much to shrink it, and download the smaller file. No sign-up, no watermark. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/compress-video/multi-part/download` | What it does Uploads a video file and returns the compressed video as a binary file in the response… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/compress-video/multi-part/link` | What it does Uploads a video file and returns a time-limited signed URL for downloading the compres… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/compress-video/url/download` | What it does Compresses a video from a provided URL and returns the compressed file as binary conte… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/compress-video/url/link` | What it does Compresses a video from a provided URL and returns a time-limited signed download URL… | 550 | ## Endpoint reference ### Compress video (upload → download) `POST https://api.eu.apyhub.com/apyhub/compress-video/multi-part/download` · 550 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `video` | body | string (binary) | yes | Video file (.mp4 .mkv .avi .mov .flv .3gp .webm) | | `compression_percentage` | body | integer | no | Compression strength 0–100 (higher = smaller file, lower quality). Default: `50`. | #### Quickstart Upload a video file to get back the compressed video binary. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/compress-video/multi-part/download" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" \ -F "compression_percentage=50" ``` #### What you'll get back Returns a binary containing the compressed video file. ### Compress video (upload → cloud link) `POST https://api.eu.apyhub.com/apyhub/compress-video/multi-part/link` · 550 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `video` | body | string (binary) | yes | | | `compression_percentage` | body | integer | no | Default: `50`. | #### Quickstart Upload a video and set the compression percentage to get a temporary download link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/compress-video/multi-part/link" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" \ -F "compression_percentage=50" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a time-limited signed URL for download. ```json { "data": "https://example.com/download/video-compressed.mp4?signature=..." } ``` ### Compress video (URL → download) `POST https://api.eu.apyhub.com/apyhub/compress-video/url/download` · 550 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `video_url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `compression_percentage` | body | string | no | Compression strength 0–100 as a string or number. Default: `50`. | #### Quickstart Compress a video from a public URL by sending the source `video_url` in the JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/compress-video/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"video_url":"https://assets.apyhub.com/samples/sample.mp4", "compression_percentage":"50"}' ``` #### What you'll get back Returns a binary file that contain the compressed video content. ### Compress video (URL → cloud link) `POST https://api.eu.apyhub.com/apyhub/compress-video/url/link` · 550 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `video_url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `compression_percentage` | body | string | no | Default: `50`. | #### Quickstart Compress a video from a public URL by sending the source link and a compression percentage. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/compress-video/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"video_url":"https://assets.apyhub.com/samples/sample.mp4", "compression_percentage":"50"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a time-limited signed download URL. ```json { "data": "https://..." } ``` ## About ## What it does The video compression API reduces a video's file size by re-encoding it. Send the file as `video` or point it at a public `video_url`, set `compression_percentage`, and get the smaller file back as a direct download or as a signed link. `compression_percentage` runs from 0 to 100 and defaults to 50. Higher values produce a smaller file at lower quality, so it is worth running two or three values against a sample clip to find the point where quality still holds for your content. Uploads accept `.mp4`, `.mkv`, `.avi`, `.mov`, `.flv`, `.3gp` and `.webm`, up to 100 MB per request, and the URL routes handle anything larger. Teams use the video compression API to cut storage and bandwidth bills on user-generated uploads, to get clips under the size limits that email and chat tools enforce, and to shrink background and hero videos so a page loads faster on a slow connection. One percentage controls the result. To see what you started with, the [Video Metadata API](https://apyhub.com/apyhub/service/extract-video-metadata) returns duration, resolution, frame rate, codec and file size as JSON, which makes it easier to pick a sensible value. For long videos and batch work, the [Async Video Compression API](https://apyhub.com/apyhub/service/compress-video-job) runs the same compression as a job: submit, get a `job_id`, poll until it finishes. Compression also pairs with the [Video Converter API](https://apyhub.com/apyhub/service/convert-video-formats) when the output needs a different container. All of them are callable by AI agents through ApyHub MCP. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/compress-video * * * --- title: Convert HTML to Word API slug: convert-html-to-docx url: https://apyhub.com/apyhub/service/convert-html-to-docx provider: ApyHub categories: [File Conversion] tags: [html-to-word, html-to-docx, document-conversion, word] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 120 alias: html-to-docx --- # Convert HTML to Word API Convert HTML to Word in your app. Send a web page URL or upload an HTML file, and get an editable DOCX back as a download or a link. Free tier. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-html-to-docx/url/url` | What it does Converts a publicly accessible HTML page at the provided URL into a DOCX file and retu… | 120 | | POST | `https://api.eu.apyhub.com/apyhub/convert-html-to-docx/file/download` | What it does Converts an uploaded HTML file into a DOCX file and returns the generated document as… | 120 | | POST | `https://api.eu.apyhub.com/apyhub/convert-html-to-docx/file/url` | What it does Converts an uploaded HTML file into a DOCX file and returns a JSON object containing t… | 120 | | POST | `https://api.eu.apyhub.com/apyhub/convert-html-to-docx/url/download` | What it does Downloads an HTML document from a publicly accessible URL and converts it to a DOCX fi… | 120 | ## Endpoint reference ### Convert HTML to DOCX (URL → S3 URL) `POST https://api.eu.apyhub.com/apyhub/convert-html-to-docx/url/url` · 120 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible HTML page URL. Example: `https://assets.apyhub.com/samples/sample.html`. | #### Quickstart Convert a publicly accessible HTML page URL into a DOCX file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-html-to-docx/url/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.html"}' ``` #### What you'll get back Returns a JSON object with an optional `url` string field containing the generated DOCX file URL. ```json { "url": "https://s3.amazonaws.com/bucket/converted.docx" } ``` ### Convert HTML to DOCX (file upload → download) `POST https://api.eu.apyhub.com/apyhub/convert-html-to-docx/file/download` · 120 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | HTML file to convert (.html or .htm). | | `output` | body | string | no | Output filename stem (without extension). Defaults to converted. | #### Quickstart Upload an HTML file to convert it to a DOCX download. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-html-to-docx/file/download" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.html" ``` #### What you'll get back Returns a binary file containing the converted DOCX document. ### Convert HTML to DOCX (file upload → S3 URL) `POST https://api.eu.apyhub.com/apyhub/convert-html-to-docx/file/url` · 120 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | HTML file to convert (.html or .htm). | #### Quickstart Upload an HTML file to convert it to DOCX. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-html-to-docx/file/url" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.html" ``` #### What you'll get back Returns a JSON object with an optional `url` string field containing the download URL of the converted DOCX file. ```json { "url": "https://s3.amazonaws.com/bucket/converted.docx" } ``` ### Convert HTML to DOCX (URL → download) `POST https://api.eu.apyhub.com/apyhub/convert-html-to-docx/url/download` · 120 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible HTML page URL. Example: `https://assets.apyhub.com/samples/sample.html`. | #### Quickstart Convert a publicly accessible HTML page into a DOCX file by sending its URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-html-to-docx/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.html" }' ``` #### What you'll get back Returns a binary DOCX file as the response body. ## About ## What it does The HTML to Word API converts HTML into editable Word documents. Send the URL of a public web page or upload an HTML file (.html or .htm, up to 100 MB), and get a DOCX file back, either directly in the response or as a link you can store or share. Use it to let users export reports, invoices, and articles from your app as Word files, turn content from your CMS into documents business teams can edit, or generate DOCX files from HTML templates. To go the other way, use the [Word to PDF API](https://apyhub.com/apyhub/service/convert-word-to-pdf) or the [PDF to Word API](https://apyhub.com/apyhub/service/convert-pdf-to-docx). If you need a PDF from HTML instead, use the [HTML to PDF API](https://apyhub.com/apyhub/service/convert-html-to-pdf). You can start on ApyHub's free tier with no card required. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-html-to-docx * * * --- title: Compress Images API slug: compress-images url: https://apyhub.com/apyhub/service/compress-images provider: ApyHub categories: [File Conversion, File Manipulation] tags: [image-compression, image-optimization, reduce-image-size, image-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 30 alias: image-processor-compress --- # Compress Images API Image compression API that shrinks JPEG, PNG, WebP, GIF, TIFF and BMP files by URL or upload up to 100 MB, with a compression level you set per call. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/compress-images/url/download` | What it does Compresses an image fetched from a public URL and returns the compressed file as binar… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/compress-images/url/link` | What it does Compresses an image fetched from a publicly accessible URL and returns a time-limited… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/compress-images/multi-part/download` | What it does Compresses an uploaded raster image and returns the compressed file as a binary downlo… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/compress-images/multi-part/link` | What it does Compresses a raster image uploaded as multipart form data and returns a time-limited s… | 30 | ## Endpoint reference ### Compress image (fetch by URL, download file) `POST https://api.eu.apyhub.com/apyhub/compress-images/url/download` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL of the raster image to compress. Supported formats — JPEG, PNG, WebP, GIF, TIFF, BMP. Hosts without a recognised scheme (http, https, ftp, sftp) receive an https:// prefix aut… | | `output` | query | string | no | Example: `my-compressed`. | | `preserve_format` | query | boolean | no | Default: `false`. | | `compression_percentage` | query | integer | yes | Example: `75`. | #### Quickstart Compress an image from a public URL by sending the image URL in the JSON body and the compression settings as query parameters. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/compress-images/url/download?compression_percentage=75" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.jpg"}' ``` #### What you'll get back Returns the compressed image as a binary file. ### Compress image (fetch by URL, return signed URL) `POST https://api.eu.apyhub.com/apyhub/compress-images/url/link` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL of the raster image to compress. Supported formats — JPEG, PNG, WebP, GIF, TIFF, BMP. Hosts without a recognised scheme (http, https, ftp, sftp) receive an https:// prefix aut… | | `output` | query | string | no | Example: `my-compressed`. | | `preserve_format` | query | boolean | no | Default: `false`. | | `compression_percentage` | query | integer | yes | Example: `75`. | #### Quickstart Compress an image from a public URL and get back a temporary download link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/compress-images/url/link?compression_percentage=75" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.jpg"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a time-limited pre-signed URL to the compressed image. ```json { "data": "https://storage.example.com/compress/my-compressed.png?X-Amz-Signature=def456&X-Amz-Expires=3600" } ``` ### Compress image (multipart upload, download file) `POST https://api.eu.apyhub.com/apyhub/compress-images/multi-part/download` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | yes | Raster image file to compress. Supported formats — JPEG, PNG, WebP, GIF, TIFF, BMP. | | `output` | query | string | no | Example: `my-compressed`. | | `preserve_format` | query | boolean | no | Default: `false`. | | `compression_percentage` | query | integer | yes | Example: `75`. | #### Quickstart Upload one image and get back the compressed file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/compress-images/multi-part/download?compression_percentage=75&output=my-compressed" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.jpg" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the compressed image. ```binary ``` ### Compress image (multipart upload, return signed URL) `POST https://api.eu.apyhub.com/apyhub/compress-images/multi-part/link` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | yes | Raster image file to compress. Supported formats — JPEG, PNG, WebP, GIF, TIFF, BMP. | | `output` | query | string | no | Example: `my-compressed`. | | `preserve_format` | query | boolean | no | Default: `false`. | | `compression_percentage` | query | integer | yes | Example: `75`. | #### Quickstart Compress a raster image from a public link by uploading the image file and setting the compression percentage. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/compress-images/multi-part/link?compression_percentage=75" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.jpg" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a time-limited pre-signed URL for the compressed image. ```json { "data": "https://storage.example.com/compress/my-compressed.jpg?X-Amz-Signature=abc123&X-Amz-Expires=3600" } ``` ## About ## What it does The image compression API reduces the file size of raster images. Send a public image URL or upload the file (up to 100 MB per request), set `compression_percentage` from 1 to 100, and get the compressed image back as a file download or as a time-limited signed URL. It supports JPEG, PNG, WebP, GIF, TIFF and BMP. Set `preserve_format` to `true` to keep the original format, and use `output` to name the result. The four endpoints cover each combination of input and output: URL in or file in, file back or link back. Use the image compression API wherever image weight costs you something. Compress user uploads before they reach storage, shrink product photos for faster catalog and landing pages, reduce attachment size in email and chat workflows, and cut bandwidth for mobile apps on slow connections. A batch job over an existing media library can lower storage and CDN costs without re-shooting a single image. Compression works best as one step in an image pipeline. Resize to the display dimensions first with the [Image Resize API](https://apyhub.com/apyhub/service/resize-image), then compress. For modern web formats, convert with the [JPEG to WebP API](https://apyhub.com/apyhub/service/convert-jpeg-to-webp). When compressed scans or receipts need to become a document, the [Image to PDF API](https://apyhub.com/apyhub/service/convert-image-to-pdf) turns them into a PDF. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/compress-images * * * --- title: Convert PNG to WebP API slug: convert-png-to-webp url: https://apyhub.com/apyhub/service/convert-png-to-webp provider: ApyHub categories: [File Conversion] tags: [conversion, images, png, webp] auth: api_key version: 1.1 service_type: sync endpoints: 4 atoms: 30 alias: image-converter-png-webp --- # Convert PNG to WebP API Convert PNG images to WebP from an upload or a URL. Returns a binary file or a signed result link for web delivery and asset pipelines. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-png-to-webp/multi-part/download` | What it does Converts an uploaded PNG image to WebP and returns the converted file as a binary resp… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/convert-png-to-webp/multi-part/link` | What it does Converts an uploaded PNG image to WebP using a multipart request and returns a JSON ob… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/convert-png-to-webp/url/download` | What it does Converts a PNG image from a publicly accessible URL into a WebP file and returns the c… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/convert-png-to-webp/url/link` | What it does Converts a PNG image from a publicly accessible URL into WebP format. The response ret… | 30 | ## Endpoint reference ### Convert PNG to WebP (multipart, download) `POST https://api.eu.apyhub.com/apyhub/convert-png-to-webp/multi-part/download` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | yes | The source image file in PNG format. Mandatory. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Upload a PNG image to convert it to WebP and download the resulting file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-png-to-webp/multi-part/download" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.png" ``` #### What you'll get back Returns a binary file , which is the converted WebP download. ```text (binary file) ``` ### Convert PNG to WebP (multipart, signed URL) `POST https://api.eu.apyhub.com/apyhub/convert-png-to-webp/multi-part/link` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | yes | The source image file in PNG format. Mandatory. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Upload a PNG file and get back a WebP file link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-png-to-webp/multi-part/link" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.png" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI to the converted file. ```json { "data": "https://example.com/output.webp" } ``` ### Convert PNG to WebP (URL, download) `POST https://api.eu.apyhub.com/apyhub/convert-png-to-webp/url/download` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL of the PNG image to convert. Mandatory. Example: `https://assets.apyhub.com/samples/sample.png`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Convert a PNG from a public URL to WebP by sending the source image URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-png-to-webp/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.png"}' ``` #### What you'll get back Returns binary data: the generated WebP file. ```binary ``` ### Convert PNG to WebP (URL, signed URL) `POST https://api.eu.apyhub.com/apyhub/convert-png-to-webp/url/link` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL of the PNG image to convert. Mandatory. Example: `https://assets.apyhub.com/samples/sample.png`. | | `output` | query | string | no | Example: `my-invite`. | #### Quickstart Convert a publicly accessible PNG by sending its URL in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-png-to-webp/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.png"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the converted WebP file URL. ```json { "data": "https://..." } ``` ## About ## What it does PNG to WebP Converter turns PNG images into WebP files from either an uploaded binary image or a publicly accessible PNG URL. You can receive the converted image as a binary download or as a signed URL, depending on the endpoint you choose. Send a PNG file in the `image` field for multipart requests, or send a source PNG `url` for URL-based requests. In both flows, the optional `output` query parameter lets you set the output name. The service returns either a WebP binary response or an object containing a `data` URI, so it fits both direct download workflows and systems that need a hosted result link. Use PNG to WebP Converter when you need smaller image files for web delivery, asset pipelines, or automated media processing. It is a straightforward format conversion service: provide the source image, get WebP back, and move the result into your storage or application flow. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-png-to-webp * * * --- title: Generate Watermark For Videos API slug: generate-watermark-for-videos url: https://apyhub.com/apyhub/service/generate-watermark-for-videos provider: ApyHub categories: [File Conversion, File Manipulation] tags: [video-watermarking, video-processing, watermark, file-manipulation, media-encoding] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 550 alias: watermark-video --- # Generate Watermark For Videos API Video watermark API: send a video file or URL with text or a logo, set position, size and opacity, and get the video back. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/generate-watermark-for-videos/url/download` | What it does Applies a watermark to a video fetched from a remote URL, then streams the processed v… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/generate-watermark-for-videos/url/link` | What it does Applies a watermark to a remote video URL and returns a signed URL for the processed v… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/generate-watermark-for-videos/file/download` | What it does Applies a watermark to an uploaded video and returns the resulting video as a streamed… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/generate-watermark-for-videos/file/link` | What it does Applies a watermark to an uploaded video and returns a signed URI for the processed vi… | 550 | ## Endpoint reference ### Apply watermark to remote video URL and stream download `POST https://api.eu.apyhub.com/apyhub/generate-watermark-for-videos/url/download` · 550 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `box` | body | string | no | Default: `0`. | | `size` | body | string | no | Example: `1280x720`. | | `gif_loop` | body | boolean | no | Default: `false`. | | `video_url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `watermark_text` | body | string | no | Example: `ApyHub`. | | `watermark_image` | body | string (uri) | no | Remote watermark image URL. Legacy alias watermark_image_url also accepted. Example: `https://assets.apyhub.com/samples/sample.png`. | | `watermark_opacity` | body | string | no | Default: `0.5`. | | `watermark_position` | body | string | no | One of: top_right, top_left, bottom_right, bottom_left, center, bottom_center, top_center, center_left, center_right. Default: `bottom_right`. | | `watermark_font_size` | body | string | no | Default: `24`. | | `watermark_image_url` | body | string (uri) | no | Example: `https://assets.apyhub.com/samples/sample.png`. | | `watermark_font_color` | body | string | no | Example: `#ffffff`. | | `watermark_image_size` | body | string | no | Example: `120x40`. | | `watermark_text_padding` | body | string | no | Default: `10`. | | `watermark_text_background_color` | body | string | no | Example: `#000000`. | #### Quickstart Send a video URL to generate a watermarked video. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-watermark-for-videos/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "video_url": "https://assets.apyhub.com/samples/sample.mp4", "watermark_text": "ApyHub" }' ``` #### What you'll get back Returns the generated video as binary data (`string` with `format: binary`), not JSON. ```bash ``` ### Apply watermark to remote video URL and return signed link `POST https://api.eu.apyhub.com/apyhub/generate-watermark-for-videos/url/link` · 550 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `box` | body | string | no | Default: `0`. | | `size` | body | string | no | Example: `1280x720`. | | `gif_loop` | body | boolean | no | Default: `false`. | | `video_url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `watermark_text` | body | string | no | Example: `ApyHub`. | | `watermark_image` | body | string (uri) | no | Remote watermark image URL. Legacy alias watermark_image_url also accepted. Example: `https://assets.apyhub.com/samples/sample.png`. | | `watermark_opacity` | body | string | no | Default: `0.5`. | | `watermark_position` | body | string | no | One of: top_right, top_left, bottom_right, bottom_left, center, bottom_center, top_center, center_left, center_right. Default: `bottom_right`. | | `watermark_font_size` | body | string | no | Default: `24`. | | `watermark_image_url` | body | string (uri) | no | Example: `https://assets.apyhub.com/samples/sample.png`. | | `watermark_font_color` | body | string | no | Example: `#ffffff`. | | `watermark_image_size` | body | string | no | Example: `120x40`. | | `watermark_text_padding` | body | string | no | Default: `10`. | | `watermark_text_background_color` | body | string | no | Example: `#000000`. | #### Quickstart Send a video URL and a watermark value to generate a watermarked video link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-watermark-for-videos/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "video_url": "https://assets.apyhub.com/samples/sample.mp4", "watermark_text": "ApyHub" }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the URL of the generated watermarked video. ```json { "data": "https://storage.example.com/video-clips/watermarked.mp4?sig=abc" } ``` ### Apply watermark to uploaded video and stream download `POST https://api.eu.apyhub.com/apyhub/generate-watermark-for-videos/file/download` · 550 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `box` | body | integer | no | One of: 0, 1. Default: `0`. | | `size` | body | string | no | Output video scale WxH (even dimensions). Example: `1280x720`. | | `video` | body | string (binary) | yes | Source video (.mp4 .mkv .avi .mov .flv .3gp .webm). Max 500 MiB. | | `gif_loop` | body | string | no | One of: true, false, 0, 1. | | `watermark_text` | body | string | no | Text watermark. Required unless watermark_image is provided. Example: `ApyHub`. | | `watermark_image` | body | string (binary) | no | Image watermark (.jpg .jpeg .png .gif). Required unless watermark_text is provided. | | `watermark_opacity` | body | number | no | Default: `0.5`. | | `watermark_position` | body | string | no | One of: top_right, top_left, bottom_right, bottom_left, center, bottom_center, top_center, center_left, center_right. Default: `bottom_right`. | | `watermark_font_size` | body | integer | no | Default: `24`. | | `watermark_font_color` | body | string | no | Example: `#ffffff`. | | `watermark_image_size` | body | string | no | Example: `120x40`. | | `watermark_text_padding` | body | string | no | Default: `10`. | | `watermark_text_background_color` | body | string | no | Example: `#000000`. | #### Quickstart Upload a video and add a text watermark to get the processed file back. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-watermark-for-videos/file/download" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" \ -F "watermark_text=ApyHub" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) as the downloaded watermarked video. ### Apply watermark to uploaded video and return signed link `POST https://api.eu.apyhub.com/apyhub/generate-watermark-for-videos/file/link` · 550 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `box` | body | integer | no | One of: 0, 1. Default: `0`. | | `size` | body | string | no | Output video scale WxH (even dimensions). Example: `1280x720`. | | `video` | body | string (binary) | yes | Source video (.mp4 .mkv .avi .mov .flv .3gp .webm). Max 500 MiB. | | `gif_loop` | body | string | no | One of: true, false, 0, 1. | | `watermark_text` | body | string | no | Text watermark. Required unless watermark_image is provided. Example: `ApyHub`. | | `watermark_image` | body | string (binary) | no | Image watermark (.jpg .jpeg .png .gif). Required unless watermark_text is provided. | | `watermark_opacity` | body | number | no | Default: `0.5`. | | `watermark_position` | body | string | no | One of: top_right, top_left, bottom_right, bottom_left, center, bottom_center, top_center, center_left, center_right. Default: `bottom_right`. | | `watermark_font_size` | body | integer | no | Default: `24`. | | `watermark_font_color` | body | string | no | Example: `#ffffff`. | | `watermark_image_size` | body | string | no | Example: `120x40`. | | `watermark_text_padding` | body | string | no | Default: `10`. | | `watermark_text_background_color` | body | string | no | Example: `#000000`. | #### Quickstart Upload a video and add a simple text watermark. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-watermark-for-videos/file/link" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" \ -F "watermark_text=ApyHub" ``` #### What you'll get back Returns a JSON object with a `data` string field containing the URL of the generated watermarked video. ```json { "data": "https://storage.example.com/video-clips/watermarked.mp4?sig=abc" } ``` ## About ## What it does The video watermark API burns a text or image overlay into a video. Send the video as an upload or as a `video_url`, add either `watermark_text` or a watermark image, and get the result back as a streamed download or a signed link. Placement is controlled by `watermark_position`, which takes nine values from `top_left` through `center` to `bottom_right`, defaulting to `bottom_right`. Text overlays accept `watermark_font_size`, `watermark_font_color`, `watermark_text_padding` and `watermark_text_background_color`. Image overlays accept `watermark_image_size`. Both honor `watermark_opacity` from 0 to 1, which defaults to 0.5. Uploads take `.mp4`, `.mkv`, `.avi`, `.mov`, `.flv`, `.3gp` and `.webm`. Product teams use the video watermark API to stamp preview clips and review copies so an unreleased cut is recognizable if it travels. Commerce and media platforms brand user-generated uploads on the way in. Social teams mark exported videos before they go out to each channel. These endpoints run synchronously and return the finished video in the response, which fits short clips. For long videos and batch work, the [Video Watermark Job API](https://apyhub.com/apyhub/service/generate-video-watermark) does the same job asynchronously: submit, get a `job_id`, poll for the result. It pairs with the [Video Converter API](https://apyhub.com/apyhub/service/convert-video-formats) when the source arrives in a format your player will not take, and with the [Generate Thumbnail from Video API](https://apyhub.com/apyhub/service/generate-thumbnail-from-video) to produce a poster frame from the watermarked file. All of them are callable by AI agents through ApyHub MCP. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/generate-watermark-for-videos * * * --- title: Validate IFSC API slug: validate-ifsc-bank-code url: https://apyhub.com/apyhub/service/validate-ifsc-bank-code provider: ApyHub categories: [Data Validation, Finance] tags: [ifsc, validate, ifsc-code, bank-validation, india, bank-lookup, finance] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 10 alias: finance-validator-ifsc --- # Validate IFSC API Check any IFSC code and get the bank name, branch, address, city, state, and phone. Verify bank details before saving beneficiaries or sending payouts. Free tier. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/validate-ifsc-bank-code` | What it does Validates an IFSC bank code by accepting an ifsc value in the request body and returni… | 10 | ## Endpoint reference ### Validate an IFSC bank code `POST https://api.eu.apyhub.com/apyhub/validate-ifsc-bank-code` · 10 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `ifsc` | body | string | yes | IFSC code to look up (case-insensitive, 11 characters). Example: `BARB0PAULUD`. | #### Quickstart Look up a bank by its IFSC code. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/validate-ifsc-bank-code" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"ifsc":"BARB0PAULUD"}' ``` #### What you'll get back Returns a JSON object with a `data` field. `data` is either an object with bank details and a `valid` boolean, or `false` when the IFSC is not found or deleted. ```json { "data": { "bank": "Bank of Baroda", "city": "New Delhi", "ifsc": "BARB0PAULUD", "phone": "01123456789", "state": "Delhi", "valid": true, "branch": "Paschim Vihar", "address": "A-1, Paschim Vihar, New Delhi", "std_code": "011" } } ``` ## About ## What it does The IFSC Code API checks whether an Indian bank IFSC code is valid and returns the branch it belongs to. Send an 11-character IFSC code, such as `SBIN0000001`, and get back the bank name, branch, address, city, state, phone number, and STD code. Codes are accepted in upper or lower case. If the code doesn't exist or has been retired, the API returns `false`, so you can stop the flow before a payment or payout fails. Use it to verify beneficiary bank details before saving them, show users the branch name as they type an IFSC code, or clean up bank records in payroll, lending, and payout systems. For international transfers, use the [SWIFT/BIC Validation API](https://apyhub.com/apyhub/service/validate-swift-bic-code), and to check Indian addresses, the [Indian Postcode Validation API](https://apyhub.com/apyhub/service/validate-indian-postcode). You can start on ApyHub's free tier with no card required. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/validate-ifsc-bank-code * * * --- title: Extract Image Metadata API slug: extract-image-metadata url: https://apyhub.com/apyhub/service/extract-image-metadata provider: ApyHub categories: [Data Extraction, File Manipulation] tags: [images, metadata, exif, image-metadata, image-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 30 alias: image-processor-extract-metadata --- # Extract Image Metadata API Read the metadata inside any photo: camera, date taken, GPS location, dimensions, and format. Upload an image or send a URL and get it back as JSON. Free tier. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/extract-image-metadata/multi-part/download` | What it does Uploads an image file and returns extracted ExifTool metadata as JSON. The request bod… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/extract-image-metadata/url/download` | What it does Downloads the image at the provided public URL and returns extracted ExifTool metadata… | 30 | ## Endpoint reference ### input file `POST https://api.eu.apyhub.com/apyhub/extract-image-metadata/multi-part/download` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | yes | Image file to inspect (JPEG, PNG, WebP, TIFF, etc.). | #### Quickstart Upload an image file to extract its metadata. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-image-metadata/multi-part/download" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.jpg" ``` #### What you'll get back Returns a JSON object with a `data` object containing image metadata keyed by ExifTool tag name. The documented fields include items like `FileType`, `MIMEType`, `ImageWidth`, and `ImageHeight`; additional ExifTool tags may also appear depending on the file. ```json { "data": { "FileType": "JPEG", "MIMEType": "image/jpeg", "ImageWidth": 640, "ImageHeight": 427 } } ``` ### input url `POST https://api.eu.apyhub.com/apyhub/extract-image-metadata/url/download` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | no | Publicly accessible image URL. Example: `https://assets.apyhub.com/samples/sample.jpg`. | #### Quickstart Send a public image URL to extract its metadata. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-image-metadata/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.jpg"}' ``` #### What you'll get back Returns a JSON object with a `data` object containing image metadata fields such as `FileName`, `FileType`, `MIMEType`, `ImageWidth`, and `ImageHeight`. The `data` object may include additional ExifTool tags depending on the image. ```json { "data": { "FileName": "sample", "FileType": "JPEG", "MIMEType": "image/jpeg", "ImageWidth": 640, "ImageHeight": 427 } } ``` ## About ## What it does The Image Metadata API reads the information stored inside an image file. Upload a photo or send its URL, and get back its metadata as JSON: format, dimensions, and file size, plus the EXIF details cameras and phones save, such as camera make and model, date taken, orientation, and GPS location when available. It works with JPEG, PNG, WebP, TIFF, and other common formats. Use it to check image dimensions and format before storing uploads, sort a photo library by date or camera, read where a photo was taken, or review what personal information an image contains before publishing it. Photos often include GPS coordinates and device details. To strip them before sharing, use the [Remove Image Metadata API](https://apyhub.com/apyhub/service/remove-image-metadata). For video files, use the [Video Metadata API](https://apyhub.com/apyhub/service/extract-video-metadata). You can start on ApyHub's free tier with no card required. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/extract-image-metadata * * * --- title: Convert HTML to PDF API slug: convert-html-to-pdf url: https://apyhub.com/apyhub/service/convert-html-to-pdf provider: ApyHub categories: [File Conversion] tags: [html-to-pdf, pdf-generation, document-conversion] auth: api_key version: 1.0.0 service_type: sync endpoints: 6 atoms: 100 alias: converter-html-pdf --- # Convert HTML to PDF API HTML to PDF API for invoices, reports and receipts. Send an HTML file, URL or base64 string and get a PDF download or a signed link. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-html-to-pdf/url/link` | What it does Converts a remote HTML file at the given URL into a PDF and returns a signed PDF link.… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-html-to-pdf/base64/download` | What it does Converts a base64-encoded HTML file into a PDF and returns the PDF as a download. The… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-html-to-pdf/base64/link` | What it does Converts a base64-encoded HTML file into a PDF and returns a signed link to the genera… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-html-to-pdf/file/download` | What it does Uploads an HTML file and returns the generated PDF as a binary download. Query Paramet… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-html-to-pdf/file/link` | What it does Converts an uploaded HTML file into a PDF and returns a signed link to the generated P… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-html-to-pdf/url/download` | What it does Converts a remote HTML file accessible by URL into a PDF download. The request accepts… | 100 | ## Endpoint reference ### Convert remote HTML file URL to PDF signed link `POST https://api.eu.apyhub.com/apyhub/convert-html-to-pdf/url/link` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.html`. | #### Quickstart Send the HTML page URL you want to convert to PDF. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-html-to-pdf/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.html"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI for the generated PDF. ```json { "data": "https://example.com/generated.pdf" } ``` ### Convert base64-encoded HTML file to PDF download `POST https://api.eu.apyhub.com/apyhub/convert-html-to-pdf/base64/download` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `base64` | body | string | yes | Base64-encoded file bytes. | | `landscape` | query | boolean | no | Default: `false`. | #### Quickstart Convert base64-encoded HTML into a PDF download with a single JSON request. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-html-to-pdf/base64/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"base64":"PGh0bWw+PGJvZHk+PGgxPkhlbGxvPC9oMT48L2JvZHk+PC9odG1sPg=="}' ``` #### What you'll get back Returns a binary file response (`string` with `format: binary`), which is the generated PDF content. ```text (binary PDF data) ``` ### Convert base64-encoded HTML file to PDF signed link `POST https://api.eu.apyhub.com/apyhub/convert-html-to-pdf/base64/link` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `base64` | body | string | yes | Base64-encoded file bytes. | #### Quickstart Convert a base64-encoded HTML file into a PDF link by sending the encoded bytes in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-html-to-pdf/base64/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"base64":"PGh0bWw+PGJvZHk+SGVsbG8sIHBkZjwvYm9keT48L2h0bWw+"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the generated file URI. ```json { "data": "https://example.com/generated-file.pdf" } ``` ### Convert HTML file upload to PDF download `POST https://api.eu.apyhub.com/apyhub/convert-html-to-pdf/file/download` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | .html | | `output` | query | string | no | Example: `output.pdf`. | | `landscape` | query | boolean | no | Default: `false`. | #### Quickstart Upload an HTML file to download the converted PDF. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-html-to-pdf/file/download" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.html" ``` #### What you'll get back Returns a binary file stream, which is the generated PDF document. ### Convert HTML file upload to PDF signed link `POST https://api.eu.apyhub.com/apyhub/convert-html-to-pdf/file/link` · 100 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `landscape` | query | boolean | no | Default: `false`. | #### Quickstart Upload an HTML file and get back a PDF link; this example also sets the optional `landscape` query flag to `false` by omission. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-html-to-pdf/file/link" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/file.html" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI to the generated PDF. ```json { "data": "https://example.com/generated.pdf" } ``` ### Convert remote HTML file URL to PDF download `POST https://api.eu.apyhub.com/apyhub/convert-html-to-pdf/url/download` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.html`. | | `landscape` | query | boolean | no | Default: `false`. | #### Quickstart Download a PDF from a webpage URL by sending the page link in the JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-html-to-pdf/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.html"}' ``` #### What you'll get back Returns a binary PDF file response. ## About ## What it does The HTML to PDF API converts HTML into PDF documents. Send a remote HTML file `url`, a `base64` string, or upload an `.html` `file` (up to 100MB), and get the result back as a PDF download or as a signed link in `data`. Download endpoints return the PDF bytes for immediate use, and you can name the file with `output` on file uploads. Link endpoints return a shareable URL for storage or email. Set `landscape=true` on most endpoints for wide tables and dashboards. Use it for PDF generation from the HTML templates you already have: invoices, receipts, reports, contracts, certificates and archived snapshots. Render the template in your app, call the HTML to PDF API, and attach or store the result. AI agents can call it through ApyHub MCP to produce documents inside a workflow. Working with a raw HTML string or a live website instead? Use the [HTML String to PDF API](https://apyhub.com/apyhub/service/convert-html-content-to-pdf) or the [Webpage to PDF API](https://apyhub.com/apyhub/service/capture-public-url-as-pdf). Pairs well with the [Convert Markdown to HTML API](https://apyhub.com/apyhub/service/convert-markdown-to-html) before conversion and the [PDF Watermark API](https://apyhub.com/apyhub/service/apply-watermark-on-pdf) after it, to brand or mark documents as drafts. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-html-to-pdf * * * --- title: Generate Thumbnail from Video API slug: generate-thumbnail-from-video url: https://apyhub.com/apyhub/service/generate-thumbnail-from-video provider: ApyHub categories: [File Conversion, File Manipulation] tags: [video-thumbnail, video-frame, video-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 550 alias: thumbnail-from-video --- # Generate Thumbnail from Video API Extract a PNG frame from a video file or URL at any timestamp. Returns binary output or a signed link for previews, galleries, and cards. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/generate-thumbnail-from-video/file/download` | What it does Extracts a single PNG frame from an uploaded video and streams the generated file back… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/generate-thumbnail-from-video/file/link` | What it does Uploads a video file and returns a signed link to a generated PNG frame extracted from… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/generate-thumbnail-from-video/url/download` | What it does Extracts a PNG frame from a remote video URL and returns it as a streamed binary respo… | 550 | | POST | `https://api.eu.apyhub.com/apyhub/generate-thumbnail-from-video/url/link` | What it does Extracts a PNG frame from a remote video URL and returns a signed link to the generate… | 550 | ## Endpoint reference ### Extract PNG frame from upload and stream download `POST https://api.eu.apyhub.com/apyhub/generate-thumbnail-from-video/file/download` · 550 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | Optional output scale WxH. Example: `320x180`. | | `time` | body | integer | no | Frame seek position in seconds. Default: `1`. Example: `3`. | | `video` | body | string (binary) | yes | Video file (.mp4 .mkv .avi .mov .flv .3gp .webm). Max 500 MiB. | #### Quickstart Upload a video file to generate a thumbnail from it. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-thumbnail-from-video/file/download" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" ``` #### What you'll get back Returns the generated thumbnail as a binary file response. ### Extract PNG frame from upload and return signed link (VIT-02) `POST https://api.eu.apyhub.com/apyhub/generate-thumbnail-from-video/file/link` · 550 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | Example: `640x360`. | | `time` | body | integer | no | Default: `1`. | | `video` | body | string (binary) | yes | | #### Quickstart Upload a video file to generate a thumbnail from it. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-thumbnail-from-video/file/link" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" ``` #### What you'll get back Returns a JSON object with a `data` string field containing the generated thumbnail URL. ```json { "data": "https://storage.example.com/video-clips/thumb.png?sig=abc" } ``` ### Extract PNG frame from remote URL and stream download (VIT-03) `POST https://api.eu.apyhub.com/apyhub/generate-thumbnail-from-video/url/download` · 550 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | Example: `320x180`. | | `time` | body | string | no | Default: `1`. Example: `3`. | | `video_url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | #### Quickstart Generate a thumbnail from a video URL by sending the video link in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-thumbnail-from-video/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"video_url":"https://assets.apyhub.com/samples/sample.mp4"}' ``` #### What you'll get back Returns a binary file containing the generated thumbnail image. ### Extract PNG frame from remote URL and return signed link (VIT-04) `POST https://api.eu.apyhub.com/apyhub/generate-thumbnail-from-video/url/link` · 550 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | Example: `320x180`. | | `time` | body | string | no | Default: `1`. Example: `3`. | | `video_url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.mp4`. | #### Quickstart Generate a thumbnail from a video URL by sending the video link and the target thumbnail size. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-thumbnail-from-video/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "video_url": "https://assets.apyhub.com/samples/sample.mp4", "size": "320x180" }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the thumbnail image URL. ```json { "data": "https://storage.example.com/video-clips/thumb.png?sig=abc" } ``` ## About ## What it does Video Thumbnail Generator extracts a PNG frame from a video at a specific timestamp. Send a video file or a remote video URL, choose the seek time in seconds, and optionally set an output size like `320x180` or `640x360`. Use the upload-based endpoints when you already have the media in hand, or the URL-based endpoints when the file is hosted elsewhere. You can choose between a streamed binary image response or a signed URL response, depending on how you want to handle the thumbnail in your app. Video Thumbnail Generator accepts common video formats including `.mp4`, `.mkv`, `.avi`, `.mov`, `.flv`, `.3gp`, and `.webm`. The file-based download endpoint supports uploads up to 500 MiB. The response is a PNG frame, either returned directly as binary data or provided as a signed link in a `data` field. This is useful for generating preview images for video galleries, media upload flows, asset management systems, and content moderation dashboards where a stable frame capture is needed for display or indexing. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/generate-thumbnail-from-video * * * --- title: Extract Text from Word API slug: extract-text-from-word url: https://apyhub.com/apyhub/service/extract-text-from-word provider: ApyHub categories: [Data Extraction, Developer Tools, File Conversion] tags: [word-to-text, docx-to-text, text-extraction, document-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 60 alias: extractor-word-text --- # Extract Text from Word API Convert Word documents to plain text in your app. Send a DOC or DOCX file or URL, and get the text back as JSON, with or without paragraph breaks. Free tier. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/extract-text-from-word/url` | What it does Extracts text from a Word document located at a remote URL and returns the extracted t… | 60 | | POST | `https://api.eu.apyhub.com/apyhub/extract-text-from-word/file` | What it does Uploads a Word document and extracts its text content. The response returns the extrac… | 60 | ## Endpoint reference ### Extract text from Word document at remote URL `POST https://api.eu.apyhub.com/apyhub/extract-text-from-word/url` · 60 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.docx`. | | `preserve_paragraphs` | body | boolean | no | Default: `false`. | #### Quickstart Extract text from a Word document by sending its file URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-text-from-word/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.docx" }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the extracted text from the Word document. ```json { "data": "Sample Word document paragraph one. Sample paragraph two." } ``` ### Extract text from uploaded Word document `POST https://api.eu.apyhub.com/apyhub/extract-text-from-word/file` · 60 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | Word document (.doc or .docx). | | `preserve_paragraphs` | body | string | no | One of: true, false. Default: `false`. | #### Quickstart Upload a Word document to extract its text. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-text-from-word/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.docx" ``` #### What you'll get back Returns a JSON object with a `data` string field containing the extracted text from the Word document. ```json { "data": "Sample Word document paragraph one. Sample paragraph two." } ``` ## About ## What it does The Word to Text API pulls the plain text out of Word documents. Upload a DOC or DOCX file (up to 100 MB) or send the URL of one hosted elsewhere, and get the full text back as a single JSON string. Set `preserve_paragraphs` to `true` to keep paragraph breaks, or leave it off to get the text as one continuous block. Use it to make contracts and reports searchable, feed Word files into AI and analysis pipelines, check uploaded documents before storing them, or convert DOCX files to TXT in bulk. For other document types, use the [Extract Text from PDF API](https://apyhub.com/apyhub/service/extract-text-from-pdf). To get a short summary instead of the full text, use the [AI Summarize Documents API](https://apyhub.com/apyhub/service/summarize-documents). You can start on ApyHub's free tier with no card required. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/extract-text-from-word * * * --- title: "Currency Converter API: Live & Historical Exchange Rates" slug: convert-currency-pair-for-date url: https://apyhub.com/apyhub/service/convert-currency-pair-for-date provider: ApyHub categories: [Finance] tags: [currency-converter, exchange-rates, forex, historical-rates, finance] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 5 alias: currency-conversion --- # Currency Converter API: Live & Historical Exchange Rates Free currency converter API for live and historical exchange rates between any two currencies. Simple JSON for pricing, checkout and invoices. No card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-currency-pair-for-date` | What it does Converts a currency pair for a given date by taking a source currency, a target curren… | 5 | ## Endpoint reference ### Convert currency pair for a date `POST https://api.eu.apyhub.com/apyhub/convert-currency-pair-for-date` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `date` | body | string (date) | no | Defaults to today when omitted or blank. Example: `2026-06-16`. | | `source` | body | string | yes | Example: `usd`. | | `target` | body | string | yes | Example: `eur`. | #### Quickstart Convert a currency pair for a date by sending the source and target currency codes. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-currency-pair-for-date" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "source": "usd", "target": "eur" }' ``` #### What you'll get back Returns a JSON object with a `data` field. The `data` value is either a number with the converted exchange rate or a boolean. ```json { "data": 0.9214 } ``` ## About ## What it does The Currency Converter API returns the exchange rate between two currencies, such as USD to EUR or USD to INR. Send a `source` and `target` currency code in a POST body and get back a JSON object whose `data` field holds the rate. By default you get today's rate. Add an optional `date` in `YYYY-MM-DD` format to get the rate for a past day, which makes it a historical exchange rate API as well. To convert an amount, multiply it by the returned rate. Developers use it to show local prices on pricing pages, convert totals at checkout, stamp invoices with the rate on the invoice date, and rebuild financial reports with the rates that applied at the time. Teams looking for a free currency converter API can start on the free tier. Each request covers one currency pair. When you need several targets at once, the [Multi-Currency Converter API](https://apyhub.com/apyhub/service/convert-currency-to-multiple-currencies) returns them in one call. Pairs well with: the [Currencies Dictionary API](https://apyhub.com/apyhub/service/list-all-currencies) to fill currency pickers with ISO 4217 codes and symbols, and the [Global Pricing Recommendations API](https://apyhub.com/namastesumalya/service/generate-global-pricing-recommendations) to set localized subscription prices before you convert them at checkout. AI agents can call it through ApyHub MCP. > **Note** : Exchange rates are only available from `2024-03-02` ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-currency-pair-for-date * * * --- title: "AI Summarizer API: Summarize Text and Web Pages" slug: ai-summarize-api url: https://apyhub.com/apyhub/service/ai-summarize-api provider: ApyHub categories: [Artificial Intelligence, Smart Generation] tags: [summarization, text-summary, web-page-summary, tldr] auth: api_key version: v1 service_type: sync endpoints: 2 atoms: 1000 alias: ai-summarize --- # AI Summarizer API: Summarize Text and Web Pages Summarization API for text and web pages. Send text or a URL, pick short, medium or long, and get the summary in the language you choose. Free tier. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/ai-summarize-api/text` | What it does Summarizes raw text provided in the JSON request body. Accepts input text, target summ… | 1000 | | POST | `https://api.eu.apyhub.com/apyhub/ai-summarize-api/url` | What it does Fetches and summarizes content directly from a public web page URL. The API extracts a… | 1000 | ## Endpoint reference ### Summarize Text `POST https://api.eu.apyhub.com/apyhub/ai-summarize-api/text` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | yes | | | `summary_length` | body | string | yes | | | `output_language` | body | string | yes | | #### Quickstart Summarize the provided text in the requested language and length. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/ai-summarize-api/text" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"ApyHub provides simple APIs for common developer tasks.","summary_length":"short","output_language":"en"}' ``` #### What you'll get back Returns a JSON object with a data object. The data object contains a summary string with the generated summary. ```json { "data": { "summary": "Artificial intelligence is changing how industries operate." } } ``` ### Summarize URL `POST https://api.eu.apyhub.com/apyhub/ai-summarize-api/url` · 1000 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string | yes | | | `summary_length` | body | string | yes | | | `output_language` | body | string | yes | | #### Quickstart Summarize a webpage by sending its URL, desired summary length, and output language. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/ai-summarize-api/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://example.com/article", "summary_length": "short", "output_language": "en" }' ``` #### What you'll get back Returns a JSON object with a data object. The data object contains a summary string with the generated summary. ```json { "data": { "summary": "Artificial intelligence is changing how industries operate." } } ``` ## About ## What it does The AI Summarizer API turns long content into a short summary. Send raw text or the URL of a web page, choose a short, medium, or long summary, and get it back in the language you need. When you send a URL, the API fetches the page and removes navigation, ads, and other clutter before summarizing, so the summary covers the actual content. Both endpoints return the summary directly in the response. Use it to create article previews and newsletter digests, give support and research teams the gist of long pages, or summarize content in a different language from the original. To summarize PDF or Word files, use the [AI Summarize Documents API](https://apyhub.com/apyhub/service/summarize-documents). You can start on ApyHub's free tier with no card required. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/ai-summarize-api * * * --- title: Generate iCal API slug: generate-ical-event url: https://apyhub.com/apyhub/service/generate-ical-event provider: ApyHub categories: [Developer Tools, Standard Data] tags: [events, ical, ics, calendar-invite, calendar, scheduling] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 50 alias: generator-ical --- # Generate iCal API Create .ics calendar invites in your app. Send event details as JSON & get an iCal file that works in Google Calendar, Outlook & Apple Calendar. Free tier. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/generate-ical-event/download` | What it does Generates an iCal event file for the provided event details and returns it as a binary… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/generate-ical-event/link` | What it does Generates an iCal event file and returns a signed cloud URL to download the resulting… | 50 | ## Endpoint reference ### Generate iCal event — download file `POST https://api.eu.apyhub.com/apyhub/generate-ical-event/download` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | body | string | no | Event UID. Auto-generated if omitted. Example: `evt-2025-001`. | | `all_day` | body | boolean | no | Generate an all-day event. Default: `false`. | | `summary` | body | string | no | Event title. Example: `Team Sync`. | | `end_time` | body | string | no | Time in HH:MM format. Ignored when all_day is true. Example: `10:00`. | | `location` | body | string | no | Event location. Example: `Conference Room A`. | | `sequence` | body | integer | no | iCal SEQUENCE number. Default: `0`. Example: `1`. | | `recurring` | body | boolean | no | Whether the event recurs. Default: `false`. | | `reminders` | body | array of object | no | | | `reminders[].action` | body | string | no | Reminder type. One of: display, email. Default: `display`. | | `reminders[].description` | body | string | no | Reminder message. Default: `Reminder`. | | `reminders[].minutes_before` | body | integer | yes | Minutes before event start the reminder fires. Example: `30`. | | `time_zone` | body | string | no | IANA timezone identifier. Example: `Europe/London`. | | `recurrence.count` | body | integer | no | Number of occurrences. Example: `10`. | | `recurrence.interval` | body | integer | no | How often the recurrence rule repeats. Example: `1`. | | `recurrence.frequency` | body | string | no | iCal FREQ value e.g. DAILY, WEEKLY, MONTHLY, YEARLY. Example: `WEEKLY`. | | `start_time` | body | string | no | Time in HH:MM format. Ignored when all_day is true. Example: `09:00`. | | `description` | body | string | no | Event description. Example: `Weekly team standup`. | | `meeting_date` | body | string | no | Date in DD-MM-YYYY or YYYY-MM-DD format. Example: `15-06-2025`. | | `organizer_email` | body | string (email) | no | Organizer email address. Example: `host@example.com`. | | `attendees_emails` | body | array of string | no | List of attendee email addresses. | | `output` | query | string | no | Override the default download filename (without extension). Example: `my-invite`. | | `event_type` | query | string | no | Use 'cancel' to generate a VCALENDAR METHOD:CANCEL. One of: cancel. | #### Quickstart Generate a downloadable iCal event file from the event details in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-ical-event/download?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "summary": "Team Sync", "description": "Weekly team sync to discuss project updates and action items.", "meeting_date": "2025-06-15", "start_time": "09:00", "end_time": "10:00", "location": "Conference Room A", "time_zone": "Europe/London", "organizer_email": "host@example.com", "attendees_emails": [ "john.doe@example.com", "jane.smith@example.com" ] }' ``` #### What you'll get back Returns a binary file, which is the generated iCal download. ```bash my-invite.ics ``` ### Generate iCal event — return cloud link `POST https://api.eu.apyhub.com/apyhub/generate-ical-event/link` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `id` | body | string | no | Event UID. Auto-generated if omitted. Example: `evt-2025-001`. | | `all_day` | body | boolean | no | Generate an all-day event. Default: `false`. | | `summary` | body | string | no | Event title. Example: `Team Sync`. | | `end_time` | body | string | no | Time in HH:MM format. Ignored when all_day is true. Example: `10:00`. | | `location` | body | string | no | Event location. Example: `Conference Room A`. | | `sequence` | body | integer | no | iCal SEQUENCE number. Default: `0`. Example: `1`. | | `recurring` | body | boolean | no | Whether the event recurs. Default: `false`. | | `reminders` | body | array of object | no | | | `reminders[].action` | body | string | no | Reminder type. One of: display, email. Default: `display`. | | `reminders[].description` | body | string | no | Reminder message. Default: `Reminder`. | | `reminders[].minutes_before` | body | integer | yes | Minutes before event start the reminder fires. Example: `30`. | | `time_zone` | body | string | no | IANA timezone identifier. Example: `Europe/London`. | | `recurrence.count` | body | integer | no | Number of occurrences. Example: `10`. | | `recurrence.interval` | body | integer | no | How often the recurrence rule repeats. Example: `1`. | | `recurrence.frequency` | body | string | no | iCal FREQ value e.g. DAILY, WEEKLY, MONTHLY, YEARLY. Example: `WEEKLY`. | | `start_time` | body | string | no | Time in HH:MM format. Ignored when all_day is true. Example: `09:00`. | | `description` | body | string | no | Event description. Example: `Weekly team standup`. | | `meeting_date` | body | string | no | Date in DD-MM-YYYY or YYYY-MM-DD format. Example: `15-06-2025`. | | `organizer_email` | body | string (email) | no | Organizer email address. Example: `host@example.com`. | | `attendees_emails` | body | array of string | no | List of attendee email addresses. | | `output` | query | string | no | Override the default download filename (without extension). Example: `my-invite`. | | `event_type` | query | string | no | Use 'cancel' to generate a VCALENDAR METHOD:CANCEL. One of: cancel. | #### Quickstart Generate a downloadable iCal file for a meeting by sending the event details in JSON. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-ical-event/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "summary": "Team Sync", "description": "Weekly team sync to discuss project updates and action items.", "meeting_date": "2025-06-15", "start_time": "09:00", "end_time": "10:00", "location": "Conference Room A", "time_zone": "Europe/London", "organizer_email": "host@example.com", "attendees_emails": [ "john.doe@example.com", "jane.smith@example.com" ] }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a pre-signed URL to the generated `.ics` file. ```json { "data": "https://storage.example.com/invite_2025-06-15_abc123.ics?sig=abc123" } ``` ## About ## What it does The ICS Generator API creates calendar invite files (.ics) from event details you send as JSON. Add a title, date, start and end time, time zone, location, organizer, and attendees, and get back an iCal file that people can add to Google Calendar, Outlook, or Apple Calendar with one click. It supports all-day events, recurring events (daily, weekly, monthly, or yearly), and reminders before the event starts. To cancel an event you already sent, generate a cancellation file with the same event `id` and `event_type` set to `cancel`. Use it to attach calendar invites to booking confirmations, demo scheduling emails, webinar registrations, and team reminders. The API creates the file; your app sends it, for example as an email attachment or a download link. To check attendee addresses before sending, use the [Email Validation API](https://apyhub.com/apyhub/service/verify-email-validity-and-deliverability). You can start on ApyHub's free tier with no card required. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/generate-ical-event * * * --- title: Apply Watermark on Images API slug: apply-watermark url: https://apyhub.com/apyhub/service/apply-watermark provider: ApyHub categories: [File Manipulation, Image Processing] tags: [watermark, image-watermark, image-processing, branding] auth: api_key version: 1.0 service_type: sync endpoints: 6 atoms: 60 alias: image-processor-watermark --- # Apply Watermark on Images API Add text or image watermarks to photos from Base64, multipart upload, or URL. Returns binary output or a signed link for branded assets. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/apply-watermark/base64/download` | What it does Applies a watermark to a source image provided as Base64 and returns the processed fil… | 60 | | POST | `https://api.eu.apyhub.com/apyhub/apply-watermark/base64/link` | What it does Applies a watermark to a source image provided as Base64 and returns a JSON object con… | 60 | | POST | `https://api.eu.apyhub.com/apyhub/apply-watermark/multi-part/download` | What it does Applies a watermark to an uploaded image and returns the processed file as binary data… | 60 | | POST | `https://api.eu.apyhub.com/apyhub/apply-watermark/multi-part/link` | What it does Applies a watermark to the provided image and returns a JSON object containing a data… | 60 | | POST | `https://api.eu.apyhub.com/apyhub/apply-watermark/url/download` | What it does Applies a watermark to an image fetched from a URL and returns the processed file as b… | 60 | | POST | `https://api.eu.apyhub.com/apyhub/apply-watermark/url/link` | What it does Applies a watermark to an image fetched from a signed URL. The request body provides t… | 60 | ## Endpoint reference ### Apply watermark (base64 bodies, download) `POST https://api.eu.apyhub.com/apyhub/apply-watermark/base64/download` · 60 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | | | `image_base64` | body | string | no | Required — standard Base64-encoded image bytes. | | `watermark_text` | body | string | no | | | `watermark_angle` | body | string | no | | | `watermark_base64` | body | string | no | | | `watermark_opacity` | body | string | no | | | `watermark_position` | body | string | no | | | `watermark_font_size` | body | string | no | | | `watermark_font_color` | body | array of string | no | | | `watermark_image_size` | body | string | no | | | `watermark_text_padding` | body | string | no | | | `watermark_text_alignment` | body | string | no | | | `watermark_text_line_spacing` | body | string | no | | | `watermark_text_background_color` | body | string | no | | | `output` | query | string | no | Example: `my-invite`. | | `preserve_format` | query | boolean | no | | #### Quickstart Create a watermarked image from a Base64-encoded source image and return the processed file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/apply-watermark/base64/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "image_base64": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII=", "watermark_text": "Confidential" }' ``` #### What you'll get back Returns a binary file containing the generated image. ### Apply watermark (base64 bodies, signed URL) `POST https://api.eu.apyhub.com/apyhub/apply-watermark/base64/link` · 60 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | | | `image_base64` | body | string | no | Required — standard Base64-encoded image bytes. | | `watermark_text` | body | string | no | | | `watermark_angle` | body | string | no | | | `watermark_base64` | body | string | no | | | `watermark_opacity` | body | string | no | | | `watermark_position` | body | string | no | | | `watermark_font_size` | body | string | no | | | `watermark_font_color` | body | array of string | no | | | `watermark_image_size` | body | string | no | | | `watermark_text_padding` | body | string | no | | | `watermark_text_alignment` | body | string | no | | | `watermark_text_line_spacing` | body | string | no | | | `watermark_text_background_color` | body | string | no | | | `output` | query | string | no | Example: `my-invite`. | | `preserve_format` | query | boolean | no | | #### Quickstart Upload a Base64 image and a watermark, then return a watermarked image URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/apply-watermark/base64/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "image_base64": "iVBORw0KGgoAAAANSUhEUgAA...", "watermark_text": "Confidential" }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI for the watermarked image. ```json { "data": "https://example.com/watermarked-image.png" } ``` ### Apply watermark (multipart, download) `POST https://api.eu.apyhub.com/apyhub/apply-watermark/multi-part/download` · 60 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | | | `image` | body | string (binary) | yes | | | `watermark_text` | body | string | no | | | `watermark_angle` | body | string | no | | | `watermark_image` | body | string (binary) | no | | | `watermark_opacity` | body | string | no | | | `watermark_position` | body | string | no | | | `watermark_font_size` | body | string | no | | | `watermark_font_color` | body | string | no | | | `watermark_image_size` | body | string | no | | | `watermark_text_padding` | body | string | no | | | `watermark_text_alignment` | body | string | no | | | `watermark_text_line_spacing` | body | string | no | | | `watermark_text_background_color` | body | string | no | | | `output` | query | string | no | Example: `my-invite`. | | `preserve_format` | query | boolean | no | | #### Quickstart Upload an image and a watermark as multipart form data to generate a watermarked file. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/apply-watermark/multi-part/download" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.jpg" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) — the downloaded watermarked image output. ```binary (binary file content) ``` ### Apply watermark (multipart, signed URL) `POST https://api.eu.apyhub.com/apyhub/apply-watermark/multi-part/link` · 60 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | | | `image` | body | string (binary) | yes | | | `watermark_text` | body | string | no | | | `watermark_angle` | body | string | no | | | `watermark_image` | body | string (binary) | no | | | `watermark_opacity` | body | string | no | | | `watermark_position` | body | string | no | | | `watermark_font_size` | body | string | no | | | `watermark_font_color` | body | string | no | | | `watermark_image_size` | body | string | no | | | `watermark_text_padding` | body | string | no | | | `watermark_text_alignment` | body | string | no | | | `watermark_text_line_spacing` | body | string | no | | | `watermark_text_background_color` | body | string | no | | | `output` | query | string | no | Example: `my-invite`. | | `preserve_format` | query | boolean | no | | #### Quickstart Upload an image and apply a watermark from a public image URL in one request. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/apply-watermark/multi-part/link" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.jpg" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI for the generated file. ```json { "data": "https://example.com/output.jpg" } ``` ### Apply watermark (URL fetch, download) `POST https://api.eu.apyhub.com/apyhub/apply-watermark/url/download` · 60 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | | | `image_url` | body | string (uri) | no | Example: `https://assets.apyhub.com/samples/sample.jpg`. | | `watermark_text` | body | string | no | | | `watermark_angle` | body | string | no | | | `watermark_opacity` | body | string | no | | | `watermark_position` | body | string | no | | | `watermark_font_size` | body | string | no | | | `watermark_image_url` | body | string (uri) | no | Example: `https://assets.apyhub.com/samples/sample.png`. | | `watermark_font_color` | body | array of string | no | | | `watermark_image_size` | body | string | no | | | `watermark_text_padding` | body | string | no | | | `watermark_text_alignment` | body | string | no | | | `watermark_text_line_spacing` | body | string | no | | | `watermark_text_background_color` | body | string | no | | | `output` | query | string | no | Example: `my-invite`. | | `preserve_format` | query | boolean | no | | #### Quickstart Generate a watermarked image from an image URL using a text watermark. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/apply-watermark/url/download?output=my-invite" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "image_url": "https://assets.apyhub.com/samples/sample.jpg", "watermark_text": "Confidential" }' ``` #### What you'll get back Returns the generated file as raw binary data. ### Apply watermark (URL fetch, signed URL) `POST https://api.eu.apyhub.com/apyhub/apply-watermark/url/link` · 60 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | string | no | | | `image_url` | body | string (uri) | no | Example: `https://assets.apyhub.com/samples/sample.jpg`. | | `watermark_text` | body | string | no | | | `watermark_angle` | body | string | no | | | `watermark_opacity` | body | string | no | | | `watermark_position` | body | string | no | | | `watermark_font_size` | body | string | no | | | `watermark_image_url` | body | string (uri) | no | Example: `https://assets.apyhub.com/samples/sample.png`. | | `watermark_font_color` | body | array of string | no | | | `watermark_image_size` | body | string | no | | | `watermark_text_padding` | body | string | no | | | `watermark_text_alignment` | body | string | no | | | `watermark_text_line_spacing` | body | string | no | | | `watermark_text_background_color` | body | string | no | | | `output` | query | string | no | Example: `my-invite`. | | `preserve_format` | query | boolean | no | | #### Quickstart Create a watermarked image from an image URL and return the output URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/apply-watermark/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "image_url": "https://assets.apyhub.com/samples/sample.jpg", "watermark_text": "Confidential" }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the output image URL. ```json { "data": "https://example.com/watermarked-image.jpg" } ``` ## About ## What it does Apply Watermark adds text or image watermarks to an input image and returns the processed file or a signed download link. Send the source image as Base64, multipart upload, or a URL, then choose whether the watermark comes from `watermark_text`, `watermark_base64`, `watermark_image`, or `watermark_image_url`. You can control placement and appearance with fields like `watermark_position`, `watermark_angle`, `watermark_opacity`, `watermark_font_size`, `watermark_font_color`, `watermark_image_size`, and the text spacing and background options. The service also supports `preserve_format` and an `output` name for the generated file. Use Apply Watermark when you need to brand marketing assets, label preview images, protect sample photos, or stamp internal documents before sharing them. The URL-based endpoints let you process remote images directly, while the Base64 and multipart endpoints fit backend workflows that already handle file uploads or encoded content. Choose the download endpoints when you want the transformed image returned as binary data. Choose the link endpoints when your app prefers a signed URL in the response `data` field. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/apply-watermark * * * --- title: Extract Text from PDF API slug: extract-text-from-pdf url: https://apyhub.com/apyhub/service/extract-text-from-pdf provider: ApyHub categories: [Data Extraction, File Manipulation] tags: [pdf-to-text, text-extraction, pdf-processing, pdf-parser] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 50 alias: extractor-pdf-text --- # Extract Text from PDF API PDF to Text API: send a PDF URL or upload a file and get the text back as JSON. Set page ranges or region bounds. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/extract-text-from-pdf/url` | What it does Extracts text from a PDF located at a remote URL and returns the extracted content as… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/extract-text-from-pdf/file` | What it does Uploads a PDF file and extracts text from it. You can optionally limit extraction to a… | 50 | ## Endpoint reference ### submit url: extracted data `POST https://api.eu.apyhub.com/apyhub/extract-text-from-pdf/url` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.pdf`. | | `end_page` | body | integer | no | Default: `0`. | | `start_page` | body | integer | no | Default: `1`. | | `ending_x_coordinate` | body | integer | no | Default: `0`. | | `ending_y_coordinate` | body | integer | no | Default: `0`. | | `preserve_paragraphs` | body | boolean | no | Default: `false`. | | `starting_x_coordinate` | body | integer | no | Default: `0`. | | `starting_y_coordinate` | body | integer | no | Default: `0`. | #### Quickstart Extract text from a PDF by sending its URL in a minimal JSON request. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-text-from-pdf/url" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.pdf"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the extracted text from the PDF. ```json { "data": "Chapter 1. Sample PDF text content extracted from the document." } ``` ### upload file: extracted data `POST https://api.eu.apyhub.com/apyhub/extract-text-from-pdf/file` · 50 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | PDF file (.pdf). | | `end_page` | body | integer | no | Last page (0 = all pages). Default: `0`. | | `start_page` | body | integer | no | Default: `1`. | | `ending_x_coordinate` | body | integer | no | Default: `0`. | | `ending_y_coordinate` | body | integer | no | Default: `0`. | | `preserve_paragraphs` | body | string | no | One of: true, false. Default: `false`. | | `starting_x_coordinate` | body | integer | no | Default: `0`. | | `starting_y_coordinate` | body | integer | no | Default: `0`. | #### Quickstart Upload a PDF file to extract its text. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/extract-text-from-pdf/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.pdf" ``` #### What you'll get back Returns a JSON object with a `data` string field containing the extracted PDF text. ```json { "data": "Chapter 1. Sample PDF text content extracted from the document." } ``` ## About ## What it does The PDF to Text API takes a PDF and returns its text. Send a remote `url` or upload a `file` of up to 100 MB, and the response comes back as a single `data` string in JSON. Two options control what you get. `start_page` and `end_page` limit extraction to a page range, which keeps responses small when you need one section of a long report. The four coordinate parameters (`starting_x_coordinate` through `ending_y_coordinate`) accept values from 0 to 100 and restrict extraction to a region of each page, useful for pulling a header block or a single column. Set `preserve_paragraphs` to true to keep paragraph breaks in the output. Teams use the PDF to Text API to extract text from PDF documents for search indexing, to feed contracts and reports into AI pipelines, to migrate archived content into a CMS, and to run compliance checks across document sets. This endpoint reads the text layer a PDF already carries. For scanned pages and photographed documents, run the [OCR Document Data Extraction API](https://apyhub.com/apyhub/service/extract-read-data) first, then send the result here. It pairs with the [Extract Text from Word API](https://apyhub.com/apyhub/service/extract-text-from-word) when a batch mixes DOC and DOCX files, and with the [Table Extraction API](https://apyhub.com/apyhub/service/extract-table-data) when row and column structure matters. All three are callable by AI agents through ApyHub MCP. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/extract-text-from-pdf * * * --- title: "Word to PDF API: Convert DOC, DOCX, ODT, and RTF" slug: convert-word-to-pdf url: https://apyhub.com/apyhub/service/convert-word-to-pdf provider: ApyHub categories: [File Conversion] tags: [convert, pdf, word] auth: api_key version: 1.0.0 service_type: sync endpoints: 6 atoms: 100 alias: converter-doc-pdf --- # Word to PDF API: Convert DOC, DOCX, ODT, and RTF Word to PDF API: send a DOC, DOCX, ODT, or RTF file, a URL, or a base64 string and get a PDF download or signed link. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-word-to-pdf/base64/link` | What it does Converts a base64-encoded Word document into a PDF and returns a signed link to the ge… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-word-to-pdf/file/download` | What it does Converts an uploaded Word document to a PDF and returns the generated PDF as a binary… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-word-to-pdf/file/link` | What it does Converts an uploaded Word document to a PDF and returns a signed link to the generated… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-word-to-pdf/url/download` | What it does Converts a remote Word document at the provided URL into a PDF and returns the PDF as… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-word-to-pdf/url/link` | What it does Converts a remote Word document available at a URL into a PDF and returns a signed PDF… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-word-to-pdf/base64/download` | What it does Converts a base64-encoded Word document to a PDF and returns the PDF as a binary downl… | 100 | ## Endpoint reference ### submit base64: download file `POST https://api.eu.apyhub.com/apyhub/convert-word-to-pdf/base64/link` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `base64` | body | string | yes | Base64-encoded file bytes. | #### Quickstart Upload a Base64-encoded file and get back a PDF download link. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-word-to-pdf/base64/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "base64": "JVBERi0xLjQKJcfs...example-base64-content..." }' ``` Replace the example `base64` value with the Base64-encoded content of your file. #### What you'll get back Returns a JSON object with a `data` string field containing the download URL for the generated PDF. ```json { "data": "https://example.com/output.pdf" } ``` ### Upload file: download file `POST https://api.eu.apyhub.com/apyhub/convert-word-to-pdf/file/download` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | .doc, .docx, .odt, or .rtf | | `output` | query | string | no | Example: `output.pdf`. | | `landscape` | query | boolean | no | Default: `false`. | #### Quickstart Upload a Word document to convert it to PDF. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-word-to-pdf/file/download?output=output.pdf" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.docx" ``` #### What you'll get back Returns a binary file - the converted PDF document. ### upload file: generated url `POST https://api.eu.apyhub.com/apyhub/convert-word-to-pdf/file/link` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | | | `landscape` | query | boolean | no | Default: `false`. | #### Quickstart Upload a Word file to convert it into a PDF. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-word-to-pdf/file/link?landscape=false" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/document.docx" ``` #### What you'll get back Returns a JSON object with a `data` string field containing the generated PDF URL. ```json { "data": "https://example.com/file.pdf" } ``` ### submit url : download file `POST https://api.eu.apyhub.com/apyhub/convert-word-to-pdf/url/download` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.docx`. | | `landscape` | query | boolean | no | Default: `false`. | #### Quickstart Convert a Word document from a public URL into a PDF. The `url` goes in the JSON body, and the optional `landscape` flag is sent as a query parameter if needed. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-word-to-pdf/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.docx" }' \ -o converted.pdf ``` #### What you'll get back Returns the converted PDF as a binary file response. The example above saves the downloaded file locally as `converted.pdf`. ### submit url: generated url `POST https://api.eu.apyhub.com/apyhub/convert-word-to-pdf/url/link` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.docx`. | #### Quickstart Convert a Word document from a URL into a PDF by sending the document link in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-word-to-pdf/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.docx" }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the generated PDF file URL. ```json { "data": "https://assets.apyhub.com/files/output.pdf" } ``` ### submit base64: download file `POST https://api.eu.apyhub.com/apyhub/convert-word-to-pdf/base64/download` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `base64` | body | string | yes | Base64-encoded file bytes. | | `landscape` | query | boolean | no | Default: `false`. | #### Quickstart Convert a Base64-encoded Word file into a downloadable PDF. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-word-to-pdf/base64/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "base64": "JVBERi0xLjQKJ...example-base64-content..." }' \ -o converted.pdf ``` Replace the example `base64` value with the Base64-encoded content of your Word document. #### What you'll get back Returns the generated PDF as a binary file response. The example above saves the downloaded file locally as `converted.pdf`. ## About ## What it does The **Word to PDF API** converts DOC, DOCX, ODT, and RTF documents into PDFs. Send the document as a multipart `file` upload, a remote `url`, or a `base64` string, and get the PDF back as a binary download or as a signed link in the `data` field of a JSON response. The Word to PDF API has six endpoints, one for each input and output pair. Set `landscape` to `true` for landscape pages on the upload endpoints, the URL download endpoint, and the base64 download endpoint (it defaults to `false`). On the upload download endpoint, `output` sets the PDF filename. Uploads are capped at 100 MB per request. Teams use this DOCX to PDF API to lock generated contracts, invoices, and reports into a fixed layout before sending them, to archive editable drafts, or to add a PDF export button to a document editor. The base64 endpoints fit serverless functions that already hold the file in memory, and the URL endpoints fit files kept in object storage. Each call returns the converted PDF in the same response. To go the other way, the [Convert PDF to Word API](https://apyhub.com/apyhub/service/convert-pdf-to-docx) turns a PDF back into an editable DOCX. Pairs well with: stamp drafts and confidential copies with the [PDF Watermark API](https://apyhub.com/apyhub/service/apply-watermark-on-pdf), or combine several converted files into one document with the [Merge Files to PDF API](https://apyhub.com/apyhub/service/merge-files-to-pdf). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-word-to-pdf * * * --- title: SERP Rank Checker API slug: serp-rankings-for-keyword url: https://apyhub.com/apyhub/service/serp-rankings-for-keyword provider: ApyHub categories: [SEO] tags: [seo, serp, rank] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 250 alias: serp-rank --- # SERP Rank Checker API Rank tracker API for Google: send a keyword, country and language, get each result's position, URL and title as JSON. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/serp-rankings-for-keyword` | What it does Retrieves SERP rankings for a keyword and returns the matching results in the response… | 250 | ## Endpoint reference ### Get SERP rankings for a keyword `POST https://api.eu.apyhub.com/apyhub/serp-rankings-for-keyword` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `size` | body | integer | no | Number of results to return. Default: `10`. Example: `10`. | | `keyword` | body | string | yes | Search keyword or phrase. Example: `fastapi python tutorial`. | | `language` | body | string | no | ISO 639-1 language code (e.g. en, de, fr, ja, zh-cn). Default: `en`. Example: `en`. | | `location` | body | string | no | ISO 3166-1 alpha-2 country code (e.g. us, gb, de, in, au). Default: `us`. Example: `us`. | #### Quickstart Search SERP rankings for a keyword with the required keyword plus the default locale settings. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/serp-rankings-for-keyword" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "keyword": "FastAPI python" }' ``` #### What you'll get back Returns a JSON object with a `data` array field.`data` is an array of result objects, each with fields like `url`, `rank`, `type`, `title`, `domain`, `breadcrumb`, and `description`. ```json { "data": [ { "url": "https://fastapi.tiangolo.com", "rank": 1, "type": "organic", "title": "FastAPI - Modern Python Web Framework", "domain": "fastapi.tiangolo.com", "breadcrumb": "fastapi.tiangolo.com", "description": "FastAPI framework, high performance, easy to learn, fast to code." } ] } ``` ## About ## What it does The **Rank Tracker API** shows where pages rank on Google for any keyword. Send a `keyword`, and optionally a `location` (country code), `language`, and `size` (number of results). You get back a JSON `data` array with each result's `rank`, `url`, `title`, `domain`, `breadcrumb`, and `description`. Each result is labeled by `type`, so organic and sponsored listings stay separate. To track keyword rankings over time, call the rank tracker API on a schedule, daily or weekly, and store the positions. Find your domain in the results to get your position, and see which competitors rank above you. Change `location` and `language` to check the same keyword in other markets. Teams use it as a keyword ranking API and SEO rank API behind rank tracking dashboards, client reports, and alerts when a page drops. It returns the top results for a query; for larger result sets and SERP features, use the [SE Ranking SERP API](https://apyhub.com/se-ranking/service/serp-results-classic). To understand why rankings move, pair it with the [Backlinks API](https://apyhub.com/se-ranking/service/backlinks) and the [Keyword Research API](https://apyhub.com/se-ranking/service/keyword-research), and read the pages that outrank you with the [Extract Text from Webpage API](https://apyhub.com/apyhub/service/extract-visible-text-from-a-webpage). AI agents can also call it through ApyHub MCP. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/serp-rankings-for-keyword * * * --- title: "Student & Academic Email Verification API" slug: check-whether-an-email-belongs-to-an-academic url: https://apyhub.com/apyhub/service/check-whether-an-email-belongs-to-an-academic provider: ApyHub categories: [Data Extraction, Data Validation] tags: [student-email, academic-email, edu-email, email-validation, student-verification] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 15 alias: validator-academic-email --- # Student & Academic Email Verification API Student email verification API: send an email and get true if its domain belongs to a university or college. Gate student discounts. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/check-whether-an-email-belongs-to-an-academic` | What it does Checks whether the submitted email address belongs to an academic institution and retu… | 15 | ## Endpoint reference ### Check whether an email belongs to an academic institution `POST https://api.eu.apyhub.com/apyhub/check-whether-an-email-belongs-to-an-academic` · 15 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `email` | body | string (email) | yes | Example: `user@example.com`. | #### Quickstart Check whether an email belongs to an ACA by sending a single email address. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/check-whether-an-email-belongs-to-an-academic" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"email":"user@example.com"}' ``` #### What you'll get back Returns a JSON object with a `data` boolean field — `true` if the email belongs to an ACA, `false` otherwise. ```json { "data": true } ``` ## About ## What it does The Student Email Verification API tells you whether an email address belongs to a university, college, or other academic institution. Send an email in the POST body and get back a JSON object with a data boolean: true for an academic address, false otherwise. The check runs on the email domain. The email value must be a correctly formatted address, so validate input first when it comes from a free-text field. Use it as an edu email checker to grant student discounts at checkout, offer free or reduced plans to students and academic staff, or limit a beta, hackathon, or campus program to academic sign-ups. Education platforms use it to verify student emails at registration and apply the right plan automatically. The result reflects the domain only. Current enrollment status and mailbox existence need their own checks, such as a confirmation email or a student ID upload. Pairs well with: the Email Validation API to confirm the address is well formed and its domain receives mail, and the Disposable Email Checker API to block throwaway addresses on the same sign-up form. AI agents can call the student email verification API through ApyHub MCP. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/check-whether-an-email-belongs-to-an-academic * * * --- title: Generate Link Preview API slug: generate-link-preview url: https://apyhub.com/apyhub/service/generate-link-preview provider: ApyHub categories: [Data Extraction, SEO] tags: [link-preview, open-graph, metadata-extraction, web-scraping, url-safety] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 50 alias: link-preview --- # Generate Link Preview API Link preview API: send a URL, get the title, description, images, favicon and site name for preview cards, with malicious-URL checks. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/generate-link-preview` | What it does Generates a preview for a URL by fetching the page metadata and returning it in a JSON… | 50 | ## Endpoint reference ### Generate a link preview `POST https://api.eu.apyhub.com/apyhub/generate-link-preview` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string | yes | The URL to generate a preview for. Protocol is optional — http:// is prepended if absent. Example: `https://apyhub.com`. | | `user_agent` | body | string | no | Custom User-Agent header sent when fetching the URL. Example: `Mozilla/5.0 (compatible; MyBot/1.0)`. | | `secure_mode` | body | boolean | no | When true, the URL is checked against the malicious-URL database before fetching. Default: `true`. | | `accept_language` | body | string | no | Custom Accept-Language header sent when fetching the URL. Example: `en-US,en;q=0.9`. | | `allow_redirects` | body | boolean | no | Whether to follow HTTP redirects when fetching the URL. Default: `false`. | | `images_property_type` | body | string | no | Preferred image meta-tag property to extract. Defaults to og. One of: og, twitter. | #### Quickstart Generate a preview for a URL by sending the required `url` field in the JSON body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-link-preview" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://apyhub.com" }' ``` #### What you'll get back Returns a JSON object with a `data` field. On a normal response, `data` is an object containing preview metadata such as `url`, `title`, `images`, `videos`, `favicons`, `siteName`, `mediaType`, `contentType`, `description`, and, when `secure_mode` is true, `reported_malicious`. ```json { "data": { "url": "https://apyhub.com", "title": "ApyHub", "images": ["https://apyhub.com/og-image.png"], "videos": [], "favicons": ["https://apyhub.com/favicon.ico"], "siteName": "ApyHub", "mediaType": "website", "contentType": "text/html", "description": "API tools for developers", "reported_malicious": false } } ``` ## About ## What it does The Link Preview API fetches a URL and returns the metadata you need to build a rich preview card. Send a `url` in a POST body and get back JSON with `title`, `description`, `siteName`, `images`, `videos`, `favicons`, `mediaType`, and `contentType`, read from the page's Open Graph and Twitter Card tags. `secure_mode` is on by default and checks the URL against a malicious-URL database before fetching. Clean URLs return the preview with `reported_malicious: false`, and flagged URLs return the detected `threat` instead of metadata. Set `images_property_type` to `og` or `twitter` to choose which tags supply the image, and pass `user_agent`, `accept_language`, or `allow_redirects` to control how the page is fetched. URLs without a protocol get `http://` added automatically. Use the link preview API to unfurl links in chat apps, comment threads, and social feeds, build bookmark and read-later collections, or show a URL preview before a user leaves your site. The safety check makes it a good fit for user-submitted links. When a page has no preview image, capture one with the [Webpage Screenshot API](https://apyhub.com/apyhub/service/capture-webpage-screenshot). To give your own pages better previews, create social images with the [OG Image Generator API](https://apyhub.com/apyhub/service/generate-og-image). For links to PDFs and documents, the [File Preview API](https://apyhub.com/apyhub/service/generate-png-preview) renders a PNG thumbnail. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/generate-link-preview * * * --- title: "Email Validation API: Check Domains and Block Disposable Emails" slug: verify-email-validity-and-deliverability url: https://apyhub.com/apyhub/service/verify-email-validity-and-deliverability provider: ApyHub categories: [Communications, Data Validation, Marketing] tags: [email-validation, deliverability, mx-check, disposable-email, lead-quality] auth: api_key version: 1.0 service_type: sync endpoints: 1 atoms: 25 alias: validator-dns-email --- # Email Validation API: Check Domains and Block Disposable Emails Email validation API that checks format, MX records, and disposable domains, then returns true or false. Clean sign-ups and lead lists. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/verify-email-validity-and-deliverability` | What it does Verifies whether an email address is valid and deliverable. The request sends an email… | 25 | ## Endpoint reference ### Verify email validity and deliverability `POST https://api.eu.apyhub.com/apyhub/verify-email-validity-and-deliverability` · 25 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `email` | body | string (email) | yes | Example: `user@example.com`. | | `disposable_checks` | body | boolean | no | When true (default), reject known disposable domains before MX verification. Default: `true`. | #### Quickstart Verify an email address and check whether it’s deliverable with the minimum required payload. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/verify-email-validity-and-deliverability" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"email":"user@example.com"}' ``` #### What you'll get back Returns a JSON object with a `data` boolean field — `true` when the email passes verification and deliverability checks, `false` otherwise. ```json { "data": true } ``` ## About ## What it does The Email Validation API checks whether an email address is worth accepting. It confirms the address is correctly formatted, that its domain is set up to receive email, and, by default, that it doesn't come from a disposable email service. You get back a single `true` or `false`. Use it on sign-up forms, contact forms, and newsletter subscriptions to stop typos and throwaway addresses before they reach your database, or run it over imported lead lists to remove addresses that would bounce. Set `disposable_checks` to `false` if you want to accept temporary addresses. The check confirms the domain can receive mail, but not that a specific mailbox exists. For a more detailed view of how likely an address is to receive your messages, use the [Email Deliverability Score API](https://apyhub.com/dosvak/service/email-deliverability-score). You can start on ApyHub's free tier with no card required. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/verify-email-validity-and-deliverability * * * --- title: Generate Image Thumbnails API slug: generate-thumbnail url: https://apyhub.com/apyhub/service/generate-thumbnail provider: ApyHub categories: [File Manipulation] tags: [thumbnail, image-resize, image-processing] auth: api_key version: 1.0 service_type: sync endpoints: 4 atoms: 30 alias: image-processor-thumbnail --- # Generate Image Thumbnails API Create thumbnails from an uploaded image or image URL. Set the width and height, then get binary output or a signed URL back. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/generate-thumbnail/multi-part/link` | What it does Generates a thumbnail from an uploaded image file and returns a JSON object containing… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/generate-thumbnail/url/download` | What it does Downloads an image from a URL and generates a thumbnail using the width and height que… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/generate-thumbnail/url/link` | What it does Generates a thumbnail from a source image URL. The request sends the image URL in the… | 30 | | POST | `https://api.eu.apyhub.com/apyhub/generate-thumbnail/multi-part/download` | What it does Generates a thumbnail from an uploaded image and returns the resulting file as binary… | 30 | ## Endpoint reference ### Generate thumbnail (multipart, signed URL) `POST https://api.eu.apyhub.com/apyhub/generate-thumbnail/multi-part/link` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | no | | | `width` | query | integer | yes | | | `height` | query | integer | yes | | | `output` | query | string | no | Example: `my-invite`. | | `preserve_format` | query | boolean | no | | | `auto_orientation` | query | boolean | no | | #### Quickstart Generate a thumbnail from an image URL with the required dimensions. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-thumbnail/multi-part/link?width=800&height=600" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.jpg" ``` #### What you'll get back Returns a JSON object with a `data` string field containing the generated thumbnail URL. ```json { "data": "https://example.com/thumbnail.png" } ``` ### Generate thumbnail (URL fetch, download) `POST https://api.eu.apyhub.com/apyhub/generate-thumbnail/url/download` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | no | Example: `https://assets.apyhub.com/samples/sample.jpg`. | | `width` | query | integer | yes | | | `height` | query | integer | yes | | | `output` | query | string | no | Example: `my-invite`. | | `preserve_format` | query | boolean | no | | | `auto_orientation` | query | boolean | no | | #### Quickstart Download a thumbnail from a URL by sending the image URL in the JSON body and the required `width` and `height` as query parameters. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-thumbnail/url/download?width=200&height=200" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.jpg"}' ``` #### What you'll get back Returns the thumbnail as a binary response body (`string` with `format: binary`), not JSON. ```text ``` ### Generate thumbnail (URL fetch, signed URL) `POST https://api.eu.apyhub.com/apyhub/generate-thumbnail/url/link` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | no | Example: `https://assets.apyhub.com/samples/sample.jpg`. | | `width` | query | integer | yes | | | `height` | query | integer | yes | | | `output` | query | string | no | Example: `my-invite`. | | `preserve_format` | query | boolean | no | | | `auto_orientation` | query | boolean | no | | #### Quickstart Generate a thumbnail from a source image URL by passing the image URL in the JSON body and the thumbnail size as query parameters. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-thumbnail/url/link?width=300&height=200" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://assets.apyhub.com/samples/sample.jpg"}' ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI to the generated thumbnail. ```json { "data": "https://example.com/thumbnail.jpg" } ``` ### Generate thumbnail (multipart, download) `POST https://api.eu.apyhub.com/apyhub/generate-thumbnail/multi-part/download` · 30 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `image` | body | string (binary) | no | | | `width` | query | integer | yes | | | `height` | query | integer | yes | | | `output` | query | string | no | Example: `my-invite`. | | `preserve_format` | query | boolean | no | | | `auto_orientation` | query | boolean | no | | #### Quickstart Download a thumbnail image from a source image by providing its URL and the required size. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/generate-thumbnail/multi-part/download?width=300&height=200" \ -H "apy-token: $APY_TOKEN" \ -F "image=@/path/to/image.jpg" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the generated thumbnail image. ## About ## What it does Thumbnail Generator creates a thumbnail from an uploaded image or a remote image URL. Send `image` in a multipart request or `url` in the JSON body, and set `width` and `height` in the query string to control the output size. Use `output` when you want a named file, and `preserve_format` if you need to keep the original image format. `auto_orientation` helps correct images with orientation metadata before the thumbnail is generated. The service supports both direct downloads and signed URL responses, so you can fit it into batch jobs or browser-driven workflows. The response is intentionally simple. Depending on the endpoint, you either get binary thumbnail data or a JSON object with a `data` URI. That makes it easy to plug into upload flows, CMS pipelines, product galleries, or user-generated content moderation screens where you need a smaller preview version fast. If you are resizing images for listings, previews, or email attachments, Thumbnail Generator gives you a consistent way to turn a source image into a smaller, usable thumbnail without adding image processing logic to your app. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/generate-thumbnail * * * --- title: Compress Video Job API slug: compress-video-job url: https://apyhub.com/apyhub/service/compress-video-job provider: ApyHub categories: [File Conversion, File Manipulation] tags: [compress, job, video] auth: api_key version: 1.0 service_type: job endpoints: 3 atoms: 5-400 alias: job-compress-video --- # Compress Video Job API Compress large videos from a file upload or URL as a background job. Poll for status and get a downloadable output when processing succeeds. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/compress-video-job/file-to-json` | What it does Submits a video file for compression as an asynchronous job and returns a job identifi… | 400 | | GET | `https://api.eu.apyhub.com/apyhub/compress-video-job/jobs/:job_id` | What it does Checks the status of a video compression job by job ID and returns the job record in a… | 5 | | POST | `https://api.eu.apyhub.com/apyhub/compress-video-job/url-to-json` | What it does Submits a video compression job using a source video URL and returns a job identifier… | 400 | ## Endpoint reference ### Submit file `POST https://api.eu.apyhub.com/apyhub/compress-video-job/file-to-json` · 400 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `video` | body | string (binary) | yes | Source video file. | | `compression_percentage` | body | string | no | Integer 0–100. Omitted or empty defaults to 50. Invalid non-numeric or out-of-range values return 400. | | `persistent` | query | boolean | no | | #### Quickstart Upload a video file to start a compression job and get back a job ID. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/compress-video-job/file-to-json" \ -H "apy-token: $APY_TOKEN" \ -F "video=@/path/to/video.mp4" ``` #### What you'll get back Returns a JSON object with a required `job_id` string field containing the job identifier for status polling. ```json { "job_id": "550e8400-e29b-41d4-a716-446655440000" } ``` ### Check video compression job status `GET https://api.eu.apyhub.com/apyhub/compress-video-job/jobs/:job_id` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `job_id` | path | string (uuid) | yes | | #### Quickstart Check the status of a video compression job by its job ID. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/compress-video-job/jobs/:job_id" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` object. That `data` object can include `job_id` and `status` for every response, and `url` and `message` when available. ```json { "data": { "job_id": "550e8400-e29b-41d4-a716-446655440000", "status": "successful", "url": "https://assets.apyhub.com/samples/sample.mp4" } } ``` ### Submit url `POST https://api.eu.apyhub.com/apyhub/compress-video-job/url-to-json` · 400 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `video_url` | body | string (uri) | yes | HTTP(S) URL of the source video to download and compress. Example: `https://assets.apyhub.com/samples/sample.mp4`. | | `compression_percentage` | body | string | no | Integer 0–100 as a string. Omitted or empty defaults to 50. Maps to FFmpeg CRF 30 + (percentage / 4). | | `persistent` | query | boolean | no | | #### Quickstart Submit a video URL to start an async compression job. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/compress-video-job/url-to-json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "video_url": "https://assets.apyhub.com/samples/sample.mp4", "compression_percentage":"50" }' ``` #### What you'll get back Returns a JSON object with a `job_id` string field — the UUID job identifier you can use for status polling. ```json { "job_id": "550e8400-e29b-41d4-a716-446655440000" } ``` ## About ## What it does Video Compressor compresses a video file asynchronously and gives you a job ID for polling the result. Send either a source video file or a source video URL, choose an optional `compression_percentage` from 0 to 100, and check the job until the compressed file is ready. Use `POST /file-to-json` when you already have the video as multipart upload, or `POST /url-to-json` when the source lives at an HTTP(S) URL. If you omit `compression_percentage`, the job defaults to 50. Both submission endpoints return a UUID `job_id` immediately, without wrapping it in `data`. Poll `GET /jobs/:job_id` to read the job status. The response includes `job_id` and `status`, where `status` is `pending`, `successful`, or `failed`. When the job succeeds, the response also includes a presigned or CDN `url` to the output video. Failed and pending jobs include a human-readable `message`. Video Compressor is a good fit for upload pipelines, media libraries, and workflows that need smaller video files before storage or delivery. Use it to reduce bandwidth, speed up playback, or prepare assets for downstream processing. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/compress-video-job * * * --- title: WAV to MP3 Converter API slug: convert-wav-to-mp3 url: https://apyhub.com/apyhub/service/convert-wav-to-mp3 provider: ApyHub categories: [Audio Processing, File Conversion, File Manipulation] tags: [wav-to-mp3, audio-conversion, mp3, audio-processing] auth: api_key version: 1.0.0 service_type: sync endpoints: 4 atoms: 100 alias: audio-converter-wav-mp3 --- # WAV to MP3 Converter API WAV to MP3 API: upload a WAV file or send its URL and get back an MP3 file or a signed link. Shrink recordings for storage. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-wav-to-mp3/multi-part/download` | What it does Converts an uploaded WAV audio file to MP3 and returns the converted audio as a binary… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-wav-to-mp3/multi-part/link` | What it does Converts an uploaded WAV file to MP3 and returns a signed link to the converted audio.… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-wav-to-mp3/url/download` | What it does Converts a WAV audio file fetched from a public URL into MP3 and returns the converted… | 100 | | POST | `https://api.eu.apyhub.com/apyhub/convert-wav-to-mp3/url/link` | What it does Converts a WAV audio file fetched from a publicly accessible URL into MP3 and returns… | 100 | ## Endpoint reference ### Convert WAV to MP3 (multipart upload, stream download) `POST https://api.eu.apyhub.com/apyhub/convert-wav-to-mp3/multi-part/download` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | WAV audio file to convert (max 100 MB). | | `output` | query | string | no | Example: `converted-audio`. | #### Quickstart Convert a WAV file to MP3 by uploading the audio file and choosing an output name. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-wav-to-mp3/multi-part/download?output=converted-audio" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/audio.wav" ``` #### What you'll get back Returns a binary file (`string` with `format: binary`) containing the converted MP3 audio. ```binary ``` ### Convert WAV to MP3 (multipart upload, return signed link) `POST https://api.eu.apyhub.com/apyhub/convert-wav-to-mp3/multi-part/link` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | WAV audio file to convert (max 100 MB). | #### Quickstart Upload a WAV file to get back a link to the converted MP3. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-wav-to-mp3/multi-part/link" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/audio.wav" ``` #### What you'll get back Returns a JSON object with a `data` string field containing a URI to the generated MP3 file. ```json { "data": "https://storage.example.com/audio/output.mp3?sig=abc" } ``` ### Convert WAV to MP3 (fetch by URL, stream download) `POST https://api.eu.apyhub.com/apyhub/convert-wav-to-mp3/url/download` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL of the source WAV audio file. Example: `https://assets.apyhub.com/samples/sample.wav`. | | `output` | query | string | no | Example: `converted-audio`. | #### Quickstart Convert a WAV file from a public URL to MP3 by sending the source file URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-wav-to-mp3/url/download" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.wav" }' ``` #### What you'll get back Returns the converted MP3 as a binary file response. The example above saves the file locally as converted.mp3. ### Convert WAV to MP3 (fetch by URL, return signed link) `POST https://api.eu.apyhub.com/apyhub/convert-wav-to-mp3/url/link` · 100 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Publicly accessible URL of the source WAV audio file. Example: `https://assets.apyhub.com/samples/sample.wav`. | #### Quickstart Convert a public WAV file to MP3 by sending its URL. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-wav-to-mp3/url/link" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "url": "https://assets.apyhub.com/samples/sample.wav" }' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the MP3 file URL. ```json { "data": "https://storage.example.com/audio/output.mp3?sig=abc" } ``` ## About ## What it does The WAV to MP3 API converts WAV audio into MP3, a much smaller file that plays on almost any device or browser. Send a WAV as a binary `file` upload (up to 100 MB) or pass the `url` of a WAV hosted elsewhere. You get back the MP3 as a binary response, or a signed link in `data` that you can store or share. Four endpoints cover both inputs and both outputs. Use the upload endpoints for files already in your app and the URL endpoints for audio in cloud storage or on another server. The download endpoints stream the MP3 back in the same call and accept an optional `output` query parameter to name the file. The link endpoints suit backends that fetch results later. Teams use this WAV to MP3 converter to shrink call and voice recordings before archiving them, prepare podcast and interview audio for web and mobile playback, and standardize uploads in a media pipeline. It also replaces an FFmpeg WAV to MP3 step on your own servers, so there is no encoder to install or maintain. AI agents can call the WAV to MP3 API through ApyHub MCP. Pairs well with: transcribe the original WAV with the [Convert Speech to Text API](https://apyhub.com/apyhub/service/transcribe-speech-to-text) before compressing it, pull the soundtrack out of a video with the [Audio Extractor from Video API](https://apyhub.com/apyhub/service/extract-audio-from-video), or go the other way with the [MP3 to WAV Converter API](https://apyhub.com/apyhub/service/mp3-to-wav-conversion). ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-wav-to-mp3 * * * --- title: Convert Markdown to HTML content API slug: convert-markdown-to-html url: https://apyhub.com/apyhub/service/convert-markdown-to-html provider: ApyHub categories: [Developer Tools, File Conversion] tags: [markdown-to-html, markdown, html, content-rendering] auth: api_key version: 1.1.0 service_type: sync endpoints: 2 atoms: 50 alias: md-content-html --- # Convert Markdown to HTML content API Convert Markdown from a JSON body or raw text input into HTML. Built for rendered content in docs sites, CMS platforms, and publishing flows. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-markdown-to-html/json/raw` | What it does Converts the Markdown string you send in the request body into a raw HTML stream. The… | 50 | | POST | `https://api.eu.apyhub.com/apyhub/convert-markdown-to-html/raw/json` | What it does Converts a raw Markdown string sent in the request body into HTML and returns the conv… | 50 | ## Endpoint reference ### Convert JSON Markdown content to raw HTML stream `POST https://api.eu.apyhub.com/apyhub/convert-markdown-to-html/json/raw` · 50 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `content` | body | string | yes | Markdown string to convert. Mandatory. Example: `# Title Body text.`. | #### Quickstart Convert a Markdown string into HTML by sending the required `content` field as JSON. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-markdown-to-html/json/raw" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"content":"# Title\n\nBody text."}' ``` #### What you'll get back Returns a binary response containing the generated HTML output. ### Convert raw text/plain Markdown body to HTML JSON envelope `POST https://api.eu.apyhub.com/apyhub/convert-markdown-to-html/raw/json` · 50 atoms · accepts `text/plain` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `body` | body | string | yes | | #### Quickstart Convert Markdown to HTML by sending the markdown text in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-markdown-to-html/raw/json" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: text/plain" \ --data-binary $'# Hello world\n\nThis is **bold** markdown.' ``` #### What you'll get back Returns a JSON object with a `data` string field containing the converted HTML, without newlines. ```json { "data": "

Hello world

This is bold markdown.

" } ``` ## About ## What it does Markdown to HTML converts Markdown text into HTML, so you can render user-authored content in your app, CMS, or documentation pipeline. Send either a Markdown string in the `body.content` field or raw `text/plain` Markdown in the request body. The service returns the converted HTML as a binary stream on `/json/raw`, or as a JSON envelope containing a `data` field on `/raw/json`. Both endpoints are built for the same core task: turning Markdown into HTML output you can store, render, or pass to another step. Use Markdown to HTML when you need to accept lightweight formatted text from editors, support articles, README content, or message templates and publish it as HTML. It fits neatly into content workflows where authors write Markdown but your frontend or downstream system expects HTML. The responses are intentionally simple. You get the converted HTML string, with no extra metadata or transformation fields to map. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-markdown-to-html * * * --- title: Extract Text from Webpage API slug: extract-visible-text-from-a-webpage url: https://apyhub.com/apyhub/service/extract-visible-text-from-a-webpage provider: ApyHub categories: [Data Extraction, SEO] tags: [extract, text, webpage] auth: api_key version: 1.0.0 service_type: sync endpoints: 2 atoms: 30 alias: extractor-webpage-text --- # Extract Text from Webpage API Send a URL and get back the visible text of the page as plain text, one string or line by line. Built for LLM input, search indexing and SEO checks. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | GET | `https://api.eu.apyhub.com/apyhub/extract-visible-text-from-a-webpage` | What it does Extracts the visible text from a webpage given its URL and returns it as a single stri… | 30 | | GET | `https://api.eu.apyhub.com/apyhub/extract-visible-text-from-a-webpage/split` | What it does Extracts the visible text from the webpage at the given URL and returns it as an array… | 30 | ## Endpoint reference ### Extract visible text from a webpage (single string) `GET https://api.eu.apyhub.com/apyhub/extract-visible-text-from-a-webpage` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string (uri) | yes | | | `preserve_paragraphs` | query | boolean | no | Default: `false`. | #### Quickstart Fetch the visible text from a webpage by passing its URL as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/extract-visible-text-from-a-webpage?url=https://apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` string field containing the extracted visible text from the webpage. ```json { "data": "Use Cases E-Commerce File Conversions File Manipulations AI and ML Security Low and No Code HR Automation Marketing and SEO Web Parsing and Data Extraction API Catalog API Provider Certification Pricing Enterprise Blog Log in Start for Free The API Marketplace Built for Developers and AI Agents Certified APIs for devs and teams focused on automating complex tasks, extracting valuable insights, and scaling fast. Search APIs Discover APIs List your API Trending APIs Language Detection API Data Extraction Detect 50+ languages with the Language Detection API. Automate multilingual routing, compliance, and content processing reliably. ApyHub 4.6 (137) • 50 Atoms Generate QR Code API E-commerce Quick Tools Generate QR codes with the Generate QR Code API. Encode URLs, WiFi credentials, and contact info for apps, marketing, and automation workflows. ApyHub 4.0 (68) • 30 Atoms Convert Currency to Multiple Currencies API E-commerce Quick Tools Easily convert currencies across multiple markets with this API. Streamline your finance, billing, and reporting workflows, and scale your eCommerce operations globally with automation. ApyHub 4.6 (139) • 100 Atoms Extract Text from Webpage API Data Extraction Extract text from webpages using the Extract Text from Webpage API. Automate scraping, keyword analysis, and content aggregation. ApyHub 4.7 (144) • 30 Atoms AI Summarize API Artificial Intelligence Summarize any text or webpage instantly using the AI Summarize API. Get concise insights on articles, documents, and reports for faster reading, research, and content creation. ApyHub 4.7 (184) • 2.6K Atoms Country Information API Standard Data Retrieve country data with the Country Information API. Access flags, states, currencies, and calling codes for apps, dashboards, or analytics. ApyHub 4.7 (129) • 5 Atoms Browse all APIs Trusted by developers and teams worldwide Developers from startups to large enterprises rely on ApyHub to access, test, and connect to different APIs quickly. Our platform helps them and their teams save time, reduce development complexity, and bring innovative applications to market faster. Here's what some developers have to say about their experience with the ApyHub APIs. \"Using ApyHub for explicit content detection—text, image, video. Simple to integrate. Precise results.\" Yoram Kornatzky Software Engineer and Founder, Auctibles \"ApyHub's Convert Currency to Multiple Currencies API (developed at our suggestion) has helped us sell our SHADE SAILS all over the world. We use several other apps. Their APIs are very good, and support is excellent.\" Roland Sharman Technology Director, Sail Shade World Pty Ltd \"The API is user-friendly, fast, and efficient. Highly recommended.\" Mathe Zsolt Owner, Soldigo \"I love ApyHub. It's simple to use and has all the functionality I need! 😄😄\" Hayden Kong Owner, PixelVerseAI \"The many API options and customer service help keep my workflows running smoothly.\" Ryan Hidden CEO and Founder, Hidden Digital AI-X \"We specialize in no-code development, and the APIs cover all the parts that cannot be handled by no-code alone. Plus, they save a huge amount of time since we don't have to develop everything from scratch!\" Okuma Owner, EPICs LLC \"We use ApyHub's APIs for our software development, saving many hours of otherwise developing and maintaining them ourselves. This lets us focus on our core AI chat and messaging solutions for tour operators!\" Vic CTO, Align Systems \"We are using the SERP API mainly for internal use within the company's daily operations. The API is very fast and integrates nicely with the rest of our codebase. The documentation is well done as well.\" Rifki Salim CTO, Bressenden Group \"ApyHub has been very helpful in allowing us to offer the tech we want at a very reasonable cost.\" Dave Lavinsky President and Managing Partner, PlanPros.ai \"We are using ApyHub's PDF watermarking utility API to imprint the email address of the learner on all (downloadable) learning assets.\" Niels van Rikxoort Product Owner, DASA Hub \"The idea is great, the packages are great. There are on their path to becoming the defacto api company.\" Alexandru Ifrim code.execute() \"This is a brilliant proposition for developers and software teams. The proposition seems to not only target developers efficiency, but also caters to API performance and analytics in a transparent fashion!\" Sukhbir Jasuja Tech Entrepreneur \" If you are looking for a reliable and efficient way to leverage 3rd party services, ApyHub is definitely the way to go.\" Rajal Shah \"Holy mother of APIs. I LOVE THIS. Bookmarked, definitely going to use if for our web3 app. Why's the free plan so generous? Is there a roadmap anywhere?\" Ilija Rolović CEO @Belter Labs \"ApyHub is a great platform with a user-friendly interface that streamlines API management and integration processes. The documentation is super helpful. Highly recommended!\" Shankhanil Borthakur Software Engineer How ApyHub Works We have simplified the developer experience so that developers can focus on building actual products, not infrastructure. ApyHub centralizes everything: from API discovery to integration, monitoring, and security, helping developers streamline their workflows and reduce repetitive tasks. API Marketplace with 200+ APIs ApyHub has APIs for different use cases including AI, Ecommerce, Web Scraping, HR Automation, File handling and more. View Catalog → Publish and Monetize Your APIs Have your own API and want to make it known to the world? Publish it in the marketplace. Learn More → Custom API Development and AI Lab Enterprise solutions that include custom API development, third party service certifications and API lifecycle management, all in one place. Learn More → Features and Benefits 🤖 Simplify AI Integration Offload non-core features with AI-powered APIs, reducing bugs and improving overall application stability. With ready-to-use, trusted AI APIs, developers experience 30-40% fewer errors and faster implementation. This allows you and your team to focus on core functionality and building unique application features. view more 🚀 Accelerate Development and Time-to-Market Speed up development with plug-and-play APIs. By integrating pre-built solutions, you can expect to cut integration time by up to 50%, reduce operational costs, and shorten product-to-market cycles. Bring your ideas to life faster without sacrificing quality or performance. view more 🌐 One Platform for All Your API Needs Access 200+ APIs across various industries from a single, centralized marketplace. Instead of sourcing APIs individually, developers can quickly explore categories, read documentation, and integrate APIs seamlessly. This approach saves time and ensures your applications leverage reliable, high-quality services. view more 🛡️ Ensure Uncompromising Security and Data Sovereignty ApyHub raises the bar on compliance with the Service Certification Program. ApyHub delivers standardized, transparent, machine readable data on every API's data policies including storage locations, third-party services & compliance certifications (GDPR, SOC 2, ISO 27001). This transparency empowers developers to build compliant applications, faster. view more 💵 List & Monetize Your API Publish your APIs to the ApyHub API marketplace and start generating revenue. Reach thousands of developers, manage subscriptions, and monetize your APIs while maintaining control over usage and performance. Turn your APIs into a source of income without additional overhead. view more 📈 Centralized API Management & Monitoring Manage API interactions efficiently with full visibility into usage, performance, and costs—all in one dashboard. Consolidating management and monitoring saves time, helps detect issues early, and enables developers to optimize workflows while focusing on building valuable features. view more Build fast without sacrificing security Why build from scratch when you can plug into production-ready, secure APIs instantly? 93% Less code to maintain for common utilities 200+ Production-ready APIs available immediately 24/7 Monitoring and maintenance included 99.99% Services uptime guaranteed Certified APIs with GDPR, SOC2 and more. Start for free APIs for various use cases 200+ APIs organized into intuitive categories that cover all your development needs. From AI and machine learning to finance, analytics, and productivity tools, we want to make it easy for developers to find the APIs they need. Quickly explore, test, and integrate APIs to accelerate your projects and reduce overall development time. Artificial Intelligence Integrate AI capabilities like machine learning, NLP, predictive analytics, and intelligent automation directly into your applications. These APIs allow developers to add AI functionality to dashboards, chatbots, recommendation engines, or automated workflows, enabling smarter features without building models from scratch. Extract and Translate Article Content from Web Page API Extract and Compare Multiple Articles from Web Pages API Generate Keyword Clusters API Extract and Analyze Content from Web Page API Extract and Generate Editorial Digest from Multiple Web Pages API View More Data Extraction Use data extraction APIs to scrape, parse, and structure data from websites, documents, PDFs, and text files. Developers can populate analytics dashboards, feed content pipelines, or power research tools, reducing manual effort and accelerating insights. Convert HTML to Markdown API Extract Contact Information API Extract Product Information API Extract Article From Web API Generate Keyword Clusters API View More Data Validation Ensure accurate and reliable data with data validation APIs for emails, URLs, phone numbers, and other critical information. Developers can integrate validation into registration forms, CRMs, and marketing platforms to prevent errors, maintain clean datasets, and improve data quality. Validate File Type API Webpage Technical Performance Audit API Advanced Website Similarity Analysis API Security Header Full Audit API Market Trends and Growth Forecasting API View More E-commerce Quick Tools Enhance e-commerce applications with APIs for currency conversion, product recommendations, pricing, and cart optimization. Developers can integrate these APIs into checkout flows, recommendation engines, and pricing calculators to improve operations, increase conversions, and enhance the user experience. Generate Image Thumbnails API Generate Product Introduction API Generate QR Code API Generate Barcode API Validate Academic Email API View More File Conversion Simplify file workflows with file conversion APIs for developers. Convert documents, PDFs, spreadsheets, and images reliably, enabling content management systems, automation workflows, and cross-platform applications to handle files efficiently without building custom conversion tools. Convert XML to JSON API Convert XML to CSV API Convert JSON to XML API Advanced Webpage to PDF API Convert and Format raw HTML to PDF API View More File Manipulation Manipulate files programmatically with file manipulation APIs. Developers can edit, merge, split, resize, or annotate documents and images, integrating these APIs into document editors, automation tools, or content management platforms to save time and streamline workflows. Generate Image Thumbnails API Apply Watermark on Images API Compress Images API Crop Images API Resize Images API View More File Security Secure sensitive data using file security APIs. Developers can encrypt, decrypt, control access, and enable secure sharing within cloud storage apps, SaaS platforms, or enterprise systems, ensuring confidentiality, compliance, and data integrity. Temporary and Disposable emails API Generate Secure Archives API Apply Watermark on Images API Apply Footers on PDF API Apply Watermark on PDF API View More HR Access structured HR APIs to work with job positions, resumes, career insights, and workforce analytics. Developers can integrate these APIs into recruitment platforms, career matching tools, or HR dashboards to automate candidate matching, analyze workforce trends, and streamline hiring processes. Resume/CV Job Match Score Resume Parser API Job Description Generator API Related Job Positions Generator API Related Skills Generator API View More Image Processing Enhance applications with image processing APIs for tasks like recognition, filtering, resizing, optimization, and AI analysis. Developers can integrate these APIs into visual content platforms, automation workflows, or AI-powered applications to handle images efficiently and enhance user experiences. Dynamic OG Image API Generate Image Thumbnails API Apply Watermark on Images API Compress Images API Crop Images API View More Marketing Automate marketing workflows with APIs for email campaigns, analytics, social media, and audience targeting. Developers can integrate these APIs into marketing platforms, CRM tools, or automation systems to optimize campaigns, track performance, and increase engagement. Technical Comparison of Webpages API Market Trends and Growth Forecasting API Translate Text API Summarize Text API Paraphrase Text API View More SEO Integrate SEO APIs to track SERP rankings, perform keyword research, generate META tags, and analyze search visibility. Developers can build SEO tools, content optimization platforms, or analytics dashboards that automate insights and improve website performance. Full Site Audit API Security Headers Audit API Detect Tech Stack API Evaluate SEO Health API Validate HTML API View More Smart Generation Generate content programmatically with smart generation APIs. Developers can create AI-generated text, summaries, recommendations, and content variations, integrating these APIs into chatbots, writing assistants, content automation platforms, or workflow tools to speed up content creation. Temporary and Disposable emails API Reformify Form API Extract and Translate Article Content from Web Page API Extract and Generate Editorial Digest from Multiple Web Pages API Summarize Multiple Article Insights API View More Standard Data Access reliable reference information with standard data APIs. Developers can retrieve countries, currencies, languages, timezones, and other structured datasets to populate dashboards, analytics tools, or internationalized applications efficiently. Extract Article Content from Web Page API Extract Metadata From URL API Country Information API Countries Dictionary API Timezones Dictionary API View More Travel Integrate travel functionality with APIs for flights, hotels, itineraries, and location services. Developers can build booking platforms, travel planners, or recommendation engines that deliver real-time data, personalized suggestions, and enriched travel experiences. Generate Travel Review Sentiment API Generate Tours & Activities Product Categories API Generate Hospitality Product Categories API View More API Certification & Transparency Building Trust, Reducing Risk At ApyHub, we go beyond just providing APIs. Our Service Certification Program ensures every API comes with clear, standardized information about how data is handled. Know exactly where your data is stored, how long it's retained, who else accesses it, and which security and compliance standards are met. Data Retention & Storage Location Understand where and for how long your data lives, helping you comply with regulations like GDPR and CCPA. Third-Party Service Visibility See all external services involved in data processing - no hidden surprises. Compliance Certifications APIs that comply with and are certified with GDPR, ISO 27001, SOC 2, and more, so you can trust their security posture. Save Time & Reduce Privacy Risks Spend less time researching privacy policies and compliance, and more time building secure, compliant apps. This transparency empowers you to integrate APIs faster and with confidence, building safer applications for your users. Explore Service Certification ApyHub for Enterprises Unify and simplify your entire API ecosystem—internal, third-party—on one secure, scalable platform built to meet enterprise demands. Streamline third party service vendor management, accelerate compliance, and scale with confidence. Contact Sales Learn More Explore API Catalog Simple, Transparent Pricing All plans include access to every API. Choose the plan that's right for your needs and scale as you grow. How often do you want to pay? Monthly Yearly 🏷️ Get 20% off Starter $0 / month Perfect for trying out any API in your projects. Start now 5 API calls / day 50 MB API request size 2 GB of storage Pro $16 / month Perfect for personal or hobby projects using Utility APIs. Start now 100K atoms / month 100 MB API request size 5 GB of storage Pro + $42 / month Perfect for your growing projects. Start now 500K atoms / month 300 MB API request size 10 GB of storage Team $86 / month Perfect for small teams who work together using APIs on different projects. Start now 2M atoms / month 500 MB API request size 20 GB of storage Scale $270 / month Perfect for larger teams who want to work together with APIs on different projects. Start now 6M atoms / month 1 GB API request size 50 GB of storage Frequently Asked Questions What is ApyHub? ApyHub is a comprehensive API marketplace designed by developers for developers. The platform offers a wide range of APIs across categories such as Artificial Intelligence, File Conversion, Image Processing, Data Extraction, E-commerce tools, Smart Generation, and File Security. It simplifies file processing, document automation, AI workflows, and multimedia handling through easy-to-use REST APIs. What types of APIs does ApyHub offer? ApyHub provides APIs in these main categories: Artificial Intelligence: Document data extraction (invoices, receipts, IDs), image and video analysis (face, logo, object detection), text processing (summarization, sentiment, moderation), and AI-powered content classification and anonymization. File Conversion: Convert between PDFs, Word, Excel, CSV, JSON, images (JPEG, PNG, WebP), audio, video, and more. Image Processing & File Manipulation: Compress, resize, crop, watermark, change backgrounds, remove metadata, and generate thumbnails. Data Extraction: Extract text, metadata, keywords, links, and structured data from files, webpages, and media. E-commerce Quick Tools: Currency conversion, barcode and QR code generation, product categorization, and review sentiment analysis. Smart Generation: Generate charts, calendars, emails, and previews programmatically. File Security: Secure archives, watermarking, and metadata removal for privacy and protection. All APIs are offered under a single ApyHub subscription. Do I need to subscribe to each API separately? No. ApyHub offers a unified subscription model. One subscription unlocks access to all APIs, so teams can freely combine, test, and scale different services without managing multiple subscriptions or vendor accounts. Is there a free plan available? Yes. ApyHub offers a free plan allowing developers to explore and test any API at no cost. This helps with prototyping, learning, and evaluation before upgrading to paid tiers with higher usage limits. How do I use ApyHub APIs? Simply: Create an ApyHub account. Obtain your API key. Make RESTful HTTPS API calls. Receive structured JSON responses. These APIs are language-agnostic and can be integrated with JavaScript, Python, Java, PHP, and more. Are ApyHub APIs suitable for production and high-volume use? Yes. The APIs are designed with scalability, consistent performance, and reliability in mind. Usage-based pricing makes them cost-effective for startups, enterprises, and growing applications. Are ApyHub APIs secure and compliant? Security and compliance are foundational: All traffic is secured via HTTPS. Files are processed securely and not retained beyond necessary processing. Machine-readable certificates provide transparent details on data hosting, retention, and compliance. Certifications and regulations covered include GDPR, SOC 2, and other global standards. This ensures that your data and users’ privacy are protected while meeting enterprise requirements. What kinds of AI APIs does ApyHub provide? ApyHub offers powerful AI APIs such as: Document Data Extraction: Automatically extract key fields from invoices, receipts, IDs, tables, and documents. Image & Video Analysis: Detect faces, brands/logos, landmarks, explicit content, objects, and video-specific elements such as shot changes or transcriptions. Text AI: Summarize content, detect sentiment, moderate content, extract keywords/entities, anonymize sensitive data, and classify text. Automation & Smart Generation: Generate SEO tags, product introductions, charts, emails, and calendar events programmatically. These APIs accelerate AI workflows for document automation, content moderation, marketing, and analytics. Does ApyHub provide APIs for file conversion and media processing? Yes. ApyHub includes APIs to convert files between formats including PDF, Word, Excel, CSV, images (JPEG, PNG, WebP), audio, and video. You can also compress, resize, crop, add watermarks, generate thumbnails, and manipulate multimedia content programmatically. How does ApyHub support e-commerce and marketing workflows? ApyHub offers APIs to: Convert currencies in real-time. Generate barcodes and QR codes. Categorize products and tours. Analyze product and travel review sentiments. Generate SEO meta tags and marketing content. These tools help automate catalog management, pricing, marketing analytics, and customer engagement. How is data privacy handled with uploaded files? Files uploaded for processing are only stored temporarily and securely. ApyHub follows strict data retention policies disclosed in machine-readable certificates to ensure privacy and compliance. Can ApyHub APIs be used with low-code or no-code platforms? Yes. ApyHub APIs are easy to integrate with low-code and no-code tools such as Retool, Zapier, Make, Microsoft Power Automate, Bubble, and others, enabling teams to automate document processing, AI-powered data extraction, and media manipulation without deep programming knowledge. Are there code examples and SDKs available? ApyHub provides documentation with code snippets in multiple languages, making it straightforward to integrate the APIs in your preferred development environment. How is pricing structured? Pricing is usage-based and transparent, with no hidden fees. You only pay for what you use, supported by a free tier to start development without upfront cost. Can ApyHub APIs be integrated into AI and automation pipelines? Yes. ApyHub APIs are designed for seamless integration into AI models, RPA workflows, and automation pipelines, enabling document preprocessing, content enrichment, and data extraction at scale. Does ApyHub accept APIs from external providers? Yes. ApyHub welcomes integrations from external API providers to expand the marketplace with diverse, high-quality APIs for a wide range of use cases. Can I test the APIs before subscribing? Yes. ApyHub offers an API Playground where developers can try out any API directly in the interface, experiment with requests, and inspect responses before committing to a subscription. Ready to supercharge your development? Join thousands of developers who trust ApyHub to eliminate boilerplate and accelerate their development. Start for Free ApyHub Products API Catalog Enterprise Certification Pricing Status Resources Blog Help Contact Us Careers Security Socials Terms and Conditions Privacy Policy © 2026 ApyHub, Inc. All rights reserved. Products API Catalog Enterprise Certification Pricing Status Resources Blog Help Contact Us Careers ApyHub Security Socials Terms and Conditions Privacy Policy © 2026 ApyHub, Inc. All rights reserved Allow necessary cookies This website uses cookies to ensure you get the best experience on our website. Privacy Policy Accept" } ``` ### Extract visible text from a webpage (array of lines) `GET https://api.eu.apyhub.com/apyhub/extract-visible-text-from-a-webpage/split` · 30 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | query | string (uri) | yes | | | `preserve_paragraphs` | query | boolean | no | Default: `false`. | #### Quickstart Extract the visible text from a webpage by passing its URL as a query parameter. ```bash curl -X GET "https://api.eu.apyhub.com/apyhub/extract-visible-text-from-a-webpage/split?url=https://apyhub.com" \ -H "apy-token: $APY_TOKEN" ``` #### What you'll get back Returns a JSON object with a `data` array of strings — each string is one extracted line of visible text from the webpage. ```json { "data": [ "Use Cases", "E-Commerce", "File Conversions", "File Manipulations", "AI and ML", "Blog", "Help", "Contact Us", "Careers", "ApyHub", "Security", "Socials", "Terms and Conditions", "Privacy Policy", "©", "2026", "ApyHub, Inc. All rights reserved", "Allow necessary cookies", "This website uses cookies to ensure you get the best experience on our website.", "Privacy Policy", "Accept" ] } ``` ## About ## What it does The Extract Text from Website API turns any URL into plain text. Send a webpage URL and get back the text a visitor can see on the page, with the HTML, scripts and styling stripped out. There are two endpoints. The main endpoint returns all the text as a single string in `data`, which suits LLM prompts, summarization and full-text search. The `/split` endpoint returns an array with one line of text per item, which is easier to filter, diff or scan line by line. Both take a `url` parameter. Set `preserve_paragraphs` to `true` to keep paragraph breaks instead of flattening everything into one block. Common uses include feeding page content into AI models and RAG pipelines, indexing pages for internal search, checking the copy a user actually sees for SEO audits, and monitoring competitor or partner pages for text changes. The response includes all visible text on the page, including navigation, footers and cookie banners. If you only need the main article body, use [Extract Article Text](https://apyhub.com/dosvak/service/extract-article-text). If you need clean, structured content ready for an AI model, use the [AI-ready Clean Data Extractor](https://apyhub.com/apyhub/service/webpage-extractor-api). You can try it right here in the playground. The free plan includes 5 API calls a day with no card required, so you can test it on your own URLs before you commit. The API is also available through [ApyHub MCP](https://apyhub.com/mcp), so AI agents can call it directly to read a webpage. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/extract-visible-text-from-a-webpage * * * --- title: Readability Scores API slug: score-readability-of-plain-text url: https://apyhub.com/apyhub/service/score-readability-of-plain-text provider: ApyHub categories: [Artificial Intelligence, SEO] tags: [readability, flesch-kincaid, text-analysis, content-quality] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 250 alias: readability-scores --- # Readability Scores API Score how easy text is to read with Flesch Reading Ease for English or Wiener Sachtextformel for German, plus word counts and reading time. Try it free. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/score-readability-of-plain-text` | What it does Scores raw plain text for readability and returns text statistics plus a readability r… | 250 | ## Endpoint reference ### Score readability of plain text `POST https://api.eu.apyhub.com/apyhub/score-readability-of-plain-text` · 250 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `text` | body | string | yes | Raw text to analyse. Example: `The quick brown fox jumps over the lazy dog. This sentence is simple and easy t…`. | | `language` | body | string | no | Scoring algorithm to use. english returns Flesch-Kincaid Reading Ease; german returns Wiener Sachtextformel. One of: english, german. Default: `english`. | #### Quickstart Send some plain text to get a readability score back. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/score-readability-of-plain-text" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"text":"The quick brown fox jumps over the lazy dog. This sentence is simple and easy to read. Children enjoy reading short books."}' ``` #### What you'll get back Returns a JSON object with a `data` object. Inside `data`, `stats` contains text metrics such as `words`, `sentences`, `characters`, `paragraphs`, `reading_time`, `speaking_time`, `avg_word_length`, `avg_sentence_length`, and `avg_paragraph_length`, and `flesh_kincaid_reading_ease` contains the readability result for English text. ```json { "data": { "stats": { "words": 95, "sentences": 8, "characters": 512, "paragraphs": 2, "reading_time": 6.49, "speaking_time": 38, "avg_word_length": 5.39, "avg_sentence_length": 11.88, "avg_paragraph_length": 4 }, "flesh_kincaid_reading_ease": { "class": "8th & 9th grade", "label": false, "level": 6.49, "score": 65.74, "class_label": "Plain English. Easily understood by 13- to 15-year-old students." } } } ``` ## About ## What it does The Readability Score API measures how easy a piece of text is to read. Send plain text and get back a standard readability score, the reading level it corresponds to, and statistics like word count, sentence length and reading time, so you can check copy against your writing guidelines before it goes live. It is one POST endpoint. Send the `text` to score and set `language` to `english`, the default, or `german`. English text is scored with the Flesch Reading Ease formula, the most widely used readability test, and German text with the Wiener Sachtextformel, the standard formula for German. The result tells you the `score`, the grade `class` it falls into, such as "8th & 9th grade", a plain-language `class_label` like "Plain English. Easily understood by 13- to 15-year-old students", and a `label` showing whether the text meets a standard readability threshold. Alongside the score you get the text statistics behind it: `words`, `sentences`, `characters` and `paragraphs`, the average length of words, sentences and paragraphs, and estimated `reading_time` and `speaking_time` in seconds. Long average sentence length is usually the first thing to fix when a score comes back low. Common uses include checking help articles, documentation and product copy against a target reading level, scoring AI-generated content before it is published, flagging legal, health or public sector text that needs to be written in plain language, comparing drafts to see whether an edit made the text easier to read, and showing a readability score inside your own CMS or editor. To score documents instead of plain text, use the [Readability Scores Documents API](https://apyhub.com/apyhub/service/score-readability). For simpler word and sentence counts, try the [Basic Text Analysis API](https://apyhub.com/creightonnick0/service/analyze-text), and if you do not know whether the text is English or German, check it first with the [Language Detection API](https://apyhub.com/apyhub/service/detect-language). You can try it right here in the playground. Start for free with 5 API calls a day, no card required, and score your own text before you commit. The API is also available through [ApyHub MCP](https://apyhub.com/mcp), so AI agents can check the readability of what they write and revise it before publishing. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/score-readability-of-plain-text * * * --- title: Convert RSS to JSON API slug: convert-rss-to-json url: https://apyhub.com/apyhub/service/convert-rss-to-json provider: ApyHub categories: [Data Extraction, Developer Tools] tags: [rss-to-json, rss, feed-parser, data-conversion] auth: api_key version: 1.1.0 service_type: sync endpoints: 2 atoms: 150 alias: converter-rss-json --- # Convert RSS to JSON API Turn a feed into JSON with one call, by URL or file upload. Works with both major feed formats. No parser to install or patch. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-rss-to-json/file` | What it does Parses an uploaded RSS or Atom XML file and converts it to JSON. The request sends a b… | 150 | | POST | `https://api.eu.apyhub.com/apyhub/convert-rss-to-json/url` | What it does Parses a remote RSS or Atom feed from a URL and returns the feed data as JSON. The req… | 150 | ## Endpoint reference ### Parse uploaded RSS/Atom XML to JSON `POST https://api.eu.apyhub.com/apyhub/convert-rss-to-json/file` · 150 atoms · accepts `multipart/form-data` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `file` | body | string (binary) | yes | RSS or Atom XML file (.xml). Mandatory. | | `detailed` | query | boolean | no | Default: `false`. | #### Quickstart Upload an RSS or Atom XML file to convert it into JSON. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-rss-to-json/file" \ -H "apy-token: $APY_TOKEN" \ -F "file=@/path/to/feed.xml" ``` #### What you'll get back Returns a JSON object. The output schema does not declare any specific top-level fields, so the exact response shape may vary. ### Parse remote RSS/Atom feed URL to JSON `POST https://api.eu.apyhub.com/apyhub/convert-rss-to-json/url` · 150 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `url` | body | string (uri) | yes | Example: `https://assets.apyhub.com/samples/sample.xml`. | | `detailed` | query | boolean | no | Default: `false`. | #### Quickstart Convert an RSS feed URL to JSON by sending the feed link in the request body. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-rss-to-json/url?detailed=false" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://apyhub.com/api/rss"}' ``` #### What you'll get back Returns a JSON object. The output schema does not declare any specific top-level fields, so the exact response shape can vary. ## About ## What it does The RSS to JSON API turns a feed into JSON your code can read. Send a feed URL, or upload the XML. You get the feed's items back as structured JSON, ready to store, filter or render. Use the `/url` endpoint to fetch and parse a remote feed in one step. That is the usual case: polling a blog, a news site or a podcast feed on a schedule. Use the `/file` endpoint when you already hold the XML, such as an archived feed or one a partner sent you. Set `detailed=true` when you need the feed's full metadata — copyright, generator, categories, contributing authors, Dublin Core and iTunes podcast extensions, and any namespaced custom fields — on top of the summary fields returned by default. Items themselves carry the same fields either way. It handles both of the feed formats in use on the web today. RSS is the common one. Atom is the format WordPress, Blogger and YouTube publish, and a parser built only for RSS will choke on it. Either one works here, with the same call. Why call an API instead of installing a feed parser? Because feeds in the wild are inconsistent. Missing dates. Odd encodings. Namespaced extensions. Formats that differ from one publisher to the next. Those edge cases show up one at a time in production, and then they are yours to fix. Here they stay on this side of the call. Most feeds update a few times a day at most. Cache the result and poll on a sensible interval rather than parsing on every page load. Working with XML more generally? Use [Convert XML to JSON](https://apyhub.com/apyhub/service/convert-xml-to-json) for arbitrary XML documents, or [Convert JSON to XML](https://apyhub.com/apyhub/service/convert-json-to-xml) for the reverse. ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-rss-to-json * * * --- title: Multi-Currency Converter API slug: convert-currency-to-multiple-currencies url: https://apyhub.com/apyhub/service/convert-currency-to-multiple-currencies provider: ApyHub categories: [Finance, Standard Data] tags: [currency-converter, exchange-rates, forex, multi-currency, finance] auth: api_key version: 1.0.0 service_type: sync endpoints: 1 atoms: 5 alias: currency-conversion-multiple --- # Multi-Currency Converter API Multi-currency converter API: send one source currency and a list of targets, get every exchange rate in one JSON response. Free tier, no card. ## Endpoints | Method | URL | Description | Atoms | | --- | --- | --- | --- | | POST | `https://api.eu.apyhub.com/apyhub/convert-currency-to-multiple-currencies` | What it does Converts one source currency into multiple target currencies for a given date and retu… | 5 | ## Endpoint reference ### Convert one source currency to multiple targets `POST https://api.eu.apyhub.com/apyhub/convert-currency-to-multiple-currencies` · 5 atoms · accepts `application/json` | Parameter | In | Type | Required | Description | | --- | --- | --- | --- | --- | | `date` | body | string (date) | no | Defaults to today when omitted or blank. Example: `2026-06-16`. | | `source` | body | string | yes | Example: `usd`. | | `targets` | body | array of string | yes | Example: `["eur","gbp","jpy"]`. | #### Quickstart Convert one source currency into a set of target currencies. ```bash curl -X POST "https://api.eu.apyhub.com/apyhub/convert-currency-to-multiple-currencies" \ -H "apy-token: $APY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "source": "usd", "targets": ["eur", "gbp", "jpy"] }' ``` #### What you'll get back Returns a JSON object where each top-level field is a currency pair like `usd_eur`. ```json { "usd_eur": 0.9214, "usd_gbp": 0.7891, "usd_jpy": 161.8731257 } ``` ## About ## What it does The Multi-Currency Converter API returns exchange rates from one source currency to several target currencies in a single request. Send a `source` currency code and a `targets` array, for example `usd` to `["eur", "gbp", "jpy"]`, and get back a flat JSON object keyed by currency pair, such as `usd_eur` and `usd_gbp`. Add an optional `date` in `YYYY-MM-DD` format to get historical rates for that day. Leave it out to get today's rates. If a rate is unavailable for a pair, its value is `false`, so check each key before you use it. Use it to fill a multi-currency pricing page in one call, convert an invoice total for customers in several regions, or build monthly reports that show revenue in every currency you sell in. One request replaces a loop of single-pair calls, which cuts latency and code. For a single pair, the [Currency Converter API](https://apyhub.com/apyhub/service/convert-currency-pair-for-date) returns one rate. Pairs well with: the [Currencies Dictionary API](https://apyhub.com/apyhub/service/list-all-currencies) to check the codes in `targets` before the call, and the [Global Pricing Recommendations API](https://apyhub.com/namastesumalya/service/generate-global-pricing-recommendations) to set market-specific prices that you then show in each local currency. AI agents can call the multi-currency converter API through ApyHub MCP. > **Note** : Exchange rates are only available from `2024-03-02` ## Usage Base URL: `https://api.eu.apyhub.com` (default region — see `GET https://apyhub.com/api/public/regions` for the rest). Authenticate with an ApyHub API key in the `apy-token` header. Full docs and a live playground: https://apyhub.com/apyhub/service/convert-currency-to-multiple-currencies