Sample code for 30+ languages & platforms
Objective-C

OpenAI (ChatGPT) Simple Request

See more OpenAI ChatGPT Examples

Demonstrate a simple ChatGPT request with authentication using your OPENAI_API_KEY.

Chilkat Objective-C Downloads

Objective-C
#import <CkoHttp.h>
#import <CkoJsonObject.h>
#import <CkoHttpResponse.h>
#import <CkoStringBuilder.h>
#import <NSString.h>

BOOL success = NO;

// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

CkoHttp *http = [[CkoHttp alloc] init];

// Implements the following CURL command:

// curl https://api.openai.com/v1/chat/completions \
//   -H "Content-Type: application/json" \
//   -H "Authorization: Bearer $OPENAI_API_KEY" \
//   -d '{
//      "model": "gpt-3.5-turbo",
//      "messages": [{"role": "user", "content": "Say this is a test!"}],
//      "temperature": 0.7
//    }'

// Use the following online tool to generate HTTP code from a CURL command
// Convert a cURL Command to HTTP Source Code

// Use this online tool to generate code from sample JSON:
// Generate Code to Create JSON

// The following JSON is sent in the request body.

// {
//   "model": "gpt-3.5-turbo",
//   "messages": [
//     {
//       "role": "user",
//       "content": "Say this is a test!"
//     }
//   ],
//   "temperature": 0.7
// }

CkoJsonObject *json = [[CkoJsonObject alloc] init];
[json UpdateString: @"model" value: @"gpt-3.5-turbo"];
[json UpdateString: @"messages[0].role" value: @"user"];
[json UpdateString: @"messages[0].content" value: @"Say this is a test!"];
[json UpdateNumber: @"temperature" numericStr: @"0.7"];

// Adds the "Authorization: Bearer $OPENAI_API_KEY" header.
// This is NOT a real key.  Change the "sk-vi...." to your own key.
http.AuthToken = @"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";

CkoHttpResponse *resp = [[CkoHttpResponse alloc] init];
success = [http HttpJson: @"POST" url: @"https://api.openai.com/v1/chat/completions" json: json contentType: @"application/json" response: resp];
if (success == NO) {
    NSLog(@"%@",http.LastErrorText);
    return;
}

CkoStringBuilder *sbResponseBody = [[CkoStringBuilder alloc] init];
[resp GetBodySb: sbResponseBody];

CkoJsonObject *jResp = [[CkoJsonObject alloc] init];
[jResp LoadSb: sbResponseBody];
jResp.EmitCompact = NO;

NSLog(@"%@",@"Response Body:");
NSLog(@"%@",[jResp Emit]);

int respStatusCode = [resp.StatusCode intValue];
NSLog(@"%@%d",@"Response Status Code = ",respStatusCode);
if (respStatusCode >= 400) {
    NSLog(@"%@",@"Response Header:");
    NSLog(@"%@",resp.Header);
    NSLog(@"%@",@"Failed.");
    return;
}

// Sample JSON response:
// (Sample code for parsing the JSON response is shown below)

// {
//   "id": "chatcmpl-abc123",
//   "object": "chat.completion",
//   "created": 1677858242,
//   "model": "gpt-3.5-turbo-0301",
//   "usage": {
//     "prompt_tokens": 13,
//     "completion_tokens": 7,
//     "total_tokens": 20
//   },
//   "choices": [
//     {
//       "message": {
//         "role": "assistant",
//         "content": "\n\nThis is a test!"
//       },
//       "finish_reason": "stop",
//       "index": 0
//     }
//   ]
// }

// Sample code for parsing the JSON response...
// Use the following online tool to generate parsing code from sample JSON:
// Generate Parsing Code from JSON

NSString *Role = 0;
NSString *Content = 0;
NSString *finish_reason = 0;
int index;

NSString *id = [jResp StringOf: @"id"];
NSString *v_object = [jResp StringOf: @"object"];
int created = [[jResp IntOf: @"created"] intValue];
NSString *model = [jResp StringOf: @"model"];
int Prompt_tokens = [[jResp IntOf: @"usage.prompt_tokens"] intValue];
int Completion_tokens = [[jResp IntOf: @"usage.completion_tokens"] intValue];
int Total_tokens = [[jResp IntOf: @"usage.total_tokens"] intValue];
int i = 0;
int count_i = [[jResp SizeOfArray: @"choices"] intValue];
while (i < count_i) {
    jResp.I = [NSNumber numberWithInt: i];
    Role = [jResp StringOf: @"choices[i].message.role"];
    Content = [jResp StringOf: @"choices[i].message.content"];
    finish_reason = [jResp StringOf: @"choices[i].finish_reason"];
    index = [[jResp IntOf: @"choices[i].index"] intValue];
    i = i + 1;
}