{"id":127,"date":"2026-09-08T07:02:56","date_gmt":"2026-09-08T07:02:56","guid":{"rendered":"https:\/\/figtrig.com\/blog\/2026\/09\/08\/api-integration-best-practices\/"},"modified":"2026-09-08T07:03:00","modified_gmt":"2026-09-08T07:03:00","slug":"api-integration-best-practices","status":"publish","type":"post","link":"https:\/\/figtrig.com\/blog\/2026\/09\/08\/api-integration-best-practices\/","title":{"rendered":"API Integration Best Practices for Underwriting Stacks"},"content":{"rendered":"<p>You can get a submission flow working in staging and still have it fall apart the first Monday morning when carriers, brokers, and underwriting ops all hit the same endpoints at once. That&#039;s the part most api integration best practices gloss over, the point where a neat REST call becomes a regulated workflow with audit pressure, duplicate-risk tolerance near zero, and reviewers who need to explain every decision later.<\/p>\n<p>In underwriting stacks, the integration isn&#039;t just moving JSON around. It&#039;s carrying submission notes, authority checks, pricing rationale, and binding outcomes through systems that must stay consistent even when a provider times out, a token expires mid-review, or a webhook arrives twice. The patterns that survive are the ones built for traceability, isolation, and controlled change, not just uptime.<\/p>\n<h2>Table of Contents<\/h2>\n<ul>\n<li><a href=\"#why-underwriting-integrations-fail-in-production\">Why Underwriting Integrations Fail in Production<\/a>\n<ul>\n<li><a href=\"#the-hidden-fault-line-is-state\">The hidden fault line is state<\/a><\/li>\n<li><a href=\"#what-usually-breaks-first\">What usually breaks first<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#authentication-and-authorization-for-regulated-data\">Authentication and Authorization for Regulated Data<\/a>\n<ul>\n<li><a href=\"#start-with-narrow-identities\">Start with narrow identities<\/a><\/li>\n<li><a href=\"#handle-long-underwriting-cycles-without-leaking-control\">Handle long underwriting cycles without leaking control<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#error-handling-and-idempotency-that-survives-retries\">Error Handling and Idempotency That Survives Retries<\/a>\n<ul>\n<li><a href=\"#separate-safe-reads-from-dangerous-writes\">Separate safe reads from dangerous writes<\/a><\/li>\n<li><a href=\"#make-errors-tell-the-truth\">Make errors tell the truth<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#versioning-strategies-that-protect-existing-integrations\">Versioning Strategies That Protect Existing Integrations<\/a>\n<ul>\n<li><a href=\"#use-visible-versions-for-partner-facing-apis\">Use visible versions for partner-facing APIs<\/a><\/li>\n<li><a href=\"#make-deprecation-a-controlled-process\">Make deprecation a controlled process<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#testing-and-monitoring-for-continuous-reliability\">Testing and Monitoring for Continuous Reliability<\/a>\n<ul>\n<li><a href=\"#test-contracts-before-production-finds-them\">Test contracts before production finds them<\/a><\/li>\n<li><a href=\"#make-observability-explain-the-submission-path\">Make observability explain the submission path<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#preparing-for-ai-agents-as-api-consumers\">Preparing for AI Agents as API Consumers<\/a>\n<ul>\n<li><a href=\"#agent-safe-auth-needs-tighter-boundaries\">Agent-safe auth needs tighter boundaries<\/a><\/li>\n<li><a href=\"#keep-autonomy-explainable\">Keep autonomy explainable<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#governing-api-growth-without-losing-control\">Governing API Growth Without Losing Control<\/a>\n<ul>\n<li><a href=\"#govern-the-shape-not-just-the-endpoint\">Govern the shape, not just the endpoint<\/a><\/li>\n<li><a href=\"#treat-apis-like-governed-products\">Treat APIs like governed products<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><a id=\"why-underwriting-integrations-fail-in-production\"><\/a><\/p>\n<h2>Why Underwriting Integrations Fail in Production<\/h2>\n<p>A submission API call times out. The client retries, while the first request has already succeeded. The underwriting platform now contains two binding attempts, two review tasks, or one completed record alongside a partially processed duplicate that operations must unwind manually.<\/p>\n<p><a id=\"the-hidden-fault-line-is-state\"><\/a><\/p>\n<h3>The hidden fault line is state<\/h3>\n<p>Regulated integrations fail in gaps that staging rarely exercises. Test traffic is orderly, payloads are small, and no one is reconciling a duplicate policy bind with a claims file months later. Production adds delayed responses, repeated messages, partial writes, and reviewers who need to reconstruct what happened. Those conditions also expose security weaknesses. OWASP&#039;s <strong>2023 API Security Top 10<\/strong> identifies <strong>Broken Object Level Authorization<\/strong>, <strong>Broken Authentication<\/strong>, <strong>Broken Object Property Level Authorization<\/strong>, and <strong>Unsafe Consumption of APIs<\/strong> among its risk areas <a href=\"https:\/\/owasp.org\/API-Security\/editions\/2023\/en\/0x00-toc\/\">OWASP 2023 API Security Top 10<\/a>.<\/p>\n<blockquote>\n<p><strong>Practical rule:<\/strong> Treat every request that changes underwriting state as retryable, replayable, auditable, and subject to later investigation.<\/p>\n<\/blockquote>\n<p>The API also becomes part of the operating model. McKinsey&#039;s survey of B2B APIs in transaction banking found that <strong>more than 90%<\/strong> of institutions use or plan to use APIs to generate additional revenue from existing customers, while <strong>about three-quarters<\/strong> seek new revenue streams from new customers McKinsey on B2B APIs in transaction banking. In underwriting, that changes the failure boundary. A submission endpoint may support a governed partner service, so an outage, unauthorized field change, or missing decision record becomes a control issue as well as an engineering incident.<\/p>\n<p><a id=\"what-usually-breaks-first\"><\/a><\/p>\n<h3>What usually breaks first<\/h3>\n<p>The recurring failures are familiar after enough carrier integrations:<\/p>\n<ul>\n<li><strong>Duplicate writes:<\/strong> A retry creates a second review task, ingests the same document twice, or sends another binding call.<\/li>\n<li><strong>Loose authorization:<\/strong> A service reads records outside its tenant or changes fields beyond its assigned responsibility.<\/li>\n<li><strong>Silent schema drift:<\/strong> A provider adds or changes a field, and the parser drops it, rejects the payload, or maps it incorrectly.<\/li>\n<li><strong>Weak auditability:<\/strong> Logs record an error without identifying the submission, rule evaluation, decision path, or actor involved.<\/li>\n<\/ul>\n<p>Underwriting workflows cannot rely on an ambiguous status. If the system cannot show whether an action happened once, twice, or not at all, the support queue becomes the operational record. That leaves regulated review dependent on manual reconstruction, with weaker data isolation and less defensible explanations for the final decision.<\/p>\n<p><a id=\"authentication-and-authorization-for-regulated-data\"><\/a><\/p>\n<h2>Authentication and Authorization for Regulated Data<\/h2>\n<p>Basic API keys don&#039;t cut it in underwriting. They authenticate a caller, but they don&#039;t express who may read submission notes, who may alter binding decisions, or which tenant&#039;s records an integration is allowed to touch. In a shared environment, that distinction is the difference between a clean workflow and a reportable control failure.<\/p>\n<p><a id=\"start-with-narrow-identities\"><\/a><\/p>\n<h3>Start with narrow identities<\/h3>\n<p>OAuth 2.0 is still the right baseline for many partner and internal integrations, but the implementation has to follow the data boundary, not the convenience of the app. Give a service the minimum scopes it needs, then split read and write access so one integration can inspect underwriting notes without being able to change authority decisions or override outcomes. That separation becomes more important when the same infrastructure serves multiple carriers or lines of business.<\/p>\n<p>For shared platforms, treat <strong>tenant isolation<\/strong> as a design rule, not a feature flag. Each token should map to a specific tenant context, and each request should be evaluated against that context before any data is returned. If an authorization check fails, return a plain, controlled error and avoid exposing tenant names, policy references, or internal rule identifiers in logs that travel further than they should.<\/p>\n<blockquote>\n<p>Keep the token useful only where the business process needs it, never where a curious operator or a compromised service could turn one read path into a write path.<\/p>\n<\/blockquote>\n<p><a id=\"handle-long-underwriting-cycles-without-leaking-control\"><\/a><\/p>\n<h3>Handle long underwriting cycles without leaking control<\/h3>\n<p>Underwriting reviews don&#039;t always finish in a single session. If a decision stays open for a long time, token refresh needs to be proactive, not reactive. A request should not fail in the middle of a long-running review just because the access token aged out while the reviewer was waiting on a document or referral.<\/p>\n<p>The same discipline applies to privacy and residency controls. If the integration stores notes or supporting documents, the retention policy needs to be explicit, and the data handling path needs to match whatever GDPR-aligned residency commitments the insurer has already made. That means designing the API contract around what must move, not what can move.<\/p>\n<p><figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/figtrig.com\/blog\/wp-content\/uploads\/2026\/09\/api-integration-best-practices-idempotency-key.jpg\" alt=\"A flowchart diagram illustrating the idempotency key pattern for API request processing and caching.\" \/><\/figure>\n<\/p>\n<p>When an authorization failure happens, the right response is operational clarity, not noisy debugging. The consuming system should know whether the failure came from expired credentials, missing scope, or an invalid tenant context, while the logs keep sensitive payload details out of sight. In underwriting, that keeps the issue actionable without making the error channel into a data leak.<\/p>\n<p><a id=\"error-handling-and-idempotency-that-survives-retries\"><\/a><\/p>\n<h2>Error Handling and Idempotency That Survives Retries<\/h2>\n<p>Retries are not a reliability strategy by themselves. They&#039;re a risk multiplier unless the operation is designed to tolerate being attempted more than once. In underwriting, that&#039;s essential because a duplicate decision is far more expensive than a temporary failure.<\/p>\n<p><a id=\"separate-safe-reads-from-dangerous-writes\"><\/a><\/p>\n<h3>Separate safe reads from dangerous writes<\/h3>\n<p>Read operations can usually be retried with little drama if the client respects timeouts and handles stale data carefully. State-changing calls are different. A submission create, a referral update, or a binding confirmation needs <strong>idempotency<\/strong>, meaning the same logical request can be sent again without producing a second business event.<\/p>\n<p>One practical pattern is to generate a unique idempotency key before the write, persist it with the pending underwriting record, and treat any retry with that same key as the same operation. If the upstream API supports idempotency directly, use it. If it doesn&#039;t, maintain your own request ledger so the system can compare the incoming operation against what&#039;s already in flight or completed.<\/p>\n<p><a id=\"make-errors-tell-the-truth\"><\/a><\/p>\n<h3>Make errors tell the truth<\/h3>\n<p>A production-grade error response should help the caller decide whether to retry, pause, or hand the issue to a human. Temporary upstream failures deserve a retry path, but bad payloads, missing scopes, and invalid state transitions should fail fast. That clarity prevents retry storms and gives underwriting ops a cleaner queue.<\/p>\n<p>A practical pattern that holds up looks like this:<\/p>\n<ul>\n<li><strong>Transient failures:<\/strong> Retry with exponential backoff and jitter so simultaneous retries don&#039;t pile up together.<\/li>\n<li><strong>Permission failures:<\/strong> Stop immediately and surface a configuration problem.<\/li>\n<li><strong>State conflicts:<\/strong> Preserve the existing record and flag it for reconciliation.<\/li>\n<li><strong>Partial successes:<\/strong> Write an audit record before any downstream call so the transaction history survives the failure.<\/li>\n<\/ul>\n<blockquote>\n<p>Never let the retry loop decide business truth. The retry loop should only decide whether to ask again.<\/p>\n<\/blockquote>\n<p>Circuit breakers matter too, especially when a carrier or data provider goes unstable. Without them, every caller keeps hammering the same failing dependency, and the whole underwriting chain becomes harder to recover. With them, the integration fails closed for a short interval, gives operators a chance to see the fault line, and keeps the rest of the workflow from collapsing under avoidable load.<\/p>\n<p><figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/figtrig.com\/blog\/wp-content\/uploads\/2026\/09\/api-integration-best-practices-error-handling.jpg\" alt=\"A diagram illustrating the workflow for API error handling and idempotency to ensure consistent system operations.\" \/><\/figure>\n<\/p>\n<p>Logs need the same discipline as responses. Capture the submission reference, idempotency key, upstream correlation ID, and decision state, then redact anything that would expose sensitive underwriting content beyond the team that needs it. That&#039;s how you keep the audit trail useful without turning operational logs into a compliance problem.<\/p>\n<p><a id=\"versioning-strategies-that-protect-existing-integrations\"><\/a><\/p>\n<h2>Versioning Strategies That Protect Existing Integrations<\/h2>\n<p>A breaking API change in underwriting is rarely just a technical inconvenience. It can stop policy issuance, break carrier synchronization, or force manual workarounds across teams that thought the integration was stable. Versioning is where teams either preserve trust or burn it.<\/p>\n<p><a id=\"use-visible-versions-for-partner-facing-apis\"><\/a><\/p>\n<h3>Use visible versions for partner-facing APIs<\/h3>\n<p>URI path versioning works well for public or partner-facing endpoints because the version is visible in logs and network traces without header inspection. That makes it easier to route, debug, and support under pressure. If a carrier sends a bad submission, the support engineer can see the version right away instead of digging through hidden headers.<\/p>\n<p>The rule for major versions should stay simple. Add optional fields or new endpoints when the change is non-breaking. Bump the version only when you remove a field, change a type, or alter the meaning of an existing value. That line keeps consumers from guessing whether a change is safe.<\/p>\n<p><a id=\"make-deprecation-a-controlled-process\"><\/a><\/p>\n<h3>Make deprecation a controlled process<\/h3>\n<p>A version bump without a deprecation window is just a surprise. Consumers need time to pin a version, validate the new contract, and move their own test and rollout schedules. A sunset warning in the response and clear documentation around migration dates give downstream teams enough runway to keep the binding and review pipeline intact.<\/p>\n<p>Version pinning matters in mixed environments too. One client may stay on an older contract while another moves to the latest one. Reconciliation jobs help catch the drift between what a consumer expects and what the provider is serving, especially when multiple integrations share the same underwriting data model.<\/p>\n<blockquote>\n<p>The safest version is the one your logs can explain and your partners can migrate from without a war room.<\/p>\n<\/blockquote>\n<p>This is also where disciplined documentation pays off. Keep examples aligned with the version that&#039;s deployed, not the one everyone hopes to reach later. In underwriting, unclear version notes create more support work than the breaking change itself.<\/p>\n<p><a id=\"testing-and-monitoring-for-continuous-reliability\"><\/a><\/p>\n<h2>Testing and Monitoring for Continuous Reliability<\/h2>\n<p>Underwriting integrations don&#039;t fail only when the provider is down. They fail when a contract changes without notice, when a webhook arrives out of order, or when a long-running job starts drifting from expected behavior and no one notices until a reviewer complains. Reliability comes from combining tests, synthetic checks, and observability into one operating model.<\/p>\n<p><a id=\"test-contracts-before-production-finds-them\"><\/a><\/p>\n<h3>Test contracts before production finds them<\/h3>\n<p>Contract testing catches the kind of breakage that happy-path integration tests miss. If the provider changes a field name, tightens validation, or starts returning a new enum value, a contract test can surface that before a live submission is affected. That matters more in regulated workflows because a broken payload often looks like a business exception long before it looks like an infrastructure issue.<\/p>\n<p>Synthetic monitoring fills the gap between build-time tests and live traffic. Run end-to-end flows during off-peak periods, and verify that a real submission path still works through auth, routing, and downstream persistence. A health check should tell you whether the system is merely slow or completely unusable, since those are different operator responses.<\/p>\n<p><a id=\"make-observability-explain-the-submission-path\"><\/a><\/p>\n<h3>Make observability explain the submission path<\/h3>\n<p>Distributed tracing helps when an underwriting record touches multiple services. A correlation ID should follow the request from the entry API through any validation, enrichment, and persistence layers. That way, an engineer can tie a delay or failure to a specific submission without hand-searching logs across systems.<\/p>\n<p>A useful monitoring stack usually includes:<\/p>\n<ul>\n<li><strong>Correlation IDs:<\/strong> Link every call to a specific submission or review.<\/li>\n<li><strong>Latency alerts:<\/strong> Surface slowdown before underwriters feel the lag.<\/li>\n<li><strong>Dependency health:<\/strong> Separate the platform&#039;s problem from a carrier or data provider outage.<\/li>\n<li><strong>Business dashboards:<\/strong> Show operations leaders whether the integration is keeping up with work in flight.<\/li>\n<\/ul>\n<p>The video below is useful for teams who want a visual refresher on monitoring discipline.<\/p>\n<p><iframe width=\"100%\" style=\"aspect-ratio: 16 \/ 9\" src=\"https:\/\/www.youtube.com\/embed\/eur8dUO9mvE\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen><\/iframe><\/p>\n<blockquote>\n<p>If a reviewer can tell something is wrong before engineering does, the alerting and tracing model isn&#039;t mature enough yet.<\/p>\n<\/blockquote>\n<p>A good monitoring setup doesn&#039;t just prove that the API is alive. It shows whether the underwriting workflow is still trustworthy at the point where a human or a downstream system depends on it.<\/p>\n<p><a id=\"preparing-for-ai-agents-as-api-consumers\"><\/a><\/p>\n<h2>Preparing for AI Agents as API Consumers<\/h2>\n<p>Traditional integration guidance assumes a human developer chooses an endpoint, sends a request, and watches for a response. AI agents don&#039;t behave that way. They can chain calls quickly, test boundaries methodically, and reuse credentials in ways that create new security pressure even when the core API hasn&#039;t changed.<\/p>\n<p><a id=\"agent-safe-auth-needs-tighter-boundaries\"><\/a><\/p>\n<h3>Agent-safe auth needs tighter boundaries<\/h3>\n<p>That shift makes <strong>workload identity<\/strong> more important than generic machine access. Instead of assuming one service identity can do everything a workflow might need, define what the agent may read, what it may submit, and which actions still require a human decision. Externalized authorization is gaining traction because <strong>broken authorization remains the top API vulnerability<\/strong>, and the control point has to move closer to the decision rather than living only in the client <a href=\"https:\/\/curity.io\/blog\/2025-top-api-security-trends\/\">curity on 2025 API security trends<\/a>.<\/p>\n<p>Sender-constrained tokens also matter here because an agent can cache credentials or move them between workflows if the token isn&#039;t bound tightly enough. That&#039;s a replay risk in any environment, but it&#039;s especially awkward in underwriting because one autonomous caller can generate a lot of noisy, technically valid traffic very quickly.<\/p>\n<p><a id=\"keep-autonomy-explainable\"><\/a><\/p>\n<h3>Keep autonomy explainable<\/h3>\n<p>Autonomous callers need more than permission. They need an audit trail that explains why the call happened, which rule or task triggered it, and what data was accessed. If the integration can&#039;t answer that afterward, the machine speed becomes a liability during review.<\/p>\n<p>That&#039;s where the operational model matters as much as the auth model. AI agents can be useful for triage, enrichment, or pre-checks, but the API contract still needs clear authorization boundaries and logs that a compliance team can inspect later. Otherwise, you&#039;ve automated confusion instead of underwriting.<\/p>\n<p><a id=\"governing-api-growth-without-losing-control\"><\/a><\/p>\n<h2>Governing API Growth Without Losing Control<\/h2>\n<p>Underwriting platforms rarely stay with one clean API. Carrier feeds, document services, internal rules engines, event consumers, and special-case endpoints accumulate until no one can explain the whole integration surface. Independent coverage found that API growth is difficult to manage and control for many organizations, a problem that becomes visible when ownership and data boundaries are unclear <a href=\"https:\/\/www.scribd.com\/document\/884907107\/2025-Global-State-of-API-Security\">2025 Global State of API Security coverage<\/a>.<\/p>\n<p><a id=\"govern-the-shape-not-just-the-endpoint\"><\/a><\/p>\n<h3>Govern the shape, not just the endpoint<\/h3>\n<p>Define a canonical data model for core underwriting objects. Each adapter can translate carrier-specific names, field formats, and lifecycle states at the edge, while the internal model remains stable. That limits one-off mappings and keeps rule evaluation consistent when an external contract changes.<\/p>\n<p>A hub-and-spoke design can also reduce point-to-point connections. The central layer handles authentication, routing, logging, policy checks, and version selection. Edge systems stay smaller, and reviewers have one place to inspect access and transaction history. The trade-off is another operational component to run, but that cost is easier to manage than dozens of undocumented connections.<\/p>\n<p><a id=\"treat-apis-like-governed-products\"><\/a><\/p>\n<h3>Treat APIs like governed products<\/h3>\n<p>An API needs an owner, a defined audience, an access policy, documentation, a lifecycle state, and a retirement path. That product discipline applies even when the API is not sold directly. Financial institutions increasingly manage APIs as business capabilities rather than isolated technical interfaces, as discussed in <a href=\"https:\/\/www.mckinsey.com\/industries\/financial-services\/our-insights\/from-tech-tool-to-business-asset-how-banks-are-using-b2b-apis-to-fuel-growth\">McKinsey on B2B APIs in transaction banking<\/a>.<\/p>\n<p>For regulated underwriting, governance must also cover data isolation and explainability. Record which service or user accessed a case, which fields were read or changed, and which policy allowed the action. Keep audit records separate from mutable application data when possible, with retention and review rules that match the organization&#039;s obligations.<\/p>\n<p><strong>FigTrig<\/strong> exposes a REST API and webhook support for underwriting review workflows, along with an embedded API client for direct system integration. Used within a defined ownership and audit model, it can connect review activity to the surrounding underwriting process without creating an untracked endpoint.<\/p>\n<p>Every new integration should fit the approved data model, version policy, authorization boundary, and audit model. Exceptions require a recorded reason and an owner, not an informal agreement between delivery teams.<\/p>\n<p>If your underwriting integrations need cleaner audit trails, tighter data isolation, and controls that remain understandable when carriers, reviewers, and automated consumers share one workflow, FigTrig is designed for that environment. Visit <a href=\"https:\/\/figtrig.com\">FigTrig<\/a> to review its API, explainable review flags, and audit-ready records alongside your existing stack.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>You can get a submission flow working in staging and still have it fall apart the first Monday morning when carriers, brokers, and underwriting ops&#8230;<\/p>\n","protected":false},"author":1,"featured_media":126,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[68,70,71,69,21],"class_list":["post-127","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized","tag-api-integration-best-practices","tag-api-versioning","tag-idempotency-keys","tag-rest-api-security","tag-underwriting-technology"],"_links":{"self":[{"href":"https:\/\/figtrig.com\/blog\/wp-json\/wp\/v2\/posts\/127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/figtrig.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/figtrig.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/figtrig.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/figtrig.com\/blog\/wp-json\/wp\/v2\/comments?post=127"}],"version-history":[{"count":1,"href":"https:\/\/figtrig.com\/blog\/wp-json\/wp\/v2\/posts\/127\/revisions"}],"predecessor-version":[{"id":130,"href":"https:\/\/figtrig.com\/blog\/wp-json\/wp\/v2\/posts\/127\/revisions\/130"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/figtrig.com\/blog\/wp-json\/wp\/v2\/media\/126"}],"wp:attachment":[{"href":"https:\/\/figtrig.com\/blog\/wp-json\/wp\/v2\/media?parent=127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/figtrig.com\/blog\/wp-json\/wp\/v2\/categories?post=127"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/figtrig.com\/blog\/wp-json\/wp\/v2\/tags?post=127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}