Profile API - Integration Guide
Malanta Profile API
Gold Query · Domain / FQDN / IP Profile · Enrichment · Intelligence Attribution
Version 1.0 | October 2026
Contents
- Overview
- Conventions
- GET /v1/domains/{domain}/profile
- GET /v1/fqdns/{fqdn}/profile
- GET /v1/ips/{ip}/profile
- Field reference
Overview
Observable Profile endpoints are part of the Gold Query API. They return a single consolidated, current-state enrichment view for a domain, host, or IP.
Use Profile when you want one call that assembles the investigation picture — registration state, WHOIS + significant changes, DNS, network/ASN, open services, TLS, web analysis, tags, related observables, and intelligence attribution.
Use the specialized Gold Query routes (reputation, WHOIS, certificates, DNS records, co-hosted domains, IP info, etc.) when you need deeper history, pagination, or batch lookups for a single data type.
Base URL & authentication
Same as the rest of Gold Query:
Item | Value |
|---|---|
Base URL | |
Auth header |
|
Endpoints
Method | Path | Scope |
|---|---|---|
|
| Registrable domain (eTLD+1) |
|
| Any host; host-scoped enrichment, with state + registration from the apex |
|
| IPv4 or IPv6 address |
Conventions
Response envelope
Profile responses use { data, query, meta } — there is no pagination field (profiles are single-object responses).
Field | Meaning |
|---|---|
| The profile payload ( |
| Echo of what you asked for ( |
|
|
Empty / unknown observables
- HTTP 200 even when Malanta has little or no data for the indicator.
- Missing sections serialize as empty objects
{}or empty arrays[]— not as omitted keys at the top level ofprofile. - Only a non-2xx status is an error.
Temporal parameters
since, until, and history are not supported on /profile and return 400.
Domain vs host scope
- Send a registrable domain (eTLD+1) to
/v1/domains/.... A subdomain returns 422. - Send any host (apex or subdomain) to
/v1/fqdns/.... - On the FQDN route, network / DNS / services / TLS / web / tags / related observables / intelligence are scoped to the exact host. Only
profile.stateandprofile.registrationdescribe the registrable apex.
Timestamps
All timestamps are ISO-8601 UTC with a trailing Z (for example 2026-08-08T06:11:24Z).
Errors
Status | When |
|---|---|
| Missing or invalid API key |
|
|
| Malformed indicator (e.g. subdomain on |
| Upstream / service failure |
GET /v1/domains/{domain}/profile
Consolidated current-state enrichment for a registrable domain.
Path parameters
Param | In | Type | Notes |
|---|---|---|---|
| path | string | Registrable eTLD+1. Subdomain → |
Example request
curl -X GET "https://app.malanta.ai/data/v1/domains/example.com/profile" \
-H "x-api-key: malanta_xxxxxxxxxxxxx"What you get in data
Section | Contents |
|---|---|
| Infrastructure / classification tags |
| Lifecycle: status, registration state, ownership transition, takedown |
|
|
| Resolved IPs + per-network ASN / provider / range / PTR |
| A / MX / NS / TXT records |
| Port probes (success and failure) with fixed endpoint schema |
| JARM fingerprint + negotiated TLS parameters |
| Page response/content, favicon hashes, CSS / JS resources |
| Groups: |
| APT attribution + categorized attributes |
Example response (abbreviated)
{
"data": {
"profile": {
"tags": [{ "key": "cdn", "name": "CDN", "family": "infrastructure" }],
"state": {
"domain_status": "inactive",
"registration_state": "on_hold",
"ownership_transition": null,
"takedown": { "on_hold": true }
},
"registration": {
"current": {
"observed_at": "2026-08-08T06:11:24Z",
"created_at": "2026-03-10T00:00:00Z",
"updated_at": null,
"expires_at": "2027-03-10T00:00:00Z",
"registrar": {
"id": "1068",
"name": "Example Registrar",
"whois_server": "whois.example-registrar.com",
"url": null
},
"statuses": ["clientHold"],
"name_servers": ["ns1.example.net"],
"contacts": [
{
"role": "REGISTRANT",
"name": null,
"organization": "Example Org",
"address": {
"street": null,
"city": null,
"state": null,
"postal_code": null,
"country": "US"
},
"email": "owner@example.com",
"email_local_part": "owner",
"email_domain": "example.com",
"phone": null,
"fax": null
}
]
},
"changes": {
"summary": {
"takedown": {
"ever_observed": true,
"first_observed_at": "2026-08-08T06:11:24Z",
"latest_label": "Registrar hold (clientHold)"
},
"transition_dates": {
"parked_since": null,
"sinkholed_since": null
},
"event_counts": {
"hold": 1,
"lifecycle": 0,
"name_server_change": 0,
"ownership_change": 0,
"registrar_change": 0,
"status_change": 1
}
},
"significant": [
{
"period": {
"first_observed_at": "2026-08-08T06:11:24Z",
"last_observed_at": "2026-08-08T06:11:24Z"
},
"primary_change": "TAKEDOWN",
"changes": ["TAKEDOWN_HOLD", "STATUS_CHANGED"],
"observation_count": 1,
"primary_severity": null,
"registration_state": {
"registrar": { "name": null },
"registrant": {
"name": null,
"company": null,
"country": null,
"email": "owner@example.com"
},
"statuses": ["clientHold"],
"status_summary": {
"category": "ON_HOLD",
"label": "On Hold"
},
"name_servers": ["ns1.example.net"],
"authority_created_at": null,
"authority_updated_at": null,
"authority_expires_at": "2027-03-10T00:00:00.000Z",
"privacy_masked": true,
"sinkholed": null,
"takedown": {
"on_hold": true,
"label": "Registrar hold (clientHold)"
}
}
}
]
}
},
"network": {
"ip_addresses": ["203.0.113.10"],
"networks": [
{
"asn": {
"number": 13335,
"name": "Cloudflare, Inc.",
"domain": "cloudflare.com"
},
"provider": {
"name": "Cloudflare, Inc.",
"domain": "cloudflare.com",
"type": "hosting",
"country": "US"
},
"address_range": {
"cidr": "203.0.113.0/24",
"start_ip": "203.0.113.0",
"end_ip": "203.0.113.255"
},
"ip_addresses": ["203.0.113.10"],
"ptr_records": ["edge-10.example.net"]
}
]
},
"dns": {
"a": [{ "address": "203.0.113.10" }],
"mx": [],
"ns": [],
"txt": []
},
"services": {
"endpoints": [
{
"ip": "203.0.113.10",
"port": 443,
"scheme": "https",
"service": {
"name": null,
"product": null,
"server": "cloudflare",
"banner": null,
"x_powered_by": null
},
"response": {
"status_code": 200,
"final_url": "https://www.example.com/",
"redirect_location": null,
"headers": ["server: cloudflare"]
},
"content": {
"type": "text/html",
"declared_length": null,
"body_length": 48211,
"body_sha256": null,
"title": "Example",
"excerpt": null
},
"certificate": {
"certificate_id": null,
"serial_number": null,
"serial_hex": null,
"validity": {
"not_before_at": null,
"not_after_at": "2026-12-01T00:00:00Z"
},
"subject": {
"common_name": "example.com",
"organization": null,
"country": null,
"alternative_names": ["*.example.com"]
},
"issuer": {
"common_name": null,
"organization": "Google Trust Services",
"country": null,
"locality": null,
"state": null,
"malanta_ca_id": null
},
"is_self_signed": null,
"intelligences": {
"sha1": null,
"sha256": "c0ff…"
},
"period": {
"first_observed_at": null,
"last_observed_at": null
}
},
"error": null
}
]
},
"tls": {
"jarm_fingerprint": "27d40d40d00040d00042d43d00041df04c41293ba84f6efe3a613b22f983e6",
"negotiated": {
"version": "TLS1.3",
"cipher_suite": "TLS_AES_128_GCM_SHA256",
"alpn": "h2",
"handshake_protocol": "tls13_full",
"server_name": "www.example.com"
}
},
"web": {
"page": {
"response": {
"response_status_code": 200,
"final_url": "https://www.example.com/",
"headers": ["server: cloudflare"]
},
"content": {
"title": "Example",
"body_length": 48211,
"body_sha256": "9f2c…",
"headings": ["Welcome to Example"],
"links": ["https://www.example.com/about"]
},
"trackers": {}
},
"favicon": {
"url": "https://www.example.com/favicon.ico",
"final_url": null,
"response_status_code": 200,
"hashes": {
"dhash": "0e1e3c3c1e0e0000",
"mmh3": "-1255347784",
"sha256": "5b2a…"
}
},
"resources": {
"css": {
"aggregate_sha256": "4dec…",
"class_set_hash": "9311…",
"bytes_processed": 18342,
"external_hosts": ["cdn.example.net"],
"external_urls": ["https://cdn.example.net/site.css"],
"fonts": ["Inter"],
"resource_sha256": ["b391…"]
},
"javascript": {
"aggregate_sha256": "2998…",
"bytes_processed": 90211,
"functionality_set_hash": "7c41…",
"obfuscation": 0.62,
"unattributed_capabilities": [
{ "id": "api:cookie", "dangerous": false }
],
"items": [
{
"type": "inline",
"url": null,
"sha256": "2998…",
"obfuscation": 0.62,
"capabilities": [
{ "id": "evt:domcontentloaded", "dangerous": false }
],
"functions": []
},
{
"type": "external",
"url": "https://cdn.example.net/app.js",
"sha256": "a1b2…",
"obfuscation": 0.1,
"capabilities": [
{ "id": "net:fetch", "dangerous": false },
{ "id": "dyn:eval", "dangerous": true }
],
"functions": [
{
"name": "eval",
"sha256": "9a36…",
"capabilities": ["dyn:eval"]
}
]
}
]
}
}
}
},
"related_observables": [
{
"related_by": "resolves_to",
"observables": [{ "type": "ipv4-addr", "value": "203.0.113.10" }]
},
{
"related_by": "redirects_to",
"observables": [
{
"type": "url",
"value": "https://www.example.com/",
"properties": {
"redirect_method": "http",
"redirect_persistence": "permanent",
"response_status_code": 301
}
}
]
},
{
"related_by": "shared_hosting",
"via": { "type": "ipv4-addr", "value": "203.0.113.10" },
"observables": [{ "type": "fqdn", "value": "cohost.example.org" }]
}
],
"intelligence": {}
},
"query": {
"indicator": { "type": "domain-name", "value": "example.com" }
},
"meta": {
"request_id": "3f1c2a9e-7d4b-4b8a-9a51-0c6f2e8d1b77",
"schema_version": "2.0.0",
"endpoint": "/v1/domains/{domain}/profile",
"elapsed_ms": 412,
"generated_at": "2026-10-14T09:00:00Z",
"coverage": {
"first_observed_at": "2026-08-26T08:32:43Z",
"last_observed_at": "2026-08-26T08:32:43Z"
}
}
}GET /v1/fqdns/{fqdn}/profile
Same response shape as the domain Profile. Use this when you care about a specific host.
- Enrichment sections (network, DNS, services, TLS, web, tags, related observables, intelligence) are scoped to the exact
{fqdn}. profile.stateandprofile.registrationdescribe the host’s registrable apex.query.indicatorechoes the original host withtype: "fqdn".
Path parameters
Param | In | Type | Notes |
|---|---|---|---|
| path | string | Any well-formed host (apex or subdomain) |
Example request
curl -X GET "https://app.malanta.ai/data/v1/fqdns/www.example.com/profile" \
-H "x-api-key: malanta_xxxxxxxxxxxxx"Example query echo
{
"query": {
"indicator": { "type": "fqdn", "value": "www.example.com" }
}
}GET /v1/ips/{ip}/profile
Observable profile for an IP: network (ASN, provider, range, PTR), services, TLS, web (when available), tags, related observables, and intelligence.
IP profiles do not include domain-only sections (state, registration, dns).
Path parameters
Param | In | Type | Notes |
|---|---|---|---|
| path | string | IPv4 or IPv6; malformed → |
Example request
curl -X GET "https://app.malanta.ai/data/v1/ips/104.16.69.86/profile" \
-H "x-api-key: malanta_xxxxxxxxxxxxx"Example response (abbreviated)
{
"data": {
"profile": {
"tags": [],
"network": {
"asn": {
"number": 13335,
"name": "Cloudflare, Inc.",
"domain": "cloudflare.com"
},
"provider": {
"name": "Cloudflare, Inc.",
"domain": "cloudflare.com",
"type": "hosting",
"country": "US"
},
"address_range": {
"cidr": "104.16.0.0/16",
"start_ip": "104.16.0.0",
"end_ip": "104.16.255.255"
},
"ptr_records": ["edge-86.example.net"]
},
"services": {
"endpoints": [
{
"ip": "104.16.69.86",
"port": 22,
"scheme": "tcp",
"service": {
"name": "ssh",
"product": null,
"server": null,
"banner": null,
"x_powered_by": null
},
"response": {
"status_code": null,
"final_url": null,
"redirect_location": null,
"headers": []
},
"content": {
"type": null,
"declared_length": null,
"body_length": null,
"body_sha256": null,
"title": null,
"excerpt": null
},
"certificate": null,
"error": "ssh: handshake timeout"
}
]
},
"tls": {
"jarm_fingerprint": "27d40d40d00040d00042d43d00041df04c41293ba84f6efe3a613b22f983e6",
"negotiated": {
"version": "TLS1.3",
"cipher_suite": "TLS_AES_128_GCM_SHA256",
"alpn": "h2",
"handshake_protocol": "tls13_full",
"server_name": "www.example.com"
}
},
"web": {}
},
"related_observables": [
{
"related_by": "shared_hosting",
"observables": [
{ "type": "domain-name", "value": "example.com" }
]
}
],
"intelligence": {}
},
"query": {
"indicator": {
"type": "ipv4-addr",
"value": "104.16.69.86",
"ip_addr_hex": "00000000000000000000ffff68104556"
}
},
"meta": {
"request_id": "3f1c2a9e-7d4b-4b8a-9a51-0c6f2e8d1b77",
"schema_version": "2.0.0",
"endpoint": "/v1/ips/{ip}/profile",
"elapsed_ms": 412,
"generated_at": "2026-10-14T09:00:00Z",
"coverage": {
"first_observed_at": "2026-08-26T08:32:43Z",
"last_observed_at": "2026-08-26T08:32:43Z"
}
}
}Note. On IP profiles, shared_hosting groups list co-hosted domains/hosts and do not include a via object (the queried IP is already the hosting address). On domain/FQDN profiles, shared_hosting includes via pointing at the shared IP.
Field reference
This section explains every field in the Profile response, grouped by section. Domain and FQDN profiles share the same shape; IP profiles omit domain-only sections (state, registration, dns) and use a flatter profile.network.
Envelope — query and meta
Field | Type | Description |
|---|---|---|
| string |
|
| string | The indicator you queried |
| string | null | Stable id when available |
| string | null | Present for IP indicators (32-char IPv4-mapped hex key) |
| string | null | Request correlation id |
| string | Currently |
| string | Route template, e.g. |
| integer | null | Server processing time in milliseconds |
| datetime | When the response was produced (UTC) |
| datetime | null | Earliest observation for the entity’s available history span |
| datetime | null | Latest observation for the entity’s available history span |
data.profile.tags[]
Field | Type | Description |
|---|---|---|
| string | null | Machine-stable tag key (e.g. |
| string | null | Human-readable label |
| string | null | Tag family (e.g. |
data.profile.state (domain / FQDN only)
Current lifecycle state of the registered domain. Empty → {}.
Field | Type | Description |
|---|---|---|
| string | null | High-level domain status ( |
| string | null |
|
| string | null |
|
| boolean | null | Whether the domain is currently on a takedown hold |
| integer | Present only when known; omitted when unknown |
data.profile.registration (domain / FQDN only)
Always shaped as { current, changes }. If there is no current WHOIS, current is {}.
registration.current
Latest WHOIS record. Contacts: one per role (registrant, administrative, technical, billing); empty roles are dropped.
Field | Type | Description |
|---|---|---|
| datetime | null | When Malanta last observed this registration record |
| datetime | null | Domain creation date from WHOIS |
| datetime | null | Domain last-updated date from WHOIS |
| datetime | null | Domain expiration date from WHOIS |
string | null | Registrar IANA / provider id when available | |
string | null | Registrar name | |
| string | null | Registrar WHOIS server hostname |
| string | null | Registrar URL |
| string[] | EPP / RDAP status strings (e.g. |
| string[] | Authoritative name servers |
| array | Contact objects (see below) |
contacts[] item
Field | Type | Description |
|---|---|---|
| string | Contact role (e.g. |
| string | null | Contact person name |
| string | null | Organization / company |
| string | null | Street address |
| string | null | City |
| string | null | State / province |
| string | null | Postal code |
| string | null | Country code / name |
| string | null | Full email address |
| string | null | Local part of the email |
| string | null | Domain part of the email |
| string | null | Phone number |
| string | null | Fax number |
registration.changes
Significant registration lifecycle timeline (always included — no ?history flag).
changes.summary
Field | Type | Description |
|---|---|---|
| boolean | null | Whether any takedown hold was ever observed |
| datetime | null | First observed takedown time |
| string | null | Human-readable latest takedown label |
| datetime | null | When parking was first observed |
| datetime | null | When sinkholing was first observed |
| integer | Count of hold events |
| integer | Count of lifecycle events |
| integer | Count of name-server changes |
| integer | Count of ownership changes |
| integer | Count of registrar changes |
| integer | Count of status changes |
changes.significant[] item
Field | Type | Description |
|---|---|---|
| datetime | null | Start of the change observation window |
| datetime | null | End of the change observation window |
| string | null | Primary change class (e.g. |
| string[] | All change codes in this event (e.g. |
| integer | null | How many observations contributed to this change |
| string | null | Severity label when available |
| object | Snapshot of registration at that point (see below) |
significant[].registration_state
Field | Type | Description |
|---|---|---|
string | null | Registrar name at that snapshot | |
string | null | Registrant person name | |
| string | null | Registrant organization |
| string | null | Registrant country |
string | null | Registrant email | |
| string[] | Status strings at that snapshot |
| string | null | Normalized status category (e.g. |
| string | null | Human-readable status summary |
| string[] | Name servers at that snapshot |
| string | null | Authority creation date as supplied by the source |
| string | null | Authority update date as supplied by the source |
| string | null | Authority expiration date as supplied by the source |
| boolean | null | Whether privacy/proxy masking was detected |
| boolean | null | Whether sinkholing was indicated |
| boolean | null | Hold state at that snapshot |
| string | null | Takedown label at that snapshot |
data.profile.network
Domain / FQDN shape
Field | Type | Description |
|---|---|---|
| string[] | All IPs currently associated with the observable |
| array | Per-network blocks (ASN, provider, range, IPs, PTR) |
| integer | null | ASN number |
| string | null | ASN organization name |
| string | null | ASN org domain |
| string | null | Hosting / network provider name |
| string | null | Provider domain |
| string | null | Provider type (e.g. |
| string | null | Provider country |
| string | null | CIDR for the address block |
| string | null | Start of the range |
| string | null | End of the range |
| string[] | IPs in this network block that belong to the observable |
| string[] | Reverse-DNS (PTR) names for those IPs |
IP shape
Same ASN / provider / address_range / ptr_records fields, but flat under profile.network (no ip_addresses / networks[] wrapper). Empty → {}.
data.profile.dns (domain / FQDN only)
Field | Type | Description |
|---|---|---|
| array | A records; each item has |
| array | MX records; each item has |
| array | NS records; each item has |
| array | TXT records; each item has |
data.profile.services.endpoints[]
Fixed schema for every probe — successful and failed. Absent values are null, never omitted. services always keeps an endpoints array (possibly empty).
Field | Type | Description |
|---|---|---|
| string | null | IP that was probed |
| integer | null | Port number |
| string | null | Transport / URL scheme (e.g. |
string | null | Identified service name | |
| string | null | Product / software identity |
| string | null | Server header / identity string |
| string | null | Raw banner when captured |
| string | null |
|
| integer | null | HTTP status (null for non-HTTP probes) |
| string | null | Final URL after following redirects during the probe |
| string | null | Redirect |
| string[] | Response headers as |
| string | null | Content-Type |
| integer | null | Declared content length |
| integer | null | Observed body length in bytes |
| string | null | SHA-256 of the response body |
| string | null | HTML title when extracted from this probe |
| string | null | Short body excerpt when available |
| object | null | TLS certificate observed on this endpoint, or |
| string | null | Probe error message on failure; |
certificate object
Field | Type | Description |
|---|---|---|
| null | Reserved; currently always |
| string | null | Certificate serial (decimal string when available) |
| string | null | Certificate serial in hex |
| datetime | null | Not-before |
| datetime | null | Not-after / expiry |
| string | null | Subject CN |
| string | null | Subject organization |
| string | null | Subject country |
| string[] | SANs |
| string | null | Issuer CN |
| string | null | Issuer organization |
| string | null | Issuer country |
| string | null | Issuer locality |
| string | null | Issuer state |
| string | null | Malanta CA identifier when known |
| boolean | null | Whether the cert is self-signed |
| string | null | Certificate SHA-1 fingerprint |
| string | null | Certificate SHA-256 fingerprint |
| datetime | null | First time this cert was observed on the endpoint |
| datetime | null | Most recent observation |
data.profile.tls
Empty → {}.
Field | Type | Description |
|---|---|---|
| string | null | JARM TLS fingerprint |
| string | null | Negotiated TLS version (e.g. |
| string | null | Negotiated cipher suite |
| string | null | ALPN protocol (e.g. |
| string | null | Handshake protocol detail |
| string | null | SNI / server name used in the handshake |
data.profile.web
Web crawl / content analysis. Empty → {}.
Redirects are not under web. They appear in related_observables with related_by: "redirects_to".
web.page
Field | Type | Description |
|---|---|---|
| integer | null | HTTP status of the page fetch |
| string | null | Final URL after redirects |
| string[] | Response headers as |
| string | null | HTML document title |
| integer | null | Body length in bytes |
| string | null | SHA-256 of the HTML body |
| string[] | Page headings extracted from HTML (not HTTP headers) |
| string[] | Links extracted from the page |
| object | Map of tracker id → value when detected; otherwise |
web.favicon
Field | Type | Description |
|---|---|---|
| string | null | Requested favicon URL |
| string | null | Final favicon URL after redirects |
| integer | null | HTTP status of the favicon fetch |
| string | null | Perceptual dHash (string, preserves leading zeros) |
| string | null | MurmurHash3 (string; may be signed, e.g. |
| string | null | SHA-256 of the favicon bytes |
web.resources.css
Field | Type | Description |
|---|---|---|
| string | null | Aggregate hash across processed CSS |
| string | null | Hash of the CSS class set |
| integer | null | Bytes of CSS processed |
| string[] | External hosts referenced by CSS |
| string[] | External CSS URLs |
| string[] | Font families referenced |
| string[] | Per-resource SHA-256 hashes |
web.resources.javascript
Field | Type | Description |
|---|---|---|
| string | null | Aggregate hash across processed scripts |
| integer | null | Bytes of JS processed |
| string | null | Hash of the observed functionality set |
| number | null | Overall obfuscation score (0–1 style float when present) |
| array | Capabilities seen but not tied to a specific script item |
| string | Capability id (e.g. |
| boolean |
|
| array | Per-script analysis (see below) |
javascript.items[] item
Field | Type | Description |
|---|---|---|
| string |
|
| string | null | Script URL for external scripts; |
| string | null | Script content hash |
| number | null | Per-script obfuscation score |
| array | Capabilities attributed to this script ( |
| array | Notable functions ( |
data.related_observables[]
Relationship edge groups. Each group has related_by + observables[], and optionally via.
| Meaning | Notes |
|---|---|---|
| DNS resolution targets (typically IPs) | Domain / FQDN |
| HTTP(S) redirect destinations | Observables often include |
| Other domains/hosts on the same IP | Domain/FQDN groups include |
Observable item
Field | Type | Description |
|---|---|---|
| string | STIX-style type ( |
| string | Observable value |
| object | Optional metadata (omitted when empty). Common on redirects: |
Group-level via
Field | Type | Description |
|---|---|---|
| string | Intermediate observable (e.g. the shared IP for domain |
data.intelligence
Empty → {}.
Field | Type | Description |
|---|---|---|
| string[] | APT / threat-actor names attributed to the observable |
| array | Categorized intelligence attributes |
| string | Attribute category |
| string | Attribute value |
| string[] | APTs associated with this attribute |
| string[] | Related countries when available |
| string | Present only when set; omitted when |
Quick reference
- Base URL:
https://app.malanta.ai/data - Auth:
x-api-key: malanta_xxxxxxxxxxxxx - Endpoints:
GET /v1/domains/{domain}/profile,GET /v1/fqdns/{fqdn}/profile,GET /v1/ips/{ip}/profile - Envelope:
{ data, query, meta }— nopagination since/until/historyare not supported on/profile(return 400)- Unknown / unobserved entities still return HTTP 200 with empty sections (
{}/[]) - There is no batch
POSTfor Profile - See also: Malanta APIs (Gold Query conventions, authentication, and the rest of the enrichment surface)
Support: support@malanta.ai
Updated on: 15/10/2026
Thank you!