# Pineyard API - [Introduction](https://docs.pineyard.ai/introduction.md): Connect your backend to Pineyard: manage agents, run calling campaigns, send WhatsApp messages and read call results over HTTPS. - [Authentication](https://docs.pineyard.ai/authentication.md): Authenticate every request with a workspace API key sent as a Bearer token. - [Quickstart](https://docs.pineyard.ai/quickstart.md): Run your first calling campaign from code: list agents, create a campaign, add contacts, start it and read the results. - [Workspaces](https://docs.pineyard.ai/concepts/workspaces.md): Every API key belongs to exactly one workspace, and only ever sees that workspace's data. - [Scopes & permissions](https://docs.pineyard.ai/concepts/scopes.md): What an API key is allowed to do, and the permissions it can never have. - [Idempotency](https://docs.pineyard.ai/concepts/idempotency.md): Retry billed requests safely: the same Idempotency-Key never places a second call or sends a second message. - [Rate limits](https://docs.pineyard.ai/concepts/rate-limits.md): Each API key can make 120 requests per minute by default. - [Errors](https://docs.pineyard.ai/concepts/errors.md): Every error the API returns, what it means and how to fix it. - [Pagination](https://docs.pineyard.ai/concepts/pagination.md): How list endpoints return large result sets. - [Timestamps & durations](https://docs.pineyard.ai/concepts/timestamps-and-durations.md): Dates are ISO 8601 in UTC. Call durations are in milliseconds. - [Run a campaign end to end](https://docs.pineyard.ai/guides/run-a-campaign.md): Set up, start, monitor and control a calling campaign, or push leads into a standing campaign with the /v1 API. - [Receive results](https://docs.pineyard.ai/guides/receive-results.md): Get one signed webhook per lead when its result is final, or poll for it. - [Recordings & transcripts](https://docs.pineyard.ai/guides/recordings-and-transcripts.md): Read a call's transcript and summary, and download its recording. - [API reference](https://docs.pineyard.ai/api-reference/introduction.md): Every endpoint an API key can call, grouped by resource. - [Push a lead](https://docs.pineyard.ai/api-reference/push-a-lead.md): Push one lead into a standing API campaign. Authenticate with a workspace API key. idempotencyKey is REQUIRED: it is the sole dedup key, so the same phone number can be dialed separately for each distributor/device/alert by sending a distinct, retry-stable key per call. Works for both campaign kinds… - [Poll the immutable result for one accepted API lead.](https://docs.pineyard.ai/api-reference/poll-the-immutable-result-for-one-accepted-api-lead.md) - [Recover an immutable result by event id.](https://docs.pineyard.ai/api-reference/recover-an-immutable-result-by-event-id.md) - [List immutable results for webhook recovery.](https://docs.pineyard.ai/api-reference/list-immutable-results-for-webhook-recovery.md) - [Push up to 100 leads](https://docs.pineyard.ai/api-reference/push-up-to-100-leads.md): Push up to 100 leads into a standing API campaign in one request. Each item has exactly the single-push body ({ lead, idempotencyKey }) and gets the same treatment: idempotencyKey is required per lead, and a reused key (in this batch or an earlier request) is reported as a duplicate with no second d… - [List workflows](https://docs.pineyard.ai/api-reference/list-workflows.md): List the workspace's workflows. Use an ACTIVE one as a journey campaign's workflowId. - [Get one workflow.](https://docs.pineyard.ai/api-reference/get-one-workflow.md) - [Get a workflow's trigger fields](https://docs.pineyard.ai/api-reference/get-a-workflows-trigger-fields.md): Which lead.fields this workflow reads — derived from its graph, so it cannot drift. Send these names (exactly) as lead.fields when pushing a lead to a journey campaign built on it. - [List all campaigns in your workspace.](https://docs.pineyard.ai/api-reference/list-all-campaigns-in-your-workspace.md) - [Get details for a single campaign.](https://docs.pineyard.ai/api-reference/get-details-for-a-single-campaign.md) - [Create a campaign (v1)](https://docs.pineyard.ai/api-reference/create-a-campaign-v1.md): Create a new campaign. The campaign is created in DRAFT status. Call /v1/campaigns/{id}/start to begin dialing. - [Update a campaign. Allowed on DRAFT and PAUSED campaigns.](https://docs.pineyard.ai/api-reference/update-a-campaign-allowed-on-draft-and-paused-campaigns.md) - [Delete a campaign. Only DRAFT campaigns can be deleted.](https://docs.pineyard.ai/api-reference/delete-a-campaign-only-draft-campaigns-can-be-deleted.md) - [Start a DRAFT or PAUSED campaign.](https://docs.pineyard.ai/api-reference/start-a-draft-or-paused-campaign.md) - [Pause a RUNNING campaign.](https://docs.pineyard.ai/api-reference/pause-a-running-campaign.md) - [Resume a PAUSED campaign.](https://docs.pineyard.ai/api-reference/resume-a-paused-campaign.md) - [List agents](https://docs.pineyard.ai/api-reference/list-agents.md): List every agent in your workspace that is not archived (including drafts). Use an agent's `id` as `agentId` when creating a campaign. - [List phone numbers assigned to your workspace.](https://docs.pineyard.ai/api-reference/list-phone-numbers-assigned-to-your-workspace.md) - [Attach phone numbers to a campaign so it can place calls.](https://docs.pineyard.ai/api-reference/attach-phone-numbers-to-a-campaign-so-it-can-place-calls.md) - [List agents in the current workspace](https://docs.pineyard.ai/api-reference/list-agents-in-the-current-workspace.md) - [Create a new agent](https://docs.pineyard.ai/api-reference/create-a-new-agent.md): **API keys:** knowledge documents listed in `abilities` are attached only if the key has `knowledge.edit`. Custom functions are never attached by a key. Skipped items are reported in `warnings` (`knowledge_docs_skipped`, `function_assign_skipped`); the agent is still created. - [Duplicate an agent](https://docs.pineyard.ai/api-reference/duplicate-an-agent.md): Duplicate an agent — clones its configuration into a new, freshly provisioned agent. - [Get an agent by id](https://docs.pineyard.ai/api-reference/get-an-agent-by-id.md) - [Update an agent](https://docs.pineyard.ai/api-reference/update-an-agent.md) - [Archive an agent (soft-delete) or hard-delete with ?permanent=true](https://docs.pineyard.ai/api-reference/archive-an-agent-soft-delete-or-hard-delete-with-?permanent=true.md) - [Initiate a sandbox call from this agent to a phone number](https://docs.pineyard.ai/api-reference/initiate-a-sandbox-call-from-this-agent-to-a-phone-number.md) - [Start a WebRTC sandbox session against this agent](https://docs.pineyard.ai/api-reference/start-a-webrtc-sandbox-session-against-this-agent.md) - [Assemble a draft agent from wizard inputs](https://docs.pineyard.ai/api-reference/assemble-a-draft-agent-from-wizard-inputs.md): Assemble a draft agent prompt from Studio wizard inputs (deterministic; does not create the agent) - [Draft a conversation flow with AI](https://docs.pineyard.ai/api-reference/draft-a-conversation-flow-with-ai.md): AI-draft the conversation flow, FAQs, and suggested extraction fields for the Studio wizard - [Draft a conversation flow with AI (streaming)](https://docs.pineyard.ai/api-reference/draft-a-conversation-flow-with-ai-streaming.md): AI-draft over server-sent events — flow nodes/edges stream in as the model writes them - [Render a conversation flow](https://docs.pineyard.ai/api-reference/render-a-conversation-flow.md): Serialize a flow-canvas graph into routed CONVERSATION FLOW prompt text (deterministic) - [Extract text from a brief](https://docs.pineyard.ai/api-reference/extract-text-from-a-brief.md): Extract plain text from an uploaded brief (PDF/TXT/MD) for the Studio wizard - [List the manual-mode prompt module library (metadata only)](https://docs.pineyard.ai/api-reference/list-the-manual-mode-prompt-module-library-metadata-only.md) - [Render prompt modules](https://docs.pineyard.ai/api-reference/render-prompt-modules.md): Render selected prompt modules to insertable snippets, filled with agent context - [Suggest structured post-call extraction fields from a free-text brief](https://docs.pineyard.ai/api-reference/suggest-structured-post-call-extraction-fields-from-a-free-text-brief.md) - [List available background audio assets](https://docs.pineyard.ai/api-reference/list-available-background-audio-assets.md) - [Initialize a background audio upload (returns presigned URL)](https://docs.pineyard.ai/api-reference/initialize-a-background-audio-upload-returns-presigned-url.md) - [Finalize background audio upload](https://docs.pineyard.ai/api-reference/finalize-background-audio-upload.md) - [Delete background audio asset](https://docs.pineyard.ai/api-reference/delete-background-audio-asset.md) - [List dictionaries](https://docs.pineyard.ai/api-reference/list-dictionaries.md) - [Create a dictionary](https://docs.pineyard.ai/api-reference/create-a-dictionary.md) - [Get a dictionary](https://docs.pineyard.ai/api-reference/get-a-dictionary.md) - [Update a dictionary](https://docs.pineyard.ai/api-reference/update-a-dictionary.md) - [Delete a dictionary](https://docs.pineyard.ai/api-reference/delete-a-dictionary.md) - [List an agent's dictionaries](https://docs.pineyard.ai/api-reference/list-an-agents-dictionaries.md) - [Set an agent's dictionaries](https://docs.pineyard.ai/api-reference/set-an-agents-dictionaries.md): Replaces the list of dictionaries linked to the agent. - [List documents in the current workspace](https://docs.pineyard.ai/api-reference/list-documents-in-the-current-workspace.md) - [Add a web-link document](https://docs.pineyard.ai/api-reference/add-a-web-link-document.md) - [Reserve a document and return a presigned upload URL](https://docs.pineyard.ai/api-reference/reserve-a-document-and-return-a-presigned-upload-url.md) - [Finalize a file upload after the client has PUT to upload_url](https://docs.pineyard.ai/api-reference/finalize-a-file-upload-after-the-client-has-put-to-upload_url.md) - [Update a document's name and/or description](https://docs.pineyard.ai/api-reference/update-a-documents-name-andor-description.md) - [Get a document](https://docs.pineyard.ai/api-reference/get-a-document.md) - [Delete a document](https://docs.pineyard.ai/api-reference/delete-a-document.md) - [List an agent's documents](https://docs.pineyard.ai/api-reference/list-an-agents-documents.md) - [Link documents to an agent](https://docs.pineyard.ai/api-reference/link-documents-to-an-agent.md) - [Unlink a document from an agent](https://docs.pineyard.ai/api-reference/unlink-a-document-from-an-agent.md) - [List custom functions](https://docs.pineyard.ai/api-reference/list-custom-functions.md): **API keys:** header values are returned blank; header names are kept. - [Delete a custom function](https://docs.pineyard.ai/api-reference/delete-a-custom-function.md) - [List an agent's functions](https://docs.pineyard.ai/api-reference/list-an-agents-functions.md): **API keys:** header values are returned blank; header names are kept. - [Unlink a function from an agent](https://docs.pineyard.ai/api-reference/unlink-a-function-from-an-agent.md) - [List voices](https://docs.pineyard.ai/api-reference/list-voices.md): Voices available to your workspace. Use a voice's `id` as `voice` when creating or updating an agent. - [Stream a short audio preview of a voice](https://docs.pineyard.ai/api-reference/stream-a-short-audio-preview-of-a-voice.md) - [List campaign types](https://docs.pineyard.ai/api-reference/list-campaign-types.md): List campaign types — picker feed, or the caller workspace's own with ?scope=mine - [Create a workspace-owned campaign type](https://docs.pineyard.ai/api-reference/create-a-workspace-owned-campaign-type.md) - [Get one of the caller workspace's own campaign types](https://docs.pineyard.ai/api-reference/get-one-of-the-caller-workspaces-own-campaign-types.md) - [Update one of the caller workspace's own campaign types](https://docs.pineyard.ai/api-reference/update-one-of-the-caller-workspaces-own-campaign-types.md) - [Upload a CSV for campaign creation](https://docs.pineyard.ai/api-reference/upload-a-csv-for-campaign-creation.md) - [Preview the calling list](https://docs.pineyard.ai/api-reference/preview-the-calling-list.md): Read a saved campaign's calling list back: columns, row count and a few sample rows - [Download the calling list (CSV)](https://docs.pineyard.ai/api-reference/download-the-calling-list-csv.md): Download the calling list as CSV (phone normalised to E.164, plus the stored per-lead fields) - [Clear a draft campaign's calling list (remove all imported contacts)](https://docs.pineyard.ai/api-reference/clear-a-draft-campaigns-calling-list-remove-all-imported-contacts.md) - [Add contacts to a campaign](https://docs.pineyard.ai/api-reference/add-contacts-to-a-campaign.md): Add up to 10,000 contacts to a `DRAFT` campaign. Phones must be E.164. Duplicates in the request and phones already in the campaign are skipped. For phones that already exist in your workspace, the existing contact's name and metadata are kept. `added` counts new contacts; `total` counts valid uniqu… - [Retry a failed campaign contact](https://docs.pineyard.ai/api-reference/retry-a-failed-campaign-contact.md) - [Manually set a lead's disposition](https://docs.pineyard.ai/api-reference/manually-set-a-leads-disposition.md) - [Retry all failed contacts in a campaign](https://docs.pineyard.ai/api-reference/retry-all-failed-contacts-in-a-campaign.md) - [Draft a campaign from a brief](https://docs.pineyard.ai/api-reference/draft-a-campaign-from-a-brief.md): Draft a campaign (type/name/description/goal) from an uploaded or pasted brief - [Suggest extraction fields for a campaign](https://docs.pineyard.ai/api-reference/suggest-extraction-fields-for-a-campaign.md): Propose extraction fields tailored to this campaign (AI). Review/edit before saving via /custom-keys. - [Suggest extraction fields for a new campaign](https://docs.pineyard.ai/api-reference/suggest-extraction-fields-for-a-new-campaign.md): Propose extraction fields for a not-yet-created campaign, from its agent (AI). - [Suggest evaluation metrics for a campaign](https://docs.pineyard.ai/api-reference/suggest-evaluation-metrics-for-a-campaign.md): Propose extra campaign-specific evaluation metrics (AI). Edit before saving. - [Suggest evaluation metrics for a new campaign](https://docs.pineyard.ai/api-reference/suggest-evaluation-metrics-for-a-new-campaign.md): Propose extra evaluation metrics for a not-yet-created campaign, from its agent (AI). - [Suggest an evaluation-metric prompt](https://docs.pineyard.ai/api-reference/suggest-an-evaluation-metric-prompt.md): Generate or rewrite a single evaluation-metric classification prompt (AI). - [List campaigns](https://docs.pineyard.ai/api-reference/list-campaigns.md) - [Create a campaign](https://docs.pineyard.ai/api-reference/create-a-campaign.md): Creates a campaign in `DRAFT`. Pass `uploadId` to import contacts from a CSV uploaded with `POST /campaigns/uploads`. See [Run a campaign end to end](/guides/run-a-campaign). - [Duplicate a campaign](https://docs.pineyard.ai/api-reference/duplicate-a-campaign.md): Duplicate a campaign as a new DRAFT — clones its full config; optionally clones the agent too. - [Workspace campaign reservation usage](https://docs.pineyard.ai/api-reference/workspace-campaign-reservation-usage.md) - [Update a campaign](https://docs.pineyard.ai/api-reference/update-a-campaign.md) - [Get a campaign](https://docs.pineyard.ai/api-reference/get-a-campaign.md) - [Update outreach rules](https://docs.pineyard.ai/api-reference/update-outreach-rules.md): Live-edit a campaign’s outreach rules (allowed while RUNNING or COMPLETED) - [Update evaluation metrics](https://docs.pineyard.ai/api-reference/update-evaluation-metrics.md): Live-edit a campaign’s lead-evaluation metrics (allowed while RUNNING); re-scores past calls - [Delete a campaign](https://docs.pineyard.ai/api-reference/delete-a-campaign.md): Only `DRAFT`, `CANCELED` or `COMPLETED` campaigns can be deleted. - [Replace a DRAFT campaign's custom extraction keys](https://docs.pineyard.ai/api-reference/replace-a-draft-campaigns-custom-extraction-keys.md) - [Retry backlog for the workspace, broken down by campaign](https://docs.pineyard.ai/api-reference/retry-backlog-for-the-workspace-broken-down-by-campaign.md) - [Terminally close every queued and parked retry in the workspace](https://docs.pineyard.ai/api-reference/terminally-close-every-queued-and-parked-retry-in-the-workspace.md) - [Hold every queued retry out of the dispatch queue until resumed](https://docs.pineyard.ai/api-reference/hold-every-queued-retry-out-of-the-dispatch-queue-until-resumed.md) - [Return every parked retry to the dispatch queue](https://docs.pineyard.ai/api-reference/return-every-parked-retry-to-the-dispatch-queue.md) - [Live-edit a campaign’s pacing/schedule (allowed while RUNNING)](https://docs.pineyard.ai/api-reference/live-edit-a-campaign’s-pacingschedule-allowed-while-running.md) - [Start a campaign](https://docs.pineyard.ai/api-reference/start-a-campaign.md): Checks the campaign can run (contacts, phone numbers, wallet balance, schedule) and starts dialing. See the [start checks](/guides/run-a-campaign#4-start). - [Pause a campaign](https://docs.pineyard.ai/api-reference/pause-a-campaign.md): Stops starting new calls. Only running campaigns can be paused. - [Resume a campaign](https://docs.pineyard.ai/api-reference/resume-a-campaign.md): Runs the same checks as start and sets a paused campaign running again. - [Stop a campaign](https://docs.pineyard.ai/api-reference/stop-a-campaign.md): Ends the campaign: its status becomes `COMPLETED` and contacts that were never called become `SKIPPED`. - [Restart a stopped campaign](https://docs.pineyard.ai/api-reference/restart-a-stopped-campaign.md): Re-queues the contacts skipped when the campaign was stopped and starts it again. - [Count leads eligible for re-engage](https://docs.pineyard.ai/api-reference/count-leads-eligible-for-re-engage.md): How many settled cold leads Re-engage would re-queue for a given window - [Re-engage cold leads](https://docs.pineyard.ai/api-reference/re-engage-cold-leads.md): Re-engage the campaign’s already-completed cold leads now (re-opens a finished campaign) - [Count interrupted calls eligible for a re-call](https://docs.pineyard.ai/api-reference/count-interrupted-calls-eligible-for-a-re-call.md): How many past interrupted calls in the given window would be re-judged and re-dialed by finish-interrupted. - [Re-dial interrupted calls](https://docs.pineyard.ai/api-reference/re-dial-interrupted-calls.md): Re-judge past calls against the goal now and re-dial the ones that were cut short - [Count calls eligible for re-evaluation](https://docs.pineyard.ai/api-reference/count-calls-eligible-for-re-evaluation.md): How many past calls would be re-judged against the current criteria for a given window - [Re-judge past calls against the current evaluation criteria](https://docs.pineyard.ai/api-reference/re-judge-past-calls-against-the-current-evaluation-criteria.md) - [Count leads eligible for re-messaging](https://docs.pineyard.ai/api-reference/count-leads-eligible-for-re-messaging.md): How many past leads the current outreach rules would message, and why the rest would not be - [Re-message past leads](https://docs.pineyard.ai/api-reference/re-message-past-leads.md): Re-apply the outreach rules to past leads now and message the ones that match - [Re-run extraction for every completed call in the campaign](https://docs.pineyard.ai/api-reference/re-run-extraction-for-every-completed-call-in-the-campaign.md) - [Run campaign analysis](https://docs.pineyard.ai/api-reference/run-campaign-analysis.md): Generate an AI analysis of the campaign's extracted data. Returns the analysis and when it ran. - [Get campaign progress](https://docs.pineyard.ai/api-reference/get-campaign-progress.md): Contact counts by status (`PENDING`, `IN_FLIGHT`, `MESSAGED`, `COMPLETED`, `FAILED`, `SKIPPED`). Inbound campaigns return call counts instead. - [Get campaign call metrics](https://docs.pineyard.ai/api-reference/get-campaign-call-metrics.md) - [Get extracted-field summary](https://docs.pineyard.ai/api-reference/get-extracted-field-summary.md): Aggregated values of every extracted field across the campaign's calls. - [Get campaign KPIs](https://docs.pineyard.ai/api-reference/get-campaign-kpis.md) - [Get extraction field status](https://docs.pineyard.ai/api-reference/get-extraction-field-status.md) - [List campaign leads](https://docs.pineyard.ai/api-reference/list-campaign-leads.md): One row per lead with its status, outcome, latest call and extracted fields. Offset-paginated. - [List leads by evaluation segment](https://docs.pineyard.ai/api-reference/list-leads-by-evaluation-segment.md): Filter + priority-sort connected leads by evaluation metrics (Leads tab) - [Count leads per segment](https://docs.pineyard.ai/api-reference/count-leads-per-segment.md): Per-metric lead segment counts, driven by the campaign evaluation metrics - [Campaign spend, qualified leads and cost per qualified lead](https://docs.pineyard.ai/api-reference/campaign-spend-qualified-leads-and-cost-per-qualified-lead.md) - [Get campaign headline](https://docs.pineyard.ai/api-reference/get-campaign-headline.md): One-sentence grounded summary of the campaign, cached and lazily regenerated - [A journey campaign's graph, per-step counts and enrolment totals](https://docs.pineyard.ai/api-reference/a-journey-campaigns-graph-per-step-counts-and-enrolment-totals.md) - [One lead's path through the journey, on the graph it actually ran](https://docs.pineyard.ai/api-reference/one-leads-path-through-the-journey-on-the-graph-it-actually-ran.md) - [Leads of a journey campaign, with where each one is in the journey](https://docs.pineyard.ai/api-reference/leads-of-a-journey-campaign-with-where-each-one-is-in-the-journey.md) - [Recent calls and upcoming contacts for a campaign](https://docs.pineyard.ai/api-reference/recent-calls-and-upcoming-contacts-for-a-campaign.md) - [Customer-readable API lead delivery history (30-day retention)](https://docs.pineyard.ai/api-reference/customer-readable-api-lead-delivery-history-30-day-retention.md) - [Count API requests received](https://docs.pineyard.ai/api-reference/count-api-requests-received.md): Received API-request counts for a campaign (today / yesterday / last 7 / last 30 days) - [Ask about a campaign](https://docs.pineyard.ai/api-reference/ask-about-a-campaign.md): Ask a question about a campaign's results. Each campaign conversation has a fair-use message cap (`429 message_limit_reached`). Read replies with `GET /campaigns/{id}/chat/messages`, or use the streaming variant. - [Ask about a campaign (streaming)](https://docs.pineyard.ai/api-reference/ask-about-a-campaign-streaming.md): Ask a question about a campaign's results and stream the answer as newline-delimited JSON (`application/x-ndjson`). Each line is an event object with a `type` (`delta` with a `text` fragment, `done` with the full `text`, or `error` with a `message`). Each campaign conversation has a fair-use message… - [List campaign conversation messages](https://docs.pineyard.ai/api-reference/list-campaign-conversation-messages.md) - [Clear campaign conversation](https://docs.pineyard.ai/api-reference/clear-campaign-conversation.md): Delete the messages in a campaign's conversation. The fair-use message count is not reset. - [Get latest campaign analysis](https://docs.pineyard.ai/api-reference/get-latest-campaign-analysis.md) - [Export campaign results](https://docs.pineyard.ai/api-reference/export-campaign-results.md): Export campaign calls + extracted intel (CSV/XLSX). Small = file inline; large = 202 job. - [Count export rows](https://docs.pineyard.ai/api-reference/count-export-rows.md): Full-report row count (Export Center). Preset/custom counts come from lead-segments + segmented-leads. - [Poll an async intel export job](https://docs.pineyard.ai/api-reference/poll-an-async-intel-export-job.md) - [Download a finished async intel export artifact](https://docs.pineyard.ai/api-reference/download-a-finished-async-intel-export-artifact.md) - [Export campaign calls + extracted intel as CSV (legacy alias)](https://docs.pineyard.ai/api-reference/export-campaign-calls-+-extracted-intel-as-csv-legacy-alias.md) - [Attach phone numbers to a campaign](https://docs.pineyard.ai/api-reference/attach-phone-numbers-to-a-campaign.md) - [List numbers attached to a campaign](https://docs.pineyard.ai/api-reference/list-numbers-attached-to-a-campaign.md) - [Detach a number from a campaign (not allowed when campaign is RUNNING)](https://docs.pineyard.ai/api-reference/detach-a-number-from-a-campaign-not-allowed-when-campaign-is-running.md) - [Get call overview](https://docs.pineyard.ai/api-reference/get-call-overview.md): Call totals, average duration, credits used and connection rates for the selected window. Filter with `days` (rolling window), `today=1` (India Standard Time calendar day), `campaignId` or `campaignTypeId`. - [Get call stats by agent](https://docs.pineyard.ai/api-reference/get-call-stats-by-agent.md) - [Get call stats by day](https://docs.pineyard.ai/api-reference/get-call-stats-by-day.md): One row per day (`YYYY-MM-DD`, India Standard Time) with total and completed calls and outcome counts. - [Get call outcome counts](https://docs.pineyard.ai/api-reference/get-call-outcome-counts.md) - [Get call status counts](https://docs.pineyard.ai/api-reference/get-call-status-counts.md) - [Get lead interest and qualification distribution](https://docs.pineyard.ai/api-reference/get-lead-interest-and-qualification-distribution.md) - [Get speed to first call](https://docs.pineyard.ai/api-reference/get-speed-to-first-call.md): Average time to first call (`avgMs`, milliseconds), share of leads called within 5 minutes and within 1 hour, and average retries. - [Get connections by attempt](https://docs.pineyard.ai/api-reference/get-connections-by-attempt.md): How many contacts connected on the 1st, 2nd and 3rd attempt, and how many were never reached. - [Get connect-rate heatmap](https://docs.pineyard.ai/api-reference/get-connect-rate-heatmap.md): Connect rate and call count by weekday and hour. Pass `tz` (time zone name, default `UTC`) to bucket hours in your local time. - [Get contact funnel](https://docs.pineyard.ai/api-reference/get-contact-funnel.md): Contacts, dialed, connected and completed counts. - [Get weekly call duration trend](https://docs.pineyard.ai/api-reference/get-weekly-call-duration-trend.md): Average call duration (`avgDurationMs`) and call count per week for the last `weeks` weeks. - [Get call stats by campaign type](https://docs.pineyard.ai/api-reference/get-call-stats-by-campaign-type.md) - [Get live call count](https://docs.pineyard.ai/api-reference/get-live-call-count.md): Number of calls in progress right now. - [Get one agent's call stats](https://docs.pineyard.ai/api-reference/get-one-agents-call-stats.md) - [Get the home dashboard](https://docs.pineyard.ai/api-reference/get-the-home-dashboard.md): This workspace’s dashboard: its stats, its layout, and the metrics it can build from - [List recent calls in the current workspace](https://docs.pineyard.ai/api-reference/list-recent-calls-in-the-current-workspace.md) - [Activity grouped by lead entry — one row per journey, not one per call](https://docs.pineyard.ai/api-reference/activity-grouped-by-lead-entry-—-one-row-per-journey-not-one-per-call.md) - [Count calls by type](https://docs.pineyard.ai/api-reference/count-calls-by-type.md): Real counts of calls by type for the activity filters (date-window and campaign-scope aware) - [List lead filter tags](https://docs.pineyard.ai/api-reference/list-lead-filter-tags.md): Lead-tag vocabulary declared by this workspace's campaigns, for the activity filter strip - [Export the filtered calls as a CSV or Excel file](https://docs.pineyard.ai/api-reference/export-the-filtered-calls-as-a-csv-or-excel-file.md) - [Get a call by id](https://docs.pineyard.ai/api-reference/get-a-call-by-id.md) - [Re-run extraction on this call using its campaign’s effective key set](https://docs.pineyard.ai/api-reference/re-run-extraction-on-this-call-using-its-campaign’s-effective-key-set.md) - [Re-score a call](https://docs.pineyard.ai/api-reference/re-score-a-call.md): Re-score this one call under its campaign’s current evaluation criteria (async; rescore-only) - [Translate this call transcript to English (cached after first run)](https://docs.pineyard.ai/api-reference/translate-this-call-transcript-to-english-cached-after-first-run.md) - [Flag this call as an issue for the Pineyard team to investigate](https://docs.pineyard.ai/api-reference/flag-this-call-as-an-issue-for-the-pineyard-team-to-investigate.md) - [Add this call's number to the account Do Not Call list](https://docs.pineyard.ai/api-reference/add-this-calls-number-to-the-account-do-not-call-list.md) - [Initiate a single ad-hoc test call from a chosen phone number](https://docs.pineyard.ai/api-reference/initiate-a-single-ad-hoc-test-call-from-a-chosen-phone-number.md) - [List phone numbers assigned to the caller workspace](https://docs.pineyard.ai/api-reference/list-phone-numbers-assigned-to-the-caller-workspace.md) - [Assign or clear the inbound agent for a workspace phone number](https://docs.pineyard.ai/api-reference/assign-or-clear-the-inbound-agent-for-a-workspace-phone-number.md) - [List WhatsApp senders](https://docs.pineyard.ai/api-reference/list-whatsapp-senders.md) - [Get sender status](https://docs.pineyard.ai/api-reference/get-sender-status.md): Current connection status of one WhatsApp sender. - [Set default sender](https://docs.pineyard.ai/api-reference/set-default-sender.md): Make this sender the workspace default for WhatsApp sends. - [Get sender QR code](https://docs.pineyard.ai/api-reference/get-sender-qr-code.md): Latest QR code for a sender that is being linked by QR scan. `qrCode` is `null` when no code is pending. - [Disconnect sender](https://docs.pineyard.ai/api-reference/disconnect-sender.md): Disconnect a WhatsApp sender from the workspace. - [The active WhatsApp connection (number + status)](https://docs.pineyard.ai/api-reference/the-active-whatsapp-connection-number-+-status.md) - [Resume a sender whose sending was paused (e.g. after a top-up)](https://docs.pineyard.ai/api-reference/resume-a-sender-whose-sending-was-paused-eg-after-a-top-up.md) - [List WhatsApp media collections](https://docs.pineyard.ai/api-reference/list-whatsapp-media-collections.md) - [Create a media collection](https://docs.pineyard.ai/api-reference/create-a-media-collection.md) - [Update media collection](https://docs.pineyard.ai/api-reference/update-media-collection.md): Rename or re-tag a media collection. - [Delete media collection](https://docs.pineyard.ai/api-reference/delete-media-collection.md): Delete a media collection and its items. - [Upload media items](https://docs.pineyard.ai/api-reference/upload-media-items.md): Upload up to 10 files (field `files`) into a media collection. - [Add media item by URL](https://docs.pineyard.ai/api-reference/add-media-item-by-url.md): Add an item to a media collection from an `https://` URL. - [Delete media item](https://docs.pineyard.ai/api-reference/delete-media-item.md): Remove one item from a media collection. - [List WhatsApp message templates](https://docs.pineyard.ai/api-reference/list-whatsapp-message-templates.md) - [List template presets](https://docs.pineyard.ai/api-reference/list-template-presets.md): Ready-made template presets, annotated with what this workspace has installed - [Create the workspace copy of a preset and submit it for approval](https://docs.pineyard.ai/api-reference/create-the-workspace-copy-of-a-preset-and-submit-it-for-approval.md) - [Map an approved WhatsApp template](https://docs.pineyard.ai/api-reference/map-an-approved-whatsapp-template.md) - [Update a WhatsApp template mapping](https://docs.pineyard.ai/api-reference/update-a-whatsapp-template-mapping.md) - [Delete template](https://docs.pineyard.ai/api-reference/delete-template.md): Delete a WhatsApp template. - [Resolve a template's variables against a lead without sending](https://docs.pineyard.ai/api-reference/resolve-a-templates-variables-against-a-lead-without-sending.md) - [Upload template header media](https://docs.pineyard.ai/api-reference/upload-template-header-media.md): Upload the header attachment (image, document or video) for a media-header template. Send the file as `file`; optional `fileName` sets the display name. - [Submit a template for approval](https://docs.pineyard.ai/api-reference/submit-a-template-for-approval.md) - [Re-read a template's approval state](https://docs.pineyard.ai/api-reference/re-read-a-templates-approval-state.md) - [Record a manually-submitted template's approval state](https://docs.pineyard.ai/api-reference/record-a-manually-submitted-templates-approval-state.md) - [Export WhatsApp results](https://docs.pineyard.ai/api-reference/export-whatsapp-results.md): Download WhatsApp BI — one row per lead (replies, clicks, receipts, retries, spend) - [Workspace WhatsApp messaging stats](https://docs.pineyard.ai/api-reference/workspace-whatsapp-messaging-stats.md) - [Get WhatsApp analytics](https://docs.pineyard.ai/api-reference/get-whatsapp-analytics.md): Full WhatsApp analytics — funnel, engagement, per-template/origin/order-trigger, revenue/ROI - [Who clicked — contact-level tracked-link attribution](https://docs.pineyard.ai/api-reference/who-clicked-—-contact-level-tracked-link-attribution.md) - [List WhatsApp conversations (Messages inbox)](https://docs.pineyard.ai/api-reference/list-whatsapp-conversations-messages-inbox.md) - [The WhatsApp thread with the lead a call reached](https://docs.pineyard.ai/api-reference/the-whatsapp-thread-with-the-lead-a-call-reached.md) - [A WhatsApp thread by conversation id](https://docs.pineyard.ai/api-reference/a-whatsapp-thread-by-conversation-id.md) - [Mark conversation read](https://docs.pineyard.ai/api-reference/mark-conversation-read.md): Mark every message in a conversation as read. - [Archive conversation](https://docs.pineyard.ai/api-reference/archive-conversation.md): Hide a conversation from the inbox. Messages and analytics are kept; reverse with unarchive. - [Unarchive conversation](https://docs.pineyard.ai/api-reference/unarchive-conversation.md): Restore an archived conversation to the inbox. - [Reply on a WhatsApp thread](https://docs.pineyard.ai/api-reference/reply-on-a-whatsapp-thread.md) - [Reply on a WhatsApp thread with an attachment](https://docs.pineyard.ai/api-reference/reply-on-a-whatsapp-thread-with-an-attachment.md) - [Send a test WhatsApp message or collection](https://docs.pineyard.ai/api-reference/send-a-test-whatsapp-message-or-collection.md) - [List WhatsApp messages](https://docs.pineyard.ai/api-reference/list-whatsapp-messages.md) - [Re-send a failed WhatsApp message](https://docs.pineyard.ai/api-reference/re-send-a-failed-whatsapp-message.md) - [List campaigns with WhatsApp agent settings](https://docs.pineyard.ai/api-reference/list-campaigns-with-whatsapp-agent-settings.md) - [Update a campaign's WhatsApp agent settings](https://docs.pineyard.ai/api-reference/update-a-campaigns-whatsapp-agent-settings.md) - [Create a chatbot. The secret key is returned ONCE.](https://docs.pineyard.ai/api-reference/create-a-chatbot-the-secret-key-is-returned-once.md) - [List chatbots (no secrets).](https://docs.pineyard.ai/api-reference/list-chatbots-no-secrets.md) - [Get a chatbot](https://docs.pineyard.ai/api-reference/get-a-chatbot.md) - [Update a chatbot](https://docs.pineyard.ai/api-reference/update-a-chatbot.md): Update configuration, pause/resume, or replace knowledge-base attachments. - [Issue a new secret key. The previous key stops working immediately.](https://docs.pineyard.ai/api-reference/issue-a-new-secret-key-the-previous-key-stops-working-immediately.md) - [Delete a chatbot (status transition; conversation logs are retained).](https://docs.pineyard.ai/api-reference/delete-a-chatbot-status-transition;-conversation-logs-are-retained.md) - [Conversation log — sessions, most recently active first.](https://docs.pineyard.ai/api-reference/conversation-log-—-sessions-most-recently-active-first.md) - [Transcript of a session (completed and failed turns).](https://docs.pineyard.ai/api-reference/transcript-of-a-session-completed-and-failed-turns.md) - [Create a chatbot knowledge base.](https://docs.pineyard.ai/api-reference/create-a-chatbot-knowledge-base.md) - [List the workspace’s knowledge bases.](https://docs.pineyard.ai/api-reference/list-the-workspace’s-knowledge-bases.md) - [Knowledge base detail, including its documents.](https://docs.pineyard.ai/api-reference/knowledge-base-detail-including-its-documents.md) - [Upload a knowledge-base document](https://docs.pineyard.ai/api-reference/upload-a-knowledge-base-document.md): Upload a document (multipart `file`; PDF/DOCX/TXT/MD, 20 MB max). Indexing continues in the background. - [Delete a knowledge base](https://docs.pineyard.ai/api-reference/delete-a-knowledge-base.md): Soft-delete a knowledge base. 409 while an active chatbot still uses it. - [Remove a document. Remote copies are cleaned up in the background.](https://docs.pineyard.ai/api-reference/remove-a-document-remote-copies-are-cleaned-up-in-the-background.md) - [List available CRM connectors with their auth descriptors](https://docs.pineyard.ai/api-reference/list-available-crm-connectors-with-their-auth-descriptors.md) - [Connect a CRM via API key (e.g. LeadSquared)](https://docs.pineyard.ai/api-reference/connect-a-crm-via-api-key-eg-leadsquared.md) - [List the workspace's active CRM connections](https://docs.pineyard.ai/api-reference/list-the-workspaces-active-crm-connections.md) - [Revoke a CRM connection](https://docs.pineyard.ai/api-reference/revoke-a-crm-connection.md) - [Rotate a CRM webhook secret](https://docs.pineyard.ai/api-reference/rotate-a-crm-webhook-secret.md): Generate (or rotate) the webhook secret for a CRM connection. The plaintext secret is returned EXACTLY ONCE — display it immediately and never expose it via any other endpoint. - [List recent CRM webhook deliveries](https://docs.pineyard.ai/api-reference/list-recent-crm-webhook-deliveries.md): Recent webhooks received from this CRM connection, summarised as field shapes rather than raw payloads. Useful when mapping fields. - [Summarise order updates](https://docs.pineyard.ai/api-reference/summarise-order-updates.md): What order updates delivered for this store — reach, cost and engagement - [List order notification rules](https://docs.pineyard.ai/api-reference/list-order-notification-rules.md): List the order-status WhatsApp notification rules for a store connection - [Replace the order-status notification rules for a store connection](https://docs.pineyard.ai/api-reference/replace-the-order-status-notification-rules-for-a-store-connection.md) - [List segments / lead lists exposed by the CRM](https://docs.pineyard.ai/api-reference/list-segments-lead-lists-exposed-by-the-crm.md) - [Read field-mapping config for this connection](https://docs.pineyard.ai/api-reference/read-field-mapping-config-for-this-connection.md) - [Replace field-mapping config for this connection](https://docs.pineyard.ai/api-reference/replace-field-mapping-config-for-this-connection.md) - [Read post-call sync settings for this CRM connection](https://docs.pineyard.ai/api-reference/read-post-call-sync-settings-for-this-crm-connection.md) - [Replace post-call sync settings for this CRM connection](https://docs.pineyard.ai/api-reference/replace-post-call-sync-settings-for-this-crm-connection.md) - [Get CRM sync options](https://docs.pineyard.ai/api-reference/get-crm-sync-options.md): Options from the connected CRM (for example stages or owners) available for post-call sync settings. - [Trigger a CRM lead import into a campaign](https://docs.pineyard.ai/api-reference/trigger-a-crm-lead-import-into-a-campaign.md) - [Poll a CRM import session status](https://docs.pineyard.ai/api-reference/poll-a-crm-import-session-status.md) - [Google Calendar connection + booking settings](https://docs.pineyard.ai/api-reference/google-calendar-connection-+-booking-settings.md) - [List the connected account's calendars](https://docs.pineyard.ai/api-reference/list-the-connected-accounts-calendars.md) - [Update booking settings](https://docs.pineyard.ai/api-reference/update-booking-settings.md) - [Campaigns with agent-booking settings](https://docs.pineyard.ai/api-reference/campaigns-with-agent-booking-settings.md) - [Update a campaign's booking settings](https://docs.pineyard.ai/api-reference/update-a-campaigns-booking-settings.md) - [List booked appointments](https://docs.pineyard.ai/api-reference/list-booked-appointments.md) - [Google Sheets export connection status](https://docs.pineyard.ai/api-reference/google-sheets-export-connection-status.md) - [Live Google Sheet status for a campaign](https://docs.pineyard.ai/api-reference/live-google-sheet-status-for-a-campaign.md) - [Configurable live-sheet field catalog and saved layout](https://docs.pineyard.ai/api-reference/configurable-live-sheet-field-catalog-and-saved-layout.md) - [Generate or attach a live Google Sheet](https://docs.pineyard.ai/api-reference/generate-or-attach-a-live-google-sheet.md): **API keys:** only `mode: "generate"` is allowed. Attaching an existing spreadsheet (`mode: "attach"`) returns `403 api_key_not_allowed`. - [Sync the live sheet now](https://docs.pineyard.ai/api-reference/sync-the-live-sheet-now.md) - [Update auto-sync or previewed sheet layout](https://docs.pineyard.ai/api-reference/update-auto-sync-or-previewed-sheet-layout.md) - [Rebuild a live sheet](https://docs.pineyard.ai/api-reference/rebuild-a-live-sheet.md): Repair a generated live sheet in place: clear its tab and rewrite every row from current data. The spreadsheet stays the same. - [Unlink the live sheet (leaves the sheet in the client Drive)](https://docs.pineyard.ai/api-reference/unlink-the-live-sheet-leaves-the-sheet-in-the-client-drive.md) - [List available connectors and current workspace connections](https://docs.pineyard.ai/api-reference/list-available-connectors-and-current-workspace-connections.md) - [Connect an integration with an API key](https://docs.pineyard.ai/api-reference/connect-an-integration-with-an-api-key.md): Submit API-key credentials for a non-OAuth connector (Cal.com / Calendly / Zendesk) - [Refresh integration connections](https://docs.pineyard.ai/api-reference/refresh-integration-connections.md): Re-reads the status of your integration connections. - [Revoke an integration connection](https://docs.pineyard.ai/api-reference/revoke-an-integration-connection.md) - [List integrations available to bind to this agent + current bindings](https://docs.pineyard.ai/api-reference/list-integrations-available-to-bind-to-this-agent-+-current-bindings.md) - [Bind / unbind a connection to this agent for a given tool slug](https://docs.pineyard.ai/api-reference/bind-unbind-a-connection-to-this-agent-for-a-given-tool-slug.md) - [Speech analysis overview for the workspace](https://docs.pineyard.ai/api-reference/speech-analysis-overview-for-the-workspace.md) - [List analysed recordings](https://docs.pineyard.ai/api-reference/list-analysed-recordings.md) - [Upload a recording for analysis](https://docs.pineyard.ai/api-reference/upload-a-recording-for-analysis.md) - [Upload many recordings at once](https://docs.pineyard.ai/api-reference/upload-many-recordings-at-once.md) - [One analysed recording](https://docs.pineyard.ai/api-reference/one-analysed-recording.md) - [Delete an analysis and its recording](https://docs.pineyard.ai/api-reference/delete-an-analysis-and-its-recording.md) - [Re-submit a failed analysis](https://docs.pineyard.ai/api-reference/re-submit-a-failed-analysis.md) - [Analyse a Pineyard call](https://docs.pineyard.ai/api-reference/analyse-a-pineyard-call.md): Analyse a call placed by Pineyard. No upload is needed: the recording is already stored. - [List reps whose calls are scored](https://docs.pineyard.ai/api-reference/list-reps-whose-calls-are-scored.md) - [Add a rep](https://docs.pineyard.ai/api-reference/add-a-rep.md) - [Rename a rep](https://docs.pineyard.ai/api-reference/rename-a-rep.md) - [Archive a rep (their analyses are kept)](https://docs.pineyard.ai/api-reference/archive-a-rep-their-analyses-are-kept.md) - [Teams in this workspace](https://docs.pineyard.ai/api-reference/teams-in-this-workspace.md) - [Create a team](https://docs.pineyard.ai/api-reference/create-a-team.md) - [Rename or recolour a team](https://docs.pineyard.ai/api-reference/rename-or-recolour-a-team.md) - [Delete a team (its reps become unassigned)](https://docs.pineyard.ai/api-reference/delete-a-team-its-reps-become-unassigned.md) - [Move a rep to a team](https://docs.pineyard.ai/api-reference/move-a-rep-to-a-team.md) - [What moves conversion — lift per rubric criterion](https://docs.pineyard.ai/api-reference/what-moves-conversion-—-lift-per-rubric-criterion.md) - [Extraction-field breakdowns (objections, closing lines, upsells)](https://docs.pineyard.ai/api-reference/extraction-field-breakdowns-objections-closing-lines-upsells.md) - [Conversion + quality by day](https://docs.pineyard.ai/api-reference/conversion-+-quality-by-day.md) - [Pass rate per rep × rubric section](https://docs.pineyard.ai/api-reference/pass-rate-per-rep-×-rubric-section.md) - [Conversion by how much the rep talked](https://docs.pineyard.ai/api-reference/conversion-by-how-much-the-rep-talked.md) - [Rubric checks ranked by how often they are missed](https://docs.pineyard.ai/api-reference/rubric-checks-ranked-by-how-often-they-are-missed.md) - [Rep + team performance](https://docs.pineyard.ai/api-reference/rep-+-team-performance.md) - [One rep’s coaching detail](https://docs.pineyard.ai/api-reference/one-rep’s-coaching-detail.md) - [Scorecards available to this workspace](https://docs.pineyard.ai/api-reference/scorecards-available-to-this-workspace.md) - [A scorecard’s full rubric](https://docs.pineyard.ai/api-reference/a-scorecard’s-full-rubric.md) - [List ingested commerce orders (D2C entitlement required)](https://docs.pineyard.ai/api-reference/list-ingested-commerce-orders-d2c-entitlement-required.md) - [Order counts + attributed revenue (D2C entitlement required)](https://docs.pineyard.ai/api-reference/order-counts-+-attributed-revenue-d2c-entitlement-required.md) - [Date-scoped commerce owner dashboard](https://docs.pineyard.ai/api-reference/date-scoped-commerce-owner-dashboard.md) - [Commerce campaign and template rankings](https://docs.pineyard.ai/api-reference/commerce-campaign-and-template-rankings.md) - [Commerce repeat-customer and cohort analytics](https://docs.pineyard.ai/api-reference/commerce-repeat-customer-and-cohort-analytics.md) - [Get a campaign's commerce results](https://docs.pineyard.ai/api-reference/get-a-campaigns-commerce-results.md): One campaign's commerce results — revenue, ROAS, cart funnel, COD→prepaid conversion - [List workflow runs parked for manual recovery (NEEDS_ATTENTION)](https://docs.pineyard.ai/api-reference/list-workflow-runs-parked-for-manual-recovery-needs_attention.md) - [Get the recovery detail for a parked action visit](https://docs.pineyard.ai/api-reference/get-the-recovery-detail-for-a-parked-action-visit.md) - [Resolve a parked workflow action](https://docs.pineyard.ai/api-reference/resolve-a-parked-workflow-action.md): Record a recovery decision for a workflow action that is waiting for manual recovery. - [Read one run with its step-by-step outcomes](https://docs.pineyard.ai/api-reference/read-one-run-with-its-step-by-step-outcomes.md) - [Stop a run](https://docs.pineyard.ai/api-reference/stop-a-run.md) - [List workflow secrets](https://docs.pineyard.ai/api-reference/list-workflow-secrets.md): List reusable workflow secrets for the caller workspace (metadata only) - [Get one workflow secret (metadata only)](https://docs.pineyard.ai/api-reference/get-one-workflow-secret-metadata-only.md) - [Get workflow action retry and reliability capabilities](https://docs.pineyard.ai/api-reference/get-workflow-action-retry-and-reliability-capabilities.md) - [List workflows for the caller workspace](https://docs.pineyard.ai/api-reference/list-workflows-for-the-caller-workspace.md) - [List steps allowed in AI drafts](https://docs.pineyard.ai/api-reference/list-steps-allowed-in-ai-drafts.md): Which step IDs an AI-drafted workflow may use. - [Get workflow variable catalog](https://docs.pineyard.ai/api-reference/get-workflow-variable-catalog.md): Typed variables available to a workflow definition: trigger inputs and the outputs of earlier steps. - [The trigger fields this workflow reads, derived from the graph](https://docs.pineyard.ai/api-reference/the-trigger-fields-this-workflow-reads-derived-from-the-graph.md): Derived from the persisted definition, never stored, so it cannot drift from what the graph actually reads. `undeclared` lists fields the graph references but the start step does not declare — informational/warning only, never a publish blocker. `unused` lists declared fields nothing references. - [Get a workflow](https://docs.pineyard.ai/api-reference/get-a-workflow.md) - [List runs of a workflow, newest first](https://docs.pineyard.ai/api-reference/list-runs-of-a-workflow-newest-first.md): Filters combine with AND. The total number of matching runs (ignoring limit/offset) is returned in the X-Total-Count header. - [Stop every in-flight run of a workflow](https://docs.pineyard.ai/api-reference/stop-every-in-flight-run-of-a-workflow.md): Stops every RUNNING, WAITING and NEEDS_ATTENTION run of this workflow, one run at a time with the same semantics as stopping a single run. It does not prevent new runs from starting — archive the workflow for that. A call or action already in progress is not undone. Idempotent: a repeat finds nothin… - [Trigger a run of an ACTIVE workflow](https://docs.pineyard.ai/api-reference/trigger-a-run-of-an-active-workflow.md) - [List API keys (no secrets).](https://docs.pineyard.ai/api-reference/list-api-keys-no-secrets.md) - [Get the caller workspace credit balance and recent transactions](https://docs.pineyard.ai/api-reference/get-the-caller-workspace-credit-balance-and-recent-transactions.md) - [List wallet ledger entries](https://docs.pineyard.ai/api-reference/list-wallet-ledger-entries.md): Get the exact paginated workspace wallet ledger, spend timeline and reconciliation - [Export the complete filtered workspace wallet ledger as CSV or Excel](https://docs.pineyard.ai/api-reference/export-the-complete-filtered-workspace-wallet-ledger-as-csv-or-excel.md) - [Download a credited wallet recharge payment receipt](https://docs.pineyard.ai/api-reference/download-a-credited-wallet-recharge-payment-receipt.md) - [List result webhook endpoints](https://docs.pineyard.ai/api-reference/list-result-webhook-endpoints.md): List result webhook endpoints, available campaign fields, and rollout state. - [Delete an endpoint and its delivery history.](https://docs.pineyard.ai/api-reference/delete-an-endpoint-and-its-delivery-history.md) - [List delivery cycles.](https://docs.pineyard.ai/api-reference/list-delivery-cycles.md) - [Inspect the immutable payload and every recorded HTTP attempt.](https://docs.pineyard.ai/api-reference/inspect-the-immutable-payload-and-every-recorded-http-attempt.md) - [Permission catalog for the role matrix](https://docs.pineyard.ai/api-reference/permission-catalog-for-the-role-matrix.md) - [List workspace roles](https://docs.pineyard.ai/api-reference/list-workspace-roles.md) - [List teammates + pending invites](https://docs.pineyard.ai/api-reference/list-teammates-+-pending-invites.md) ## OpenAPI Specs - [openapi](/api-reference/openapi.json) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.