Sylphx Commerce product site

First success

Record usage on the peel. Do not log in here.

First useful success is an authorized RecordUsage against https://api.commerce.sylphx.com/v1 and a GetUsage readback of the same fact. This site has no password form and no hosted login. dens Console is not a prerequisite. Commerce never accepts a product API key.

Job

Independent developer or agent: persist one immutable usage fact for a Sylphx project and read it back from Commerce, not from a client callback.

Prerequisites

  1. A Platform-signed project binding for product commerce, audience https://api.commerce.sylphx.com/v1, carrying the exact contract digest.
  2. An Identity-signed delegation, TTL ≤ 300s, whose binding.id and binding.revision match that binding. Capability commerce.usage.write for the mutation; commerce.usage.read for readback.
  3. An existing meter version (CreateMeterVersion if you are also publishing meters).
  4. The generated SDK (crates/commerce-sdk) and CLI (commerce) already exist on this product. Dest they default only to https://api.commerce.sylphx.com/v1. Do not invent a handwritten JSON SDK.

Minimum call

Protobuf JSON names for RecordUsageRequest (camelCase; snake_case aliases are accepted).

POST https://api.commerce.sylphx.com/v1/sylphx.commerce.v1.MeteringService/RecordUsage
Authorization: Bearer <delegation-jws>
Sylphx-Project-Binding: <binding-jws>
Content-Type: application/json

{
  "mutation": { "idempotencyKey": "<16-128 chars>", "requestDigest": "<32-byte SHA-256>" },
  "externalEventId": "evt_example_1",
  "meterId": "<meter id>",
  "meterVersion": "1",
  "quantity": "3",
  "occurredAt": "2026-08-25T00:00:00Z",
  "sourceDigest": "<32-byte SHA-256>"
}

Readback

Call GetUsage with the returned usage_event_id. Success is the same quantity, meter version, and external event id. Exact replay of the mutation returns the existing receipt with replayed=true and creates no second fact. A later CorrectUsage appends a delta; it does not UPDATE the original row.

Typed failure

ObservationMeaningNext
401Missing, expired, or forged envelopeMint a fresh delegation; do not send a product API key
403Capability or limit insufficientAsk Identity/Platform for commerce.usage.write
409Idempotency key reused with different bytesNew key, or replay the original bytes
Connect CommerceErrorDetailcorrelation_id matches x-request-idInclude that id; it is not a credential

Live money still requires a bound, deployed peel and a current binding head. This page is source content for COM-SITE. Completing the call on a local checkout is not a live-money claim.