# Closient ## Docs - [API Reference](https://docs.closient.com/api-overview.md): Explore 18 domain-specific APIs with interactive playgrounds. - [Identify the authenticated caller](https://docs.closient.com/api-reference/account/account/identify-the-authenticated-caller.md): Returns the caller identity, their organizations, and the API key used for this request. - [Create API key](https://docs.closient.com/api-reference/account/api-keys/create-api-key.md): Create a new API key for the organization. Requires MANAGE_API_KEYS permission. - [Delete API key](https://docs.closient.com/api-reference/account/api-keys/delete-api-key.md): Delete an API key. Requires MANAGE_API_KEYS permission. - [List API keys](https://docs.closient.com/api-reference/account/api-keys/list-api-keys.md): List all API keys for the organization. Requires MANAGE_API_KEYS permission. - [Update API key](https://docs.closient.com/api-reference/account/api-keys/update-api-key.md): Update an API key's name or description. Requires MANAGE_API_KEYS permission. - [Get organization member](https://docs.closient.com/api-reference/account/members/get-organization-member.md): Get a specific member of an organization by membership ID. - [Invite a member](https://docs.closient.com/api-reference/account/members/invite-a-member.md): Invite a user to the organization by email. Creates the user if they do not exist. - [List organization members](https://docs.closient.com/api-reference/account/members/list-organization-members.md): List all members of an organization. - [Remove a member](https://docs.closient.com/api-reference/account/members/remove-a-member.md): Remove a member from the organization. - [Update member role](https://docs.closient.com/api-reference/account/members/update-member-role.md): Update a member's role within the organization. - [Create organization](https://docs.closient.com/api-reference/account/organizations/create-organization.md): Create a new organization for the authenticated user. - [Delete organization](https://docs.closient.com/api-reference/account/organizations/delete-organization.md): Delete an organization. - [Get organization](https://docs.closient.com/api-reference/account/organizations/get-organization.md): Retrieve a single organization by ID. - [List all organizations](https://docs.closient.com/api-reference/account/organizations/list-all-organizations.md): List all organizations that the user has access to - [Update organization](https://docs.closient.com/api-reference/account/organizations/update-organization.md): Update an organization's details. - [Campaign performance time series](https://docs.closient.com/api-reference/advertising/ad-reporting/campaign-performance-time-series.md): Return daily metrics and summary totals for a campaign within a date range. - [Campaign summary metrics](https://docs.closient.com/api-reference/advertising/ad-reporting/campaign-summary-metrics.md): Return aggregated lifetime metrics for a campaign. - [List campaigns with performance summary](https://docs.closient.com/api-reference/advertising/ad-reporting/list-campaigns-with-performance-summary.md): List all campaigns for an organization with per-campaign performance metrics. - [Organization aggregate performance](https://docs.closient.com/api-reference/advertising/ad-reporting/organization-aggregate-performance.md): Return aggregated metrics across all campaigns for an organization. - [Record ad click](https://docs.closient.com/api-reference/advertising/ads/record-ad-click.md): Record an ad click event and deduct from the campaign budget. - [Record ad impressions](https://docs.closient.com/api-reference/advertising/ads/record-ad-impressions.md): Batch-record ad impression events for one or more campaigns. - [List revenue share records](https://docs.closient.com/api-reference/advertising/revenue-share/list-revenue-share-records.md): List all revenue share records for an organization, ordered by most recent period. - [Revenue share detail](https://docs.closient.com/api-reference/advertising/revenue-share/revenue-share-detail.md): Get a single revenue share record by ID. - [Revenue share summary](https://docs.closient.com/api-reference/advertising/revenue-share/revenue-share-summary.md): Get total earned, paid, and pending revenue share balance for an organization. - [Cancel resolver subscription](https://docs.closient.com/api-reference/billing/billing/cancel-resolver-subscription.md): Cancel the active resolver subscription via the Stripe API. Requires the BILLING role or organization ownership. The local ``resolver_subscription_status`` is set to ``CANCELLED`` immediately for UI consistency; the Stripe-fired ``customer.subscription.deleted`` webhook is the authoritative confirma… - [Create billing portal session](https://docs.closient.com/api-reference/billing/billing/create-billing-portal-session.md): Open a Stripe Customer Portal session for self-service subscription management — payment methods, invoice history, and subscription cancellation. Requires the BILLING role or organization ownership. If the organization has no Stripe customer record yet, one is created on the fly. - [Create checkout session](https://docs.closient.com/api-reference/billing/billing/create-checkout-session.md): Create a Stripe Checkout session for adding prepaid advertising funds to an organization. The caller must hold the BILLING role or be an owner of the organization. Returns the Stripe-hosted Checkout URL — redirect the end user there. Funds land on ``Organization.ad_balance`` once Stripe fires ``chec… - [Create resolver subscription checkout](https://docs.closient.com/api-reference/billing/billing/create-resolver-subscription-checkout.md): Create a Stripe Checkout session in subscription mode for the GS1 Digital Link resolver. The caller must hold the BILLING role or be an owner. Returns ``400`` if the organization already has an active resolver subscription — cancel the existing one via the Customer Portal before opening a new Checko… - [Get organization ad balance](https://docs.closient.com/api-reference/billing/billing/get-organization-ad-balance.md): Get the prepaid ad balance and lifetime spend summary for an organization. Any member of the organization can read this — no BILLING role is required. - [Get resolver billing summary](https://docs.closient.com/api-reference/billing/billing/get-resolver-billing-summary.md): Get the resolver subscription summary: tier, lifecycle status, current billable usage, Free-tier limits (when applicable), and the estimated next monthly invoice (paid tiers only). Any member of the organization can read this — no BILLING role required. The estimate is computed via the same code pat… - [Stripe webhook](https://docs.closient.com/api-reference/billing/billing/stripe-webhook.md): Receive an inbound Stripe webhook event. Unauthenticated — request validity is established by verifying the ``Stripe-Signature`` header against the configured signing secret. Returns ``400`` for a missing or invalid signature; handlers themselves are not caught — they raise on internal failures so S… - [Create brand](https://docs.closient.com/api-reference/brands/brands/create-brand.md): Create a new brand for an organization. Requires OWNER or MANAGER role. - [Delete brand](https://docs.closient.com/api-reference/brands/brands/delete-brand.md): Soft-delete a brand (sets is_active=False). Requires OWNER or MANAGER role. - [Get brand detail](https://docs.closient.com/api-reference/brands/brands/get-brand-detail.md): Retrieve detailed brand information by short ID. - [List brands](https://docs.closient.com/api-reference/brands/brands/list-brands.md): List all brands with optional filtering by name or organization. - [Update brand](https://docs.closient.com/api-reference/brands/brands/update-brand.md): Update brand profile fields. Requires OWNER or MANAGER role. - [Upload brand logo](https://docs.closient.com/api-reference/brands/brands/upload-brand-logo.md): Upload or replace a brand logo image. Requires OWNER or MANAGER role. - [Assign certification to product](https://docs.closient.com/api-reference/certifications/assignments/assign-certification-to-product.md): Create a new certification assignment for a product. Returns ``201`` with the created assignment on success; ``404`` if the GTIN does not match a product or the ``certification_id`` does not exist; ``409`` if the certification is already assigned to this product (the (product, certification) pair is… - [Assign claim to product](https://docs.closient.com/api-reference/certifications/assignments/assign-claim-to-product.md): Create a new claim assignment for a product. Returns ``201`` with the created assignment on success; ``404`` if the GTIN or ``claim_id`` does not exist; ``409`` if the claim is already assigned to this product (the (product, claim) pair is unique). - [List product certifications](https://docs.closient.com/api-reference/certifications/assignments/list-product-certifications.md): Retrieve every certification assigned to a product, including verification status, issuing body, and validity dates. Filter by verification status or active validity-window membership. The ``is_active`` boolean returned per row is computed at request time from ``valid_from`` / ``expiration_date``; t… - [List product claims](https://docs.closient.com/api-reference/certifications/assignments/list-product-claims.md): Retrieve every claim (e.g. ``Non-GMO``, ``Vegan``) assigned to a product, with source (self-declared / third-party-verified) and validity dates. Returns ``404`` when no product matches the GTIN. - [Remove certification from product](https://docs.closient.com/api-reference/certifications/assignments/remove-certification-from-product.md): Delete a certification assignment from a product. Returns ``204`` on success or ``404`` when the assignment does not exist. Idempotent semantics are *not* provided: a second delete call returns ``404``, not ``204``. - [Remove claim from product](https://docs.closient.com/api-reference/certifications/assignments/remove-claim-from-product.md): Delete a claim assignment from a product. Returns ``204`` on success or ``404`` when the assignment does not exist. - [Update certification assignment](https://docs.closient.com/api-reference/certifications/assignments/update-certification-assignment.md): Partially update an existing certification assignment. Only fields present in the request body are applied; omitted fields are left unchanged. ``metadata`` follows Stripe-style merge semantics. Returns ``404`` when the GTIN or certification does not match an existing assignment. - [Get certification body](https://docs.closient.com/api-reference/certifications/certification-bodies/get-certification-body.md): Retrieve a single certification body by its ``id``. Returns ``404`` when no body matches the identifier. - [List certification bodies](https://docs.closient.com/api-reference/certifications/certification-bodies/list-certification-bodies.md): Retrieve every certification-issuing body (e.g. USDA, Fair Trade USA, Oregon Tilth, MSC, FSC). Filterable by name; sortable by ``name``. Paginated with the standard ``{data, pagination}`` envelope; default ``page_size`` is 25, max 100. - [Get certification](https://docs.closient.com/api-reference/certifications/certifications/get-certification.md): Retrieve a single certification definition by its ``id``. Returns ``404`` when no certification matches the identifier. - [List certifications](https://docs.closient.com/api-reference/certifications/certifications/list-certifications.md): Retrieve certification *definitions* — the canonical records (USDA Organic, Fair Trade, MSC, ...) that products are then assigned to. Filterable by label, code, and certification body. Paginated. - [Get claim](https://docs.closient.com/api-reference/certifications/claims/get-claim.md): Retrieve a single claim definition by its ``id``. Returns ``404`` when no claim matches the identifier. - [List claims](https://docs.closient.com/api-reference/certifications/claims/list-claims.md): Retrieve claim *definitions* — the canonical records (Non-GMO, Vegan, Gluten-Free, ...) that products are then assigned to. Filterable by label, code, and category. Paginated. - [List product recalls](https://docs.closient.com/api-reference/compliance/compliance/list-product-recalls.md): Retrieve every **open** recall affecting a single product, sourced from FDA, USDA FSIS, CPSC, and Health Canada and matched to the product by GTIN/UPC at ingestion time. 'Open' means ``status`` is ``ONGOING`` or ``UNKNOWN`` — completed and terminated recalls are excluded from this endpoint by design… - [Check product data readiness](https://docs.closient.com/api-reference/content/content/check-product-data-readiness.md): Evaluate product data completeness for a GTIN in the Closient product repository. - [Get product completeness score](https://docs.closient.com/api-reference/dashboard/completeness/get-product-completeness-score.md): Returns the per-field completeness breakdown that powers the brand dashboard's data-quality widget. The same scoring formula drives the ``avg_completeness`` and ``complete_products`` counters on the stats endpoint, so callers can mix this and ``GET /stats/{organization_id}`` without normalizing. Cal… - [Delete product image](https://docs.closient.com/api-reference/dashboard/images/delete-product-image.md): Permanently delete an image from a product. Returns 204 on success and 404 if the image does not belong to the targeted product. Requires the ``organization.contribute_organization`` permission. - [List product images](https://docs.closient.com/api-reference/dashboard/images/list-product-images.md): Paginated list of images attached to a product, ordered with the primary image first, then by ascending ``priority``, then most-recent upload. Caller must be a member of ``organization_id`` and the product must be owned by that organization. - [Upload product image](https://docs.closient.com/api-reference/dashboard/images/upload-product-image.md): Upload a single image and attach it to the product. Accepts JPEG, PNG, GIF, WebP, SVG, or BMP. When ``is_primary`` is true the previously primary image (if any) is automatically demoted, so at most one image per product carries the flag. Requires the ``organization.contribute_organization`` permissi… - [Extract GTINs from a product photo via Bedrock Vision](https://docs.closient.com/api-reference/dashboard/ocr/extract-gtins-from-a-product-photo-via-bedrock-vision.md): Server-side fallback for in-browser Tesseract.js OCR. Uploads a single product photo (JPEG/PNG/GIF/WebP) to Bedrock Vision, asks the vision model for barcode digit sequences, then keeps only candidates that pass the GS1 mod-10 check digit. The response is always shaped — on any backend failure it re… - [Get dashboard statistics](https://docs.closient.com/api-reference/dashboard/stats/get-dashboard-statistics.md): Returns the aggregated counters rendered on the brand dashboard home (total products, completeness average, active/broken offers, expiring certifications, products missing images). Counts are computed live against the requesting organization — there is no caching layer. Caller must be a member of ``… - [Capture EPCIS events](https://docs.closient.com/api-reference/epcis/epcis-20/capture-epcis-events.md): Capture one or more EPCIS 2.0 events for the authenticated organization. The request body MUST be a valid EPCISDocument with a populated ``epcisBody.eventList`` array (GS1 EPCIS 2.0 §6.2 / §8). Each event is validated, persisted, and (when its ``bizStep`` is FSMA-relevant) materialized into a Critic… - [Enqueue an FSMA 204 traceability export for one lot](https://docs.closient.com/api-reference/epcis/epcis-20/enqueue-an-fsma-204-traceability-export-for-one-lot.md): FSMA 204 § 1.1455(c) requires records be furnished to FDA within 24 hours of request. This endpoint enqueues an async export of all CriticalTrackingEvents for the given lot — ``forward`` (downstream), ``backward`` (upstream), or ``both`` — and returns a TraceabilityExportJob with a ``short_id``. Whe… - [Get EPCIS event by ID](https://docs.closient.com/api-reference/epcis/epcis-20/get-epcis-event-by-id.md): Retrieve a single EPCIS event by its UUID. The response body is the same JSON-LD event representation that appears inside ``eventList`` on the ``/events`` endpoint (GS1 EPCIS 2.0 §7.3 / §8). The event is only visible to OWNER / MANAGER members of the organization that captured it; other organization… - [List supported event types](https://docs.closient.com/api-reference/epcis/epcis-20/list-supported-event-types.md): Public capability-discovery endpoint per GS1 EPCIS 2.0 §8.2.4. Returns the fixed set of event type tokens this server accepts on capture and exposes on query: ``ObjectEvent``, ``AggregationEvent``, ``TransactionEvent``, ``TransformationEvent``, ``AssociationEvent``. No authentication required — the… - [Quantified downstream footprint for one lot](https://docs.closient.com/api-reference/epcis/epcis-20/quantified-downstream-footprint-for-one-lot.md): Walks the forward CriticalTrackingEvent chain from the given lot and returns aggregate counts (downstream lots, serials, ship-to GLNs, trading-partner recipients). Same auth + visibility semantics as the FDA traceability export — the requesting user must be an OWNER or MANAGER of the organization th… - [Query EPCIS events](https://docs.closient.com/api-reference/epcis/epcis-20/query-epcis-events.md): Query events using EPCIS 2.0 SimpleEventQuery parameters (GS1 EPCIS 2.0 §8.2.7 and §8.2.8). Filter by event type, time window, CBV business step or disposition, read point, business location, action, or by EPC reference. Results are returned as a JSON-LD ``EPCISQueryDocument`` (§8.2.5) with the stan… - [List webhook deliveries](https://docs.closient.com/api-reference/integrations/webhook-deliveries/list-webhook-deliveries.md): Recent delivery attempts across **every** endpoint on the authenticated organization, ordered most-recent first. Each row is a single attempt — replays produce a new row rather than mutating the prior one. Filter by endpoint, lifecycle status, event type, and a ``created_at`` date range. Page size i… - [Replay a dead-lettered delivery](https://docs.closient.com/api-reference/integrations/webhook-deliveries/replay-a-dead-lettered-delivery.md): Re-queue a ``dead_letter`` delivery for another attempt. Creates a brand-new delivery record (the original row is preserved for audit) and waits for the first attempt to finish before responding; subsequent retries — if any — happen asynchronously and surface in the deliveries list. Replaying a deli… - [Create a webhook endpoint](https://docs.closient.com/api-reference/integrations/webhook-endpoints/create-a-webhook-endpoint.md): Register a new HTTPS webhook endpoint on the authenticated organization. The full signing secret is returned **only** on this create response — store it on the customer side immediately; subsequent ``GET``/``LIST`` responses return a masked form. The endpoint starts active by default and immediately… - [Delete a webhook endpoint](https://docs.closient.com/api-reference/integrations/webhook-endpoints/delete-a-webhook-endpoint.md): Soft-delete (deactivate) the endpoint. Historical delivery records are retained for audit and can still be queried via the deliveries-list endpoint. New events will not be enqueued for this endpoint after deletion. - [Get a webhook endpoint](https://docs.closient.com/api-reference/integrations/webhook-endpoints/get-a-webhook-endpoint.md): Retrieve a single webhook endpoint by UUID. The signing secret is returned masked (``...``); to obtain the full secret, rotate via ``POST /{endpoint_id}/rotate-secret/``. - [List webhook endpoints](https://docs.closient.com/api-reference/integrations/webhook-endpoints/list-webhook-endpoints.md): List every webhook endpoint on the authenticated organization. Signing secrets are masked. Supports ``?metadata[key]=value`` exact-match filtering on the developer-attached metadata bag (see ``MetadataReadMixin``). Page-size is fixed at 50; use ``?page=N`` to walk the paginated set. - [Rotate signing secret](https://docs.closient.com/api-reference/integrations/webhook-endpoints/rotate-signing-secret.md): Generate a new signing secret and return it **in full**. Initiates a **24-hour dual-signature grace period**: during this window every delivery's ``X-Closient-Signature`` header carries both ``v1=`` (signed with the new secret) and ``v1old=`` (signed with the previous secret) so customers can switch… - [Send test event](https://docs.closient.com/api-reference/integrations/webhook-endpoints/send-test-event.md): Send a synthetic ``ping`` event to the endpoint **synchronously** and return the first attempt's result. Bypasses the retry queue — this is for verifying URL reachability, signature verification, and customer-side handler wiring during integration. Subscribed event types are not consulted; the test… - [Update a webhook endpoint](https://docs.closient.com/api-reference/integrations/webhook-endpoints/update-a-webhook-endpoint.md): Partial update — every field on the request body is optional and omitted fields are left untouched. ``metadata`` follows Stripe-style merge semantics (``{}``/``null`` clears, empty-string values delete a key). The signing secret cannot be rotated through this endpoint; use the dedicated rotate-secre… - [Find nearby locations](https://docs.closient.com/api-reference/locations/store-locator-public/find-nearby-locations.md): Returns the organization's locations within `radius` km of (`lat`, `lon`), sorted by ascending great-circle distance. Authenticated via a publishable API key (`cpk_*`) in the `X-API-Key` header — the same key embedded in the public store-locator widget. Coordinates are WGS 84 / EPSG:4326 (the standa… - [Track widget analytics events](https://docs.closient.com/api-reference/locations/store-locator-public/track-widget-analytics-events.md): Fire-and-forget telemetry for the embeddable store locator widget. Designed for `navigator.sendBeacon()` and background `fetch()` calls — no auth, no rate limit, always returns `204 No Content`. The body is structured-logged server-side (event type, `cpk_*` key prefix, referrer, query, and clicked l… - [Create a notification channel](https://docs.closient.com/api-reference/notifications/notifications/create-a-notification-channel.md): Register a new notification channel for the authenticated user. Returns the channel with ``verified=false``; a verification flow (email link, SMS code) must complete before notifications are delivered. Returns 400 if ``channel_type`` is not one of the supported values. - [Delete a notification channel](https://docs.closient.com/api-reference/notifications/notifications/delete-a-notification-channel.md): Permanently delete a notification channel. To temporarily pause delivery without losing the channel configuration, PATCH with ``enabled=false`` instead. - [Get a notification channel](https://docs.closient.com/api-reference/notifications/notifications/get-a-notification-channel.md): Retrieve a single notification channel by ID. Returns 404 if the channel does not exist or is owned by another user. - [List in-app notifications](https://docs.closient.com/api-reference/notifications/notifications/list-in-app-notifications.md): List in-app notifications for the authenticated user, newest first. Supports filtering by read status via ``unread_only``. Pagination metadata includes ``unread_count`` so clients can render an inbox badge without a second request. - [List notification channels](https://docs.closient.com/api-reference/notifications/notifications/list-notification-channels.md): List every notification channel registered to the authenticated user. Supports filtering by ``channel_type`` and ``enabled`` status, and ordering by ``label`` or ``created`` (prefix with ``-`` for descending). - [Mark a notification as read](https://docs.closient.com/api-reference/notifications/notifications/mark-a-notification-as-read.md): Mark a single in-app notification as read. Idempotent — calling this endpoint on an already-read notification is a no-op. Returns 404 if the notification does not exist or is owned by another user. - [Mark all notifications as read](https://docs.closient.com/api-reference/notifications/notifications/mark-all-notifications-as-read.md): Mark every unread in-app notification for the authenticated user as read. Returns the number of notifications updated. Already-read notifications are skipped. - [Notification system health](https://docs.closient.com/api-reference/notifications/notifications/notification-system-health.md): Aggregate health of the notification delivery pipeline. Reports a status verdict (``healthy`` / ``degraded`` / ``unhealthy``) computed from the trailing-hour failure rate, plus delivery counters for the last hour and unsubscribe counters for the last 24 hours. Used by uptime monitors and the interna… - [Update a notification channel](https://docs.closient.com/api-reference/notifications/notifications/update-a-notification-channel.md): Partially update a notification channel. Only ``enabled`` and ``label`` are mutable; channel-type and verification status cannot be changed via this endpoint. - [API Reference](https://docs.closient.com/api-reference/overview.md): Interactive documentation for all Closient APIs. - [Generate a single 1D barcode](https://docs.closient.com/api-reference/products/codes/generate-a-single-1d-barcode.md): Render a 1D barcode for a GTIN. Symbology is auto-selected from GTIN length unless overridden via ``barcode_type``. Returns image bytes (``image/svg+xml``, ``image/png``, or ``application/postscript``). - [Generate a single GS1 DataMatrix](https://docs.closient.com/api-reference/products/codes/generate-a-single-gs1-datamatrix.md): Render a GS1 DataMatrix for a GTIN plus any subset of (lot, serial, expiry). At least one of lot or serial is required. Returns image bytes (``image/svg+xml`` or ``image/png``). - [Parse a GS1 Digital Link URL into structured AIs](https://docs.closient.com/api-reference/products/digital-link/parse-a-gs1-digital-link-url-into-structured-ais.md): Accept a URL string; return the structured GS1 Digital Link components (GTIN, lot, expiry, serial, plus any other AIs found in the path). Returns `is_valid: false` when the URL is not a recognisable Digital Link rather than 4xx-erroring — callers can use a single endpoint to triage arbitrary scanned… - [Bulk import products from CSV](https://docs.closient.com/api-reference/products/import/bulk-import-products-from-csv.md): Upload a CSV file to create or update products in bulk. The CSV must include a GTIN column (also accepts ``barcode``, ``upc``, ``ean``, or ``gtin-8`` / ``gtin-12`` / ``gtin-13`` / ``gtin-14``). Optional columns: ``product_name`` (also ``name`` / ``title``), ``brand``, ``manufacturer``, ``description… - [Download CSV import template](https://docs.closient.com/api-reference/products/import/download-csv-import-template.md): Download a sample CSV template with the expected column headers and two example data rows for bulk product import. Returned as ``text/csv`` with a ``Content-Disposition: attachment`` header so browsers save it directly. The template is public — no authentication required — to make it easy to preview… - [Poll a bulk label-export job](https://docs.closient.com/api-reference/products/labels/poll-a-bulk-label-export-job.md): Returns the status of a previously submitted bulk-label-export job. When the job is complete, the response includes a temporary signed download URL for the artifact and an `expires_at` timestamp. Cross-org polling deliberately returns 404 (not 403) to prevent id enumeration. - [Submit a bulk label-export job](https://docs.closient.com/api-reference/products/labels/submit-a-bulk-label-export-job.md): Queue a bulk label-export job and return the job id. Polling endpoint (`GET /labels/export/{job_id}/`) returns status and a temporary signed download URL once complete. Small jobs (count <= `LabelExportJob.SYNC_THRESHOLD`) run synchronously inside the request — the very first poll will already repor… - [Add hierarchy link](https://docs.closient.com/api-reference/products/product-group/add-hierarchy-link.md): Add a child product to this GTIN's packaging hierarchy. - [Remove hierarchy link](https://docs.closient.com/api-reference/products/product-group/remove-hierarchy-link.md): Remove a parent-child hierarchy link. - [Claim a product](https://docs.closient.com/api-reference/products/products/claim-a-product.md): Claim ownership of a GTIN on behalf of the authenticated user's business. The caller must be an OWNER or MANAGER of the business. A GTIN can only be claimed by one business; re-claiming by the same business is idempotent. - [Create a product](https://docs.closient.com/api-reference/products/products/create-a-product.md): Create a new product record and claim the GTIN for the authenticated user's organization. If the GTIN already exists, returns 409 — use POST /products/{gtin}/claim instead. - [Delete (unclaim) a product](https://docs.closient.com/api-reference/products/products/delete-unclaim-a-product.md): Unclaim and deactivate a product GTIN. Sets brand to null and disables resolver. The caller must be an OWNER or MANAGER of the organization that owns the claim. - [Get product content](https://docs.closient.com/api-reference/products/products/get-product-content.md): Retrieve every content sub-resource for a product in a single response: images, ingredients, nutrition facts, certifications, claims, recalls, circularity score, and FTL designation. Use this on resolver pages to avoid five round-trips; use the per-resource endpoints when only a slice is needed. - [Get product detail](https://docs.closient.com/api-reference/products/products/get-product-detail.md): Retrieve product information by its URL-safe short ID. Returns 404 if no product matches the short ID. - [Get product nutrition facts](https://docs.closient.com/api-reference/products/products/get-product-nutrition-facts.md): Retrieve the structured nutrition-facts panel for a product (serving size, servings per container, label format, per-nutrient rows). Returns 404 when no panel has been recorded for the product. - [Get product sustainability data (removed)](https://docs.closient.com/api-reference/products/products/get-product-sustainability-data-removed.md): **Deprecated.** This endpoint has been removed. Use ``GET /sustainability/api/v1/products/{gtin}/sustainability`` instead. Always returns 410 Gone. - [Get trade item detail](https://docs.closient.com/api-reference/products/products/get-trade-item-detail.md): Retrieve the full canonical record for a single GTIN, including dimensions, GPC codes, field-level confidence, usage instructions, brand product page URL, and AI-generated summary. Accepts GTIN-8/12/13/14 input; the GTIN is normalized to GTIN-14 before lookup. - [List claimed products](https://docs.closient.com/api-reference/products/products/list-claimed-products.md): List all products claimed by a specific organization. Requires the organization_id query parameter. Supports `?metadata[key]=value` exact-match filtering (C-2734). - [List product categories](https://docs.closient.com/api-reference/products/products/list-product-categories.md): List all product categories from the Google Product Taxonomy. Used to populate category pickers and to look up the UUID needed for ``TradeItemFilterSchema.category_id``. - [List product certifications](https://docs.closient.com/api-reference/products/products/list-product-certifications.md): Retrieve all certifications assigned to a product, including verification status, issuing body, and validity dates. Results are paginated. - [List product claims](https://docs.closient.com/api-reference/products/products/list-product-claims.md): Retrieve all product claims (e.g. ``Non-GMO``, ``Vegan``) assigned to a product. Results are paginated. - [List product hierarchy](https://docs.closient.com/api-reference/products/products/list-product-hierarchy.md): Retrieve the GDSN packaging hierarchy for a product — e.g. case contains inner packs, inner pack contains eaches. Each row carries the parent/child GTINs, hierarchy level, and quantity. - [List product images](https://docs.closient.com/api-reference/products/products/list-product-images.md): Retrieve all images attached to a product, ordered by ``priority`` (with ``is_primary`` rendering first). Results are paginated. - [List product ingredients](https://docs.closient.com/api-reference/products/products/list-product-ingredients.md): Retrieve the ingredient list for a product, ordered by predominance (label order). Each row carries the substance name, allergen flags, may-contain disclosure, percentage when declared, and origin. - [List product recalls](https://docs.closient.com/api-reference/products/products/list-product-recalls.md): Retrieve recall records linked to a product across FDA, FSIS, CPSC, and Health Canada. Filter by ``status``, ``severity``, or ``source_system``; sort by ``recall_date`` or ``severity``. - [List products](https://docs.closient.com/api-reference/products/products/list-products.md): List products in the catalog, optionally filtered by brand or active status. Results are paginated; page through with `?page=2&page_size=50`. Sorting via `?ordering=product_name` or `?ordering=-created` (descending). - [List trade items](https://docs.closient.com/api-reference/products/products/list-trade-items.md): List trade items (canonical GTIN records) with optional filtering by brand, category, claim status, country of origin, data source, or free-text search. Results are paginated; sort via `?ordering=product_name` or `?ordering=-created` (descending). - [Look up a product](https://docs.closient.com/api-reference/products/products/look-up-a-product.md): Retrieve canonical product data for a GTIN. Accepts GTIN-8, GTIN-12, GTIN-13, or GTIN-14 (with or without hyphens/spaces). The GTIN is normalized to GTIN-14 before lookup. - [Report a suspicious GTIN ownership claim](https://docs.closient.com/api-reference/products/products/report-a-suspicious-gtin-ownership-claim.md): File a report against the current ownership claim on a GTIN. No authentication required — real brand owners may not yet have a Closient account. Reports are reviewed by Closient staff; reaching a threshold of distinct reporters flags the product for admin triage. Rate limited to 3 reports per IP per… - [Unclaim a product](https://docs.closient.com/api-reference/products/products/unclaim-a-product.md): Release ownership of a previously claimed GTIN. The caller must be an OWNER or MANAGER of the organization that owns the claim. - [Update a product](https://docs.closient.com/api-reference/products/products/update-a-product.md): Update editable fields on a claimed product. The caller must be an OWNER, MANAGER, or EDITOR of the organization that owns the GTIN. Only explicitly provided (non-null) fields are updated. - [Generate a batch of QR codes asynchronously](https://docs.closient.com/api-reference/products/qr/generate-a-batch-of-qr-codes-asynchronously.md): Kick off a Celery task that renders one QR per item, packages them into a ZIP bundle, and uploads the bundle to object storage. Returns a task ID immediately (HTTP 202). Poll ``GET /qr/bulk/{task_id}/`` for status and the temporary download URL. Hard cap: 5000 items per request. - [Generate a single QR code](https://docs.closient.com/api-reference/products/qr/generate-a-single-qr-code.md): Render a QR code for a GTIN with optional GS1 Application Identifiers (lot, serial, expiry). Returns the image bytes directly with the appropriate content-type (``image/svg+xml`` or ``image/png``). Single QR generation is synchronous because rendering is fast (<50ms) and cached. For batches, use ``P… - [Poll a bulk QR generation task](https://docs.closient.com/api-reference/products/qr/poll-a-bulk-qr-generation-task.md): Returns the status of a previously queued bulk QR job. When the job is complete, the response includes a temporary signed download URL for the ZIP bundle and an ``expires_at`` timestamp. The endpoint is rate limited at the global API key tier. - [Create resolution rule](https://docs.closient.com/api-reference/resolver/resolver/create-resolution-rule.md): Create a new resolution rule for the organization. Returns ``422`` when ``destination_type == 'CUSTOM_URL'`` but ``custom_url`` is empty, or when ``annual_start_mmdd`` / ``annual_end_mmdd`` are not in ``MM-DD`` format. Returns ``404`` if the organization doesn't exist or the caller lacks CHANGE perm… - [Delete resolution rule](https://docs.closient.com/api-reference/resolver/resolver/delete-resolution-rule.md): Permanently delete a resolution rule. Returns ``{"success": true}`` on success, ``404`` if the rule doesn't exist or the caller lacks CHANGE permission on the owning organization. Cascades the rule's ``CustomURLHealth`` row but does not affect audit-log entries. - [Get resolution rule](https://docs.closient.com/api-reference/resolver/resolver/get-resolution-rule.md): Fetch a single resolution rule by its ``short_id``. Returns ``404`` if the rule does not exist or belongs to an organization the caller cannot see. - [List resolution rules](https://docs.closient.com/api-reference/resolver/resolver/list-resolution-rules.md): Return every resolution rule owned by the organization, optionally filtered by scope and enabled status. Results are paginated with the standard ``{data, pagination}`` envelope (max ``page_size`` 100, default 25) and ordered by ``(scope_type, scope_id, order_index)`` — the same order the resolver ev… - [Reorder resolution rules](https://docs.closient.com/api-reference/resolver/resolver/reorder-resolution-rules.md): Atomically update ``order_index`` on a contiguous block of rules in a single transaction. Every rule referenced by ``short_id`` must belong to the URL's organization, otherwise the whole call aborts with ``404`` and no rules are mutated. Returns the affected rules in their new evaluation order. - [Update resolution rule](https://docs.closient.com/api-reference/resolver/resolver/update-resolution-rule.md): Partial update. Only the keys in the request body are applied; omitted keys are left unchanged. Sending ``null`` for a nullable field clears it. Re-checks the custom-url-required invariant against the merged (new + existing) state — returns ``422`` if the result would have ``destination_type == 'CUS… - [Verify a serialized GTIN (gs1:verificationService)](https://docs.closient.com/api-reference/resolver/verification/verify-a-serialized-gtin-gs1:verificationservice.md): Verify a serialized GTIN scan. - [Create in-store offer promotion](https://docs.closient.com/api-reference/retailers/in-store-offer-promotions/create-in-store-offer-promotion.md): Create a time-windowed promotional price on an in-store offer. ``end_date`` must be strictly after ``start_date``; the database enforces this with a check constraint. Currency is inherited from the offer's parent ``PhysicalStore`` — there is no per-promotion currency override. Returns ``404`` (rathe… - [Delete in-store offer promotion](https://docs.closient.com/api-reference/retailers/in-store-offer-promotions/delete-in-store-offer-promotion.md): Permanently delete an in-store offer promotion. Use the update endpoint to soft-deactivate (``is_active=false``) if you want to preserve the historical pricing row. Returns ``404`` when the promotion does not exist or the caller lacks ``MANAGE_OFFERS`` on the parent offer's owning organization. - [Get in-store promotion](https://docs.closient.com/api-reference/retailers/in-store-offer-promotions/get-in-store-promotion.md): Retrieve a single in-store offer promotion by UUID. Returns ``404`` when the promotion does not exist or the caller lacks the ``VIEW`` permission on the parent offer's owning organization. - [List in-store offer promotions](https://docs.closient.com/api-reference/retailers/in-store-offer-promotions/list-in-store-offer-promotions.md): Return every promotion (active and inactive) attached to the given in-store offer. Returns ``404`` when the offer does not exist or the caller lacks the ``VIEW`` permission on the offer's owning organization. ``404`` is used (rather than ``403``) to avoid leaking offer existence. - [Update in-store offer promotion](https://docs.closient.com/api-reference/retailers/in-store-offer-promotions/update-in-store-offer-promotion.md): Partially update an in-store offer promotion. Omitted keys preserve existing values; ``metadata`` follows Stripe semantics (empty string deletes a key, ``null`` clears all). ``offer_id`` is not updatable — delete and recreate to move a promotion. Returns ``404`` when the promotion does not exist or… - [Create in-store offer](https://docs.closient.com/api-reference/retailers/in-store-offers/create-in-store-offer.md): Create a new in-store offer for the given organization. The ``(product_id, physical_store_id, sku)`` triple must be unique — sending a duplicate returns ``422``. Returns ``404`` when the organization, product, or store does not exist; ``404`` is also used (rather than ``403``) when the caller lacks… - [Delete in-store offer](https://docs.closient.com/api-reference/retailers/in-store-offers/delete-in-store-offer.md): Permanently delete an in-store offer. Promotions attached to the offer are cascade-deleted. Returns ``404`` when the offer does not exist or the caller lacks ``MANAGE_OFFERS`` on the offer's owning organization. - [Get in-store offer](https://docs.closient.com/api-reference/retailers/in-store-offers/get-in-store-offer.md): Retrieve a single in-store offer by UUID. Returns ``404`` when the offer does not exist or the caller lacks the ``VIEW`` permission on the offer's owning organization. - [List in-store offers](https://docs.closient.com/api-reference/retailers/in-store-offers/list-in-store-offers.md): Return every in-store (physical-store) offer owned by the given organization. Results are paginated with the standard ``{data, pagination}`` envelope; default ``page_size`` is 25, max is 100. Returns ``404`` when the organization does not exist or the caller lacks the ``VIEW`` permission on it. - [Update in-store offer](https://docs.closient.com/api-reference/retailers/in-store-offers/update-in-store-offer.md): Partially update an in-store offer. Omitted keys preserve existing values; ``metadata`` follows Stripe semantics (empty string deletes a key, ``null`` clears all). Returns ``404`` when the offer does not exist or the caller lacks ``MANAGE_OFFERS`` on the offer's owning organization. - [Create online offer promotion](https://docs.closient.com/api-reference/retailers/online-offer-promotions/create-online-offer-promotion.md): Create a time-windowed promotional price on an online offer. ``end_date`` must be strictly after ``start_date``; the database enforces this with a check constraint. Currency is inherited from the offer's parent ``OnlineStore`` — there is no per-promotion currency override. Returns ``404`` (rather th… - [Delete online offer promotion](https://docs.closient.com/api-reference/retailers/online-offer-promotions/delete-online-offer-promotion.md): Permanently delete an online offer promotion. Use the update endpoint to soft-deactivate (``is_active=false``) if you want to preserve the historical pricing row. Returns ``404`` when the promotion does not exist or the caller lacks ``MANAGE_OFFERS`` on the parent offer's owning organization. - [Get online promotion](https://docs.closient.com/api-reference/retailers/online-offer-promotions/get-online-promotion.md): Retrieve a single online offer promotion by UUID. Returns ``404`` when the promotion does not exist or the caller lacks the ``VIEW`` permission on the parent offer's owning organization. - [List online offer promotions](https://docs.closient.com/api-reference/retailers/online-offer-promotions/list-online-offer-promotions.md): Return every promotion (active and inactive) attached to the given online offer. Returns ``404`` when the offer does not exist or the caller lacks the ``VIEW`` permission on the offer's owning organization. ``404`` is used (rather than ``403``) to avoid leaking offer existence. - [Update online offer promotion](https://docs.closient.com/api-reference/retailers/online-offer-promotions/update-online-offer-promotion.md): Partially update an online offer promotion. Omitted keys preserve existing values; ``metadata`` follows Stripe semantics (empty string deletes a key, ``null`` clears all). ``offer_id`` is not updatable — delete and recreate to move a promotion. Returns ``404`` when the promotion does not exist or th… - [Create online offer](https://docs.closient.com/api-reference/retailers/online-offers/create-online-offer.md): Create a new online offer for the given organization. The ``(product_id, online_store_id, sku)`` triple must be unique — sending a duplicate returns ``422``. Returns ``404`` when the organization, product, or store does not exist; ``404`` is also used (rather than ``403``) when the caller lacks ``MA… - [Delete online offer](https://docs.closient.com/api-reference/retailers/online-offers/delete-online-offer.md): Permanently delete an online offer. Promotions attached to the offer are cascade-deleted. Returns ``404`` when the offer does not exist or the caller lacks ``MANAGE_OFFERS`` on the offer's owning organization. - [Get online offer](https://docs.closient.com/api-reference/retailers/online-offers/get-online-offer.md): Retrieve a single online offer by UUID. Returns ``404`` when the offer does not exist or the caller lacks the ``VIEW`` permission on the offer's owning organization. - [List online offers](https://docs.closient.com/api-reference/retailers/online-offers/list-online-offers.md): Return every online (web-storefront) offer owned by the given organization. Results are paginated with the standard ``{data, pagination}`` envelope; default ``page_size`` is 25, max is 100. Returns ``404`` when the organization does not exist or the caller lacks the ``VIEW`` permission on it. - [Update online offer](https://docs.closient.com/api-reference/retailers/online-offers/update-online-offer.md): Partially update an online offer. Omitted keys preserve existing values; ``metadata`` follows Stripe semantics (empty string deletes a key, ``null`` clears all). Returns ``404`` when the offer does not exist or the caller lacks ``MANAGE_OFFERS`` on the offer's owning organization. - [Create retailer](https://docs.closient.com/api-reference/retailers/retailers/create-retailer.md): Create an org-private retailer for an organization. - [Delete retailer](https://docs.closient.com/api-reference/retailers/retailers/delete-retailer.md): Soft-delete an org-private retailer (sets is_active=False). Cannot delete canonical retailers. - [Get retailer](https://docs.closient.com/api-reference/retailers/retailers/get-retailer.md): Get a specific retailer by ID. - [List retailers](https://docs.closient.com/api-reference/retailers/retailers/list-retailers.md): List canonical retailers and org-private retailers visible to the authenticated user. - [Update retailer](https://docs.closient.com/api-reference/retailers/retailers/update-retailer.md): Update an org-private retailer. - [Get capture status](https://docs.closient.com/api-reference/scanner/scanner-captures/get-capture-status.md): Retrieve the current processing status and data of a scan capture. - [Retry a failed capture](https://docs.closient.com/api-reference/scanner/scanner-captures/retry-a-failed-capture.md): Retry a failed scan capture by resetting its status and re-queuing the pipeline. - [Submit a barcode or QR scan](https://docs.closient.com/api-reference/scanner/scanner-captures/submit-a-barcode-or-qr-scan.md): Submit a barcode or QR code scan and queue the processing pipeline. - [Apply accepted proposals](https://docs.closient.com/api-reference/scanner/scanner-enrichment/apply-accepted-proposals.md): Apply all accepted enrichment proposals to the capture's linked product. - [List enrichment proposals](https://docs.closient.com/api-reference/scanner/scanner-enrichment/list-enrichment-proposals.md): List AI-generated enrichment proposals for a capture, ordered by confidence. - [Review an enrichment proposal](https://docs.closient.com/api-reference/scanner/scanner-enrichment/review-an-enrichment-proposal.md): Accept or reject a single enrichment proposal. - [Delete a product photo](https://docs.closient.com/api-reference/scanner/scanner-photos/delete-a-product-photo.md): Delete a product photo and its S3 object. - [Get presigned S3 upload URL](https://docs.closient.com/api-reference/scanner/scanner-photos/get-presigned-s3-upload-url.md): Generate a presigned POST URL for direct-to-S3 photo upload. - [Link unlinked photos to a capture](https://docs.closient.com/api-reference/scanner/scanner-photos/link-unlinked-photos-to-a-capture.md): Link all unlinked session photos to a specific barcode capture. - [Register a product photo](https://docs.closient.com/api-reference/scanner/scanner-photos/register-a-product-photo.md): Register a product photo after it has been uploaded to S3. - [Reorder product photos](https://docs.closient.com/api-reference/scanner/scanner-photos/reorder-product-photos.md): Set the display order of photos in the session gallery. - [Update photo classification](https://docs.closient.com/api-reference/scanner/scanner-photos/update-photo-classification.md): Update the classification label of a product photo. - [Resolve a QR code URL](https://docs.closient.com/api-reference/scanner/scanner-resolve/resolve-a-qr-code-url.md): Follow the HTTP redirect chain for a QR code URL captured from product packaging and return the final canonical URL plus the intermediate hops. - [Save a QR-resolved URL as a trade-item redirect](https://docs.closient.com/api-reference/scanner/scanner-resolve/save-a-qr-resolved-url-as-a-trade-item-redirect.md): Persist a URL — typically the ``final_url`` from ``/resolve-url`` — as a PRODUCT-scoped resolution rule on the trade item linked to this capture. - [Create a scan session](https://docs.closient.com/api-reference/scanner/scanner-sessions/create-a-scan-session.md): Create a new scan session for barcode and QR code scanning. - [End a scan session](https://docs.closient.com/api-reference/scanner/scanner-sessions/end-a-scan-session.md): End an active scan session, preventing further captures. - [Get session details](https://docs.closient.com/api-reference/scanner/scanner-sessions/get-session-details.md): Retrieve detailed session information including all captures and product photos. - [Poll session status](https://docs.closient.com/api-reference/scanner/scanner-sessions/poll-session-status.md): Lightweight endpoint for polling session and capture completion status. - [Submit session for AI processing](https://docs.closient.com/api-reference/scanner/scanner-sessions/submit-session-for-ai-processing.md): Submit a scan session for AI-powered product data extraction. - [Upload a product image](https://docs.closient.com/api-reference/scanner/scanner-upload/upload-a-product-image.md): Upload a product image and create a scan capture with optional barcode metadata. - [Clear a search session](https://docs.closient.com/api-reference/search/search/clear-a-search-session.md): Permanently delete a session and all of its state. Use when the user abandons the search or explicitly resets. Idempotent against already-expired sessions only insofar as a missing session returns ``404`` — call this before the TTL elapses if you want a guaranteed delete. - [Open a conversational search session](https://docs.closient.com/api-reference/search/search/open-a-conversational-search-session.md): Create a new search session anchored to a location. The initial query is parsed for structured constraints (color, price, distance, availability, scope) and stored alongside the verbatim text. Sessions expire after 30 minutes of inactivity; submitting a query or removing a constraint refreshes the T… - [Remove a constraint from the session](https://docs.closient.com/api-reference/search/search/remove-a-constraint-from-the-session.md): Remove one constraint by key from the active filter set without affecting the rest. Useful for a UI 'chip' pattern where each active constraint renders as a removable pill (e.g. clicking the X on the ``price_max`` chip calls ``DELETE /search/session/{id}/constraints/price_max``). - [Search the catalog](https://docs.closient.com/api-reference/search/search/search-the-catalog.md): Full-text search across products, brands, and retailers. Uses PostgreSQL ``websearch`` parsing (the same syntax as a Google query box — quoted phrases, ``-exclusions``, and ``OR`` are honored) with ``ts_rank`` for relevance. Falls back to substring (``icontains``) matching when full-text returns no… - [Submit a follow-up query within a session](https://docs.closient.com/api-reference/search/search/submit-a-follow-up-query-within-a-session.md): Send a follow-up query and let the classifier decide whether to refine the existing search or start fresh. Refinement language ("but cheaper", "in red", "within 2 km") merges constraints; explicit reset language ("instead", "never mind", "forget that") replaces the session's anchor and clears the co… - [Get product sustainability data](https://docs.closient.com/api-reference/sustainability/sustainability/get-product-sustainability-data.md): Retrieve aggregated sustainability data for a product identified by GTIN: circularity scores, recyclability information, packaging breakdown, major components, end-of-life instructions, and quantified environmental impact assessments. - [Authentication](https://docs.closient.com/authentication.md): API key types, formats, RBAC roles, and security practices. - [Changelog](https://docs.closient.com/changelog.md): Product updates, new features, and improvements to the Closient platform. - [Errors](https://docs.closient.com/errors.md): Standard error responses across all Closient APIs. - [First Steps](https://docs.closient.com/first-steps.md): Just signed up? Here's how to get started with Closient in 10 minutes. - [GS1 Digital Link Resolution](https://docs.closient.com/guides/digital-link-resolution.md): Resolve GTINs to structured product data using configurable resolution rules. - [EPCIS 2.0 Events](https://docs.closient.com/guides/epcis-events.md): Capture and query supply chain visibility events per ISO/IEC 19987:2024. - [MCP Error Contract](https://docs.closient.com/guides/mcp-errors.md): How Closient's MCP tools surface errors — JSON-RPC envelopes carrying RFC 9457 Problem Details. - [MCP Identity Propagation](https://docs.closient.com/guides/mcp-identity.md): How Closient's MCP server distinguishes the agent making a call from the end user on whose behalf it acts. - [MCP Tool Annotations](https://docs.closient.com/guides/mcp-tool-annotations.md): How Closient's MCP tools advertise their side-effect profile — readOnlyHint and destructiveHint. - [Serial Verification (gs1:verificationService)](https://docs.closient.com/guides/verification-service.md): Verify serialized GTIN scans against the Closient resolver — tiered, rate-limited, enumeration-safe. - [Webhooks](https://docs.closient.com/guides/webhooks.md): Receive real-time HTTP callbacks when events occur in your Closient account. - [Introduction](https://docs.closient.com/introduction.md): Build on the world's product graph with the Closient API. - [Metadata](https://docs.closient.com/metadata.md): Attach your own key/value data to any Closient API resource. - [Quickstart](https://docs.closient.com/quickstart.md): Get up and running with the Closient API in under 5 minutes. - [Rate Limits & Pagination](https://docs.closient.com/rate-limits.md): Understand API rate limits, response headers, and pagination conventions. - [Understanding Analytics](https://docs.closient.com/user-guides/analytics.md): How to read scan data, search analytics, and product performance. - [Barcode Scanning](https://docs.closient.com/user-guides/barcode-scanning.md): How to use the scanner for product lookup, data capture, and inventory management. - [Claiming Your Brand](https://docs.closient.com/user-guides/claiming-your-brand.md): How to claim ownership of your brand and products in Closient. - [Connecting Your POS](https://docs.closient.com/user-guides/connecting-pos.md): Sync inventory and product data from your point-of-sale system. - [Managing Products](https://docs.closient.com/user-guides/managing-products.md): How to add, edit, and organize products in your catalog. - [Setting Up Resolver Rules](https://docs.closient.com/user-guides/resolver-rules.md): Configure where your GS1 Digital Link barcodes direct consumers and partners. - [Searching for Products](https://docs.closient.com/user-guides/searching-products.md): How to find products at nearby stores using Closient's local search. - [Team Management](https://docs.closient.com/user-guides/team-management.md): Invite team members and manage roles within your organization. ## OpenAPI Specs - [openapi-byos](https://docs.closient.com/openapi/openapi-byos.json) - [openapi-products](https://docs.closient.com/openapi/openapi-products.json) - [openapi-resolver](https://docs.closient.com/openapi/openapi-resolver.json) - [openapi-sustainability](https://docs.closient.com/openapi/openapi-sustainability.json) - [openapi-retailers](https://docs.closient.com/openapi/openapi-retailers.json) - [openapi-brands](https://docs.closient.com/openapi/openapi-brands.json) - [openapi-scanner](https://docs.closient.com/openapi/openapi-scanner.json) - [openapi-voice-feedback](https://docs.closient.com/openapi/openapi-voice-feedback.json) - [openapi-certifications](https://docs.closient.com/openapi/openapi-certifications.json) - [openapi-search](https://docs.closient.com/openapi/openapi-search.json) - [openapi-notifications](https://docs.closient.com/openapi/openapi-notifications.json) - [openapi-locations](https://docs.closient.com/openapi/openapi-locations.json) - [openapi-integrations](https://docs.closient.com/openapi/openapi-integrations.json) - [openapi-dashboard](https://docs.closient.com/openapi/openapi-dashboard.json) - [openapi-compliance](https://docs.closient.com/openapi/openapi-compliance.json) - [openapi-billing](https://docs.closient.com/openapi/openapi-billing.json) - [openapi-advertising](https://docs.closient.com/openapi/openapi-advertising.json) - [openapi-account](https://docs.closient.com/openapi/openapi-account.json) - [openapi-agent](https://docs.closient.com/openapi/openapi-agent.json) - [openapi-epcis](https://docs.closient.com/openapi/openapi-epcis.json) - [openapi-content](https://docs.closient.com/openapi/openapi-content.json) - [openapi](https://docs.closient.com/api-reference/openapi.json)