Skribby
GuidesUpdated 7 hours ago

Api Debugging

The API Request Logs in your Skribby dashboard provide visibility into every API call made to your organization. Use these logs to debug integration issues, trace failed requests, and understand API behavior.

Accessing Logs

Navigate to API Request Logs in the Skribby Dashboard to view your recent API activity.

Each log entry shows:

  • Timestamp: When the request was made
  • Method: HTTP method (POST, GET, DELETE, etc.)
  • Path: API endpoint called
  • Status: HTTP response code
  • Request Body: What you sent
  • Response Body: What Skribby returned

Common HTTP Status Codes

Success Codes

CodeMeaningNotes
200OKRequest succeeded
201CreatedResource created (e.g., new bot)

Client Error Codes

CodeMeaningCommon Causes
400Bad RequestInvalid parameters, malformed JSON
401UnauthorizedInvalid or missing API key
403ForbiddenPlan limits exceeded, blocked account
404Not FoundInvalid bot/recording ID
422Unprocessable EntityValidation failed

Server Error Codes

CodeMeaningAction
500Internal Server ErrorRetry, contact support if persistent
502Bad GatewayTemporary issue, retry
503Service UnavailableSystem maintenance, retry later

Debugging Common Issues

Authentication Errors (401)

Symptoms:

{ "message": "Unauthenticated." }

Checklist:

  • API key is included in the Authorization header
  • Format is Bearer YOUR_API_KEY (note the space after Bearer)
  • API key is not expired or revoked
  • No extra whitespace or newlines in the key

Correct format:

curl -H "Authorization: Bearer sk_live_abc123..." \ https://platform.skribby.io/api/v1/bot

Validation Errors (400/422)

Symptoms:

{ "message": "The transcription model field is required.", "errors": { "transcription_model": ["The transcription model field is required."] } }

Common validation issues:

FieldIssueFix
transcription_modelInvalid valueCheck valid models
meeting_urlNot a valid URLInclude full URL with protocol
serviceDoesn't match URLUse gmeet, teams, or zoom
webhook_urlNot HTTPSUse HTTPS URLs only
langUnsupported language codeCheck language guide

Plan Limit Errors (403)

Symptoms:

{ "message": "You have reached the limit of concurrent meeting bots for your plan." }

Possible causes:

  • Too many bots running simultaneously
  • Monthly hour limit exceeded (Free plan)
  • Transcription model not available on your plan

Resolution:

  • Wait for active bots to finish
  • Upgrade your plan
  • Use an available transcription model

Correlating Requests with Bots

Using Bot ID

Every successful bot creation returns an id:

{ "id": "3c09b2aa-6708-42c1-8145-aa55ee223613", "status": "booting", ... }

Use this ID to:

  • Fetch bot status: GET /bot/{id}
  • Stop the bot: POST /bot/{id}/stop
  • Delete the bot: DELETE /bot/{id}
  • Correlate webhook events

Using Custom Metadata

Add custom_metadata to track requests in your system:

{ "transcription_model": "whisper", "meeting_url": "...", "custom_metadata": { "internal_id": "meeting-123", "user_id": "user-456", "source": "calendar-sync" } }

Metadata appears in:

  • API responses
  • Webhook payloads
  • Dashboard bot details

Payload Troubleshooting

JSON Formatting

Wrong:

curl -d "{'transcription_model': 'whisper'}"

Right:

curl -d '{"transcription_model": "whisper"}'

Content-Type Header

Always include for JSON requests:

curl -H "Content-Type: application/json" \ -d '{"..."}' \ https://platform.skribby.io/api/v1/bot

URL Encoding

Meeting URLs with special characters need proper handling:

{ "meeting_url": "https://teams.microsoft.com/l/meetup-join/..." }

Don't URL-encode the value inside JSON, the JSON parser handles it.

Debugging Workflow

  1. Find the failed request: Look through recent logs for errors
  2. Check the request body: Verify parameters are correct
  3. Read the response: Error messages explain what's wrong
  4. Correlate with bot ID: If the bot was created, check its status
  5. Check webhooks: Some errors surface in webhook events
  6. Review bot events: Dashboard shows detailed status history

Contacting Support

When reaching out to support, include:

  • Request timestamp
  • Request ID (if shown)
  • Bot ID (if applicable)
  • Full error message
  • What you expected vs. what happened