API Documentation
Complete guide to integrating deep navy with your development workflow.
📚 Table of Contents
- Quick Start
- Base URL
- Authentication
- Rate Limits
- Available Models
- Chat Completions
- Request Parameters
- Error Handling
- Code Examples
- Best Practices
- SDKs and Libraries
- Webhooks (Enterprise)
- Support
Quick Start
1. Get Your API Key
- Sign in with Apple
- Go to your Dashboard
- Click “Create New Key”
- Copy your API key (you won’t see it again!)
2. Configure Xcode 26
- Open Xcode → Preferences → Intelligence Mode
- Set Base URL:
https://api.deepnavy.ai - Enter your API key
- Enable Intelligence Mode
3. Test Your Connection
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://api.deepnavy.ai/v1/models
Base URL
https://api.deepnavy.ai
Authentication
All API requests require authentication using Bearer tokens:
Authorization: Bearer YOUR_API_KEY
Security Best Practices
- Never expose API keys in client-side code
- Use environment variables in your applications
- Regenerate keys if compromised
- Monitor usage in your dashboard
Rate Limits
Rate limits vary by subscription plan:
| Plan | Requests/Month | Requests/Minute | Burst Limit |
|---|---|---|---|
| Starter | 10,000 | 100 | 200 |
| Professional | 50,000 | 500 | 1,000 |
| Enterprise | 200,000 | 2,000 | 5,000 |
Rate Limit Headers
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1640995200
Available Models
List Available Models
GET /v1/models
Response:
{
"object": "list",
"data": [
{
"id": "claude-3-5-sonnet-20241022",
"object": "model",
"created": 1703980800,
"owned_by": "anthropic",
"capabilities": {
"code_generation": true,
"code_analysis": true,
"documentation": true,
"debugging": true
},
"context_window": 200000,
"max_output_tokens": 8192
},
{
"id": "claude-3-haiku-20240307",
"object": "model",
"created": 1703980800,
"owned_by": "anthropic",
"capabilities": {
"code_generation": true,
"quick_responses": true,
"debugging": true
},
"context_window": 200000,
"max_output_tokens": 4096
}
]
}
Model Capabilities
Claude 3.5 Sonnet
- Best for: Complex coding tasks, architecture decisions, code reviews
- Context Window: 200,000 tokens
- Strengths: Advanced reasoning, multi-language support, detailed explanations
Claude 3 Haiku
- Best for: Quick fixes, simple queries, real-time assistance
- Context Window: 200,000 tokens
- Strengths: Fast responses, efficient for simple tasks
Claude 3 Opus
- Best for: Most complex problems, large codebases, critical decisions
- Context Window: 200,000 tokens
- Strengths: Highest capability model, best for challenging tasks
Chat Completions
Create Chat Completion
POST /v1/chat/completions
Content-Type: application/json
Request Body:
{
"model": "claude-3-5-sonnet-20241022",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant for iOS development."
},
{
"role": "user",
"content": "Help me implement a SwiftUI view for a user profile screen."
}
],
"max_tokens": 2048,
"temperature": 0.7,
"stream": false
}
Response:
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"model": "claude-3-5-sonnet-20241022",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "I'll help you create a SwiftUI user profile view. Here's a comprehensive implementation:\n\n```swift\nstruct UserProfileView: View {\n @State private var user: User\n \n var body: some View {\n NavigationView {\n ScrollView {\n VStack(alignment: .leading, spacing: 20) {\n // Profile Header\n profileHeader\n \n // Profile Details\n profileDetails\n \n // Action Buttons\n actionButtons\n }\n .padding()\n }\n .navigationTitle(\"Profile\")\n .navigationBarTitleDisplayMode(.large)\n }\n }\n}\n```\n\nThis creates a clean, native SwiftUI profile screen with proper navigation and scrolling."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 56,
"completion_tokens": 168,
"total_tokens": 224
}
}
Streaming Responses
For real-time responses (recommended for Xcode 26):
{
"model": "claude-3-5-sonnet-20241022",
"messages": [...],
"stream": true
}
Streaming Response:
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1677652288,"model":"claude-3-5-sonnet-20241022","choices":[{"index":0,"delta":{"role":"assistant","content":"I'll"},"finish_reason":null}]}
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1677652288,"model":"claude-3-5-sonnet-20241022","choices":[{"index":0,"delta":{"content":" help"},"finish_reason":null}]}
data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1677652288,"model":"claude-3-5-sonnet-20241022","choices":[{"index":0,"delta":{"content":" you"},"finish_reason":null}]}
data: [DONE]
Request Parameters
Required Parameters
- model (string): The model ID to use
- messages (array): List of message objects
Optional Parameters
- max_tokens (integer): Maximum tokens to generate (default: 2048)
- temperature (float): Randomness (0.0-2.0, default: 1.0)
- stream (boolean): Enable streaming responses (default: false)
- top_p (float): Nucleus sampling (0.0-1.0, default: 1.0)
- stop (string/array): Stop sequences
Message Object
{
"role": "user|assistant|system",
"content": "Message content here"
}
Error Handling
HTTP Status Codes
- 200 - Success
- 400 - Bad Request (invalid parameters)
- 401 - Unauthorized (invalid API key)
- 403 - Forbidden (rate limit exceeded)
- 429 - Too Many Requests (rate limited)
- 500 - Internal Server Error
- 503 - Service Unavailable (maintenance)
Error Response Format
{
"error": {
"type": "invalid_request_error",
"code": "missing_parameter",
"message": "Missing required parameter: model",
"param": "model"
}
}
Common Errors
Invalid API Key
{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "Invalid API key provided"
}
}
Rate Limit Exceeded
{
"error": {
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please wait before making more requests."
}
}
Model Not Found
{
"error": {
"type": "invalid_request_error",
"code": "model_not_found",
"message": "The model 'invalid-model' does not exist"
}
}
Code Examples
Swift (iOS/macOS)
import Foundation
struct AIClient {
private let apiKey: String
private let baseURL = "https://api.deepnavy.ai"
init(apiKey: String) {
self.apiKey = apiKey
}
func chatCompletion(messages: [Message]) async throws -> ChatResponse {
let url = URL(string: "\(baseURL)/v1/chat/completions")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
let body = ChatRequest(
model: "claude-3-5-sonnet-20241022",
messages: messages,
maxTokens: 2048
)
request.httpBody = try JSONEncoder().encode(body)
let (data, response) = try await URLSession.shared.data(for: request)
guard let httpResponse = response as? HTTPURLResponse,
httpResponse.statusCode == 200 else {
throw AIError.requestFailed
}
return try JSONDecoder().decode(ChatResponse.self, from: data)
}
}
Node.js
const fetch = require('node-fetch');
class AIClient {
constructor(apiKey) {
this.apiKey = apiKey;
this.baseURL = 'https://api.deepnavy.ai';
}
async chatCompletion(messages) {
const response = await fetch(`${this.baseURL}/v1/chat/completions`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${this.apiKey}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
model: 'claude-3-5-sonnet-20241022',
messages: messages,
max_tokens: 2048
})
});
if (!response.ok) {
throw new Error(`API error: ${response.status}`);
}
return await response.json();
}
}
// Usage
const client = new AIClient(process.env.AI_API_KEY);
const response = await client.chatCompletion([
{ role: 'user', content: 'Write a Swift function to validate email addresses' }
]);
Python
import requests
import json
class AIClient:
def __init__(self, api_key):
self.api_key = api_key
self.base_url = "https://api.deepnavy.ai"
def chat_completion(self, messages):
headers = {
"Authorization": f"Bearer {self.api_key}",
"Content-Type": "application/json"
}
data = {
"model": "claude-3-5-sonnet-20241022",
"messages": messages,
"max_tokens": 2048
}
response = requests.post(
f"{self.base_url}/v1/chat/completions",
headers=headers,
json=data
)
response.raise_for_status()
return response.json()
# Usage
client = AIClient(os.getenv("AI_API_KEY"))
response = client.chat_completion([
{"role": "user", "content": "Help me optimize this Swift code for performance"}
])
cURL Examples
List Models
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://api.deepnavy.ai/v1/models
Chat Completion
curl -X POST https://api.deepnavy.ai/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-3-5-sonnet-20241022",
"messages": [
{
"role": "user",
"content": "Write a SwiftUI view for a login screen"
}
],
"max_tokens": 2048
}'
Streaming Request
curl -X POST https://api.deepnavy.ai/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-3-5-sonnet-20241022",
"messages": [{"role": "user", "content": "Explain Swift optionals"}],
"stream": true
}'
Best Practices
Performance Optimization
- Use Streaming - Enable streaming for real-time responses
- Choose Right Model - Use Haiku for simple tasks, Sonnet for complex ones
- Optimize Prompts - Be specific and provide context
- Cache Responses - Cache common responses locally
Security Guidelines
- Server-Side Keys - Never expose API keys in client apps
- Environment Variables - Store keys in secure environment variables
- Key Rotation - Regenerate keys periodically
- Monitor Usage - Watch for unusual activity patterns
Error Handling
- Retry Logic - Implement exponential backoff for rate limits
- Fallback Models - Have backup model options
- Graceful Degradation - Handle API unavailability
- User Feedback - Provide clear error messages to users
Prompt Engineering
- Be Specific - Provide clear, detailed instructions
- Include Context - Share relevant code and requirements
- Set Expectations - Specify desired output format
- Iterate - Refine prompts based on responses
SDKs and Libraries
Official SDKs
- Swift Package - Coming soon
- CocoaPods - Coming soon
- npm Package - Coming soon
Community Libraries
- OpenAI-compatible libraries work out of the box
- Most HTTP clients support our REST API
- WebSocket support for streaming (coming soon)
Webhooks (Enterprise)
Enterprise customers can configure webhooks for:
- Usage alerts and notifications
- Bill payment confirmations
- Security events and alerts
- Service status updates
Contact support@deepnavy.ai for webhook setup.
Support
Getting Help
- Technical Support: support@deepnavy.ai
- Documentation: Use the Support page
Response Times
- Starter Plan: 24 hours
- Professional Plan: 12 hours
- Enterprise Plan: 4 hours
API Version: v1 Last Updated: December 1, 2024
For the most up-to-date API documentation and examples, visit our Developer Portal.