Skip to main content
Common authentication issues and their solutions.

HTTP Status Codes

401 Unauthorized

Symptoms:
  • Request returns 401 Unauthorized
  • Error message indicates authentication failure
Common Causes:

Missing or Invalid API Key

Solutions:
  • Verify your API key is exactly 60 characters
  • Check that you’re including the x-api-key header
  • Ensure no extra whitespace or characters in the key
cURL
JavaScript
Python
Go
Rust
Java

Deleted or Expired API Key

Solution: Create a new API key in your Dakota Platform dashboard

Wrong Environment

Solution: Ensure you’re using the correct base URL:
  • Production: https://api.platform.dakota.xyz

403 Forbidden

Symptoms:
  • Request returns 403 Forbidden
  • API key is valid but access is denied
Common Causes:

Insufficient Permissions

Solutions:
  • Check if your account has access to the requested feature
  • Verify API key permissions in the Dakota Platform dashboard
  • Contact support if you need additional permissions

Account Limitations

Solutions:
  • Complete required account verification steps
  • Upgrade your account plan if needed
  • Contact support for account-specific limitations

429 Too Many Requests

Symptoms:
  • Request returns 429 Too Many Requests
  • No response body, only HTTP status
  • Rate limit headers indicate limits exceeded
Response Headers:
Solutions:
  • Implement exponential backoff (see Rate Limiting guide)
  • Check Retry-After header for seconds to wait before retrying
  • Distribute requests more evenly over time
  • Contact support if you need higher rate limits

Header Issues

Missing x-idempotency-key for POST Requests

Error:
Solution: Include a unique UUID in the x-idempotency-key header for POST requests only:
cURL
JavaScript
Python
Go
Rust
Java

Invalid Idempotency Key Format

Error:
Solution: Use a properly formatted UUID:
cURL
JavaScript
Python
Go
Rust
Java

Connection Issues

SSL/TLS Errors

Symptoms:
  • Connection fails with SSL certificate errors
  • “Unable to verify SSL certificate” messages
Solutions:
cURL
JavaScript
Python
Go
Rust
Java

Network Timeouts

Solutions:
cURL
JavaScript
Python
Go
Rust
Java

Debugging Steps

1. Verify API Key Format

Check your API key meets the requirements:
cURL
JavaScript
Python
Go
Rust
Java

2. Test with cURL

Use cURL to isolate issues from your code:
cURL
The -v flag provides verbose output showing the full HTTP exchange.

3. Check Response Headers

Always inspect response headers for debugging information:
cURL
JavaScript
Python
Go
Rust
Java

4. Enable Request Logging

Log your requests to identify issues:
cURL
JavaScript
Python
Go
Rust
Java

Error Response Format

All Dakota Platform API errors follow RFC 9457 Problem Details format with application/problem+json content type:
Common error types (the type field URI):
  • https://docs.dakota.xyz/errors/authentication-error - Authentication failed (401)
  • https://docs.dakota.xyz/errors/forbidden - Access denied (403)
  • https://docs.dakota.xyz/errors/validation-error - Invalid request format (400)
  • https://docs.dakota.xyz/errors/not-found - Resource doesn’t exist (404)
  • https://docs.dakota.xyz/errors/rate-limited - Too many requests (429)
  • https://docs.dakota.xyz/errors/internal-error - Server error (500)
Rate limiting (429) also returns RFC 9457 Problem Details:

Getting Help

If you’re still experiencing issues:
  1. Check the API status page for any ongoing issues
  2. Review recent changes to your code or configuration
  3. Test with minimal examples to isolate the problem
  4. Contact support with:
    • Complete error messages
    • Request/response logs (with API keys removed)
    • Steps to reproduce the issue
    • A relevant Request ID from the response headers, if available

Support Information

  • Email: support@dakota.xyz
  • Include “API Authentication Issue” in the subject line
  • Provide relevant logs with sensitive information removed
  • Mention this troubleshooting guide and what you’ve already tried

Quick Checklist

Before contacting support, verify:
  • API key is exactly 60 characters
  • Using correct header name: x-api-key
  • Including x-idempotency-key for POST requests only
  • Using HTTPS base URL: https://api.platform.dakota.xyz
  • API key is active in your dashboard
  • Account has necessary permissions
  • Not hitting rate limits
  • Request format matches API documentation