On this page
How Credits Work#
Credits are Gydr's single unit of metered usage. Every plan includes a monthly allocation, and every operation that costs real compute — answering a chat turn, embedding a knowledge base row, crawling a page — draws from it. This page is the only place in the documentation that carries costs; the rest of the reference describes behaviour, not price.
The seven metering buckets#
Chat usage is itemised across seven buckets. They appear as the credits object on every conversation response and webhook payload, and as separate tiles in Console → Usage History. All seven keys are always present; a bucket that did not apply to the turn is 0.
| Bucket | What it meters |
|---|---|
chat | The AI model that wrote the reply. |
retrieval | Searching your knowledge base for content relevant to the question. |
orchestration | The planning and quality checks that coordinate the response. |
embedding | Knowledge base indexing. Always 0 on a chat response — charged when you sync knowledge base content. |
rerank | Re-ordering retrieved results so the most relevant ones reach the model. |
plugin | External tools and integrations the agent called during the turn. |
crawler | Website crawling. Always 0 on a chat response — charged when you run a crawl. |
API operation costs#
Every Integration API request draws credits. Cost follows the class of operation, not the resource — products, FAQs, and locations are priced identically.
| Operation | Credits | Example |
|---|---|---|
| Read | 1 | List products, get a single FAQ |
| Write | 2 | Create or update a product or FAQ |
| Delete | 1 | Delete a single record |
| Bulk create | 2 × count | 50 products = 100 credits |
| Upsert | 1 × inspected + 1 × written | 100 rows, 12 changed = 112. A failed row costs nothing; an unchanged row costs the inspected rate. |
| Reconcile | 1 per 100 scanned + 1 × deleted | Reading is priced like a list, so a dry run over 10,000 rows costs 100. |
| Bulk delete | 1 × count | 50 products = 50 credits |
| Sync | 0 to trigger | Embedding is metered per item embedded; unchanged rows are skipped. Sync status costs 1. |
| Conversation: create, end, rate, read | 1 | Create a session, end it, fetch messages |
| Conversation: send message | Token-based + 2 | The chat turn itself, plus a 2-credit API surcharge |
Every API response carries meta.creditsConsumed, so you can attribute cost per request without polling a separate endpoint. A request that fails validation is not metered. When the balance is exhausted the API returns 402 and the operation does not run.
What each feature consumes#
| Feature | Cost |
|---|---|
| Website crawler | Discovery — fetching the list of pages — is free. Credits are charged only when the crawl runs, in the saving phase. The Console shows an estimate once you have selected pages; the actual cost can land slightly either side of it. A crawl will not start if the balance is short. |
| Document upload | Metered per item embedded. Scanned PDFs and images additionally meter OCR per page. The Console estimates before you upload. |
| Visitor attachments | 2 credits per MB, rounded up to the next whole MB, minimum 1 MB per file — a 4 MB PDF costs 8. Charged when the message is sent, not when the file is uploaded. Files uploaded but never sent, rejected by content validation, or dropped by ownership checks cost nothing. |
| Bring Your Own Model | A chat turn that succeeds on your imported model charges zero chat credits — your provider bills you for those tokens directly. Every other bucket is unchanged: orchestration, retrieval, rerank, and plugin calls still meter as normal. If a turn falls back to a Gydr model, chat credits apply to that turn. |
Allocation and top-ups#
Each plan includes a monthly credit allocation that resets on the 1st of the month. Current balance, per-bucket consumption, and the transaction history live in Console → Usage History. Additional credit packs can be purchased from the Upgrade page at any time.
Watch the balance from your own systems
Rather than polling, subscribe to webhooks and accumulate credits per turn, or read meta.creditsConsumed on each API response. Both are exact and require no extra request.